diff options
| author | Johnny Chen <johnny.chen@apple.com> | 2010-02-13 01:21:01 +0000 |
|---|---|---|
| committer | Johnny Chen <johnny.chen@apple.com> | 2010-02-13 01:21:01 +0000 |
| commit | b0208d2a0669f7b833371884cfd4abfb3af627f7 (patch) | |
| tree | 7e9c278ab435d95e0cde7b0f38ac77ffeea3cdc0 | |
| parent | ef3057c419cdfa0382b54a93d84feb602d28f197 (diff) | |
| download | bcm5719-llvm-b0208d2a0669f7b833371884cfd4abfb3af627f7.tar.gz bcm5719-llvm-b0208d2a0669f7b833371884cfd4abfb3af627f7.zip | |
Added a bunch of saturating add/subtract instructions for disassembly only.
llvm-svn: 96063
| -rw-r--r-- | llvm/lib/Target/ARM/ARMInstrInfo.td | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMInstrInfo.td b/llvm/lib/Target/ARM/ARMInstrInfo.td index 2bee21042c7..ea920227621 100644 --- a/llvm/lib/Target/ARM/ARMInstrInfo.td +++ b/llvm/lib/Target/ARM/ARMInstrInfo.td @@ -1330,6 +1330,78 @@ def : ARMPat<(add GPR:$src, so_imm_neg:$imm), // (mul X, 2^n+1) -> (add (X << n), X) // (mul X, 2^n-1) -> (rsb X, (X << n)) +// 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> { + 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 */]>; //===----------------------------------------------------------------------===// // Bitwise Instructions. |

