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>