aboutsummaryrefslogtreecommitdiffstats
path: root/lib/Target/ARM/ARMInstrInfo.td
diff options
context:
space:
mode:
authorAmaury de la Vieuville <amaury.dlv@gmail.com>2013-06-08 13:38:52 +0000
committerAmaury de la Vieuville <amaury.dlv@gmail.com>2013-06-08 13:38:52 +0000
commit46e136c952e0242308db2682ba2ec4020cdcd006 (patch)
tree2b5ba5013c74cf75cd6e961468e27072e8e7f494 /lib/Target/ARM/ARMInstrInfo.td
parentc64835b0c57913b11abd648b76913390e62af8d6 (diff)
downloadexternal_llvm-46e136c952e0242308db2682ba2ec4020cdcd006.zip
external_llvm-46e136c952e0242308db2682ba2ec4020cdcd006.tar.gz
external_llvm-46e136c952e0242308db2682ba2ec4020cdcd006.tar.bz2
ARM: fix CPS decoding when ambiguous with QADD
Handle the case when the disassembler table can't tell the difference between some encodings of QADD and CPS. Add some necessary safe guards in CPS decoding as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183610 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMInstrInfo.td')
-rw-r--r--lib/Target/ARM/ARMInstrInfo.td2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMInstrInfo.td b/lib/Target/ARM/ARMInstrInfo.td
index 2ea01f9..310c381 100644
--- a/lib/Target/ARM/ARMInstrInfo.td
+++ b/lib/Target/ARM/ARMInstrInfo.td
@@ -3279,9 +3279,11 @@ class AAI<bits<8> op27_20, bits<8> op11_4, string opc,
// Saturating add/subtract
+let DecoderMethod = "DecodeQADDInstruction" in
def QADD : AAI<0b00010000, 0b00000101, "qadd",
[(set GPRnopc:$Rd, (int_arm_qadd GPRnopc:$Rm, GPRnopc:$Rn))],
(ins GPRnopc:$Rm, GPRnopc:$Rn), "\t$Rd, $Rm, $Rn">;
+
def QSUB : AAI<0b00010010, 0b00000101, "qsub",
[(set GPRnopc:$Rd, (int_arm_qsub GPRnopc:$Rm, GPRnopc:$Rn))],
(ins GPRnopc:$Rm, GPRnopc:$Rn), "\t$Rd, $Rm, $Rn">;