1 // RUN: llvm-mc -triple aarch64-none-linux-gnu -show-encoding -mattr=+v8.3a < %s 2> %t | FileCheck %s 2 // RUN: not llvm-mc -triple aarch64-none-linux-gnu < %s 2> %t 3 // RUN: FileCheck --check-prefix=CHECK-REQ %s < %t 4 5 mrs x0, apiakeylo_el1 6 mrs x0, apiakeyhi_el1 7 mrs x0, apibkeylo_el1 8 mrs x0, apibkeyhi_el1 9 mrs x0, apdakeylo_el1 10 mrs x0, apdakeyhi_el1 11 mrs x0, apdbkeylo_el1 12 mrs x0, apdbkeyhi_el1 13 mrs x0, apgakeylo_el1 14 mrs x0, apgakeyhi_el1 15 16 // CHECK: mrs x0, APIAKeyLo_EL1 // encoding: [0x00,0x21,0x38,0xd5] 17 // CHECK: mrs x0, APIAKeyHi_EL1 // encoding: [0x20,0x21,0x38,0xd5] 18 // CHECK: mrs x0, APIBKeyLo_EL1 // encoding: [0x40,0x21,0x38,0xd5] 19 // CHECK: mrs x0, APIBKeyHi_EL1 // encoding: [0x60,0x21,0x38,0xd5] 20 // CHECK: mrs x0, APDAKeyLo_EL1 // encoding: [0x00,0x22,0x38,0xd5] 21 // CHECK: mrs x0, APDAKeyHi_EL1 // encoding: [0x20,0x22,0x38,0xd5] 22 // CHECK: mrs x0, APDBKeyLo_EL1 // encoding: [0x40,0x22,0x38,0xd5] 23 // CHECK: mrs x0, APDBKeyHi_EL1 // encoding: [0x60,0x22,0x38,0xd5] 24 // CHECK: mrs x0, APGAKeyLo_EL1 // encoding: [0x00,0x23,0x38,0xd5] 25 // CHECK: mrs x0, APGAKeyHi_EL1 // encoding: [0x20,0x23,0x38,0xd5] 26 27 // CHECK-REQ: error: expected readable system register 28 // CHECK-REQ: error: expected readable system register 29 // CHECK-REQ: error: expected readable system register 30 // CHECK-REQ: error: expected readable system register 31 // CHECK-REQ: error: expected readable system register 32 // CHECK-REQ: error: expected readable system register 33 // CHECK-REQ: error: expected readable system register 34 // CHECK-REQ: error: expected readable system register 35 // CHECK-REQ: error: expected readable system register 36 // CHECK-REQ: error: expected readable system register 37 38 msr apiakeylo_el1, x0 39 msr apiakeyhi_el1, x0 40 msr apibkeylo_el1, x0 41 msr apibkeyhi_el1, x0 42 msr apdakeylo_el1, x0 43 msr apdakeyhi_el1, x0 44 msr apdbkeylo_el1, x0 45 msr apdbkeyhi_el1, x0 46 msr apgakeylo_el1, x0 47 msr apgakeyhi_el1, x0 48 49 // CHECK: msr APIAKeyLo_EL1, x0 // encoding: [0x00,0x21,0x18,0xd5] 50 // CHECK: msr APIAKeyHi_EL1, x0 // encoding: [0x20,0x21,0x18,0xd5] 51 // CHECK: msr APIBKeyLo_EL1, x0 // encoding: [0x40,0x21,0x18,0xd5] 52 // CHECK: msr APIBKeyHi_EL1, x0 // encoding: [0x60,0x21,0x18,0xd5] 53 // CHECK: msr APDAKeyLo_EL1, x0 // encoding: [0x00,0x22,0x18,0xd5] 54 // CHECK: msr APDAKeyHi_EL1, x0 // encoding: [0x20,0x22,0x18,0xd5] 55 // CHECK: msr APDBKeyLo_EL1, x0 // encoding: [0x40,0x22,0x18,0xd5] 56 // CHECK: msr APDBKeyHi_EL1, x0 // encoding: [0x60,0x22,0x18,0xd5] 57 // CHECK: msr APGAKeyLo_EL1, x0 // encoding: [0x00,0x23,0x18,0xd5] 58 // CHECK: msr APGAKeyHi_EL1, x0 // encoding: [0x20,0x23,0x18,0xd5] 59 60 // CHECK-REQ: error: expected writable system register or pstate 61 // CHECK-REQ: error: expected writable system register or pstate 62 // CHECK-REQ: error: expected writable system register or pstate 63 // CHECK-REQ: error: expected writable system register or pstate 64 // CHECK-REQ: error: expected writable system register or pstate 65 // CHECK-REQ: error: expected writable system register or pstate 66 // CHECK-REQ: error: expected writable system register or pstate 67 // CHECK-REQ: error: expected writable system register or pstate 68 // CHECK-REQ: error: expected writable system register or pstate 69 // CHECK-REQ: error: expected writable system register or pstate 70 71 paciasp 72 // CHECK: paciasp // encoding: [0x3f,0x23,0x03,0xd5] 73 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 74 autiasp 75 // CHECK: autiasp // encoding: [0xbf,0x23,0x03,0xd5] 76 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 77 paciaz 78 // CHECK: paciaz // encoding: [0x1f,0x23,0x03,0xd5] 79 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 80 autiaz 81 // CHECK: autiaz // encoding: [0x9f,0x23,0x03,0xd5] 82 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 83 pacia1716 84 // CHECK: pacia1716 // encoding: [0x1f,0x21,0x03,0xd5] 85 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 86 autia1716 87 // CHECK: autia1716 // encoding: [0x9f,0x21,0x03,0xd5] 88 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 89 pacibsp 90 // CHECK: pacibsp // encoding: [0x7f,0x23,0x03,0xd5] 91 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 92 autibsp 93 // CHECK: autibsp // encoding: [0xff,0x23,0x03,0xd5] 94 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 95 pacibz 96 // CHECK: pacibz // encoding: [0x5f,0x23,0x03,0xd5] 97 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 98 autibz 99 // CHECK: autibz // encoding: [0xdf,0x23,0x03,0xd5] 100 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 101 pacib1716 102 // CHECK: pacib1716 // encoding: [0x5f,0x21,0x03,0xd5] 103 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 104 autib1716 105 // CHECK: autib1716 // encoding: [0xdf,0x21,0x03,0xd5] 106 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 107 xpaclri 108 // CHECK: xpaclri // encoding: [0xff,0x20,0x03,0xd5] 109 // CHECK-REQ-NOT: error: instruction requires: armv8.3a 110 111 pacia x0, x1 112 // CHECK: pacia x0, x1 // encoding: [0x20,0x00,0xc1,0xda] 113 // CHECK-REQ: error: instruction requires: armv8.3a 114 autia x0, x1 115 // CHECK: autia x0, x1 // encoding: [0x20,0x10,0xc1,0xda] 116 // CHECK-REQ: error: instruction requires: armv8.3a 117 pacda x0, x1 118 // CHECK: pacda x0, x1 // encoding: [0x20,0x08,0xc1,0xda] 119 // CHECK-REQ: error: instruction requires: armv8.3a 120 autda x0, x1 121 // CHECK: autda x0, x1 // encoding: [0x20,0x18,0xc1,0xda] 122 // CHECK-REQ: error: instruction requires: armv8.3a 123 pacib x0, x1 124 // CHECK: pacib x0, x1 // encoding: [0x20,0x04,0xc1,0xda] 125 // CHECK-REQ: error: instruction requires: armv8.3a 126 autib x0, x1 127 // CHECK: autib x0, x1 // encoding: [0x20,0x14,0xc1,0xda] 128 // CHECK-REQ: error: instruction requires: armv8.3a 129 pacdb x0, x1 130 // CHECK: pacdb x0, x1 // encoding: [0x20,0x0c,0xc1,0xda] 131 // CHECK-REQ: error: instruction requires: armv8.3a 132 autdb x0, x1 133 // CHECK: autdb x0, x1 // encoding: [0x20,0x1c,0xc1,0xda] 134 // CHECK-REQ: error: instruction requires: armv8.3a 135 pacga x0, x1, x2 136 // CHECK: pacga x0, x1, x2 // encoding: [0x20,0x30,0xc2,0x9a] 137 // CHECK-REQ: error: instruction requires: armv8.3a 138 paciza x0 139 // CHECK: paciza x0 // encoding: [0xe0,0x23,0xc1,0xda] 140 // CHECK-REQ: error: instruction requires: armv8.3a 141 autiza x0 142 // CHECK: autiza x0 // encoding: [0xe0,0x33,0xc1,0xda] 143 // CHECK-REQ: error: instruction requires: armv8.3a 144 pacdza x0 145 // CHECK: pacdza x0 // encoding: [0xe0,0x2b,0xc1,0xda] 146 // CHECK-REQ: error: instruction requires: armv8.3a 147 autdza x0 148 // CHECK: autdza x0 // encoding: [0xe0,0x3b,0xc1,0xda] 149 // CHECK-REQ: error: instruction requires: armv8.3a 150 pacizb x0 151 // CHECK: pacizb x0 // encoding: [0xe0,0x27,0xc1,0xda] 152 // CHECK-REQ: error: instruction requires: armv8.3a 153 autizb x0 154 // CHECK: autizb x0 // encoding: [0xe0,0x37,0xc1,0xda] 155 // CHECK-REQ: error: instruction requires: armv8.3a 156 pacdzb x0 157 // CHECK: pacdzb x0 // encoding: [0xe0,0x2f,0xc1,0xda] 158 // CHECK-REQ: error: instruction requires: armv8.3a 159 autdzb x0 160 // CHECK: autdzb x0 // encoding: [0xe0,0x3f,0xc1,0xda] 161 // CHECK-REQ: error: instruction requires: armv8.3a 162 xpaci x0 163 // CHECK: xpaci x0 // encoding: [0xe0,0x43,0xc1,0xda] 164 // CHECK-REQ: error: instruction requires: armv8.3a 165 xpacd x0 166 // CHECK: xpacd x0 // encoding: [0xe0,0x47,0xc1,0xda] 167 // CHECK-REQ: error: instruction requires: armv8.3a 168 169 braa x0, x1 170 // CHECK: braa x0, x1 // encoding: [0x01,0x08,0x1f,0xd7] 171 // CHECK-REQ: error: instruction requires: armv8.3a 172 brab x0, x1 173 // CHECK: brab x0, x1 // encoding: [0x01,0x0c,0x1f,0xd7] 174 // CHECK-REQ: error: instruction requires: armv8.3a 175 blraa x0, x1 176 // CHECK: blraa x0, x1 // encoding: [0x01,0x08,0x3f,0xd7] 177 // CHECK-REQ: error: instruction requires: armv8.3a 178 blrab x0, x1 179 // CHECK: blrab x0, x1 // encoding: [0x01,0x0c,0x3f,0xd7] 180 // CHECK-REQ: error: instruction requires: armv8.3a 181 182 braaz x0 183 // CHECK: braaz x0 // encoding: [0x1f,0x08,0x1f,0xd6] 184 // CHECK-REQ: error: instruction requires: armv8.3a 185 brabz x0 186 // CHECK: brabz x0 // encoding: [0x1f,0x0c,0x1f,0xd6] 187 // CHECK-REQ: error: instruction requires: armv8.3a 188 blraaz x0 189 // CHECK: blraaz x0 // encoding: [0x1f,0x08,0x3f,0xd6] 190 // CHECK-REQ: error: instruction requires: armv8.3a 191 blrabz x0 192 // CHECK: blrabz x0 // encoding: [0x1f,0x0c,0x3f,0xd6] 193 // CHECK-REQ: error: instruction requires: armv8.3a 194 retaa 195 // CHECK: retaa // encoding: [0xff,0x0b,0x5f,0xd6] 196 // CHECK-REQ: error: instruction requires: armv8.3a 197 retab 198 // CHECK: retab // encoding: [0xff,0x0f,0x5f,0xd6] 199 // CHECK-REQ: error: instruction requires: armv8.3a 200 eretaa 201 // CHECK: eretaa // encoding: [0xff,0x0b,0x9f,0xd6] 202 // CHECK-REQ: error: instruction requires: armv8.3a 203 eretab 204 // CHECK: eretab // encoding: [0xff,0x0f,0x9f,0xd6] 205 // CHECK-REQ: error: instruction requires: armv8.3a 206 ldraa x0, [x1, 4088] 207 // CHECK: ldraa x0, [x1, #4088] // encoding: [0x20,0xf4,0x3f,0xf8] 208 // CHECK-REQ: error: instruction requires: armv8.3a 209 ldraa x0, [x1, -4096] 210 // CHECK: ldraa x0, [x1, #-4096] // encoding: [0x20,0x04,0x60,0xf8] 211 // CHECK-REQ: error: instruction requires: armv8.3a 212 ldrab x0, [x1, 4088] 213 // CHECK: ldrab x0, [x1, #4088] // encoding: [0x20,0xf4,0xbf,0xf8] 214 // CHECK-REQ: error: instruction requires: armv8.3a 215 ldrab x0, [x1, -4096] 216 // CHECK: ldrab x0, [x1, #-4096] // encoding: [0x20,0x04,0xe0,0xf8] 217 // CHECK-REQ: error: instruction requires: armv8.3a 218 ldraa x0, [x1, 4088]! 219 // CHECK: ldraa x0, [x1, #4088]! // encoding: [0x20,0xfc,0x3f,0xf8] 220 // CHECK-REQ: error: instruction requires: armv8.3a 221 ldraa x0, [x1, -4096]! 222 // CHECK: ldraa x0, [x1, #-4096]! // encoding: [0x20,0x0c,0x60,0xf8] 223 // CHECK-REQ: error: instruction requires: armv8.3a 224 ldrab x0, [x1, 4088]! 225 // CHECK: ldrab x0, [x1, #4088]! // encoding: [0x20,0xfc,0xbf,0xf8] 226 // CHECK-REQ: error: instruction requires: armv8.3a 227 ldrab x0, [x1, -4096]! 228 // CHECK: ldrab x0, [x1, #-4096]! // encoding: [0x20,0x0c,0xe0,0xf8] 229 // CHECK-REQ: error: instruction requires: armv8.3a 230 ldraa x0, [x1] 231 // CHECK: ldraa x0, [x1] // encoding: [0x20,0x04,0x20,0xf8] 232 // CHECK-REQ: error: instruction requires: armv8.3a 233 ldrab x0, [x1] 234 // CHECK: ldrab x0, [x1] // encoding: [0x20,0x04,0xa0,0xf8] 235 // CHECK-REQ: error: instruction requires: armv8.3a 236