[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