summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSaleem Abdulrasool <compnerd@compnerd.org>2013-12-23 17:23:58 +0000
committerSaleem Abdulrasool <compnerd@compnerd.org>2013-12-23 17:23:58 +0000
commit8f57233536c0ae7efbe8bb5b800044f6d134db2a (patch)
tree205c5978ebed4c7d5e7f766ca17c4a7262eaeb87
parent166acc94892f78cdd78a28b30b218ad73cb785fb (diff)
downloadllvm-8f57233536c0ae7efbe8bb5b800044f6d134db2a.tar.gz
llvm-8f57233536c0ae7efbe8bb5b800044f6d134db2a.tar.bz2
llvm-8f57233536c0ae7efbe8bb5b800044f6d134db2a.tar.xz
ARM: bkpt has an implicit immediate constant 0
The bkpt mnemonic has an implicit immediate constant of 0 unless otherwise specified. Add an instruction alias for the unvalued breakpoint mnemonic to treat it as a 0. This improves compatibility with GNU AS. Signed-off-by: Saleem Abdulrasool <compnerd@compnerd.org> git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197913 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Target/ARM/ARMInstrInfo.td2
-rw-r--r--lib/Target/ARM/ARMInstrThumb.td2
-rw-r--r--test/MC/ARM/bkpt.s32
3 files changed, 36 insertions, 0 deletions
diff --git a/lib/Target/ARM/ARMInstrInfo.td b/lib/Target/ARM/ARMInstrInfo.td
index ad500eacad..e778bc8f4f 100644
--- a/lib/Target/ARM/ARMInstrInfo.td
+++ b/lib/Target/ARM/ARMInstrInfo.td
@@ -1725,6 +1725,8 @@ def BKPT : AInoP<(outs), (ins imm0_65535:$val), MiscFrm, NoItinerary,
let Inst{31-28} = 0xe; // AL
let Inst{7-4} = 0b0111;
}
+// default immediate for breakpoint mnemonic
+def : InstAlias<"bkpt", (BKPT 0)>, Requires<[IsARM]>;
def HLT : AInoP<(outs), (ins imm0_65535:$val), MiscFrm, NoItinerary,
"hlt", "\t$val", []>, Requires<[IsARM, HasV8]> {
diff --git a/lib/Target/ARM/ARMInstrThumb.td b/lib/Target/ARM/ARMInstrThumb.td
index 250b3c6f2c..f6d233a39c 100644
--- a/lib/Target/ARM/ARMInstrThumb.td
+++ b/lib/Target/ARM/ARMInstrThumb.td
@@ -300,6 +300,8 @@ def tBKPT : T1I<(outs), (ins imm0_255:$val), NoItinerary, "bkpt\t$val",
bits<8> val;
let Inst{7-0} = val;
}
+// default immediate for breakpoint mnemonic
+def : InstAlias<"bkpt", (tBKPT 0)>, Requires<[IsThumb]>;
def tHLT : T1I<(outs), (ins imm0_63:$val), NoItinerary, "hlt\t$val",
[]>, T1Encoding<0b101110>, Requires<[IsThumb, HasV8]> {
diff --git a/test/MC/ARM/bkpt.s b/test/MC/ARM/bkpt.s
new file mode 100644
index 0000000000..fcd4040b18
--- /dev/null
+++ b/test/MC/ARM/bkpt.s
@@ -0,0 +1,32 @@
+@ RUN: llvm-mc -triple armv7-unknown-unknown -filetype asm -o - %s | FileCheck %s
+
+ .syntax unified
+ .thumb
+
+ .global thumb_default_bkpt
+ .type thumb_default_bkpt, %function
+ .thumb_func
+thumb_default_bkpt:
+ bkpt
+
+@ CHECK-LABEL: thumb_default_bkpt
+@ CHECK: bkpt #0
+
+ .global normal_bkpt
+ .type normal_bkpt, %function
+normal_bkpt:
+ bkpt #42
+
+@ CHECK-LABEL: normal_bkpt
+@ CHECK: bkpt #42
+
+ .arm
+
+ .global arm_default_bkpt
+ .type arm_default_bkpt, %function
+arm_default_bkpt:
+ bkpt
+
+@ CEHCK-LABEL: arm_default_bkpt
+@ CHECK: bkpt #0
+