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
This commit is contained in:
Saleem Abdulrasool 2013-12-23 17:23:58 +00:00
parent 166acc9489
commit 8f57233536
3 changed files with 36 additions and 0 deletions

View File

@ -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]> {

View File

@ -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]> {

32
test/MC/ARM/bkpt.s Normal file
View File

@ -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