[LLVMdev] [ARM backend] adding pattern for SMLALBB
Tim Northover
t.p.northover at gmail.com
Thu May 28 11:16:01 PDT 2015
Hi Jyoti,
> Obviously something is wrong in this pattern, I have not figured out what that is ?
The biggest problem is you're trying to define two separate values
(RdLo and RdHi). I don't think TableGen supports that yet (I thought
someone had done something recently, but can't find any trace of it).
If so, you'll need to use C++ to match those patterns.
> def : ARMV5MOPat<(smlal GPRnopc:$RdLo, GPRnopc:$RdHi,
> (sra (shl GPR:$a, (i32 24)), (i32 24)),
> (sra (shl GPR:$b, (i32 24)), (i32 24))),
> (SMLALBB GPRnopc:$RdLo, GPRnopc:$RdHi, GPRnopc:$Rn, GPRnopc:Rm)>;
>
> This throws "Variable not defined: 'smlal'
There is no smlal TableGen node, there's an SMLAL instruction, but you
can't use that as part of an input pattern because selection occurs
only once and bottom-up. Again, I think C++ is your only option here
(the 64-bit values are just not legal enough to effectively use
TableGen on).
Cheers.
Tim.
More information about the llvm-dev
mailing list