mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-23 19:23:23 +01:00
c5975f74e8
Summary: LDRAA and LDRAB in their writeback variant should softfail when the same register is used as result and base. This patch adds a custom decoder that catches such case and emits a warning when it occurs. Differential Revision: https://reviews.llvm.org/D82541
130 lines
2.8 KiB
Plaintext
130 lines
2.8 KiB
Plaintext
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8.3a --disassemble < %s 2>&1 | FileCheck %s
|
|
|
|
# CHECK: warning: potentially undefined instruction encoding
|
|
# CHECK-NEXT: [0x00,0x0c,0x20,0xf8]
|
|
# CHECK: warning: potentially undefined instruction encoding
|
|
# CHECK-NEXT: [0x00,0x0c,0xa0,0xf8]
|
|
# CHECK: ldraa x0, [x0, #0]!
|
|
# CHECK: ldrab x0, [x0, #0]!
|
|
[0x00,0x0c,0x20,0xf8]
|
|
[0x00,0x0c,0xa0,0xf8]
|
|
|
|
# CHECK: paciasp
|
|
# CHECK: autiasp
|
|
# CHECK: paciaz
|
|
# CHECK: autiaz
|
|
# CHECK: pacia1716
|
|
# CHECK: autia1716
|
|
# CHECK: pacibsp
|
|
# CHECK: autibsp
|
|
# CHECK: pacibz
|
|
# CHECK: autibz
|
|
# CHECK: pacib1716
|
|
# CHECK: autib1716
|
|
# CHECK: xpaclri
|
|
[0x3f,0x23,0x03,0xd5]
|
|
[0xbf,0x23,0x03,0xd5]
|
|
[0x1f,0x23,0x03,0xd5]
|
|
[0x9f,0x23,0x03,0xd5]
|
|
[0x1f,0x21,0x03,0xd5]
|
|
[0x9f,0x21,0x03,0xd5]
|
|
[0x7f,0x23,0x03,0xd5]
|
|
[0xff,0x23,0x03,0xd5]
|
|
[0x5f,0x23,0x03,0xd5]
|
|
[0xdf,0x23,0x03,0xd5]
|
|
[0x5f,0x21,0x03,0xd5]
|
|
[0xdf,0x21,0x03,0xd5]
|
|
[0xff,0x20,0x03,0xd5]
|
|
|
|
# CHECK: pacia x0, x1
|
|
# CHECK: autia x0, x1
|
|
# CHECK: pacda x0, x1
|
|
# CHECK: autda x0, x1
|
|
# CHECK: pacib x0, x1
|
|
# CHECK: autib x0, x1
|
|
# CHECK: pacdb x0, x1
|
|
# CHECK: autdb x0, x1
|
|
# CHECK: pacga x0, x1, x2
|
|
# CHECK: paciza x0
|
|
# CHECK: autiza x0
|
|
# CHECK: pacdza x0
|
|
# CHECK: autdza x0
|
|
# CHECK: pacizb x0
|
|
# CHECK: autizb x0
|
|
# CHECK: pacdzb x0
|
|
# CHECK: autdzb x0
|
|
# CHECK: xpaci x0
|
|
# CHECK: xpacd x0
|
|
[0x20,0x00,0xc1,0xda]
|
|
[0x20,0x10,0xc1,0xda]
|
|
[0x20,0x08,0xc1,0xda]
|
|
[0x20,0x18,0xc1,0xda]
|
|
[0x20,0x04,0xc1,0xda]
|
|
[0x20,0x14,0xc1,0xda]
|
|
[0x20,0x0c,0xc1,0xda]
|
|
[0x20,0x1c,0xc1,0xda]
|
|
[0x20,0x30,0xc2,0x9a]
|
|
[0xe0,0x23,0xc1,0xda]
|
|
[0xe0,0x33,0xc1,0xda]
|
|
[0xe0,0x2b,0xc1,0xda]
|
|
[0xe0,0x3b,0xc1,0xda]
|
|
[0xe0,0x27,0xc1,0xda]
|
|
[0xe0,0x37,0xc1,0xda]
|
|
[0xe0,0x2f,0xc1,0xda]
|
|
[0xe0,0x3f,0xc1,0xda]
|
|
[0xe0,0x43,0xc1,0xda]
|
|
[0xe0,0x47,0xc1,0xda]
|
|
|
|
# CHECK: braa x0, x1
|
|
# CHECK: brab x0, x1
|
|
# CHECK: blraa x0, x1
|
|
# CHECK: blrab x0, x1
|
|
[0x01,0x08,0x1f,0xd7]
|
|
[0x01,0x0c,0x1f,0xd7]
|
|
[0x01,0x08,0x3f,0xd7]
|
|
[0x01,0x0c,0x3f,0xd7]
|
|
|
|
# CHECK: braaz x0
|
|
# CHECK: brabz x0
|
|
# CHECK: blraaz x0
|
|
# CHECK: blrabz x0
|
|
# CHECK: retaa
|
|
# CHECK: retab
|
|
# CHECK: eretaa
|
|
# CHECK: eretab
|
|
[0x1f,0x08,0x1f,0xd6]
|
|
[0x1f,0x0c,0x1f,0xd6]
|
|
[0x1f,0x08,0x3f,0xd6]
|
|
[0x1f,0x0c,0x3f,0xd6]
|
|
[0xff,0x0b,0x5f,0xd6]
|
|
[0xff,0x0f,0x5f,0xd6]
|
|
[0xff,0x0b,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,0x04,0x60,0xf8]
|
|
[0x20,0xf4,0xbf,0xf8]
|
|
[0x20,0x04,0xe0,0xf8]
|
|
[0x20,0xfc,0x3f,0xf8]
|
|
[0x20,0x0c,0x60,0xf8]
|
|
[0x20,0xfc,0xbf,0xf8]
|
|
[0x20,0x0c,0xe0,0xf8]
|
|
|
|
# CHECK: ldraa x0, [x1]
|
|
# CHECK: ldrab x0, [x1]
|
|
[0x20,0x04,0x20,0xf8]
|
|
[0x20,0x04,0xa0,0xf8]
|
|
|
|
# CHECK: ldraa x0, [x1, #0]!
|
|
# CHECK: ldrab x0, [x1, #0]!
|
|
[0x20,0x0c,0x20,0xf8]
|
|
[0x20,0x0c,0xa0,0xf8]
|