[llvm-dev] Lowering Select to Two Predicated Movs

Dilan Manatunga via llvm-dev llvm-dev at lists.llvm.org
Fri Jul 7 16:48:52 PDT 2017

Cool, that all made sense. Thanks for the help and the useful code
examples. Cleared things up.


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

> On 7/7/2017 1:34 PM, Dilan Manatunga wrote:
> > 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?
> That's how it works right now, yes, but it's a bug, not the intended
> design.  (Post-RA scheduling runs after ExpandPseudoInstructions, so we
> need accurate dependencies; I'm surprised we haven't seen any miscompiles.)
> The correct way to represent the dependency is with an implicit use.
> See UpdatePredRedefs in IfConversion.cpp for an example.
> -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/d6566a20/attachment.html>

More information about the llvm-dev mailing list