1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
|
// RUN: llvm-mc -triple thumbv8.1m.main-arm-none-eabi -mattr=+pacbti %s -show-encoding -o - | FileCheck %s --check-prefixes=CHECK,CHECK-PACBTI
// RUN: not llvm-mc -triple thumbv8.1m.main-arm-none-eabi -mattr=-pacbti %s -show-encoding -o - 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-NOPACBTI
// RUN: not llvm-mc -triple thumbv7m-arm-none-eabi %s -show-encoding -o - 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-NOPACBTI
// Non Hint Space instructions and system regs
// CHECK-PACBTI: autg r0, r1, r2 @ encoding: [0x51,0xfb,0x02,0x0f]
// CHECK-NOPACBTI: error: instruction requires: pacbti
autg r0, r1, r2
// CHECK-PACBTI: autg r12, lr, sp @ encoding: [0x5e,0xfb,0x0d,0xcf]
// CHECK-NOPACBTI: error: instruction requires: pacbti
autg ip, lr, sp
// CHECK-PACBTI: bxaut r0, r1, r2 @ encoding: [0x51,0xfb,0x12,0x0f]
// CHECK-NOPACBTI: error: instruction requires: pacbti
bxaut r0, r1, r2
// CHECK-PACBTI: pacg r0, r1, r2 @ encoding: [0x61,0xfb,0x02,0xf0]
// CHECK-NOPACBTI: error: instruction requires: pacbti
pacg r0, r1, r2
// CHECK-PACBTI: pacg r12, lr, sp @ encoding: [0x6e,0xfb,0x0d,0xfc]
// CHECK-NOPACBTI: error: instruction requires: pacbti
pacg ip, lr, sp
// CHECK-PACBTI: msr pac_key_p_0, r0 @ encoding: [0x80,0xf3,0x20,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_p_0, r0
// CHECK-PACBTI: msr pac_key_p_1, r0 @ encoding: [0x80,0xf3,0x21,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_p_1, r0
// CHECK-PACBTI: msr pac_key_p_2, r0 @ encoding: [0x80,0xf3,0x22,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_p_2, r0
// CHECK-PACBTI: msr pac_key_p_3, r0 @ encoding: [0x80,0xf3,0x23,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_p_3, r0
// CHECK-PACBTI: msr pac_key_u_0, r0 @ encoding: [0x80,0xf3,0x24,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_u_0, r0
// CHECK-PACBTI: msr pac_key_u_1, r0 @ encoding: [0x80,0xf3,0x25,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_u_1, r0
// CHECK-PACBTI: msr pac_key_u_2, r0 @ encoding: [0x80,0xf3,0x26,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_u_2, r0
// CHECK-PACBTI: msr pac_key_u_3, r0 @ encoding: [0x80,0xf3,0x27,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_u_3, r0
// CHECK-PACBTI: msr pac_key_p_0_ns, r0 @ encoding: [0x80,0xf3,0xa0,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_p_0_ns, r0
// CHECK-PACBTI: msr pac_key_p_1_ns, r0 @ encoding: [0x80,0xf3,0xa1,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_p_1_ns, r0
// CHECK-PACBTI: msr pac_key_p_2_ns, r0 @ encoding: [0x80,0xf3,0xa2,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_p_2_ns, r0
// CHECK-PACBTI: msr pac_key_p_3_ns, r0 @ encoding: [0x80,0xf3,0xa3,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_p_3_ns, r0
// CHECK-PACBTI: msr pac_key_u_0_ns, r0 @ encoding: [0x80,0xf3,0xa4,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_u_0_ns, r0
// CHECK-PACBTI: msr pac_key_u_1_ns, r0 @ encoding: [0x80,0xf3,0xa5,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_u_1_ns, r0
// CHECK-PACBTI: msr pac_key_u_2_ns, r0 @ encoding: [0x80,0xf3,0xa6,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_u_2_ns, r0
// CHECK-PACBTI: msr pac_key_u_3_ns, r0 @ encoding: [0x80,0xf3,0xa7,0x88]
// CHECK-NOPACBTI: error: invalid operand for instruction
msr pac_key_u_3_ns, r0
// CHECK-PACBTI: mrs r0, pac_key_p_0 @ encoding: [0xef,0xf3,0x20,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_p_0
// CHECK-PACBTI: mrs r0, pac_key_p_1 @ encoding: [0xef,0xf3,0x21,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_p_1
// CHECK-PACBTI: mrs r0, pac_key_p_2 @ encoding: [0xef,0xf3,0x22,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_p_2
// CHECK-PACBTI: mrs r0, pac_key_p_3 @ encoding: [0xef,0xf3,0x23,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_p_3
// CHECK-PACBTI: mrs r0, pac_key_u_0 @ encoding: [0xef,0xf3,0x24,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_u_0
// CHECK-PACBTI: mrs r0, pac_key_u_1 @ encoding: [0xef,0xf3,0x25,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_u_1
// CHECK-PACBTI: mrs r0, pac_key_u_2 @ encoding: [0xef,0xf3,0x26,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_u_2
// CHECK-PACBTI: mrs r0, pac_key_u_3 @ encoding: [0xef,0xf3,0x27,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_u_3
// CHECK-PACBTI: mrs r0, pac_key_p_0_ns @ encoding: [0xef,0xf3,0xa0,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_p_0_ns
// CHECK-PACBTI: mrs r0, pac_key_p_1_ns @ encoding: [0xef,0xf3,0xa1,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_p_1_ns
// CHECK-PACBTI: mrs r0, pac_key_p_2_ns @ encoding: [0xef,0xf3,0xa2,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_p_2_ns
// CHECK-PACBTI: mrs r0, pac_key_p_3_ns @ encoding: [0xef,0xf3,0xa3,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_p_3_ns
// CHECK-PACBTI: mrs r0, pac_key_u_0_ns @ encoding: [0xef,0xf3,0xa4,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_u_0_ns
// CHECK-PACBTI: mrs r0, pac_key_u_1_ns @ encoding: [0xef,0xf3,0xa5,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_u_1_ns
// CHECK-PACBTI: mrs r0, pac_key_u_2_ns @ encoding: [0xef,0xf3,0xa6,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_u_2_ns
// CHECK-PACBTI: mrs r0, pac_key_u_3_ns @ encoding: [0xef,0xf3,0xa7,0x80]
// CHECK-NOPACBTI: error: invalid operand for instruction
mrs r0, pac_key_u_3_ns
// Hint space instructions - deliberately at the bottom of the file as the
// error's are emitted first.
// CHECK: aut r12, lr, sp @ encoding: [0xaf,0xf3,0x2d,0x80]
aut ip, lr, sp
// CHECK: aut r12,lr,sp @ encoding: [0xaf,0xf3,0x2d,0x80]
hint.w #45
// CHECK: bti @ encoding: [0xaf,0xf3,0x0f,0x80]
bti
// CHECK: bti @ encoding: [0xaf,0xf3,0x0f,0x80]
hint.w #15
// CHECK: pac r12, lr, sp @ encoding: [0xaf,0xf3,0x1d,0x80]
pac ip, lr, sp
// CHECK: pac r12,lr,sp @ encoding: [0xaf,0xf3,0x1d,0x80]
hint.w #29
// CHECK: pacbti r12, lr, sp @ encoding: [0xaf,0xf3,0x0d,0x80]
pacbti ip, lr, sp
// CHECK: pacbti r12,lr,sp @ encoding: [0xaf,0xf3,0x0d,0x80]
hint.w #13
|