# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8.3a --disassemble < %s 2>&1 | FileCheck %s
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+v8r --disassemble < %s 2>&1 | FileCheck %s
# RUN: llvm-mc -triple aarch64-none-linux-gnu -mattr=+pauth --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]
