1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00

[MC][ARM] add .w suffixes for BL (T1) and DBG

F1.2 Standard assembler syntax fields
describes .w and .n suffixes for wide and narrow encodings.

arch/arm/probes/kprobes/test-thumb.c tests installing kprobes for
certain instructions using inline asm.  There's a few instructions we
fail to assemble due to missing .w t2InstAliases.

Adds .w suffixes for:
* bl  (F5.1.25 BL, BLX (immediate) T1)
* dbg (F5.1.42 DBG T1)

Reviewed By: DavidSpickett

Differential Revision: https://reviews.llvm.org/D97236
This commit is contained in:
Nick Desaulniers 2021-02-24 09:47:18 -08:00
parent 9d81ca43d2
commit 2cf4f5f7af
3 changed files with 15 additions and 0 deletions

View File

@ -3967,6 +3967,8 @@ def t2BXJ : T2I<(outs), (ins GPRnopc:$func), NoItinerary, "bxj", "\t$func", []>,
let Inst{15-0} = 0b1000111100000000;
}
def : t2InstAlias<"bl${p}.w $func", (tBL pred:$p, thumb_bl_target:$func), 0>;
// Compare and branch on zero / non-zero
let isBranch = 1, isTerminator = 1 in {
def tCBZ : T1I<(outs), (ins tGPR:$Rn, thumb_cb_target:$target), IIC_Br,
@ -4064,6 +4066,7 @@ def t2DBG : T2I<(outs), (ins imm0_15:$opt), NoItinerary, "dbg", "\t$opt",
let Inst{7-4} = 0b1111;
let Inst{3-0} = opt;
}
def : t2InstAlias<"dbg${p}.w $opt", (t2DBG imm0_15:$opt, pred:$p), 0>;
// Secure Monitor Call is a system instruction.
// Option = Inst{19-16}

View File

@ -647,10 +647,16 @@ adds sp, #-4096
dbg #5
dbg #0
dbg #15
dbg.w #0
it ne
dbgne.w #0
@ CHECK: dbg #5 @ encoding: [0xaf,0xf3,0xf5,0x80]
@ CHECK: dbg #0 @ encoding: [0xaf,0xf3,0xf0,0x80]
@ CHECK: dbg #15 @ encoding: [0xaf,0xf3,0xff,0x80]
@ CHECK: dbg #0 @ encoding: [0xaf,0xf3,0xf0,0x80]
@ CHECK: it ne @ encoding: [0x18,0xbf]
@ CHECK: dbgne #0 @ encoding: [0xaf,0xf3,0xf0,0x80]
@------------------------------------------------------------------------------

View File

@ -92,11 +92,17 @@
@ unconditional branches accept wide suffix and encode to wide encodings
@------------------------------------------------------------------------------
bl.w #256
it ne
blne.w #256
bmi.w #-256
bne.w #254
blt.w #-1048576
bge.w #1048574
@ CHECK: bl #256 @ encoding: [0x00,0xf0,0x80,0xf8]
@ CHECK: it ne @ encoding: [0x18,0xbf]
@ CHECK: blne #256 @ encoding: [0x00,0xf0,0x80,0xf8]
@ CHECK: bmi.w #-256 @ encoding: [0x3f,0xf5,0x80,0xaf]
@ CHECK: bne.w #254 @ encoding: [0x40,0xf0,0x7f,0x80]
@ CHECK: blt.w #-1048576 @ encoding: [0xc0,0xf6,0x00,0x80]