[LLVMdev] [llvm-commits] [PATCH][Review request] tablegen: extend list fields
Sean Silva
silvas at purdue.edu
Wed Sep 12 16:58:05 PDT 2012
If you are changing the syntax, please update the BNF in the comments.
--Sean Silva
On Wed, Sep 12, 2012 at 6:16 PM, Akira Hatanaka <ahatanak at gmail.com> wrote:
> The attached patch adds a construct that enables extending the base class'
> lists rather than completely overwriting them.
> The patch hasn't gone through extensive testing yet (other than running make
> check).
>
> The lists can be extended either with a "+=" operator in a let statement or
> placing a '"+" in front of a superclass:
>
> - Example 1:
>
> def D0 : C1 {
> let Predicates += [P2]; // Append P2 to C1's Predicates
> }
>
> - Example 2:
>
> def D0 : C1, +AddP1;
>
>
> Using a real example, MOVi16 (in ARMInstrInfo.td) which is defined as
>
> def MOVi16 : AI1<0b1000, (outs GPR:$Rd), (ins imm0_65535_expr:$imm),
> DPFrm, IIC_iMOVi,
> "movw", "\t$Rd, $imm",
> [(set GPR:$Rd, imm0_65535:$imm)]>,
> Requires<[IsARM, HasV6T2]>, UnaryDP {
>
>
> can be rewritten to this:
>
> class PredHasV6T2 {
> list<Predicate> Predicates = [HasV6T2];
> }
>
> def MOVi16 : AI1<0b1000, (outs GPR:$Rd), (ins imm0_65535_expr:$imm),
> DPFrm, IIC_iMOVi,
> "movw", "\t$Rd, $imm",
> [(set GPR:$Rd, imm0_65535:$imm)]>,
> +PredHasV6T2, UnaryDP {
>
> Since AI1 already has "IsARM" in its predicate list, MOVi16 just has to
> extend the list with [HasV6T2].
>
>
> Also, I changed the last statement of ListRecTy::convertValue (in
> lib/TableGen/Record.cpp) to pass the element type of the list rather than
> the list type.
> I would appreciate if someone could take a look at this code and tell me
> whether this is correct.
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
More information about the llvm-dev
mailing list