forked from OSchip/llvm-project
[AArch64][v8.3a] Add LDRA '[xN]!' alias.
The instruction definition has been retroactively expanded to allow for an alias for '[xN, 0]!' as '[xN]!'. That wouldn't make sense on LDR, but does for LDRA.
This commit is contained in:
parent
142cbe73e9
commit
643ac6c042
|
@ -1463,6 +1463,9 @@ multiclass AuthLoad<bit M, string asm, Operand opr> {
|
||||||
|
|
||||||
def : InstAlias<asm # "\t$Rt, [$Rn]",
|
def : InstAlias<asm # "\t$Rt, [$Rn]",
|
||||||
(!cast<Instruction>(NAME # "indexed") GPR64:$Rt, GPR64sp:$Rn, 0)>;
|
(!cast<Instruction>(NAME # "indexed") GPR64:$Rt, GPR64sp:$Rn, 0)>;
|
||||||
|
|
||||||
|
def : InstAlias<asm # "\t$Rt, [$wback]!",
|
||||||
|
(!cast<Instruction>(NAME # "writeback") GPR64sp:$wback, GPR64:$Rt, 0)>;
|
||||||
}
|
}
|
||||||
|
|
||||||
//---
|
//---
|
||||||
|
|
|
@ -306,3 +306,11 @@
|
||||||
// CHECK-NEXT: ldrab x0, [x1] // encoding: [0x20,0x04,0xa0,0xf8]
|
// CHECK-NEXT: ldrab x0, [x1] // encoding: [0x20,0x04,0xa0,0xf8]
|
||||||
// CHECK-REQ: error: instruction requires: pa
|
// CHECK-REQ: error: instruction requires: pa
|
||||||
// CHECK-REQ-NEXT: ldrab x0, [x1]
|
// CHECK-REQ-NEXT: ldrab x0, [x1]
|
||||||
|
ldraa x0, [x1]!
|
||||||
|
// CHECK-NEXT: ldraa x0, [x1]! // encoding: [0x20,0x0c,0x20,0xf8]
|
||||||
|
// CHECK-REQ: error: instruction requires: pa
|
||||||
|
// CHECK-REQ-NEXT: ldraa x0, [x1]!
|
||||||
|
ldrab x0, [x1]!
|
||||||
|
// CHECK-NEXT: ldrab x0, [x1]! // encoding: [0x20,0x0c,0xa0,0xf8]
|
||||||
|
// CHECK-REQ: error: instruction requires: pa
|
||||||
|
// CHECK-REQ-NEXT: ldrab x0, [x1]!
|
||||||
|
|
|
@ -83,14 +83,6 @@
|
||||||
# CHECK: retab
|
# CHECK: retab
|
||||||
# CHECK: eretaa
|
# CHECK: eretaa
|
||||||
# CHECK: eretab
|
# CHECK: eretab
|
||||||
# CHECK: ldraa x0, [x1, #4088]
|
|
||||||
# CHECK: ldraa x0, [x1, #-4096]
|
|
||||||
# CHECK: ldrab x0, [x1, #4088]
|
|
||||||
# CHECK: ldrab x0, [x1, #-4096]
|
|
||||||
# CHECK: ldraa x0, [x1, #4088]!
|
|
||||||
# CHECK: ldraa x0, [x1, #-4096]!
|
|
||||||
# CHECK: ldrab x0, [x1, #4088]!
|
|
||||||
# CHECK: ldrab x0, [x1, #-4096]!
|
|
||||||
[0x1f,0x08,0x1f,0xd6]
|
[0x1f,0x08,0x1f,0xd6]
|
||||||
[0x1f,0x0c,0x1f,0xd6]
|
[0x1f,0x0c,0x1f,0xd6]
|
||||||
[0x1f,0x08,0x3f,0xd6]
|
[0x1f,0x08,0x3f,0xd6]
|
||||||
|
@ -99,6 +91,15 @@
|
||||||
[0xff,0x0f,0x5f,0xd6]
|
[0xff,0x0f,0x5f,0xd6]
|
||||||
[0xff,0x0b,0x9f,0xd6]
|
[0xff,0x0b,0x9f,0xd6]
|
||||||
[0xff,0x0f,0x9f,0xd6]
|
[0xff,0x0f,0x9f,0xd6]
|
||||||
|
|
||||||
|
# CHECK: ldraa x0, [x1, #4088]
|
||||||
|
# CHECK: ldraa x0, [x1, #-4096]
|
||||||
|
# CHECK: ldrab x0, [x1, #4088]
|
||||||
|
# CHECK: ldrab x0, [x1, #-4096]
|
||||||
|
# CHECK: ldraa x0, [x1, #4088]!
|
||||||
|
# CHECK: ldraa x0, [x1, #-4096]!
|
||||||
|
# CHECK: ldrab x0, [x1, #4088]!
|
||||||
|
# CHECK: ldrab x0, [x1, #-4096]!
|
||||||
[0x20,0xf4,0x3f,0xf8]
|
[0x20,0xf4,0x3f,0xf8]
|
||||||
[0x20,0x04,0x60,0xf8]
|
[0x20,0x04,0x60,0xf8]
|
||||||
[0x20,0xf4,0xbf,0xf8]
|
[0x20,0xf4,0xbf,0xf8]
|
||||||
|
@ -112,3 +113,8 @@
|
||||||
# CHECK: ldrab x0, [x1]
|
# CHECK: ldrab x0, [x1]
|
||||||
[0x20,0x04,0x20,0xf8]
|
[0x20,0x04,0x20,0xf8]
|
||||||
[0x20,0x04,0xa0,0xf8]
|
[0x20,0x04,0xa0,0xf8]
|
||||||
|
|
||||||
|
# CHECK: ldraa x0, [x1]!
|
||||||
|
# CHECK: ldrab x0, [x1]!
|
||||||
|
[0x20,0x0c,0x20,0xf8]
|
||||||
|
[0x20,0x0c,0xa0,0xf8]
|
||||||
|
|
Loading…
Reference in New Issue