From 8f57233536c0ae7efbe8bb5b800044f6d134db2a Mon Sep 17 00:00:00 2001 From: Saleem Abdulrasool Date: Mon, 23 Dec 2013 17:23:58 +0000 Subject: [PATCH] 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 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@197913 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/ARM/ARMInstrInfo.td | 2 ++ lib/Target/ARM/ARMInstrThumb.td | 2 ++ test/MC/ARM/bkpt.s | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 36 insertions(+) create mode 100644 test/MC/ARM/bkpt.s diff --git a/lib/Target/ARM/ARMInstrInfo.td b/lib/Target/ARM/ARMInstrInfo.td index ad500eacad0..e778bc8f4fa 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 250b3c6f2c6..f6d233a39c5 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 00000000000..fcd4040b186 --- /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 +