[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?

-Dilan

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

> 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