[llvm-dev] Lowering Select to Two Predicated Movs

Dilan Manatunga via llvm-dev llvm-dev at lists.llvm.org
Fri Jul 7 13:34:09 PDT 2017

Ohh, that makes sense. And is the reason the first instruction doesn't get
deleted because the ExpandPseudoInstructions pass occurs after Register
Allocation and machine dead code elimination?


On Fri, Jul 7, 2017 at 12:37 PM Friedman, Eli <efriedma at codeaurora.org>

> On 7/7/2017 12:10 PM, Dilan Manatunga wrote:
> > My bad for not looking further. I'm still somewhat confused though.
> > MOVCCr gets expanded in the ARMExpandPseudoInsts pass, and it still
> > seems only a case of one instruction replacing the other.
> The output of MOVCCr is tied to the "false" input using RegConstraint.
> The register allocator puts the "false" value into the destination
> register, then MOVCCr gets expanded to a predicated MOVr which moves the
> "true" value into the destination register.
> -Eli
> --
> Employee of Qualcomm Innovation Center, Inc.
> Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux
> Foundation Collaborative Project
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20170707/81e38105/attachment.html>

More information about the llvm-dev mailing list