mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-27 14:32:21 +00:00
Add an ARM RSBrr instruction for disassembly only.
Partial fix for PR7792. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110358 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a330d4c3ea
commit
cff7178844
@ -1629,13 +1629,21 @@ defm ADCS : AI1_adde_sube_s_irs<0b0101, "adcs",
|
||||
defm SBCS : AI1_adde_sube_s_irs<0b0110, "sbcs",
|
||||
BinOpFrag<(sube_live_carry node:$LHS, node:$RHS) >>;
|
||||
|
||||
// These don't define reg/reg forms, because they are handled above.
|
||||
def RSBri : AsI1<0b0011, (outs GPR:$dst), (ins GPR:$a, so_imm:$b), DPFrm,
|
||||
IIC_iALUi, "rsb", "\t$dst, $a, $b",
|
||||
[(set GPR:$dst, (sub so_imm:$b, GPR:$a))]> {
|
||||
let Inst{25} = 1;
|
||||
}
|
||||
|
||||
// The reg/reg form is only defined for the disassembler; for codegen it is
|
||||
// equivalent to SUBrr.
|
||||
def RSBrr : AsI1<0b0011, (outs GPR:$dst), (ins GPR:$a, GPR:$b), DPFrm,
|
||||
IIC_iALUr, "rsb", "\t$dst, $a, $b",
|
||||
[/* For disassembly only; pattern left blank */]> {
|
||||
let Inst{25} = 0;
|
||||
let Inst{11-4} = 0b00000000;
|
||||
}
|
||||
|
||||
def RSBrs : AsI1<0b0011, (outs GPR:$dst), (ins GPR:$a, so_reg:$b), DPSoRegFrm,
|
||||
IIC_iALUsr, "rsb", "\t$dst, $a, $b",
|
||||
[(set GPR:$dst, (sub so_reg:$b, GPR:$a))]> {
|
||||
|
@ -61,6 +61,10 @@
|
||||
# CHECK: rfedb r0!
|
||||
0x00 0x0a 0x30 0xf9
|
||||
|
||||
# CHECK-NOT: rsbeq r0, r2, r0, lsl #0
|
||||
# CHECK: rsbeq r0, r2, r0
|
||||
0x00 0x00 0x62 0x00
|
||||
|
||||
# CHECK: sbcs r0, pc, #1
|
||||
0x01 0x00 0xdf 0xe2
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user