[LLVMdev] variant generation question

Scott Michel scottm at aero.org
Tue Feb 13 10:43:39 PST 2007


On Feb 9, 2007, at 7:42 PM, Chris Lattner wrote:

> On Fri, 9 Feb 2007, Scott Michel wrote:
>> I would have expected four additional patterns, each with the (and  
>> $rC, $rA)
>> variant in it. But I only get the above four.
>>
>> Is this a bug or a feature? :-)
>
> This is a feature.  They would match the same pattern, so it would  
> just be
> generating dead code.  For the same reason, if you write something  
> like:

I'm not sure how much of a feature that is -- evidently, in my  
particular case, enumerating all eight variants ends up generating  
the desired code. Leaving llvm to its own devices doesn't generate  
the desired code. I would have expected that the "(and $rA, $rC)" to  
match "(and $rC, $rA)", were they inverted, but it doesn't get  
generated in my test code.

Generated patterns:

(or (and $rA, $rC), (and $rB, (not $rC)))  # original
(or (and $rA, $rC), (and (not $rC), $rB))
(or (and $rB, (not $rC)), (and $rA, $rC))
(or (and (not $rC), $rB), (and $rA, $rC))

Missing patterns:

(or (and $rC, $rA), (and $rB, (not $rC)))
(or (and $rC, $rA), (and (not $rC), $rB))
(or (and $rB, (not $rC)), (and $rC, $rA))
(or (and (not $rC), $rB), (and $rC, $rA))


-scooter

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20070213/66f36e91/attachment.html>


More information about the llvm-dev mailing list