[llvm-commits] [llvm] r96153 - /llvm/trunk/lib/Target/ARM/ARMInstrInfo.td

Bob Wilson bob.wilson at apple.com
Mon Feb 15 15:45:50 PST 2010


I moved the empty pattern into the AQI class, too.  I guess it's not worth the effort of using a multiclass here, but keep that option in mind if you encounter similar instructions in the future.

On Feb 13, 2010, at 10:32 PM, Johnny Chen wrote:

> Author: johnny
> Date: Sun Feb 14 00:32:20 2010
> New Revision: 96153
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=96153&view=rev
> Log:
> Try to factorize the specification of saturating add/subtract operations a bit,
> as suggested by Bob Wilson.
> 
> Modified:
>    llvm/trunk/lib/Target/ARM/ARMInstrInfo.td
> 
> Modified: llvm/trunk/lib/Target/ARM/ARMInstrInfo.td
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/ARM/ARMInstrInfo.td?rev=96153&r1=96152&r2=96153&view=diff
> 
> ==============================================================================
> --- llvm/trunk/lib/Target/ARM/ARMInstrInfo.td (original)
> +++ llvm/trunk/lib/Target/ARM/ARMInstrInfo.td Sun Feb 14 00:32:20 2010
> @@ -1360,76 +1360,61 @@
> 
> // Saturating adds/subtracts -- for disassembly only
> 
> -class AQI<bits<8> op27_20, bits<4> op7_4, dag oops, dag iops, Format f,
> -          InstrItinClass itin, string opc, string asm, list<dag> pattern>
> -  : AI<oops, iops, f, itin, opc, asm, pattern> {
> +// GPR:$dst = GPR:$a op GPR:$b
> +class AQI<bits<8> op27_20, bits<4> op7_4, string opc, list<dag> pattern>
> +  : AI<(outs GPR:$dst), (ins GPR:$a, GPR:$b), DPFrm, IIC_iALUr,
> +       opc, "\t$dst, $a, $b", pattern> {
>   let Inst{27-20} = op27_20;
>   let Inst{7-4} = op7_4;
> }
> 
> -def QADD : AQI<0b00010000, 0b0101, (outs GPR:$dst), (ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "qadd", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def QADD16 : AQI<0b01100010, 0b0001,(outs GPR:$dst),(ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "qadd16", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def QADD8 : AQI<0b01100010, 0b1001, (outs GPR:$dst), (ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "qadd8", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def QASX : AQI<0b01100010, 0b0011, (outs GPR:$dst), (ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "qasx", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def QDADD : AQI<0b00010100, 0b0101,(outs GPR:$dst),(ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "qdadd", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def QDSUB : AQI<0b00010110, 0b0101,(outs GPR:$dst),(ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "qdsub", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def QSAX : AQI<0b01100010, 0b0101, (outs GPR:$dst), (ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "qsax", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def QSUB : AQI<0b00010010, 0b0101, (outs GPR:$dst), (ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "qsub", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def QSUB16 : AQI<0b01100010, 0b0111,(outs GPR:$dst),(ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "qsub16", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def QSUB8 : AQI<0b01100010, 0b1111,(outs GPR:$dst),(ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "qsub8", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def UQADD16 : AQI<0b01100110, 0b0001,(outs GPR:$dst),(ins GPR:$a, GPR:$b),DPFrm,
> -               IIC_iALUr, "uqadd16", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def UQADD8 : AQI<0b01100110, 0b1001,(outs GPR:$dst),(ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "uqadd8", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def UQASX : AQI<0b01100110, 0b0011, (outs GPR:$dst), (ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "uqasx", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def UQSAX : AQI<0b01100110, 0b0101, (outs GPR:$dst), (ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "uqsax", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def UQSUB16 : AQI<0b01100110, 0b0111,(outs GPR:$dst),(ins GPR:$a, GPR:$b),DPFrm,
> -               IIC_iALUr, "uqsub16", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> -
> -def UQSUB8 : AQI<0b01100110, 0b1111,(outs GPR:$dst),(ins GPR:$a, GPR:$b), DPFrm,
> -               IIC_iALUr, "uqsub8", "\t$dst, $a, $b",
> -               [/* For disassembly only; pattern left blank */]>;
> +def QADD    : AQI<0b00010000, 0b0101, "qadd",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def QADD16  : AQI<0b01100010, 0b0001, "qadd16",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def QADD8   : AQI<0b01100010, 0b1001, "qadd8",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def QASX    : AQI<0b01100010, 0b0011, "qasx",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def QDADD   : AQI<0b00010100, 0b0101, "qdadd",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def QDSUB   : AQI<0b00010110, 0b0101, "qdsub",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def QSAX    : AQI<0b01100010, 0b0101, "qsax",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def QSUB    : AQI<0b00010010, 0b0101, "qsub",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def QSUB16  : AQI<0b01100010, 0b0111, "qsub16",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def QSUB8   : AQI<0b01100010, 0b1111, "qsub8",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def UQADD16 : AQI<0b01100110, 0b0001, "uqadd16",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def UQADD8  : AQI<0b01100110, 0b1001, "uqadd8",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def UQASX   : AQI<0b01100110, 0b0011, "uqasx",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def UQSAX   : AQI<0b01100110, 0b0101, "uqsax",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def UQSUB16 : AQI<0b01100110, 0b0111, "uqsub16",
> +                  [/* For disassembly only; pattern left blank */]>;
> +
> +def UQSUB8  : AQI<0b01100110, 0b1111, "uqsub8",
> +                  [/* For disassembly only; pattern left blank */]>;
> 
> //===----------------------------------------------------------------------===//
> //  Bitwise Instructions.
> 
> 
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits





More information about the llvm-commits mailing list