[LLVMdev] variant generation question
Chris Lattner
sabre at nondot.org
Tue Feb 13 13:18:11 PST 2007
On Tue, 13 Feb 2007, Scott Michel wrote:
> 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.
You haven't given me the full description for the instruction. Are
$rA/$rB/$rC all the same register class? Please include the full
instruction description and do the equivalent of:
$ cd lib/Target/X86
$ tblgen X86.td -I ../ -I ~/llvm/include/
to get the expanded definition of your instruction. With that, maybe I'll
have a more precise answer for you :)
Thanks,
-Chris
> 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
>
>
>
-Chris
--
http://nondot.org/sabre/
http://llvm.org/
More information about the llvm-dev
mailing list