basic-a64-diagnostics.s revision b5161863866b64498a7faa20e612c55de4bca6f8
1// RUN: not llvm-mc -triple=aarch64 < %s 2>&1 | FileCheck --check-prefix=CHECK-ERROR %s 2 3//------------------------------------------------------------------------------ 4// Add/sub (extended register) 5//------------------------------------------------------------------------------ 6 7 // Mismatched final register and extend 8 add x2, x3, x5, sxtb 9 add x2, x4, w2, uxtx 10 add w5, w7, x9, sxtx 11// CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 12// CHECK-ERROR: add x2, x3, x5, sxtb 13// CHECK-ERROR: ^ 14// CHECK-ERROR: error: expected '[su]xt[bhw]' or 'lsl' with optional integer in range [0, 4] 15// CHECK-ERROR: add x2, x4, w2, uxtx 16// CHECK-ERROR: ^ 17// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095] 18// CHECK-ERROR: add w5, w7, x9, sxtx 19// CHECK-ERROR: ^ 20 21 // Out of range extends 22 add x9, x10, w11, uxtb #-1 23 add x3, x5, w7, uxtb #5 24 sub x9, x15, x2, uxth #5 25// CHECK-ERROR: error: expected integer shift amount 26// CHECK-ERROR: add x9, x10, w11, uxtb #-1 27// CHECK-ERROR: ^ 28// CHECK-ERROR: error: expected '[su]xt[bhw]' or 'lsl' with optional integer in range [0, 4] 29// CHECK-ERROR: add x3, x5, w7, uxtb #5 30// CHECK-ERROR: ^ 31// CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 32// CHECK-ERROR: sub x9, x15, x2, uxth #5 33// CHECK-ERROR: ^ 34 35 // Wrong registers on normal variants 36 add xzr, x3, x5, uxtx 37 sub x3, xzr, w9, sxth #1 38 add x1, x2, sp, uxtx 39// CHECK-ERROR: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63] 40// CHECK-ERROR: add xzr, x3, x5, uxtx 41// CHECK-ERROR: ^ 42// CHECK-ERROR: error: invalid operand for instruction 43// CHECK-ERROR: sub x3, xzr, w9, sxth #1 44// CHECK-ERROR: ^ 45// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095] 46// CHECK-ERROR: add x1, x2, sp, uxtx 47// CHECK-ERROR: ^ 48 49 // Wrong registers on flag-setting variants 50 adds sp, x3, w2, uxtb 51 adds x3, xzr, x9, uxtx 52 subs x2, x1, sp, uxtx 53 adds x2, x1, sp, uxtb #2 54// CHECK-ERROR: error: invalid operand for instruction 55// CHECK-ERROR: adds sp, x3, w2, uxtb 56// CHECK-ERROR: ^ 57// CHECK-ERROR: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63] 58// CHECK-ERROR: adds x3, xzr, x9, uxtx 59// CHECK-ERROR: ^ 60// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095] 61// CHECK-ERROR: subs x2, x1, sp, uxtx 62// CHECK-ERROR: ^ 63// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095] 64// CHECK-ERROR: adds x2, x1, sp, uxtb #2 65// CHECK-ERROR: ^ 66 67 // Amount not optional if lsl valid and used 68 add sp, x5, x7, lsl 69// CHECK-ERROR: error: expected #imm after shift specifier 70// CHECK-ERROR: add sp, x5, x7, lsl 71// CHECK-ERROR: ^ 72 73//------------------------------------------------------------------------------ 74// Add/sub (immediate) 75//------------------------------------------------------------------------------ 76 77// Out of range immediates: < 0 or more than 12 bits 78 add w4, w5, #-1 79 add w5, w6, #0x1000 80 add w4, w5, #-1, lsl #12 81 add w5, w6, #0x1000, lsl #12 82// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095] 83// CHECK-ERROR-NEXT: add w4, w5, #-1 84// CHECK-ERROR-NEXT: ^ 85// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095] 86// CHECK-ERROR-NEXT: add w5, w6, #0x1000 87// CHECK-ERROR-NEXT: ^ 88// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095] 89// CHECK-ERROR-NEXT: add w4, w5, #-1, lsl #12 90// CHECK-ERROR-NEXT: ^ 91// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095] 92// CHECK-ERROR-NEXT: add w5, w6, #0x1000, lsl #12 93// CHECK-ERROR-NEXT: ^ 94 95// Only lsl #0 and lsl #12 are allowed 96 add w2, w3, #0x1, lsl #1 97 add w5, w17, #0xfff, lsl #13 98 add w17, w20, #0x1000, lsl #12 99 sub xsp, x34, #0x100, lsl #-1 100// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095] 101// CHECK-ERROR-NEXT: add w2, w3, #0x1, lsl #1 102// CHECK-ERROR-NEXT: ^ 103// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095] 104// CHECK-ERROR-NEXT: add w5, w17, #0xfff, lsl #13 105// CHECK-ERROR-NEXT: ^ 106// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095] 107// CHECK-ERROR-NEXT: add w17, w20, #0x1000, lsl #12 108// CHECK-ERROR-NEXT: ^ 109// CHECK-ERROR-NEXT: error: only 'lsl #+N' valid after immediate 110// CHECK-ERROR-NEXT: sub xsp, x34, #0x100, lsl #-1 111// CHECK-ERROR-NEXT: ^ 112 113// Incorrect registers (w31 doesn't exist at all, and 31 decodes to sp for these). 114 add w31, w20, #1234 115 add wzr, w20, #0x123 116 add w20, wzr, #0x321 117 add wzr, wzr, #0xfff 118// CHECK-ERROR: error: invalid operand for instruction 119// CHECK-ERROR-NEXT: add w31, w20, #1234 120// CHECK-ERROR-NEXT: ^ 121// CHECK-ERROR-NEXT: error: invalid operand for instruction 122// CHECK-ERROR-NEXT: add wzr, w20, #0x123 123// CHECK-ERROR-NEXT: ^ 124// CHECK-ERROR-NEXT: error: invalid operand for instruction 125// CHECK-ERROR-NEXT: add w20, wzr, #0x321 126// CHECK-ERROR-NEXT: ^ 127// CHECK-ERROR-NEXT: error: invalid operand for instruction 128// CHECK-ERROR-NEXT: add wzr, wzr, #0xfff 129// CHECK-ERROR-NEXT: ^ 130 131// Mixed register classes 132 add xsp, w2, #123 133 sub w2, x30, #32 134// CHECK-ERROR: error: invalid operand for instruction 135// CHECK-ERROR-NEXT: add xsp, w2, #123 136// CHECK-ERROR-NEXT: ^ 137// CHECK-ERROR-NEXT: error: invalid operand for instruction 138// CHECK-ERROR-NEXT: sub w2, x30, #32 139// CHECK-ERROR-NEXT: ^ 140 141// Out of range immediate 142 adds w0, w5, #0x10000 143// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095] 144// CHECK-ERROR-NEXT: adds w0, w5, #0x10000 145// CHECK-ERROR-NEXT: ^ 146 147// Wn|WSP should be in second place 148 adds w4, wzr, #0x123 149// ...but wzr is the 31 destination 150 subs wsp, w5, #123 151 subs x5, xzr, #0x456, lsl #12 152// CHECK-ERROR: error: invalid operand for instruction 153// CHECK-ERROR-NEXT: adds w4, wzr, #0x123 154// CHECK-ERROR-NEXT: ^ 155// CHECK-ERROR-NEXT: error: invalid operand for instruction 156// CHECK-ERROR-NEXT: subs wsp, w5, #123 157// CHECK-ERROR-NEXT: ^ 158// CHECK-ERROR-NEXT: error: invalid operand for instruction 159// CHECK-ERROR-NEXT: subs x5, xzr, #0x456, lsl #12 160// CHECK-ERROR-NEXT: ^ 161 162 // MOV alias should not accept any fiddling 163 mov x2, xsp, #123 164 mov wsp, w27, #0xfff, lsl #12 165// CHECK-ERROR: error: expected compatible register or logical immediate 166// CHECK-ERROR-NEXT: mov x2, xsp, #123 167// CHECK-ERROR-NEXT: ^ 168// CHECK-ERROR-NEXT: error: invalid operand for instruction 169// CHECK-ERROR-NEXT: mov wsp, w27, #0xfff, lsl #12 170// CHECK-ERROR-NEXT: ^ 171 172 // A relocation should be provided for symbols 173 add x3, x9, #variable 174// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095] 175// CHECK-ERROR-NEXT: add x3, x9, #variable 176// CHECK-ERROR-NEXT: ^ 177 178 179//------------------------------------------------------------------------------ 180// Add-subtract (shifted register) 181//------------------------------------------------------------------------------ 182 183 add wsp, w1, w2, lsr #3 184 add x4, sp, x9, asr #5 185 add x9, x10, x5, ror #3 186// CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 187// CHECK-ERROR-NEXT: add wsp, w1, w2, lsr #3 188// CHECK-ERROR-NEXT: ^ 189// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 190// CHECK-ERROR-NEXT: add x4, sp, x9, asr #5 191// CHECK-ERROR-NEXT: ^ 192// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 193// CHECK-ERROR-NEXT: add x9, x10, x5, ror #3 194// CHECK-ERROR-NEXT: ^ 195 196 add w1, w2, w3, lsl #-1 197 add w1, w2, w3, lsl #32 198 add w1, w2, w3, lsr #-1 199 add w1, w2, w3, lsr #32 200 add w1, w2, w3, asr #-1 201 add w1, w2, w3, asr #32 202 add x1, x2, x3, lsl #-1 203 add x1, x2, x3, lsl #64 204 add x1, x2, x3, lsr #-1 205 add x1, x2, x3, lsr #64 206 add x1, x2, x3, asr #-1 207 add x1, x2, x3, asr #64 208// CHECK-ERROR: error: expected integer shift amount 209// CHECK-ERROR-NEXT: add w1, w2, w3, lsl #-1 210// CHECK-ERROR-NEXT: ^ 211// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 212// CHECK-ERROR-NEXT: add w1, w2, w3, lsl #32 213// CHECK-ERROR-NEXT: ^ 214// CHECK-ERROR-NEXT: error: expected integer shift amount 215// CHECK-ERROR-NEXT: add w1, w2, w3, lsr #-1 216// CHECK-ERROR-NEXT: ^ 217// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 218// CHECK-ERROR-NEXT: add w1, w2, w3, lsr #32 219// CHECK-ERROR-NEXT: ^ 220// CHECK-ERROR-NEXT: error: expected integer shift amount 221// CHECK-ERROR-NEXT: add w1, w2, w3, asr #-1 222// CHECK-ERROR-NEXT: ^ 223// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 224// CHECK-ERROR-NEXT: add w1, w2, w3, asr #32 225// CHECK-ERROR-NEXT: ^ 226// CHECK-ERROR-NEXT: error: expected integer shift amount 227// CHECK-ERROR-NEXT: add x1, x2, x3, lsl #-1 228// CHECK-ERROR-NEXT: ^ 229// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 230// CHECK-ERROR-NEXT: add x1, x2, x3, lsl #64 231// CHECK-ERROR-NEXT: ^ 232// CHECK-ERROR-NEXT: error: expected integer shift amount 233// CHECK-ERROR-NEXT: add x1, x2, x3, lsr #-1 234// CHECK-ERROR-NEXT: ^ 235// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 236// CHECK-ERROR-NEXT: add x1, x2, x3, lsr #64 237// CHECK-ERROR-NEXT: ^ 238// CHECK-ERROR-NEXT: error: expected integer shift amount 239// CHECK-ERROR-NEXT: add x1, x2, x3, asr #-1 240// CHECK-ERROR-NEXT: ^ 241// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 242// CHECK-ERROR-NEXT: add x1, x2, x3, asr #64 243// CHECK-ERROR-NEXT: ^ 244 245 adds w1, w2, w3, lsl #-1 246 adds w1, w2, w3, lsl #32 247 adds w1, w2, w3, lsr #-1 248 adds w1, w2, w3, lsr #32 249 adds w1, w2, w3, asr #-1 250 adds w1, w2, w3, asr #32 251 adds x1, x2, x3, lsl #-1 252 adds x1, x2, x3, lsl #64 253 adds x1, x2, x3, lsr #-1 254 adds x1, x2, x3, lsr #64 255 adds x1, x2, x3, asr #-1 256 adds x1, x2, x3, asr #64 257// CHECK-ERROR: error: expected integer shift amount 258// CHECK-ERROR-NEXT: adds w1, w2, w3, lsl #-1 259// CHECK-ERROR-NEXT: ^ 260// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 261// CHECK-ERROR-NEXT: adds w1, w2, w3, lsl #32 262// CHECK-ERROR-NEXT: ^ 263// CHECK-ERROR-NEXT: error: expected integer shift amount 264// CHECK-ERROR-NEXT: adds w1, w2, w3, lsr #-1 265// CHECK-ERROR-NEXT: ^ 266// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 267// CHECK-ERROR-NEXT: adds w1, w2, w3, lsr #32 268// CHECK-ERROR-NEXT: ^ 269// CHECK-ERROR-NEXT: error: expected integer shift amount 270// CHECK-ERROR-NEXT: adds w1, w2, w3, asr #-1 271// CHECK-ERROR-NEXT: ^ 272// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 273// CHECK-ERROR-NEXT: adds w1, w2, w3, asr #32 274// CHECK-ERROR-NEXT: ^ 275// CHECK-ERROR-NEXT: error: expected integer shift amount 276// CHECK-ERROR-NEXT: adds x1, x2, x3, lsl #-1 277// CHECK-ERROR-NEXT: ^ 278// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 279// CHECK-ERROR-NEXT: adds x1, x2, x3, lsl #64 280// CHECK-ERROR-NEXT: ^ 281// CHECK-ERROR-NEXT: error: expected integer shift amount 282// CHECK-ERROR-NEXT: adds x1, x2, x3, lsr #-1 283// CHECK-ERROR-NEXT: ^ 284// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 285// CHECK-ERROR-NEXT: adds x1, x2, x3, lsr #64 286// CHECK-ERROR-NEXT: ^ 287// CHECK-ERROR-NEXT: error: expected integer shift amount 288// CHECK-ERROR-NEXT: adds x1, x2, x3, asr #-1 289// CHECK-ERROR-NEXT: ^ 290// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 291// CHECK-ERROR-NEXT: adds x1, x2, x3, asr #64 292// CHECK-ERROR-NEXT: ^ 293 294 sub w1, w2, w3, lsl #-1 295 sub w1, w2, w3, lsl #32 296 sub w1, w2, w3, lsr #-1 297 sub w1, w2, w3, lsr #32 298 sub w1, w2, w3, asr #-1 299 sub w1, w2, w3, asr #32 300 sub x1, x2, x3, lsl #-1 301 sub x1, x2, x3, lsl #64 302 sub x1, x2, x3, lsr #-1 303 sub x1, x2, x3, lsr #64 304 sub x1, x2, x3, asr #-1 305 sub x1, x2, x3, asr #64 306// CHECK-ERROR: error: expected integer shift amount 307// CHECK-ERROR-NEXT: sub w1, w2, w3, lsl #-1 308// CHECK-ERROR-NEXT: ^ 309// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 310// CHECK-ERROR-NEXT: sub w1, w2, w3, lsl #32 311// CHECK-ERROR-NEXT: ^ 312// CHECK-ERROR-NEXT: error: expected integer shift amount 313// CHECK-ERROR-NEXT: sub w1, w2, w3, lsr #-1 314// CHECK-ERROR-NEXT: ^ 315// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 316// CHECK-ERROR-NEXT: sub w1, w2, w3, lsr #32 317// CHECK-ERROR-NEXT: ^ 318// CHECK-ERROR-NEXT: error: expected integer shift amount 319// CHECK-ERROR-NEXT: sub w1, w2, w3, asr #-1 320// CHECK-ERROR-NEXT: ^ 321// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 322// CHECK-ERROR-NEXT: sub w1, w2, w3, asr #32 323// CHECK-ERROR-NEXT: ^ 324// CHECK-ERROR-NEXT: error: expected integer shift amount 325// CHECK-ERROR-NEXT: sub x1, x2, x3, lsl #-1 326// CHECK-ERROR-NEXT: ^ 327// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 328// CHECK-ERROR-NEXT: sub x1, x2, x3, lsl #64 329// CHECK-ERROR-NEXT: ^ 330// CHECK-ERROR-NEXT: error: expected integer shift amount 331// CHECK-ERROR-NEXT: sub x1, x2, x3, lsr #-1 332// CHECK-ERROR-NEXT: ^ 333// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 334// CHECK-ERROR-NEXT: sub x1, x2, x3, lsr #64 335// CHECK-ERROR-NEXT: ^ 336// CHECK-ERROR-NEXT: error: expected integer shift amount 337// CHECK-ERROR-NEXT: sub x1, x2, x3, asr #-1 338// CHECK-ERROR-NEXT: ^ 339// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 340// CHECK-ERROR-NEXT: sub x1, x2, x3, asr #64 341// CHECK-ERROR-NEXT: ^ 342 343 subs w1, w2, w3, lsl #-1 344 subs w1, w2, w3, lsl #32 345 subs w1, w2, w3, lsr #-1 346 subs w1, w2, w3, lsr #32 347 subs w1, w2, w3, asr #-1 348 subs w1, w2, w3, asr #32 349 subs x1, x2, x3, lsl #-1 350 subs x1, x2, x3, lsl #64 351 subs x1, x2, x3, lsr #-1 352 subs x1, x2, x3, lsr #64 353 subs x1, x2, x3, asr #-1 354 subs x1, x2, x3, asr #64 355// CHECK-ERROR: error: expected integer shift amount 356// CHECK-ERROR-NEXT: subs w1, w2, w3, lsl #-1 357// CHECK-ERROR-NEXT: ^ 358// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 359// CHECK-ERROR-NEXT: subs w1, w2, w3, lsl #32 360// CHECK-ERROR-NEXT: ^ 361// CHECK-ERROR-NEXT: error: expected integer shift amount 362// CHECK-ERROR-NEXT: subs w1, w2, w3, lsr #-1 363// CHECK-ERROR-NEXT: ^ 364// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 365// CHECK-ERROR-NEXT: subs w1, w2, w3, lsr #32 366// CHECK-ERROR-NEXT: ^ 367// CHECK-ERROR-NEXT: error: expected integer shift amount 368// CHECK-ERROR-NEXT: subs w1, w2, w3, asr #-1 369// CHECK-ERROR-NEXT: ^ 370// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 371// CHECK-ERROR-NEXT: subs w1, w2, w3, asr #32 372// CHECK-ERROR-NEXT: ^ 373// CHECK-ERROR-NEXT: error: expected integer shift amount 374// CHECK-ERROR-NEXT: subs x1, x2, x3, lsl #-1 375// CHECK-ERROR-NEXT: ^ 376// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 377// CHECK-ERROR-NEXT: subs x1, x2, x3, lsl #64 378// CHECK-ERROR-NEXT: ^ 379// CHECK-ERROR-NEXT: error: expected integer shift amount 380// CHECK-ERROR-NEXT: subs x1, x2, x3, lsr #-1 381// CHECK-ERROR-NEXT: ^ 382// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 383// CHECK-ERROR-NEXT: subs x1, x2, x3, lsr #64 384// CHECK-ERROR-NEXT: ^ 385// CHECK-ERROR-NEXT: error: expected integer shift amount 386// CHECK-ERROR-NEXT: subs x1, x2, x3, asr #-1 387// CHECK-ERROR-NEXT: ^ 388// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 389// CHECK-ERROR-NEXT: subs x1, x2, x3, asr #64 390// CHECK-ERROR-NEXT: ^ 391 392 cmn w9, w10, lsl #-1 393 cmn w9, w10, lsl #32 394 cmn w11, w12, lsr #-1 395 cmn w11, w12, lsr #32 396 cmn w19, wzr, asr #-1 397 cmn wzr, wzr, asr #32 398 cmn x9, x10, lsl #-1 399 cmn x9, x10, lsl #64 400 cmn x11, x12, lsr #-1 401 cmn x11, x12, lsr #64 402 cmn x19, xzr, asr #-1 403 cmn xzr, xzr, asr #64 404// CHECK-ERROR: error: expected integer shift amount 405// CHECK-ERROR-NEXT: cmn w9, w10, lsl #-1 406// CHECK-ERROR-NEXT: ^ 407// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 408// CHECK-ERROR-NEXT: cmn w9, w10, lsl #32 409// CHECK-ERROR-NEXT: ^ 410// CHECK-ERROR-NEXT: error: expected integer shift amount 411// CHECK-ERROR-NEXT: cmn w11, w12, lsr #-1 412// CHECK-ERROR-NEXT: ^ 413// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 414// CHECK-ERROR-NEXT: cmn w11, w12, lsr #32 415// CHECK-ERROR-NEXT: ^ 416// CHECK-ERROR-NEXT: error: expected integer shift amount 417// CHECK-ERROR-NEXT: cmn w19, wzr, asr #-1 418// CHECK-ERROR-NEXT: ^ 419// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31] 420// CHECK-ERROR-NEXT: cmn wzr, wzr, asr #32 421// CHECK-ERROR-NEXT: ^ 422// CHECK-ERROR-NEXT: error: expected integer shift amount 423// CHECK-ERROR-NEXT: cmn x9, x10, lsl #-1 424// CHECK-ERROR-NEXT: ^ 425// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 426// CHECK-ERROR-NEXT: cmn x9, x10, lsl #64 427// CHECK-ERROR-NEXT: ^ 428// CHECK-ERROR-NEXT: error: expected integer shift amount 429// CHECK-ERROR-NEXT: cmn x11, x12, lsr #-1 430// CHECK-ERROR-NEXT: ^ 431// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 432// CHECK-ERROR-NEXT: cmn x11, x12, lsr #64 433// CHECK-ERROR-NEXT: ^ 434// CHECK-ERROR-NEXT: error: expected integer shift amount 435// CHECK-ERROR-NEXT: cmn x19, xzr, asr #-1 436// CHECK-ERROR-NEXT: ^ 437// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63] 438// CHECK-ERROR-NEXT: cmn xzr, xzr, asr #64 439// CHECK-ERROR-NEXT: ^ 440 441 cmp w9, w10, lsl #-1 442 cmp w9, w10, lsl #32 443 cmp w11, w12, lsr #-1 444 cmp w11, w12, lsr #32 445 cmp w19, wzr, asr #-1 446 cmp wzr, wzr, asr #32 447 cmp x9, x10, lsl #-1 448 cmp x9, x10, lsl #64 449 cmp x11, x12, lsr #-1 450 cmp x11, x12, lsr #64 451 cmp x19, xzr, asr #-1 452 cmp xzr, xzr, asr #64 453// CHECK-ERROR: error: expected integer shift amount 454// CHECK-ERROR-NEXT: cmp w9, w10, lsl #-1 455// CHECK-ERROR-NEXT: ^ 456// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 457// CHECK-ERROR-NEXT: cmp w9, w10, lsl #32 458// CHECK-ERROR-NEXT: ^ 459// CHECK-ERROR-NEXT: error: expected integer shift amount 460// CHECK-ERROR-NEXT: cmp w11, w12, lsr #-1 461// CHECK-ERROR-NEXT: ^ 462// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 463// CHECK-ERROR-NEXT: cmp w11, w12, lsr #32 464// CHECK-ERROR-NEXT: ^ 465// CHECK-ERROR-NEXT: error: expected integer shift amount 466// CHECK-ERROR-NEXT: cmp w19, wzr, asr #-1 467// CHECK-ERROR-NEXT: ^ 468// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31] 469// CHECK-ERROR-NEXT: cmp wzr, wzr, asr #32 470// CHECK-ERROR-NEXT: ^ 471// CHECK-ERROR-NEXT: error: expected integer shift amount 472// CHECK-ERROR-NEXT: cmp x9, x10, lsl #-1 473// CHECK-ERROR-NEXT: ^ 474// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 475// CHECK-ERROR-NEXT: cmp x9, x10, lsl #64 476// CHECK-ERROR-NEXT: ^ 477// CHECK-ERROR-NEXT: error: expected integer shift amount 478// CHECK-ERROR-NEXT: cmp x11, x12, lsr #-1 479// CHECK-ERROR-NEXT: ^ 480// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4] 481// CHECK-ERROR-NEXT: cmp x11, x12, lsr #64 482// CHECK-ERROR-NEXT: ^ 483// CHECK-ERROR-NEXT: error: expected integer shift amount 484// CHECK-ERROR-NEXT: cmp x19, xzr, asr #-1 485// CHECK-ERROR-NEXT: ^ 486// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63] 487// CHECK-ERROR-NEXT: cmp xzr, xzr, asr #64 488// CHECK-ERROR-NEXT: ^ 489 490 neg w9, w10, lsl #-1 491 neg w9, w10, lsl #32 492 neg w11, w12, lsr #-1 493 neg w11, w12, lsr #32 494 neg w19, wzr, asr #-1 495 neg wzr, wzr, asr #32 496 neg x9, x10, lsl #-1 497 neg x9, x10, lsl #64 498 neg x11, x12, lsr #-1 499 neg x11, x12, lsr #64 500 neg x19, xzr, asr #-1 501 neg xzr, xzr, asr #64 502// CHECK-ERROR: error: expected integer shift amount 503// CHECK-ERROR-NEXT: neg w9, w10, lsl #-1 504// CHECK-ERROR-NEXT: ^ 505// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31] 506// CHECK-ERROR-NEXT: neg w9, w10, lsl #32 507// CHECK-ERROR-NEXT: ^ 508// CHECK-ERROR-NEXT: error: expected integer shift amount 509// CHECK-ERROR-NEXT: neg w11, w12, lsr #-1 510// CHECK-ERROR-NEXT: ^ 511// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31] 512// CHECK-ERROR-NEXT: neg w11, w12, lsr #32 513// CHECK-ERROR-NEXT: ^ 514// CHECK-ERROR-NEXT: error: expected integer shift amount 515// CHECK-ERROR-NEXT: neg w19, wzr, asr #-1 516// CHECK-ERROR-NEXT: ^ 517// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31] 518// CHECK-ERROR-NEXT: neg wzr, wzr, asr #32 519// CHECK-ERROR-NEXT: ^ 520// CHECK-ERROR-NEXT: error: expected integer shift amount 521// CHECK-ERROR-NEXT: neg x9, x10, lsl #-1 522// CHECK-ERROR-NEXT: ^ 523// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63] 524// CHECK-ERROR-NEXT: neg x9, x10, lsl #64 525// CHECK-ERROR-NEXT: ^ 526// CHECK-ERROR-NEXT: error: expected integer shift amount 527// CHECK-ERROR-NEXT: neg x11, x12, lsr #-1 528// CHECK-ERROR-NEXT: ^ 529// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63] 530// CHECK-ERROR-NEXT: neg x11, x12, lsr #64 531// CHECK-ERROR-NEXT: ^ 532// CHECK-ERROR-NEXT: error: expected integer shift amount 533// CHECK-ERROR-NEXT: neg x19, xzr, asr #-1 534// CHECK-ERROR-NEXT: ^ 535// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63] 536// CHECK-ERROR-NEXT: neg xzr, xzr, asr #64 537// CHECK-ERROR-NEXT: ^ 538 539 negs w9, w10, lsl #-1 540 negs w9, w10, lsl #32 541 negs w11, w12, lsr #-1 542 negs w11, w12, lsr #32 543 negs w19, wzr, asr #-1 544 negs wzr, wzr, asr #32 545 negs x9, x10, lsl #-1 546 negs x9, x10, lsl #64 547 negs x11, x12, lsr #-1 548 negs x11, x12, lsr #64 549 negs x19, xzr, asr #-1 550 negs xzr, xzr, asr #64 551// CHECK-ERROR: error: expected integer shift amount 552// CHECK-ERROR-NEXT: negs w9, w10, lsl #-1 553// CHECK-ERROR-NEXT: ^ 554// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31] 555// CHECK-ERROR-NEXT: negs w9, w10, lsl #32 556// CHECK-ERROR-NEXT: ^ 557// CHECK-ERROR-NEXT: error: expected integer shift amount 558// CHECK-ERROR-NEXT: negs w11, w12, lsr #-1 559// CHECK-ERROR-NEXT: ^ 560// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31] 561// CHECK-ERROR-NEXT: negs w11, w12, lsr #32 562// CHECK-ERROR-NEXT: ^ 563// CHECK-ERROR-NEXT: error: expected integer shift amount 564// CHECK-ERROR-NEXT: negs w19, wzr, asr #-1 565// CHECK-ERROR-NEXT: ^ 566// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31] 567// CHECK-ERROR-NEXT: negs wzr, wzr, asr #32 568// CHECK-ERROR-NEXT: ^ 569// CHECK-ERROR-NEXT: error: expected integer shift amount 570// CHECK-ERROR-NEXT: negs x9, x10, lsl #-1 571// CHECK-ERROR-NEXT: ^ 572// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63] 573// CHECK-ERROR-NEXT: negs x9, x10, lsl #64 574// CHECK-ERROR-NEXT: ^ 575// CHECK-ERROR-NEXT: error: expected integer shift amount 576// CHECK-ERROR-NEXT: negs x11, x12, lsr #-1 577// CHECK-ERROR-NEXT: ^ 578// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63] 579// CHECK-ERROR-NEXT: negs x11, x12, lsr #64 580// CHECK-ERROR-NEXT: ^ 581// CHECK-ERROR-NEXT: error: expected integer shift amount 582// CHECK-ERROR-NEXT: negs x19, xzr, asr #-1 583// CHECK-ERROR-NEXT: ^ 584// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63] 585// CHECK-ERROR-NEXT: negs xzr, xzr, asr #64 586// CHECK-ERROR-NEXT: ^ 587 588//------------------------------------------------------------------------------ 589// Add-subtract (shifted register) 590//------------------------------------------------------------------------------ 591 592 adc wsp, w3, w5 593 adc w1, wsp, w2 594 adc w0, w10, wsp 595// CHECK-ERROR: error: invalid operand for instruction 596// CHECK-ERROR-NEXT: adc wsp, w3, w5 597// CHECK-ERROR-NEXT: ^ 598// CHECK-ERROR-NEXT: error: invalid operand for instruction 599// CHECK-ERROR-NEXT: adc w1, wsp, w2 600// CHECK-ERROR-NEXT: ^ 601// CHECK-ERROR-NEXT: error: invalid operand for instruction 602// CHECK-ERROR-NEXT: adc w0, w10, wsp 603// CHECK-ERROR-NEXT: ^ 604 605 adc sp, x3, x5 606 adc x1, sp, x2 607 adc x0, x10, sp 608// CHECK-ERROR: error: invalid operand for instruction 609// CHECK-ERROR-NEXT: adc sp, x3, x5 610// CHECK-ERROR-NEXT: ^ 611// CHECK-ERROR-NEXT: error: invalid operand for instruction 612// CHECK-ERROR-NEXT: adc x1, sp, x2 613// CHECK-ERROR-NEXT: ^ 614// CHECK-ERROR-NEXT: error: invalid operand for instruction 615// CHECK-ERROR-NEXT: adc x0, x10, sp 616// CHECK-ERROR-NEXT: ^ 617 618 adcs wsp, w3, w5 619 adcs w1, wsp, w2 620 adcs w0, w10, wsp 621// CHECK-ERROR: error: invalid operand for instruction 622// CHECK-ERROR-NEXT: adcs wsp, w3, w5 623// CHECK-ERROR-NEXT: ^ 624// CHECK-ERROR-NEXT: error: invalid operand for instruction 625// CHECK-ERROR-NEXT: adcs w1, wsp, w2 626// CHECK-ERROR-NEXT: ^ 627// CHECK-ERROR-NEXT: error: invalid operand for instruction 628// CHECK-ERROR-NEXT: adcs w0, w10, wsp 629// CHECK-ERROR-NEXT: ^ 630 631 adcs sp, x3, x5 632 adcs x1, sp, x2 633 adcs x0, x10, sp 634// CHECK-ERROR: error: invalid operand for instruction 635// CHECK-ERROR-NEXT: adcs sp, x3, x5 636// CHECK-ERROR-NEXT: ^ 637// CHECK-ERROR-NEXT: error: invalid operand for instruction 638// CHECK-ERROR-NEXT: adcs x1, sp, x2 639// CHECK-ERROR-NEXT: ^ 640// CHECK-ERROR-NEXT: error: invalid operand for instruction 641// CHECK-ERROR-NEXT: adcs x0, x10, sp 642// CHECK-ERROR-NEXT: ^ 643 644 sbc wsp, w3, w5 645 sbc w1, wsp, w2 646 sbc w0, w10, wsp 647// CHECK-ERROR: error: invalid operand for instruction 648// CHECK-ERROR-NEXT: sbc wsp, w3, w5 649// CHECK-ERROR-NEXT: ^ 650// CHECK-ERROR-NEXT: error: invalid operand for instruction 651// CHECK-ERROR-NEXT: sbc w1, wsp, w2 652// CHECK-ERROR-NEXT: ^ 653// CHECK-ERROR-NEXT: error: invalid operand for instruction 654// CHECK-ERROR-NEXT: sbc w0, w10, wsp 655// CHECK-ERROR-NEXT: ^ 656 657 sbc sp, x3, x5 658 sbc x1, sp, x2 659 sbc x0, x10, sp 660// CHECK-ERROR: error: invalid operand for instruction 661// CHECK-ERROR-NEXT: sbc sp, x3, x5 662// CHECK-ERROR-NEXT: ^ 663// CHECK-ERROR-NEXT: error: invalid operand for instruction 664// CHECK-ERROR-NEXT: sbc x1, sp, x2 665// CHECK-ERROR-NEXT: ^ 666// CHECK-ERROR-NEXT: error: invalid operand for instruction 667// CHECK-ERROR-NEXT: sbc x0, x10, sp 668// CHECK-ERROR-NEXT: ^ 669 670 sbcs wsp, w3, w5 671 sbcs w1, wsp, w2 672 sbcs w0, w10, wsp 673// CHECK-ERROR: error: invalid operand for instruction 674// CHECK-ERROR-NEXT: sbcs wsp, w3, w5 675// CHECK-ERROR-NEXT: ^ 676// CHECK-ERROR-NEXT: error: invalid operand for instruction 677// CHECK-ERROR-NEXT: sbcs w1, wsp, w2 678// CHECK-ERROR-NEXT: ^ 679// CHECK-ERROR-NEXT: error: invalid operand for instruction 680// CHECK-ERROR-NEXT: sbcs w0, w10, wsp 681// CHECK-ERROR-NEXT: ^ 682 683 sbcs sp, x3, x5 684 sbcs x1, sp, x2 685 sbcs x0, x10, sp 686// CHECK-ERROR: error: invalid operand for instruction 687// CHECK-ERROR-NEXT: sbcs sp, x3, x5 688// CHECK-ERROR-NEXT: ^ 689// CHECK-ERROR-NEXT: error: invalid operand for instruction 690// CHECK-ERROR-NEXT: sbcs x1, sp, x2 691// CHECK-ERROR-NEXT: ^ 692// CHECK-ERROR-NEXT: error: invalid operand for instruction 693// CHECK-ERROR-NEXT: sbcs x0, x10, sp 694// CHECK-ERROR-NEXT: ^ 695 696 ngc wsp, w3 697 ngc w9, wsp 698 ngc sp, x9 699 ngc x2, sp 700// CHECK-ERROR: error: invalid operand for instruction 701// CHECK-ERROR-NEXT: ngc wsp, w3 702// CHECK-ERROR-NEXT: ^ 703// CHECK-ERROR-NEXT: error: invalid operand for instruction 704// CHECK-ERROR-NEXT: ngc w9, wsp 705// CHECK-ERROR-NEXT: ^ 706// CHECK-ERROR-NEXT: error: invalid operand for instruction 707// CHECK-ERROR-NEXT: ngc sp, x9 708// CHECK-ERROR-NEXT: ^ 709// CHECK-ERROR-NEXT: error: invalid operand for instruction 710// CHECK-ERROR-NEXT: ngc x2, sp 711// CHECK-ERROR-NEXT: ^ 712 713 ngcs wsp, w3 714 ngcs w9, wsp 715 ngcs sp, x9 716 ngcs x2, sp 717// CHECK-ERROR: error: invalid operand for instruction 718// CHECK-ERROR-NEXT: ngcs wsp, w3 719// CHECK-ERROR-NEXT: ^ 720// CHECK-ERROR-NEXT: error: invalid operand for instruction 721// CHECK-ERROR-NEXT: ngcs w9, wsp 722// CHECK-ERROR-NEXT: ^ 723// CHECK-ERROR-NEXT: error: invalid operand for instruction 724// CHECK-ERROR-NEXT: ngcs sp, x9 725// CHECK-ERROR-NEXT: ^ 726// CHECK-ERROR-NEXT: error: invalid operand for instruction 727// CHECK-ERROR-NEXT: ngcs x2, sp 728// CHECK-ERROR-NEXT: ^ 729 730//------------------------------------------------------------------------------ 731// Bitfield 732//------------------------------------------------------------------------------ 733 734 sbfm x3, w13, #0, #0 735 sbfm w12, x9, #0, #0 736 sbfm sp, x3, #3, #5 737 sbfm w3, wsp, #1, #9 738 sbfm x9, x5, #-1, #0 739 sbfm x9, x5, #0, #-1 740// CHECK-ERROR: error: invalid operand for instruction 741// CHECK-ERROR-NEXT: sbfm x3, w13, #0, #0 742// CHECK-ERROR-NEXT: ^ 743// CHECK-ERROR-NEXT: error: invalid operand for instruction 744// CHECK-ERROR-NEXT: sbfm w12, x9, #0, #0 745// CHECK-ERROR-NEXT: ^ 746// CHECK-ERROR-NEXT: error: invalid operand for instruction 747// CHECK-ERROR-NEXT: sbfm sp, x3, #3, #5 748// CHECK-ERROR-NEXT: ^ 749// CHECK-ERROR-NEXT: error: invalid operand for instruction 750// CHECK-ERROR-NEXT: sbfm w3, wsp, #1, #9 751// CHECK-ERROR-NEXT: ^ 752// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 753// CHECK-ERROR-NEXT: sbfm x9, x5, #-1, #0 754// CHECK-ERROR-NEXT: ^ 755// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 756// CHECK-ERROR-NEXT: sbfm x9, x5, #0, #-1 757// CHECK-ERROR-NEXT: ^ 758 759 sbfm w3, w5, #32, #1 760 sbfm w7, w11, #19, #32 761 sbfm x29, x30, #64, #0 762 sbfm x10, x20, #63, #64 763// CHECK-ERROR: error: expected integer in range [0, 31] 764// CHECK-ERROR-NEXT: sbfm w3, w5, #32, #1 765// CHECK-ERROR-NEXT: ^ 766// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 767// CHECK-ERROR-NEXT: sbfm w7, w11, #19, #32 768// CHECK-ERROR-NEXT: ^ 769// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 770// CHECK-ERROR-NEXT: sbfm x29, x30, #64, #0 771// CHECK-ERROR-NEXT: ^ 772// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 773// CHECK-ERROR-NEXT: sbfm x10, x20, #63, #64 774// CHECK-ERROR-NEXT: ^ 775 776 ubfm w3, w5, #32, #1 777 ubfm w7, w11, #19, #32 778 ubfm x29, x30, #64, #0 779 ubfm x10, x20, #63, #64 780// CHECK-ERROR: error: expected integer in range [0, 31] 781// CHECK-ERROR-NEXT: ubfm w3, w5, #32, #1 782// CHECK-ERROR-NEXT: ^ 783// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 784// CHECK-ERROR-NEXT: ubfm w7, w11, #19, #32 785// CHECK-ERROR-NEXT: ^ 786// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 787// CHECK-ERROR-NEXT: ubfm x29, x30, #64, #0 788// CHECK-ERROR-NEXT: ^ 789// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 790// CHECK-ERROR-NEXT: ubfm x10, x20, #63, #64 791// CHECK-ERROR-NEXT: ^ 792 793 bfm w3, w5, #32, #1 794 bfm w7, w11, #19, #32 795 bfm x29, x30, #64, #0 796 bfm x10, x20, #63, #64 797// CHECK-ERROR: error: expected integer in range [0, 31] 798// CHECK-ERROR-NEXT: bfm w3, w5, #32, #1 799// CHECK-ERROR-NEXT: ^ 800// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 801// CHECK-ERROR-NEXT: bfm w7, w11, #19, #32 802// CHECK-ERROR-NEXT: ^ 803// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 804// CHECK-ERROR-NEXT: bfm x29, x30, #64, #0 805// CHECK-ERROR-NEXT: ^ 806// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 807// CHECK-ERROR-NEXT: bfm x10, x20, #63, #64 808// CHECK-ERROR-NEXT: ^ 809 810 sxtb x3, x2 811 sxth xzr, xzr 812 sxtw x3, x5 813// CHECK-ERROR: error: invalid operand for instruction 814// CHECK-ERROR-NEXT: sxtb x3, x2 815// CHECK-ERROR-NEXT: ^ 816// CHECK-ERROR-NEXT: error: invalid operand for instruction 817// CHECK-ERROR-NEXT: sxth xzr, xzr 818// CHECK-ERROR-NEXT: ^ 819// CHECK-ERROR-NEXT: error: invalid operand for instruction 820// CHECK-ERROR-NEXT: sxtw x3, x5 821// CHECK-ERROR-NEXT: ^ 822 823 uxtb x3, x12 824 uxth x5, x9 825 uxtw x3, x5 826 uxtb x2, sp 827 uxtb sp, xzr 828// CHECK-ERROR: error: invalid operand for instruction 829// CHECK-ERROR-NEXT: uxtb x3, x12 830// CHECK-ERROR-NEXT: ^ 831// CHECK-ERROR-NEXT: error: invalid operand for instruction 832// CHECK-ERROR-NEXT: uxth x5, x9 833// CHECK-ERROR-NEXT: ^ 834// CHECK-ERROR-NEXT: error: invalid instruction 835// CHECK-ERROR-NEXT: uxtw x3, x5 836// CHECK-ERROR-NEXT: ^ 837// CHECK-ERROR-NEXT: error: invalid operand for instruction 838// CHECK-ERROR-NEXT: uxtb x2, sp 839// CHECK-ERROR-NEXT: ^ 840// CHECK-ERROR-NEXT: error: invalid operand for instruction 841// CHECK-ERROR-NEXT: uxtb sp, xzr 842// CHECK-ERROR-NEXT: ^ 843 844 asr x3, w2, #1 845 asr sp, x2, #1 846 asr x25, x26, #-1 847 asr x25, x26, #64 848 asr w9, w8, #32 849// CHECK-ERROR: error: invalid operand for instruction 850// CHECK-ERROR-NEXT: asr x3, w2, #1 851// CHECK-ERROR-NEXT: ^ 852// CHECK-ERROR-NEXT: error: invalid operand for instruction 853// CHECK-ERROR-NEXT: asr sp, x2, #1 854// CHECK-ERROR-NEXT: ^ 855// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 856// CHECK-ERROR-NEXT: asr x25, x26, #-1 857// CHECK-ERROR-NEXT: ^ 858// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 859// CHECK-ERROR-NEXT: asr x25, x26, #64 860// CHECK-ERROR-NEXT: ^ 861// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 862// CHECK-ERROR-NEXT: asr w9, w8, #32 863// CHECK-ERROR-NEXT: ^ 864 865 sbfiz w1, w2, #0, #0 866 sbfiz wsp, w9, #0, #1 867 sbfiz w9, w10, #32, #1 868 sbfiz w11, w12, #32, #0 869 sbfiz w9, w10, #10, #23 870 sbfiz x3, x5, #12, #53 871 sbfiz sp, x3, #5, #6 872 sbfiz w3, wsp, #7, #8 873// CHECK-ERROR: error: expected integer in range [<lsb>, 31] 874// CHECK-ERROR-NEXT: sbfiz w1, w2, #0, #0 875// CHECK-ERROR-NEXT: ^ 876// CHECK-ERROR-NEXT: error: invalid operand for instruction 877// CHECK-ERROR-NEXT: sbfiz wsp, w9, #0, #1 878// CHECK-ERROR-NEXT: ^ 879// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 880// CHECK-ERROR-NEXT: sbfiz w9, w10, #32, #1 881// CHECK-ERROR-NEXT: ^ 882// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 883// CHECK-ERROR-NEXT: sbfiz w11, w12, #32, #0 884// CHECK-ERROR-NEXT: ^ 885// CHECK-ERROR-NEXT: error: requested insert overflows register 886// CHECK-ERROR-NEXT: sbfiz w9, w10, #10, #23 887// CHECK-ERROR-NEXT: ^ 888// CHECK-ERROR-NEXT: error: requested insert overflows register 889// CHECK-ERROR-NEXT: sbfiz x3, x5, #12, #53 890// CHECK-ERROR-NEXT: ^ 891// CHECK-ERROR-NEXT: error: invalid operand for instruction 892// CHECK-ERROR-NEXT: sbfiz sp, x3, #5, #6 893// CHECK-ERROR-NEXT: ^ 894// CHECK-ERROR-NEXT: error: invalid operand for instruction 895// CHECK-ERROR-NEXT: sbfiz w3, wsp, #7, #8 896// CHECK-ERROR-NEXT: ^ 897 898 sbfx w1, w2, #0, #0 899 sbfx wsp, w9, #0, #1 900 sbfx w9, w10, #32, #1 901 sbfx w11, w12, #32, #0 902 sbfx w9, w10, #10, #23 903 sbfx x3, x5, #12, #53 904 sbfx sp, x3, #5, #6 905 sbfx w3, wsp, #7, #8 906// CHECK-ERROR: error: expected integer in range [<lsb>, 31] 907// CHECK-ERROR-NEXT: sbfx w1, w2, #0, #0 908// CHECK-ERROR-NEXT: ^ 909// CHECK-ERROR-NEXT: error: invalid operand for instruction 910// CHECK-ERROR-NEXT: sbfx wsp, w9, #0, #1 911// CHECK-ERROR-NEXT: ^ 912// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 913// CHECK-ERROR-NEXT: sbfx w9, w10, #32, #1 914// CHECK-ERROR-NEXT: ^ 915// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 916// CHECK-ERROR-NEXT: sbfx w11, w12, #32, #0 917// CHECK-ERROR-NEXT: ^ 918// CHECK-ERROR-NEXT: error: requested extract overflows register 919// CHECK-ERROR-NEXT: sbfx w9, w10, #10, #23 920// CHECK-ERROR-NEXT: ^ 921// CHECK-ERROR-NEXT: error: requested extract overflows register 922// CHECK-ERROR-NEXT: sbfx x3, x5, #12, #53 923// CHECK-ERROR-NEXT: ^ 924// CHECK-ERROR-NEXT: error: invalid operand for instruction 925// CHECK-ERROR-NEXT: sbfx sp, x3, #5, #6 926// CHECK-ERROR-NEXT: ^ 927// CHECK-ERROR-NEXT: error: invalid operand for instruction 928// CHECK-ERROR-NEXT: sbfx w3, wsp, #7, #8 929// CHECK-ERROR-NEXT: ^ 930 931 bfi w1, w2, #0, #0 932 bfi wsp, w9, #0, #1 933 bfi w9, w10, #32, #1 934 bfi w11, w12, #32, #0 935 bfi w9, w10, #10, #23 936 bfi x3, x5, #12, #53 937 bfi sp, x3, #5, #6 938 bfi w3, wsp, #7, #8 939// CHECK-ERROR: error: expected integer in range [<lsb>, 31] 940// CHECK-ERROR-NEXT: bfi w1, w2, #0, #0 941// CHECK-ERROR-NEXT: ^ 942// CHECK-ERROR-NEXT: error: invalid operand for instruction 943// CHECK-ERROR-NEXT: bfi wsp, w9, #0, #1 944// CHECK-ERROR-NEXT: ^ 945// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 946// CHECK-ERROR-NEXT: bfi w9, w10, #32, #1 947// CHECK-ERROR-NEXT: ^ 948// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 949// CHECK-ERROR-NEXT: bfi w11, w12, #32, #0 950// CHECK-ERROR-NEXT: ^ 951// CHECK-ERROR-NEXT: error: requested insert overflows register 952// CHECK-ERROR-NEXT: bfi w9, w10, #10, #23 953// CHECK-ERROR-NEXT: ^ 954// CHECK-ERROR-NEXT: error: requested insert overflows register 955// CHECK-ERROR-NEXT: bfi x3, x5, #12, #53 956// CHECK-ERROR-NEXT: ^ 957// CHECK-ERROR-NEXT: error: invalid operand for instruction 958// CHECK-ERROR-NEXT: bfi sp, x3, #5, #6 959// CHECK-ERROR-NEXT: ^ 960// CHECK-ERROR-NEXT: error: invalid operand for instruction 961// CHECK-ERROR-NEXT: bfi w3, wsp, #7, #8 962// CHECK-ERROR-NEXT: ^ 963 964 bfxil w1, w2, #0, #0 965 bfxil wsp, w9, #0, #1 966 bfxil w9, w10, #32, #1 967 bfxil w11, w12, #32, #0 968 bfxil w9, w10, #10, #23 969 bfxil x3, x5, #12, #53 970 bfxil sp, x3, #5, #6 971 bfxil w3, wsp, #7, #8 972// CHECK-ERROR: error: expected integer in range [<lsb>, 31] 973// CHECK-ERROR-NEXT: bfxil w1, w2, #0, #0 974// CHECK-ERROR-NEXT: ^ 975// CHECK-ERROR-NEXT: error: invalid operand for instruction 976// CHECK-ERROR-NEXT: bfxil wsp, w9, #0, #1 977// CHECK-ERROR-NEXT: ^ 978// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 979// CHECK-ERROR-NEXT: bfxil w9, w10, #32, #1 980// CHECK-ERROR-NEXT: ^ 981// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 982// CHECK-ERROR-NEXT: bfxil w11, w12, #32, #0 983// CHECK-ERROR-NEXT: ^ 984// CHECK-ERROR-NEXT: error: requested extract overflows register 985// CHECK-ERROR-NEXT: bfxil w9, w10, #10, #23 986// CHECK-ERROR-NEXT: ^ 987// CHECK-ERROR-NEXT: error: requested extract overflows register 988// CHECK-ERROR-NEXT: bfxil x3, x5, #12, #53 989// CHECK-ERROR-NEXT: ^ 990// CHECK-ERROR-NEXT: error: invalid operand for instruction 991// CHECK-ERROR-NEXT: bfxil sp, x3, #5, #6 992// CHECK-ERROR-NEXT: ^ 993// CHECK-ERROR-NEXT: error: invalid operand for instruction 994// CHECK-ERROR-NEXT: bfxil w3, wsp, #7, #8 995// CHECK-ERROR-NEXT: ^ 996 997 ubfiz w1, w2, #0, #0 998 ubfiz wsp, w9, #0, #1 999 ubfiz w9, w10, #32, #1 1000 ubfiz w11, w12, #32, #0 1001 ubfiz w9, w10, #10, #23 1002 ubfiz x3, x5, #12, #53 1003 ubfiz sp, x3, #5, #6 1004 ubfiz w3, wsp, #7, #8 1005// CHECK-ERROR: error: expected integer in range [<lsb>, 31] 1006// CHECK-ERROR-NEXT: ubfiz w1, w2, #0, #0 1007// CHECK-ERROR-NEXT: ^ 1008// CHECK-ERROR-NEXT: error: invalid operand for instruction 1009// CHECK-ERROR-NEXT: ubfiz wsp, w9, #0, #1 1010// CHECK-ERROR-NEXT: ^ 1011// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1012// CHECK-ERROR-NEXT: ubfiz w9, w10, #32, #1 1013// CHECK-ERROR-NEXT: ^ 1014// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1015// CHECK-ERROR-NEXT: ubfiz w11, w12, #32, #0 1016// CHECK-ERROR-NEXT: ^ 1017// CHECK-ERROR-NEXT: error: requested insert overflows register 1018// CHECK-ERROR-NEXT: ubfiz w9, w10, #10, #23 1019// CHECK-ERROR-NEXT: ^ 1020// CHECK-ERROR-NEXT: error: requested insert overflows register 1021// CHECK-ERROR-NEXT: ubfiz x3, x5, #12, #53 1022// CHECK-ERROR-NEXT: ^ 1023// CHECK-ERROR-NEXT: error: invalid operand for instruction 1024// CHECK-ERROR-NEXT: ubfiz sp, x3, #5, #6 1025// CHECK-ERROR-NEXT: ^ 1026// CHECK-ERROR-NEXT: error: invalid operand for instruction 1027// CHECK-ERROR-NEXT: ubfiz w3, wsp, #7, #8 1028// CHECK-ERROR-NEXT: ^ 1029 1030 ubfx w1, w2, #0, #0 1031 ubfx wsp, w9, #0, #1 1032 ubfx w9, w10, #32, #1 1033 ubfx w11, w12, #32, #0 1034 ubfx w9, w10, #10, #23 1035 ubfx x3, x5, #12, #53 1036 ubfx sp, x3, #5, #6 1037 ubfx w3, wsp, #7, #8 1038// CHECK-ERROR: error: expected integer in range [<lsb>, 31] 1039// CHECK-ERROR-NEXT: ubfx w1, w2, #0, #0 1040// CHECK-ERROR-NEXT: ^ 1041// CHECK-ERROR-NEXT: error: invalid operand for instruction 1042// CHECK-ERROR-NEXT: ubfx wsp, w9, #0, #1 1043// CHECK-ERROR-NEXT: ^ 1044// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1045// CHECK-ERROR-NEXT: ubfx w9, w10, #32, #1 1046// CHECK-ERROR-NEXT: ^ 1047// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1048// CHECK-ERROR-NEXT: ubfx w11, w12, #32, #0 1049// CHECK-ERROR-NEXT: ^ 1050// CHECK-ERROR-NEXT: error: requested extract overflows register 1051// CHECK-ERROR-NEXT: ubfx w9, w10, #10, #23 1052// CHECK-ERROR-NEXT: ^ 1053// CHECK-ERROR-NEXT: error: requested extract overflows register 1054// CHECK-ERROR-NEXT: ubfx x3, x5, #12, #53 1055// CHECK-ERROR-NEXT: ^ 1056// CHECK-ERROR-NEXT: error: invalid operand for instruction 1057// CHECK-ERROR-NEXT: ubfx sp, x3, #5, #6 1058// CHECK-ERROR-NEXT: ^ 1059// CHECK-ERROR-NEXT: error: invalid operand for instruction 1060// CHECK-ERROR-NEXT: ubfx w3, wsp, #7, #8 1061// CHECK-ERROR-NEXT: ^ 1062 1063//------------------------------------------------------------------------------ 1064// Compare & branch (immediate) 1065//------------------------------------------------------------------------------ 1066 1067 cbnz wsp, lbl 1068 cbz sp, lbl 1069 cbz x3, x5 1070// CHECK-ERROR: error: invalid operand for instruction 1071// CHECK-ERROR-NEXT: cbnz wsp, lbl 1072// CHECK-ERROR-NEXT: ^ 1073// CHECK-ERROR-NEXT: error: invalid operand for instruction 1074// CHECK-ERROR-NEXT: cbz sp, lbl 1075// CHECK-ERROR-NEXT: ^ 1076// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 1077// CHECK-ERROR-NEXT: cbz x3, x5 1078// CHECK-ERROR-NEXT: ^ 1079 1080 cbz w20, #1048576 1081 cbnz xzr, #-1048580 1082 cbz x29, #1 1083// CHECK-ERROR: error: expected label or encodable integer pc offset 1084// CHECK-ERROR-NEXT: cbz w20, #1048576 1085// CHECK-ERROR-NEXT: ^ 1086// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 1087// CHECK-ERROR-NEXT: cbnz xzr, #-1048580 1088// CHECK-ERROR-NEXT: ^ 1089// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 1090// CHECK-ERROR-NEXT: cbz x29, #1 1091// CHECK-ERROR-NEXT: ^ 1092 1093//------------------------------------------------------------------------------ 1094// Conditional branch (immediate) 1095//------------------------------------------------------------------------------ 1096 1097 b.zf lbl 1098// CHECK-ERROR: error: invalid condition code 1099// CHECK-ERROR-NEXT: b.zf lbl 1100// CHECK-ERROR-NEXT: ^ 1101 1102 b.eq #1048576 1103 b.ge #-1048580 1104 b.cc #1 1105// CHECK-ERROR: error: expected label or encodable integer pc offset 1106// CHECK-ERROR-NEXT: b.eq #1048576 1107// CHECK-ERROR-NEXT: ^ 1108// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 1109// CHECK-ERROR-NEXT: b.ge #-1048580 1110// CHECK-ERROR-NEXT: ^ 1111// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 1112// CHECK-ERROR-NEXT: b.cc #1 1113// CHECK-ERROR-NEXT: ^ 1114 1115//------------------------------------------------------------------------------ 1116// Conditional compare (immediate) 1117//------------------------------------------------------------------------------ 1118 1119 ccmp wsp, #4, #2, ne 1120 ccmp w25, #-1, #15, hs 1121 ccmp w3, #32, #0, ge 1122 ccmp w19, #5, #-1, lt 1123 ccmp w20, #7, #16, hs 1124// CHECK-ERROR: error: invalid operand for instruction 1125// CHECK-ERROR-NEXT: ccmp wsp, #4, #2, ne 1126// CHECK-ERROR-NEXT: ^ 1127// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1128// CHECK-ERROR-NEXT: ccmp w25, #-1, #15, hs 1129// CHECK-ERROR-NEXT: ^ 1130// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1131// CHECK-ERROR-NEXT: ccmp w3, #32, #0, ge 1132// CHECK-ERROR-NEXT: ^ 1133// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1134// CHECK-ERROR-NEXT: ccmp w19, #5, #-1, lt 1135// CHECK-ERROR-NEXT: ^ 1136// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1137// CHECK-ERROR-NEXT: ccmp w20, #7, #16, hs 1138// CHECK-ERROR-NEXT: ^ 1139 1140 ccmp sp, #4, #2, ne 1141 ccmp x25, #-1, #15, hs 1142 ccmp x3, #32, #0, ge 1143 ccmp x19, #5, #-1, lt 1144 ccmp x20, #7, #16, hs 1145// CHECK-ERROR: error: invalid operand for instruction 1146// CHECK-ERROR-NEXT: ccmp sp, #4, #2, ne 1147// CHECK-ERROR-NEXT: ^ 1148// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1149// CHECK-ERROR-NEXT: ccmp x25, #-1, #15, hs 1150// CHECK-ERROR-NEXT: ^ 1151// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1152// CHECK-ERROR-NEXT: ccmp x3, #32, #0, ge 1153// CHECK-ERROR-NEXT: ^ 1154// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1155// CHECK-ERROR-NEXT: ccmp x19, #5, #-1, lt 1156// CHECK-ERROR-NEXT: ^ 1157// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1158// CHECK-ERROR-NEXT: ccmp x20, #7, #16, hs 1159// CHECK-ERROR-NEXT: ^ 1160 1161 ccmn wsp, #4, #2, ne 1162 ccmn w25, #-1, #15, hs 1163 ccmn w3, #32, #0, ge 1164 ccmn w19, #5, #-1, lt 1165 ccmn w20, #7, #16, hs 1166// CHECK-ERROR: error: invalid operand for instruction 1167// CHECK-ERROR-NEXT: ccmn wsp, #4, #2, ne 1168// CHECK-ERROR-NEXT: ^ 1169// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1170// CHECK-ERROR-NEXT: ccmn w25, #-1, #15, hs 1171// CHECK-ERROR-NEXT: ^ 1172// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1173// CHECK-ERROR-NEXT: ccmn w3, #32, #0, ge 1174// CHECK-ERROR-NEXT: ^ 1175// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1176// CHECK-ERROR-NEXT: ccmn w19, #5, #-1, lt 1177// CHECK-ERROR-NEXT: ^ 1178// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1179// CHECK-ERROR-NEXT: ccmn w20, #7, #16, hs 1180// CHECK-ERROR-NEXT: ^ 1181 1182 ccmn sp, #4, #2, ne 1183 ccmn x25, #-1, #15, hs 1184 ccmn x3, #32, #0, ge 1185 ccmn x19, #5, #-1, lt 1186 ccmn x20, #7, #16, hs 1187// CHECK-ERROR: error: invalid operand for instruction 1188// CHECK-ERROR-NEXT: ccmn sp, #4, #2, ne 1189// CHECK-ERROR-NEXT: ^ 1190// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1191// CHECK-ERROR-NEXT: ccmn x25, #-1, #15, hs 1192// CHECK-ERROR-NEXT: ^ 1193// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1194// CHECK-ERROR-NEXT: ccmn x3, #32, #0, ge 1195// CHECK-ERROR-NEXT: ^ 1196// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1197// CHECK-ERROR-NEXT: ccmn x19, #5, #-1, lt 1198// CHECK-ERROR-NEXT: ^ 1199// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1200// CHECK-ERROR-NEXT: ccmn x20, #7, #16, hs 1201// CHECK-ERROR-NEXT: ^ 1202 1203//------------------------------------------------------------------------------ 1204// Conditional compare (register) 1205//------------------------------------------------------------------------------ 1206 1207 ccmp wsp, w4, #2, ne 1208 ccmp w3, wsp, #0, ge 1209 ccmp w19, w5, #-1, lt 1210 ccmp w20, w7, #16, hs 1211// CHECK-ERROR: error: invalid operand for instruction 1212// CHECK-ERROR-NEXT: ccmp wsp, w4, #2, ne 1213// CHECK-ERROR-NEXT: ^ 1214// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1215// CHECK-ERROR-NEXT: ccmp w3, wsp, #0, ge 1216// CHECK-ERROR-NEXT: ^ 1217// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1218// CHECK-ERROR-NEXT: ccmp w19, w5, #-1, lt 1219// CHECK-ERROR-NEXT: ^ 1220// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1221// CHECK-ERROR-NEXT: ccmp w20, w7, #16, hs 1222// CHECK-ERROR-NEXT: ^ 1223 1224 ccmp sp, x4, #2, ne 1225 ccmp x25, sp, #15, hs 1226 ccmp x19, x5, #-1, lt 1227 ccmp x20, x7, #16, hs 1228// CHECK-ERROR: error: invalid operand for instruction 1229// CHECK-ERROR-NEXT: ccmp sp, x4, #2, ne 1230// CHECK-ERROR-NEXT: ^ 1231// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1232// CHECK-ERROR-NEXT: ccmp x25, sp, #15, hs 1233// CHECK-ERROR-NEXT: ^ 1234// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1235// CHECK-ERROR-NEXT: ccmp x19, x5, #-1, lt 1236// CHECK-ERROR-NEXT: ^ 1237// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1238// CHECK-ERROR-NEXT: ccmp x20, x7, #16, hs 1239// CHECK-ERROR-NEXT: ^ 1240 1241 ccmn wsp, w4, #2, ne 1242 ccmn w25, wsp, #15, hs 1243 ccmn w19, w5, #-1, lt 1244 ccmn w20, w7, #16, hs 1245// CHECK-ERROR: error: invalid operand for instruction 1246// CHECK-ERROR-NEXT: ccmn wsp, w4, #2, ne 1247// CHECK-ERROR-NEXT: ^ 1248// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1249// CHECK-ERROR-NEXT: ccmn w25, wsp, #15, hs 1250// CHECK-ERROR-NEXT: ^ 1251// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1252// CHECK-ERROR-NEXT: ccmn w19, w5, #-1, lt 1253// CHECK-ERROR-NEXT: ^ 1254// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1255// CHECK-ERROR-NEXT: ccmn w20, w7, #16, hs 1256// CHECK-ERROR-NEXT: ^ 1257 1258 ccmn sp, x4, #2, ne 1259 ccmn x25, sp, #15, hs 1260 ccmn x19, x5, #-1, lt 1261 ccmn x20, x7, #16, hs 1262// CHECK-ERROR: error: invalid operand for instruction 1263// CHECK-ERROR-NEXT: ccmn sp, x4, #2, ne 1264// CHECK-ERROR-NEXT: ^ 1265// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1266// CHECK-ERROR-NEXT: ccmn x25, sp, #15, hs 1267// CHECK-ERROR-NEXT: ^ 1268// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1269// CHECK-ERROR-NEXT: ccmn x19, x5, #-1, lt 1270// CHECK-ERROR-NEXT: ^ 1271// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1272// CHECK-ERROR-NEXT: ccmn x20, x7, #16, hs 1273// CHECK-ERROR-NEXT: ^ 1274 1275//------------------------------------------------------------------------------ 1276// Conditional select 1277//------------------------------------------------------------------------------ 1278 1279 csel w4, wsp, w9, eq 1280 csel wsp, w2, w3, ne 1281 csel w10, w11, wsp, ge 1282 csel w1, w2, w3, #3 1283 csel x4, sp, x9, eq 1284 csel sp, x2, x3, ne 1285 csel x10, x11, sp, ge 1286 csel x1, x2, x3, #3 1287// CHECK-ERROR: error: invalid operand for instruction 1288// CHECK-ERROR-NEXT: csel w4, wsp, w9, eq 1289// CHECK-ERROR-NEXT: ^ 1290// CHECK-ERROR-NEXT: error: invalid operand for instruction 1291// CHECK-ERROR-NEXT: csel wsp, w2, w3, ne 1292// CHECK-ERROR-NEXT: ^ 1293// CHECK-ERROR-NEXT: error: invalid operand for instruction 1294// CHECK-ERROR-NEXT: csel w10, w11, wsp, ge 1295// CHECK-ERROR-NEXT: ^ 1296// CHECK-ERROR-NEXT: error: expected AArch64 condition code 1297// CHECK-ERROR-NEXT: csel w1, w2, w3, #3 1298// CHECK-ERROR-NEXT: ^ 1299// CHECK-ERROR-NEXT: error: invalid operand for instruction 1300// CHECK-ERROR-NEXT: csel x4, sp, x9, eq 1301// CHECK-ERROR-NEXT: ^ 1302// CHECK-ERROR-NEXT: error: invalid operand for instruction 1303// CHECK-ERROR-NEXT: csel sp, x2, x3, ne 1304// CHECK-ERROR-NEXT: ^ 1305// CHECK-ERROR-NEXT: error: invalid operand for instruction 1306// CHECK-ERROR-NEXT: csel x10, x11, sp, ge 1307// CHECK-ERROR-NEXT: ^ 1308// CHECK-ERROR-NEXT: error: expected AArch64 condition code 1309// CHECK-ERROR-NEXT: csel x1, x2, x3, #3 1310// CHECK-ERROR-NEXT: ^ 1311 1312 csinc w20, w21, wsp, mi 1313 csinc sp, x30, x29, eq 1314// CHECK-ERROR: error: invalid operand for instruction 1315// CHECK-ERROR-NEXT: csinc w20, w21, wsp, mi 1316// CHECK-ERROR-NEXT: ^ 1317// CHECK-ERROR-NEXT: error: invalid operand for instruction 1318// CHECK-ERROR-NEXT: csinc sp, x30, x29, eq 1319// CHECK-ERROR-NEXT: ^ 1320 1321 csinv w20, wsp, wsp, mi 1322 csinv sp, x30, x29, le 1323// CHECK-ERROR: error: invalid operand for instruction 1324// CHECK-ERROR-NEXT: csinv w20, wsp, wsp, mi 1325// CHECK-ERROR-NEXT: ^ 1326// CHECK-ERROR-NEXT: error: invalid operand for instruction 1327// CHECK-ERROR-NEXT: csinv sp, x30, x29, le 1328// CHECK-ERROR-NEXT: ^ 1329 1330 csneg w20, w21, wsp, mi 1331 csneg x0, sp, x29, le 1332// CHECK-ERROR: error: invalid operand for instruction 1333// CHECK-ERROR-NEXT: csneg w20, w21, wsp, mi 1334// CHECK-ERROR-NEXT: ^ 1335// CHECK-ERROR-NEXT: error: invalid operand for instruction 1336// CHECK-ERROR-NEXT: csneg x0, sp, x29, le 1337// CHECK-ERROR-NEXT: ^ 1338 1339 cset wsp, lt 1340 csetm sp, ge 1341// CHECK-ERROR: error: invalid operand for instruction 1342// CHECK-ERROR-NEXT: cset wsp, lt 1343// CHECK-ERROR-NEXT: ^ 1344// CHECK-ERROR-NEXT: error: invalid operand for instruction 1345// CHECK-ERROR-NEXT: csetm sp, ge 1346// CHECK-ERROR-NEXT: ^ 1347 1348 cinc w3, wsp, ne 1349 cinc sp, x9, eq 1350// CHECK-ERROR: error: invalid operand for instruction 1351// CHECK-ERROR-NEXT: cinc w3, wsp, ne 1352// CHECK-ERROR-NEXT: ^ 1353// CHECK-ERROR-NEXT: error: invalid operand for instruction 1354// CHECK-ERROR-NEXT: cinc sp, x9, eq 1355// CHECK-ERROR-NEXT: ^ 1356 1357 cinv w3, wsp, ne 1358 cinv sp, x9, eq 1359// CHECK-ERROR: error: invalid operand for instruction 1360// CHECK-ERROR-NEXT: cinv w3, wsp, ne 1361// CHECK-ERROR-NEXT: ^ 1362// CHECK-ERROR-NEXT: error: invalid operand for instruction 1363// CHECK-ERROR-NEXT: cinv sp, x9, eq 1364// CHECK-ERROR-NEXT: ^ 1365 1366 cneg w3, wsp, ne 1367 cneg sp, x9, eq 1368// CHECK-ERROR: error: invalid operand for instruction 1369// CHECK-ERROR-NEXT: cneg w3, wsp, ne 1370// CHECK-ERROR-NEXT: ^ 1371// CHECK-ERROR-NEXT: error: invalid operand for instruction 1372// CHECK-ERROR-NEXT: cneg sp, x9, eq 1373// CHECK-ERROR-NEXT: ^ 1374 1375//------------------------------------------------------------------------------ 1376// Data Processing (1 source) 1377//------------------------------------------------------------------------------ 1378 rbit x23, w2 1379//CHECK-ERROR: error: invalid operand for instruction 1380//CHECK-ERROR-NEXT: rbit x23, w2 1381 1382 cls sp, x2 1383//CHECK-ERROR: error: invalid operand for instruction 1384//CHECK-ERROR-NEXT: cls sp, x2 1385 1386 clz wsp, w3 1387//CHECK-ERROR: error: invalid operand for instruction 1388//CHECK-ERROR-NEXT: clz wsp, w3 1389 1390//------------------------------------------------------------------------------ 1391// Data Processing (2 sources) 1392//------------------------------------------------------------------------------ 1393 udiv x23, w2, x18 1394//CHECK-ERROR: error: invalid operand for instruction 1395//CHECK-ERROR-NEXT: udiv x23, w2, x18 1396 1397 lsl sp, x2, x4 1398//CHECK-ERROR: error: invalid operand for instruction 1399//CHECK-ERROR-NEXT: lsl sp, x2, x4 1400 1401 asr wsp, w3, w9 1402//CHECK-ERROR: error: invalid operand for instruction 1403//CHECK-ERROR-NEXT: asr wsp, w3, w9 1404 1405//------------------------------------------------------------------------------ 1406// Data Processing (3 sources) 1407//------------------------------------------------------------------------------ 1408 1409 madd sp, x3, x9, x10 1410//CHECK-ERROR: error: invalid operand for instruction 1411//CHECK-ERROR-NEXT: madd sp, x3, x9, x10 1412 1413//------------------------------------------------------------------------------ 1414// Exception generation 1415//------------------------------------------------------------------------------ 1416 svc #-1 1417 hlt #65536 1418 dcps4 #43 1419 dcps4 1420// CHECK-ERROR: error: expected integer in range [0, 65535] 1421// CHECK-ERROR-NEXT: svc #-1 1422// CHECK-ERROR-NEXT: ^ 1423// CHECK-ERROR-NEXT: error: expected integer in range [0, 65535] 1424// CHECK-ERROR-NEXT: hlt #65536 1425// CHECK-ERROR-NEXT: ^ 1426// CHECK-ERROR-NEXT: error: invalid instruction 1427// CHECK-ERROR-NEXT: dcps4 #43 1428// CHECK-ERROR-NEXT: ^ 1429// CHECK-ERROR-NEXT: error: invalid instruction 1430// CHECK-ERROR-NEXT: dcps4 1431// CHECK-ERROR-NEXT: ^ 1432 1433//------------------------------------------------------------------------------ 1434// Extract (immediate) 1435//------------------------------------------------------------------------------ 1436 1437 extr w2, w20, w30, #-1 1438 extr w9, w19, w20, #32 1439// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1440// CHECK-ERROR-NEXT: extr w2, w20, w30, #-1 1441// CHECK-ERROR-NEXT: ^ 1442// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1443// CHECK-ERROR-NEXT: extr w9, w19, w20, #32 1444// CHECK-ERROR-NEXT: ^ 1445 1446 extr x10, x15, x20, #-1 1447 extr x20, x25, x30, #64 1448// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 1449// CHECK-ERROR-NEXT: extr x10, x15, x20, #-1 1450// CHECK-ERROR-NEXT: ^ 1451// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 1452// CHECK-ERROR-NEXT: extr x20, x25, x30, #64 1453// CHECK-ERROR-NEXT: ^ 1454 1455 ror w9, w10, #32 1456 ror x10, x11, #64 1457// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 1458// CHECK-ERROR-NEXT: ror w9, w10, #32 1459// CHECK-ERROR-NEXT: ^ 1460// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 1461// CHECK-ERROR-NEXT: ror x10, x11, #64 1462// CHECK-ERROR-NEXT: ^ 1463 1464//------------------------------------------------------------------------------ 1465// Floating-point compare 1466//------------------------------------------------------------------------------ 1467 1468 fcmp s3, d2 1469// CHECK-ERROR: error: expected floating-point constant #0.0 1470// CHECK-ERROR-NEXT: fcmp s3, d2 1471// CHECK-ERROR-NEXT: ^ 1472 1473 fcmp s9, #-0.0 1474 fcmp d3, #-0.0 1475 fcmp s1, #1.0 1476 fcmpe s30, #-0.0 1477// CHECK-ERROR: error: expected floating-point constant #0.0 1478// CHECK-ERROR-NEXT: fcmp s9, #-0.0 1479// CHECK-ERROR-NEXT: ^ 1480// CHECK-ERROR-NEXT: error: expected floating-point constant #0.0 1481// CHECK-ERROR-NEXT: fcmp d3, #-0.0 1482// CHECK-ERROR-NEXT: ^ 1483// CHECK-ERROR-NEXT: error: expected floating-point constant #0.0 1484// CHECK-ERROR-NEXT: fcmp s1, #1.0 1485// CHECK-ERROR-NEXT: ^ 1486// CHECK-ERROR-NEXT: error: expected floating-point constant #0.0 1487// CHECK-ERROR-NEXT: fcmpe s30, #-0.0 1488// CHECK-ERROR-NEXT: ^ 1489 1490//------------------------------------------------------------------------------ 1491// Floating-point conditional compare 1492//------------------------------------------------------------------------------ 1493 1494 fccmp s19, s5, #-1, lt 1495 fccmp s20, s7, #16, hs 1496// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1497// CHECK-ERROR-NEXT: fccmp s19, s5, #-1, lt 1498// CHECK-ERROR-NEXT: ^ 1499// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1500// CHECK-ERROR-NEXT: fccmp s20, s7, #16, hs 1501// CHECK-ERROR-NEXT: ^ 1502 1503 fccmp d19, d5, #-1, lt 1504 fccmp d20, d7, #16, hs 1505// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1506// CHECK-ERROR-NEXT: fccmp d19, d5, #-1, lt 1507// CHECK-ERROR-NEXT: ^ 1508// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1509// CHECK-ERROR-NEXT: fccmp d20, d7, #16, hs 1510// CHECK-ERROR-NEXT: ^ 1511 1512 fccmpe s19, s5, #-1, lt 1513 fccmpe s20, s7, #16, hs 1514// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1515// CHECK-ERROR-NEXT: fccmpe s19, s5, #-1, lt 1516// CHECK-ERROR-NEXT: ^ 1517// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1518// CHECK-ERROR-NEXT: fccmpe s20, s7, #16, hs 1519// CHECK-ERROR-NEXT: ^ 1520 1521 fccmpe d19, d5, #-1, lt 1522 fccmpe d20, d7, #16, hs 1523// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1524// CHECK-ERROR-NEXT: fccmpe d19, d5, #-1, lt 1525// CHECK-ERROR-NEXT: ^ 1526// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 1527// CHECK-ERROR-NEXT: fccmpe d20, d7, #16, hs 1528// CHECK-ERROR-NEXT: ^ 1529 1530//------------------------------------------------------------------------------ 1531// Floating-point conditional compare 1532//------------------------------------------------------------------------------ 1533 1534 fcsel q3, q20, q9, pl 1535 fcsel h9, h10, h11, mi 1536 fcsel b9, b10, b11, mi 1537// CHECK-ERROR: error: invalid operand for instruction 1538// CHECK-ERROR-NEXT: fcsel q3, q20, q9, pl 1539// CHECK-ERROR-NEXT: ^ 1540// CHECK-ERROR-NEXT: error: invalid operand for instruction 1541// CHECK-ERROR-NEXT: fcsel h9, h10, h11, mi 1542// CHECK-ERROR-NEXT: ^ 1543// CHECK-ERROR-NEXT: error: invalid operand for instruction 1544// CHECK-ERROR-NEXT: fcsel b9, b10, b11, mi 1545// CHECK-ERROR-NEXT: ^ 1546 1547//------------------------------------------------------------------------------ 1548// Floating-point data-processing (1 source) 1549//------------------------------------------------------------------------------ 1550 1551 fmov d0, s3 1552 fcvt d0, d1 1553// CHECK-ERROR: error: expected compatible register or floating-point constant 1554// CHECK-ERROR-NEXT: fmov d0, s3 1555// CHECK-ERROR-NEXT: ^ 1556// CHECK-ERROR-NEXT: error: invalid operand for instruction 1557// CHECK-ERROR-NEXT: fcvt d0, d1 1558// CHECK-ERROR-NEXT: ^ 1559 1560 1561//------------------------------------------------------------------------------ 1562// Floating-point data-processing (2 sources) 1563//------------------------------------------------------------------------------ 1564 1565 fadd s0, d3, d7 1566 fmaxnm d3, s19, d12 1567 fnmul d1, d9, s18 1568// CHECK-ERROR: error: invalid operand for instruction 1569// CHECK-ERROR-NEXT: fadd s0, d3, d7 1570// CHECK-ERROR-NEXT: ^ 1571// CHECK-ERROR-NEXT: error: invalid operand for instruction 1572// CHECK-ERROR-NEXT: fmaxnm d3, s19, d12 1573// CHECK-ERROR-NEXT: ^ 1574// CHECK-ERROR-NEXT: error: invalid operand for instruction 1575// CHECK-ERROR-NEXT: fnmul d1, d9, s18 1576// CHECK-ERROR-NEXT: ^ 1577 1578//------------------------------------------------------------------------------ 1579// Floating-point data-processing (3 sources) 1580//------------------------------------------------------------------------------ 1581 1582 fmadd b3, b4, b5, b6 1583 fmsub h1, h2, h3, h4 1584 fnmadd q3, q5, q6, q7 1585 fnmsub s2, s4, d5, h9 1586// CHECK-ERROR: error: invalid operand for instruction 1587// CHECK-ERROR-NEXT: fmadd b3, b4, b5, b6 1588// CHECK-ERROR-NEXT: ^ 1589// CHECK-ERROR-NEXT: error: invalid operand for instruction 1590// CHECK-ERROR-NEXT: fmsub h1, h2, h3, h4 1591// CHECK-ERROR-NEXT: ^ 1592// CHECK-ERROR-NEXT: error: invalid operand for instruction 1593// CHECK-ERROR-NEXT: fnmadd q3, q5, q6, q7 1594// CHECK-ERROR-NEXT: ^ 1595// CHECK-ERROR-NEXT: error: invalid operand for instruction 1596// CHECK-ERROR-NEXT: fnmsub s2, s4, d5, h9 1597// CHECK-ERROR-NEXT: ^ 1598 1599//------------------------------------------------------------------------------ 1600// Floating-point conditional compare 1601//------------------------------------------------------------------------------ 1602 1603 fcvtzs w13, s31, #0 1604 fcvtzs w19, s20, #33 1605 fcvtzs wsp, s19, #14 1606// CHECK-ERROR-NEXT: error: expected integer in range [1, 32] 1607// CHECK-ERROR-NEXT: fcvtzs w13, s31, #0 1608// CHECK-ERROR-NEXT: ^ 1609// CHECK-ERROR-NEXT: error: expected integer in range [1, 32] 1610// CHECK-ERROR-NEXT: fcvtzs w19, s20, #33 1611// CHECK-ERROR-NEXT: ^ 1612// CHECK-ERROR-NEXT: error: invalid operand for instruction 1613// CHECK-ERROR-NEXT: fcvtzs wsp, s19, #14 1614// CHECK-ERROR-NEXT: ^ 1615 1616 fcvtzs x13, s31, #0 1617 fcvtzs x19, s20, #65 1618 fcvtzs sp, s19, #14 1619// CHECK-ERROR-NEXT: error: expected integer in range [1, 64] 1620// CHECK-ERROR-NEXT: fcvtzs x13, s31, #0 1621// CHECK-ERROR-NEXT: ^ 1622// CHECK-ERROR-NEXT: error: expected integer in range [1, 64] 1623// CHECK-ERROR-NEXT: fcvtzs x19, s20, #65 1624// CHECK-ERROR-NEXT: ^ 1625// CHECK-ERROR-NEXT: error: invalid operand for instruction 1626// CHECK-ERROR-NEXT: fcvtzs sp, s19, #14 1627// CHECK-ERROR-NEXT: ^ 1628 1629 fcvtzu w13, s31, #0 1630 fcvtzu w19, s20, #33 1631 fcvtzu wsp, s19, #14 1632// CHECK-ERROR-NEXT: error: expected integer in range [1, 32] 1633// CHECK-ERROR-NEXT: fcvtzu w13, s31, #0 1634// CHECK-ERROR-NEXT: ^ 1635// CHECK-ERROR-NEXT: error: expected integer in range [1, 32] 1636// CHECK-ERROR-NEXT: fcvtzu w19, s20, #33 1637// CHECK-ERROR-NEXT: ^ 1638// CHECK-ERROR-NEXT: error: invalid operand for instruction 1639// CHECK-ERROR-NEXT: fcvtzu wsp, s19, #14 1640// CHECK-ERROR-NEXT: ^ 1641 1642 fcvtzu x13, s31, #0 1643 fcvtzu x19, s20, #65 1644 fcvtzu sp, s19, #14 1645// CHECK-ERROR-NEXT: error: expected integer in range [1, 64] 1646// CHECK-ERROR-NEXT: fcvtzu x13, s31, #0 1647// CHECK-ERROR-NEXT: ^ 1648// CHECK-ERROR-NEXT: error: expected integer in range [1, 64] 1649// CHECK-ERROR-NEXT: fcvtzu x19, s20, #65 1650// CHECK-ERROR-NEXT: ^ 1651// CHECK-ERROR-NEXT: error: invalid operand for instruction 1652// CHECK-ERROR-NEXT: fcvtzu sp, s19, #14 1653// CHECK-ERROR-NEXT: ^ 1654 1655 scvtf w13, s31, #0 1656 scvtf w19, s20, #33 1657 scvtf wsp, s19, #14 1658// CHECK-ERROR-NEXT: error: invalid operand for instruction 1659// CHECK-ERROR-NEXT: scvtf w13, s31, #0 1660// CHECK-ERROR-NEXT: ^ 1661// CHECK-ERROR-NEXT: error: invalid operand for instruction 1662// CHECK-ERROR-NEXT: scvtf w19, s20, #33 1663// CHECK-ERROR-NEXT: ^ 1664// CHECK-ERROR-NEXT: error: invalid operand for instruction 1665// CHECK-ERROR-NEXT: scvtf wsp, s19, #14 1666// CHECK-ERROR-NEXT: ^ 1667 1668 scvtf x13, s31, #0 1669 scvtf x19, s20, #65 1670 scvtf sp, s19, #14 1671// CHECK-ERROR-NEXT: error: invalid operand for instruction 1672// CHECK-ERROR-NEXT: scvtf x13, s31, #0 1673// CHECK-ERROR-NEXT: ^ 1674// CHECK-ERROR-NEXT: error: invalid operand for instruction 1675// CHECK-ERROR-NEXT: scvtf x19, s20, #65 1676// CHECK-ERROR-NEXT: ^ 1677// CHECK-ERROR-NEXT: error: invalid operand for instruction 1678// CHECK-ERROR-NEXT: scvtf sp, s19, #14 1679// CHECK-ERROR-NEXT: ^ 1680 1681 ucvtf w13, s31, #0 1682 ucvtf w19, s20, #33 1683 ucvtf wsp, s19, #14 1684// CHECK-ERROR-NEXT: error: invalid operand for instruction 1685// CHECK-ERROR-NEXT: ucvtf w13, s31, #0 1686// CHECK-ERROR-NEXT: ^ 1687// CHECK-ERROR-NEXT: error: invalid operand for instruction 1688// CHECK-ERROR-NEXT: ucvtf w19, s20, #33 1689// CHECK-ERROR-NEXT: ^ 1690// CHECK-ERROR-NEXT: error: invalid operand for instruction 1691// CHECK-ERROR-NEXT: ucvtf wsp, s19, #14 1692// CHECK-ERROR-NEXT: ^ 1693 1694 ucvtf x13, s31, #0 1695 ucvtf x19, s20, #65 1696 ucvtf sp, s19, #14 1697// CHECK-ERROR-NEXT: error: invalid operand for instruction 1698// CHECK-ERROR-NEXT: ucvtf x13, s31, #0 1699// CHECK-ERROR-NEXT: ^ 1700// CHECK-ERROR-NEXT: error: invalid operand for instruction 1701// CHECK-ERROR-NEXT: ucvtf x19, s20, #65 1702// CHECK-ERROR-NEXT: ^ 1703// CHECK-ERROR-NEXT: error: invalid operand for instruction 1704// CHECK-ERROR-NEXT: ucvtf sp, s19, #14 1705// CHECK-ERROR-NEXT: ^ 1706 1707//------------------------------------------------------------------------------ 1708// Floating-point immediate 1709//------------------------------------------------------------------------------ 1710 ;; Exponent too large 1711 fmov d3, #0.0625 1712 fmov s2, #32.0 1713// CHECK-ERROR: error: expected compatible register or floating-point constant 1714// CHECK-ERROR-NEXT: fmov d3, #0.0625 1715// CHECK-ERROR-NEXT: ^ 1716// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant 1717// CHECK-ERROR-NEXT: fmov s2, #32.0 1718// CHECK-ERROR-NEXT: ^ 1719 1720 ;; Fraction too precise 1721 fmov s9, #1.03125 1722 fmov s28, #1.96875 1723// CHECK-ERROR: error: expected compatible register or floating-point constant 1724// CHECK-ERROR-NEXT: fmov s9, #1.03125 1725// CHECK-ERROR-NEXT: ^ 1726// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant 1727// CHECK-ERROR-NEXT: fmov s28, #1.96875 1728// CHECK-ERROR-NEXT: ^ 1729 1730 ;; No particular reason, but a striking omission 1731 fmov d0, #0.0 1732// CHECK-ERROR: error: expected compatible register or floating-point constant 1733// CHECK-ERROR-NEXT: fmov d0, #0.0 1734// CHECK-ERROR-NEXT: ^ 1735 1736//------------------------------------------------------------------------------ 1737// Floating-point <-> integer conversion 1738//------------------------------------------------------------------------------ 1739 1740 fmov x3, v0.d[0] 1741 fmov v29.1d[1], x2 1742 fmov x7, v0.d[2] 1743 fcvtns sp, s5 1744 scvtf s6, wsp 1745// CHECK-ERROR: error: expected lane specifier '[1]' 1746// CHECK-ERROR-NEXT: fmov x3, v0.d[0] 1747// CHECK-ERROR-NEXT: ^ 1748// CHECK-ERROR-NEXT: error: lane number incompatible with layout 1749// CHECK-ERROR-NEXT: fmov v29.1d[1], x2 1750// CHECK-ERROR-NEXT: ^ 1751// CHECK-ERROR-NEXT: error: lane number incompatible with layout 1752// CHECK-ERROR-NEXT: fmov x7, v0.d[2] 1753// CHECK-ERROR-NEXT: ^ 1754// CHECK-ERROR-NEXT: error: invalid operand for instruction 1755// CHECK-ERROR-NEXT: fcvtns sp, s5 1756// CHECK-ERROR-NEXT: ^ 1757// CHECK-ERROR-NEXT: error: invalid operand for instruction 1758// CHECK-ERROR-NEXT: scvtf s6, wsp 1759// CHECK-ERROR-NEXT: ^ 1760 1761//------------------------------------------------------------------------------ 1762// Load-register (literal) 1763//------------------------------------------------------------------------------ 1764 1765 ldr sp, some_label 1766 ldrsw w3, somewhere 1767// CHECK-ERROR: error: invalid operand for instruction 1768// CHECK-ERROR-NEXT: ldr sp, some_label 1769// CHECK-ERROR-NEXT: ^ 1770// CHECK-ERROR-NEXT: error: invalid operand for instruction 1771// CHECK-ERROR-NEXT: ldrsw w3, somewhere 1772// CHECK-ERROR-NEXT: ^ 1773 1774 ldrsw x2, #1048576 1775 ldr q0, #-1048580 1776 ldr x0, #2 1777// CHECK-ERROR: error: expected label or encodable integer pc offset 1778// CHECK-ERROR-NEXT: ldrsw x2, #1048576 1779// CHECK-ERROR-NEXT: ^ 1780// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 1781// CHECK-ERROR-NEXT: ldr q0, #-1048580 1782// CHECK-ERROR-NEXT: ^ 1783// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 1784// CHECK-ERROR-NEXT: ldr x0, #2 1785// CHECK-ERROR-NEXT: ^ 1786 1787//------------------------------------------------------------------------------ 1788// Load/store exclusive 1789//------------------------------------------------------------------------------ 1790 1791 stxrb w2, x3, [x4, #20] 1792 stlxrh w10, w11, [w2] 1793// CHECK-ERROR: error: expected '#0' 1794// CHECK-ERROR-NEXT: stxrb w2, x3, [x4, #20] 1795// CHECK-ERROR-NEXT: ^ 1796// CHECK-ERROR: error: invalid operand for instruction 1797// CHECK-ERROR-NEXT: stlxrh w10, w11, [w2] 1798// CHECK-ERROR-NEXT: ^ 1799 1800 stlxr x20, w21, [sp] 1801// CHECK-ERROR: error: invalid operand for instruction 1802// CHECK-ERROR-NEXT: stlxr x20, w21, [sp] 1803// CHECK-ERROR-NEXT: ^ 1804 1805 ldxr sp, [sp] 1806// CHECK-ERROR: error: invalid operand for instruction 1807// CHECK-ERROR-NEXT: ldxr sp, [sp] 1808// CHECK-ERROR-NEXT: ^ 1809 1810 stxp x1, x2, x3, [x4] 1811// CHECK-ERROR: error: invalid operand for instruction 1812// CHECK-ERROR-NEXT: stxp x1, x2, x3, [x4] 1813// CHECK-ERROR-NEXT: ^ 1814 1815 stlxp w5, x1, w4, [x5] 1816// CHECK-ERROR: error: invalid operand for instruction 1817// CHECK-ERROR-NEXT: stlxp w5, x1, w4, [x5] 1818// CHECK-ERROR-NEXT: ^ 1819 1820 stlxp w17, w6, x7, [x22] 1821// CHECK-ERROR: error: invalid operand for instruction 1822// CHECK-ERROR-NEXT: stlxp w17, w6, x7, [x22] 1823// CHECK-ERROR-NEXT: ^ 1824 1825//------------------------------------------------------------------------------ 1826// Load/store (unscaled immediate) 1827//------------------------------------------------------------------------------ 1828 1829 ldurb w2, [sp, #256] 1830 sturh w17, [x1, #256] 1831 ldursw x20, [x1, #256] 1832 ldur x12, [sp, #256] 1833// CHECK-ERROR: error: expected integer in range [-256, 255] 1834// CHECK-ERROR-NEXT: ldurb w2, [sp, #256] 1835// CHECK-ERROR-NEXT: ^ 1836// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1837// CHECK-ERROR-NEXT: sturh w17, [x1, #256] 1838// CHECK-ERROR-NEXT: ^ 1839// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1840// CHECK-ERROR-NEXT: ldursw x20, [x1, #256] 1841// CHECK-ERROR-NEXT: ^ 1842// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1843// CHECK-ERROR-NEXT: ldur x12, [sp, #256] 1844// CHECK-ERROR-NEXT: ^ 1845 1846 stur h2, [x2, #-257] 1847 stur b2, [x2, #-257] 1848 ldursb x9, [sp, #-257] 1849 ldur w2, [x30, #-257] 1850 stur q9, [x20, #-257] 1851// CHECK-ERROR: error: expected integer in range [-256, 255] 1852// CHECK-ERROR-NEXT: stur h2, [x2, #-257] 1853// CHECK-ERROR-NEXT: ^ 1854// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1855// CHECK-ERROR-NEXT: stur b2, [x2, #-257] 1856// CHECK-ERROR-NEXT: ^ 1857// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1858// CHECK-ERROR-NEXT: ldursb x9, [sp, #-257] 1859// CHECK-ERROR-NEXT: ^ 1860// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1861// CHECK-ERROR-NEXT: ldur w2, [x30, #-257] 1862// CHECK-ERROR-NEXT: ^ 1863// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1864// CHECK-ERROR-NEXT: stur q9, [x20, #-257] 1865// CHECK-ERROR-NEXT: ^ 1866 1867 prfum pstl3strm, [xzr] 1868// CHECK-ERROR: error: invalid operand for instruction 1869// CHECK-ERROR-NEXT: prfum pstl3strm, [xzr] 1870// CHECK-ERROR-NEXT: ^ 1871 1872//------------------------------------------------------------------------------ 1873// Load-store register (immediate post-indexed) 1874//------------------------------------------------------------------------------ 1875 ldr x3, [x4, #25], #0 1876 ldr x4, [x9, #0], #4 1877// CHECK-ERROR: error: expected symbolic reference or integer in range [0, 32760] 1878// CHECK-ERROR-NEXT: ldr x3, [x4, #25], #0 1879// CHECK-ERROR-NEXT: ^ 1880// CHECK-ERROR-NEXT: error: invalid operand for instruction 1881// CHECK-ERROR-NEXT: ldr x4, [x9, #0], #4 1882// CHECK-ERROR-NEXT: ^ 1883 1884 strb w1, [x19], #256 1885 strb w9, [sp], #-257 1886 strh w1, [x19], #256 1887 strh w9, [sp], #-257 1888 str w1, [x19], #256 1889 str w9, [sp], #-257 1890// CHECK-ERROR: error: expected integer in range [-256, 255] 1891// CHECK-ERROR-NEXT: strb w1, [x19], #256 1892// CHECK-ERROR-NEXT: ^ 1893// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1894// CHECK-ERROR-NEXT: strb w9, [sp], #-257 1895// CHECK-ERROR-NEXT: ^ 1896// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1897// CHECK-ERROR-NEXT: strh w1, [x19], #256 1898// CHECK-ERROR-NEXT: ^ 1899// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1900// CHECK-ERROR-NEXT: strh w9, [sp], #-257 1901// CHECK-ERROR-NEXT: ^ 1902// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1903// CHECK-ERROR-NEXT: str w1, [x19], #256 1904// CHECK-ERROR-NEXT: ^ 1905// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1906// CHECK-ERROR-NEXT: str w9, [sp], #-257 1907// CHECK-ERROR-NEXT: ^ 1908 1909 ldrb w1, [x19], #256 1910 ldrb w9, [sp], #-257 1911 ldrh w1, [x19], #256 1912 ldrh w9, [sp], #-257 1913 ldr w1, [x19], #256 1914 ldr w9, [sp], #-257 1915// CHECK-ERROR: error: expected integer in range [-256, 255] 1916// CHECK-ERROR-NEXT: ldrb w1, [x19], #256 1917// CHECK-ERROR-NEXT: ^ 1918// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1919// CHECK-ERROR-NEXT: ldrb w9, [sp], #-257 1920// CHECK-ERROR-NEXT: ^ 1921// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1922// CHECK-ERROR-NEXT: ldrh w1, [x19], #256 1923// CHECK-ERROR-NEXT: ^ 1924// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1925// CHECK-ERROR-NEXT: ldrh w9, [sp], #-257 1926// CHECK-ERROR-NEXT: ^ 1927// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1928// CHECK-ERROR-NEXT: ldr w1, [x19], #256 1929// CHECK-ERROR-NEXT: ^ 1930// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1931// CHECK-ERROR-NEXT: ldr w9, [sp], #-257 1932// CHECK-ERROR-NEXT: ^ 1933 1934 ldrsb x2, [x3], #256 1935 ldrsb x22, [x13], #-257 1936 ldrsh x2, [x3], #256 1937 ldrsh x22, [x13], #-257 1938 ldrsw x2, [x3], #256 1939 ldrsw x22, [x13], #-257 1940// CHECK-ERROR: error: expected integer in range [-256, 255] 1941// CHECK-ERROR-NEXT: ldrsb x2, [x3], #256 1942// CHECK-ERROR-NEXT: ^ 1943// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1944// CHECK-ERROR-NEXT: ldrsb x22, [x13], #-257 1945// CHECK-ERROR-NEXT: ^ 1946// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1947// CHECK-ERROR-NEXT: ldrsh x2, [x3], #256 1948// CHECK-ERROR-NEXT: ^ 1949// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1950// CHECK-ERROR-NEXT: ldrsh x22, [x13], #-257 1951// CHECK-ERROR-NEXT: ^ 1952// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1953// CHECK-ERROR-NEXT: ldrsw x2, [x3], #256 1954// CHECK-ERROR-NEXT: ^ 1955// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1956// CHECK-ERROR-NEXT: ldrsw x22, [x13], #-257 1957// CHECK-ERROR-NEXT: ^ 1958 1959 ldrsb w2, [x3], #256 1960 ldrsb w22, [x13], #-257 1961 ldrsh w2, [x3], #256 1962 ldrsh w22, [x13], #-257 1963// CHECK-ERROR: error: expected integer in range [-256, 255] 1964// CHECK-ERROR-NEXT: ldrsb w2, [x3], #256 1965// CHECK-ERROR-NEXT: ^ 1966// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1967// CHECK-ERROR-NEXT: ldrsb w22, [x13], #-257 1968// CHECK-ERROR-NEXT: ^ 1969// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1970// CHECK-ERROR-NEXT: ldrsh w2, [x3], #256 1971// CHECK-ERROR-NEXT: ^ 1972// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1973// CHECK-ERROR-NEXT: ldrsh w22, [x13], #-257 1974// CHECK-ERROR-NEXT: ^ 1975 1976 str b3, [x3], #256 1977 str b3, [x13], #-257 1978 str h3, [x3], #256 1979 str h3, [x13], #-257 1980 str s3, [x3], #256 1981 str s3, [x13], #-257 1982 str d3, [x3], #256 1983 str d3, [x13], #-257 1984 str q3, [x3], #256 1985 str q3, [x13], #-257 1986// CHECK-ERROR: error: expected integer in range [-256, 255] 1987// CHECK-ERROR-NEXT: str b3, [x3], #256 1988// CHECK-ERROR-NEXT: ^ 1989// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1990// CHECK-ERROR-NEXT: str b3, [x13], #-257 1991// CHECK-ERROR-NEXT: ^ 1992// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1993// CHECK-ERROR-NEXT: str h3, [x3], #256 1994// CHECK-ERROR-NEXT: ^ 1995// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1996// CHECK-ERROR-NEXT: str h3, [x13], #-257 1997// CHECK-ERROR-NEXT: ^ 1998// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 1999// CHECK-ERROR-NEXT: str s3, [x3], #256 2000// CHECK-ERROR-NEXT: ^ 2001// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2002// CHECK-ERROR-NEXT: str s3, [x13], #-257 2003// CHECK-ERROR-NEXT: ^ 2004// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2005// CHECK-ERROR-NEXT: str d3, [x3], #256 2006// CHECK-ERROR-NEXT: ^ 2007// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2008// CHECK-ERROR-NEXT: str d3, [x13], #-257 2009// CHECK-ERROR-NEXT: ^ 2010// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2011// CHECK-ERROR-NEXT: str q3, [x3], #256 2012// CHECK-ERROR-NEXT: ^ 2013// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2014// CHECK-ERROR-NEXT: str q3, [x13], #-257 2015// CHECK-ERROR-NEXT: ^ 2016 2017 ldr b3, [x3], #256 2018 ldr b3, [x13], #-257 2019 ldr h3, [x3], #256 2020 ldr h3, [x13], #-257 2021 ldr s3, [x3], #256 2022 ldr s3, [x13], #-257 2023 ldr d3, [x3], #256 2024 ldr d3, [x13], #-257 2025 ldr q3, [x3], #256 2026 ldr q3, [x13], #-257 2027// CHECK-ERROR: error: expected integer in range [-256, 255] 2028// CHECK-ERROR-NEXT: ldr b3, [x3], #256 2029// CHECK-ERROR-NEXT: ^ 2030// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2031// CHECK-ERROR-NEXT: ldr b3, [x13], #-257 2032// CHECK-ERROR-NEXT: ^ 2033// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2034// CHECK-ERROR-NEXT: ldr h3, [x3], #256 2035// CHECK-ERROR-NEXT: ^ 2036// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2037// CHECK-ERROR-NEXT: ldr h3, [x13], #-257 2038// CHECK-ERROR-NEXT: ^ 2039// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2040// CHECK-ERROR-NEXT: ldr s3, [x3], #256 2041// CHECK-ERROR-NEXT: ^ 2042// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2043// CHECK-ERROR-NEXT: ldr s3, [x13], #-257 2044// CHECK-ERROR-NEXT: ^ 2045// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2046// CHECK-ERROR-NEXT: ldr d3, [x3], #256 2047// CHECK-ERROR-NEXT: ^ 2048// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2049// CHECK-ERROR-NEXT: ldr d3, [x13], #-257 2050// CHECK-ERROR-NEXT: ^ 2051// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2052// CHECK-ERROR-NEXT: ldr q3, [x3], #256 2053// CHECK-ERROR-NEXT: ^ 2054// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2055// CHECK-ERROR-NEXT: ldr q3, [x13], #-257 2056// CHECK-ERROR-NEXT: ^ 2057 2058//------------------------------------------------------------------------------ 2059// Load-store register (immediate pre-indexed) 2060//------------------------------------------------------------------------------ 2061 2062 ldr x3, [x4]! 2063// CHECK-ERROR: error: 2064// CHECK-ERROR-NEXT: ldr x3, [x4]! 2065// CHECK-ERROR-NEXT: ^ 2066 2067 strb w1, [x19, #256]! 2068 strb w9, [sp, #-257]! 2069 strh w1, [x19, #256]! 2070 strh w9, [sp, #-257]! 2071 str w1, [x19, #256]! 2072 str w9, [sp, #-257]! 2073// CHECK-ERROR: error: invalid operand for instruction 2074// CHECK-ERROR-NEXT: strb w1, [x19, #256]! 2075// CHECK-ERROR-NEXT: ^ 2076// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2077// CHECK-ERROR-NEXT: strb w9, [sp, #-257]! 2078// CHECK-ERROR-NEXT: ^ 2079// CHECK-ERROR-NEXT: error: invalid operand for instruction 2080// CHECK-ERROR-NEXT: strh w1, [x19, #256]! 2081// CHECK-ERROR-NEXT: ^ 2082// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2083// CHECK-ERROR-NEXT: strh w9, [sp, #-257]! 2084// CHECK-ERROR-NEXT: ^ 2085// CHECK-ERROR-NEXT: error: invalid operand for instruction 2086// CHECK-ERROR-NEXT: str w1, [x19, #256]! 2087// CHECK-ERROR-NEXT: ^ 2088// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2089// CHECK-ERROR-NEXT: str w9, [sp, #-257]! 2090// CHECK-ERROR-NEXT: ^ 2091 2092 ldrb w1, [x19, #256]! 2093 ldrb w9, [sp, #-257]! 2094 ldrh w1, [x19, #256]! 2095 ldrh w9, [sp, #-257]! 2096 ldr w1, [x19, #256]! 2097 ldr w9, [sp, #-257]! 2098// CHECK-ERROR: error: invalid operand for instruction 2099// CHECK-ERROR-NEXT: ldrb w1, [x19, #256]! 2100// CHECK-ERROR-NEXT: ^ 2101// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2102// CHECK-ERROR-NEXT: ldrb w9, [sp, #-257]! 2103// CHECK-ERROR-NEXT: ^ 2104// CHECK-ERROR-NEXT: error: invalid operand for instruction 2105// CHECK-ERROR-NEXT: ldrh w1, [x19, #256]! 2106// CHECK-ERROR-NEXT: ^ 2107// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2108// CHECK-ERROR-NEXT: ldrh w9, [sp, #-257]! 2109// CHECK-ERROR-NEXT: ^ 2110// CHECK-ERROR-NEXT: error: invalid operand for instruction 2111// CHECK-ERROR-NEXT: ldr w1, [x19, #256]! 2112// CHECK-ERROR-NEXT: ^ 2113// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2114// CHECK-ERROR-NEXT: ldr w9, [sp, #-257]! 2115// CHECK-ERROR-NEXT: ^ 2116 2117 ldrsb x2, [x3, #256]! 2118 ldrsb x22, [x13, #-257]! 2119 ldrsh x2, [x3, #256]! 2120 ldrsh x22, [x13, #-257]! 2121 ldrsw x2, [x3, #256]! 2122 ldrsw x22, [x13, #-257]! 2123// CHECK-ERROR: error: invalid operand for instruction 2124// CHECK-ERROR-NEXT: ldrsb x2, [x3, #256]! 2125// CHECK-ERROR-NEXT: ^ 2126// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2127// CHECK-ERROR-NEXT: ldrsb x22, [x13, #-257]! 2128// CHECK-ERROR-NEXT: ^ 2129// CHECK-ERROR-NEXT: error: invalid operand for instruction 2130// CHECK-ERROR-NEXT: ldrsh x2, [x3, #256]! 2131// CHECK-ERROR-NEXT: ^ 2132// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2133// CHECK-ERROR-NEXT: ldrsh x22, [x13, #-257]! 2134// CHECK-ERROR-NEXT: ^ 2135// CHECK-ERROR-NEXT: error: invalid operand for instruction 2136// CHECK-ERROR-NEXT: ldrsw x2, [x3, #256]! 2137// CHECK-ERROR-NEXT: ^ 2138// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2139// CHECK-ERROR-NEXT: ldrsw x22, [x13, #-257]! 2140// CHECK-ERROR-NEXT: ^ 2141 2142 ldrsb w2, [x3, #256]! 2143 ldrsb w22, [x13, #-257]! 2144 ldrsh w2, [x3, #256]! 2145 ldrsh w22, [x13, #-257]! 2146// CHECK-ERROR: error: invalid operand for instruction 2147// CHECK-ERROR-NEXT: ldrsb w2, [x3, #256]! 2148// CHECK-ERROR-NEXT: ^ 2149// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2150// CHECK-ERROR-NEXT: ldrsb w22, [x13, #-257]! 2151// CHECK-ERROR-NEXT: ^ 2152// CHECK-ERROR-NEXT: error: invalid operand for instruction 2153// CHECK-ERROR-NEXT: ldrsh w2, [x3, #256]! 2154// CHECK-ERROR-NEXT: ^ 2155// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2156// CHECK-ERROR-NEXT: ldrsh w22, [x13, #-257]! 2157// CHECK-ERROR-NEXT: ^ 2158 2159 str b3, [x3, #256]! 2160 str b3, [x13, #-257]! 2161 str h3, [x3, #256]! 2162 str h3, [x13, #-257]! 2163 str s3, [x3, #256]! 2164 str s3, [x13, #-257]! 2165 str d3, [x3, #256]! 2166 str d3, [x13, #-257]! 2167// CHECK-ERROR: error: invalid operand for instruction 2168// CHECK-ERROR-NEXT: str b3, [x3, #256]! 2169// CHECK-ERROR-NEXT: ^ 2170// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2171// CHECK-ERROR-NEXT: str b3, [x13, #-257]! 2172// CHECK-ERROR-NEXT: ^ 2173// CHECK-ERROR-NEXT: error: invalid operand for instruction 2174// CHECK-ERROR-NEXT: str h3, [x3, #256]! 2175// CHECK-ERROR-NEXT: ^ 2176// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2177// CHECK-ERROR-NEXT: str h3, [x13, #-257]! 2178// CHECK-ERROR-NEXT: ^ 2179// CHECK-ERROR-NEXT: error: invalid operand for instruction 2180// CHECK-ERROR-NEXT: str s3, [x3, #256]! 2181// CHECK-ERROR-NEXT: ^ 2182// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2183// CHECK-ERROR-NEXT: str s3, [x13, #-257]! 2184// CHECK-ERROR-NEXT: ^ 2185// CHECK-ERROR-NEXT: error: invalid operand for instruction 2186// CHECK-ERROR-NEXT: str d3, [x3, #256]! 2187// CHECK-ERROR-NEXT: ^ 2188// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2189// CHECK-ERROR-NEXT: str d3, [x13, #-257]! 2190// CHECK-ERROR-NEXT: ^ 2191 2192 ldr b3, [x3, #256]! 2193 ldr b3, [x13, #-257]! 2194 ldr h3, [x3, #256]! 2195 ldr h3, [x13, #-257]! 2196 ldr s3, [x3, #256]! 2197 ldr s3, [x13, #-257]! 2198 ldr d3, [x3, #256]! 2199 ldr d3, [x13, #-257]! 2200// CHECK-ERROR: error: invalid operand for instruction 2201// CHECK-ERROR-NEXT: ldr b3, [x3, #256]! 2202// CHECK-ERROR-NEXT: ^ 2203// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2204// CHECK-ERROR-NEXT: ldr b3, [x13, #-257]! 2205// CHECK-ERROR-NEXT: ^ 2206// CHECK-ERROR-NEXT: error: invalid operand for instruction 2207// CHECK-ERROR-NEXT: ldr h3, [x3, #256]! 2208// CHECK-ERROR-NEXT: ^ 2209// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2210// CHECK-ERROR-NEXT: ldr h3, [x13, #-257]! 2211// CHECK-ERROR-NEXT: ^ 2212// CHECK-ERROR-NEXT: error: invalid operand for instruction 2213// CHECK-ERROR-NEXT: ldr s3, [x3, #256]! 2214// CHECK-ERROR-NEXT: ^ 2215// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2216// CHECK-ERROR-NEXT: ldr s3, [x13, #-257]! 2217// CHECK-ERROR-NEXT: ^ 2218// CHECK-ERROR-NEXT: error: invalid operand for instruction 2219// CHECK-ERROR-NEXT: ldr d3, [x3, #256]! 2220// CHECK-ERROR-NEXT: ^ 2221// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2222// CHECK-ERROR-NEXT: ldr d3, [x13, #-257]! 2223// CHECK-ERROR-NEXT: ^ 2224 2225//------------------------------------------------------------------------------ 2226// Load/store (unprivileged) 2227//------------------------------------------------------------------------------ 2228 2229 ldtrb w2, [sp, #256] 2230 sttrh w17, [x1, #256] 2231 ldtrsw x20, [x1, #256] 2232 ldtr x12, [sp, #256] 2233// CHECK-ERROR: error: expected integer in range [-256, 255] 2234// CHECK-ERROR-NEXT: ldtrb w2, [sp, #256] 2235// CHECK-ERROR-NEXT: ^ 2236// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2237// CHECK-ERROR-NEXT: sttrh w17, [x1, #256] 2238// CHECK-ERROR-NEXT: ^ 2239// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2240// CHECK-ERROR-NEXT: ldtrsw x20, [x1, #256] 2241// CHECK-ERROR-NEXT: ^ 2242// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2243// CHECK-ERROR-NEXT: ldtr x12, [sp, #256] 2244// CHECK-ERROR-NEXT: ^ 2245 2246 sttr h2, [x2, #-257] 2247 sttr b2, [x2, #-257] 2248 ldtrsb x9, [sp, #-257] 2249 ldtr w2, [x30, #-257] 2250 sttr q9, [x20, #-257] 2251// CHECK-ERROR: error: invalid operand for instruction 2252// CHECK-ERROR-NEXT: sttr h2, [x2, #-257] 2253// CHECK-ERROR-NEXT: ^ 2254// CHECK-ERROR-NEXT: error: invalid operand for instruction 2255// CHECK-ERROR-NEXT: sttr b2, [x2, #-257] 2256// CHECK-ERROR-NEXT: ^ 2257// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2258// CHECK-ERROR-NEXT: ldtrsb x9, [sp, #-257] 2259// CHECK-ERROR-NEXT: ^ 2260// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2261// CHECK-ERROR-NEXT: ldtr w2, [x30, #-257] 2262// CHECK-ERROR-NEXT: ^ 2263// CHECK-ERROR-NEXT: error: invalid operand for instruction 2264// CHECK-ERROR-NEXT: sttr q9, [x20, #-257] 2265// CHECK-ERROR-NEXT: ^ 2266 2267 2268//------------------------------------------------------------------------------ 2269// Load/store (unsigned immediate) 2270//------------------------------------------------------------------------------ 2271 2272//// Out of range immediates 2273 ldr q0, [x11, #65536] 2274 ldr x0, [sp, #32768] 2275 ldr w0, [x4, #16384] 2276 ldrh w2, [x21, #8192] 2277 ldrb w3, [x12, #4096] 2278// CHECK-ERROR: error: expected integer in range [-256, 255] 2279// CHECK-ERROR-NEXT: ldr q0, [x11, #65536] 2280// CHECK-ERROR-NEXT: ^ 2281// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2282// CHECK-ERROR-NEXT: ldr x0, [sp, #32768] 2283// CHECK-ERROR-NEXT: ^ 2284// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2285// CHECK-ERROR-NEXT: ldr w0, [x4, #16384] 2286// CHECK-ERROR-NEXT: ^ 2287// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2288// CHECK-ERROR-NEXT: ldrh w2, [x21, #8192] 2289// CHECK-ERROR-NEXT: ^ 2290// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2291// CHECK-ERROR-NEXT: ldrb w3, [x12, #4096] 2292// CHECK-ERROR-NEXT: ^ 2293 2294//// Misaligned addresses 2295 ldr w0, [x0, #2] 2296 ldrsh w2, [x0, #123] 2297 str q0, [x0, #8] 2298// CHECK-ERROR: error: too few operands for instruction 2299// CHECK-ERROR-NEXT: ldr w0, [x0, #2] 2300// CHECK-ERROR-NEXT: ^ 2301// CHECK-ERROR-NEXT: error: too few operands for instruction 2302// CHECK-ERROR-NEXT: ldrsh w2, [x0, #123] 2303// CHECK-ERROR-NEXT: ^ 2304// CHECK-ERROR-NEXT: error: too few operands for instruction 2305// CHECK-ERROR-NEXT: str q0, [x0, #8] 2306// CHECK-ERROR-NEXT: ^ 2307 2308//// 32-bit addresses 2309 ldr w0, [w20] 2310 ldrsh x3, [wsp] 2311// CHECK-ERROR: error: invalid operand for instruction 2312// CHECK-ERROR-NEXT: ldr w0, [w20] 2313// CHECK-ERROR-NEXT: ^ 2314// CHECK-ERROR-NEXT: error: invalid operand for instruction 2315// CHECK-ERROR-NEXT: ldrsh x3, [wsp] 2316// CHECK-ERROR-NEXT: ^ 2317 2318//// Store things 2319 strb w0, [wsp] 2320 strh w31, [x23, #1] 2321 str x5, [x22, #12] 2322 str w7, [x12, #16384] 2323// CHECK-ERROR: error: invalid operand for instruction 2324// CHECK-ERROR-NEXT: strb w0, [wsp] 2325// CHECK-ERROR-NEXT: ^ 2326// CHECK-ERROR: error: invalid operand for instruction 2327// CHECK-ERROR-NEXT: strh w31, [x23, #1] 2328// CHECK-ERROR-NEXT: ^ 2329// CHECK-ERROR-NEXT: error: too few operands for instruction 2330// CHECK-ERROR-NEXT: str x5, [x22, #12] 2331// CHECK-ERROR-NEXT: ^ 2332// CHECK-ERROR-NEXT: error: expected integer in range [-256, 255] 2333// CHECK-ERROR-NEXT: str w7, [x12, #16384] 2334// CHECK-ERROR-NEXT: ^ 2335 2336//// Bad PRFMs 2337 prfm #-1, [sp] 2338 prfm #32, [sp, #8] 2339 prfm pldl1strm, [w3, #8] 2340 prfm wibble, [sp] 2341// CHECK-ERROR: error: Invalid immediate for instruction 2342// CHECK-ERROR-NEXT: prfm #-1, [sp] 2343// CHECK-ERROR-NEXT: ^ 2344// CHECK-ERROR-NEXT: error: Invalid immediate for instruction 2345// CHECK-ERROR-NEXT: prfm #32, [sp, #8] 2346// CHECK-ERROR-NEXT: ^ 2347// CHECK-ERROR-NEXT: error: invalid operand for instruction 2348// CHECK-ERROR-NEXT: prfm pldl1strm, [w3, #8] 2349// CHECK-ERROR-NEXT: ^ 2350// CHECK-ERROR-NEXT: error: operand specifier not recognised 2351// CHECK-ERROR-NEXT: prfm wibble, [sp] 2352// CHECK-ERROR-NEXT: ^ 2353 2354//------------------------------------------------------------------------------ 2355// Load/store register (register offset) 2356//------------------------------------------------------------------------------ 2357 2358 ldr w3, [xzr, x3] 2359 ldr w4, [x0, x4, lsl] 2360 ldr w9, [x5, x5, uxtw] 2361 ldr w10, [x6, x9, sxtw #2] 2362 ldr w11, [x7, w2, lsl #2] 2363 ldr w12, [x8, w1, sxtx] 2364// CHECK-ERROR-NEXT: error: invalid operand for instruction 2365// CHECK-ERROR-NEXT: ldr w3, [xzr, x3] 2366// CHECK-ERROR-NEXT: ^ 2367// CHECK-ERROR-NEXT: error: expected #imm after shift specifier 2368// CHECK-ERROR-NEXT: ldr w4, [x0, x4, lsl] 2369// CHECK-ERROR-NEXT: ^ 2370// CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #2 2371// CHECK-ERROR-NEXT: ldr w9, [x5, x5, uxtw] 2372// CHECK-ERROR-NEXT: ^ 2373// CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #2 2374// CHECK-ERROR-NEXT: ldr w10, [x6, x9, sxtw #2] 2375// CHECK-ERROR-NEXT: ^ 2376// CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #2 2377// CHECK-ERROR-NEXT: ldr w11, [x7, w2, lsl #2] 2378// CHECK-ERROR-NEXT: ^ 2379// CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #2 2380// CHECK-ERROR-NEXT: ldr w12, [x8, w1, sxtx] 2381// CHECK-ERROR-NEXT: ^ 2382 2383 ldrsb w9, [x4, x2, lsl #-1] 2384 strb w9, [x4, x2, lsl #1] 2385// CHECK-ERROR-NEXT: error: expected integer shift amount 2386// CHECK-ERROR-NEXT: ldrsb w9, [x4, x2, lsl #-1] 2387// CHECK-ERROR-NEXT: ^ 2388// CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 2389// CHECK-ERROR-NEXT: strb w9, [x4, x2, lsl #1] 2390// CHECK-ERROR-NEXT: ^ 2391 2392 ldrsh w9, [x4, x2, lsl #-1] 2393 ldr h13, [x4, w2, uxtw #2] 2394// CHECK-ERROR-NEXT: error: expected integer shift amount 2395// CHECK-ERROR-NEXT: ldrsh w9, [x4, x2, lsl #-1] 2396// CHECK-ERROR-NEXT: ^ 2397// CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #1 2398// CHECK-ERROR-NEXT: ldr h13, [x4, w2, uxtw #2] 2399// CHECK-ERROR-NEXT: ^ 2400 2401 str w9, [x5, w9, sxtw #-1] 2402 str s3, [sp, w9, uxtw #1] 2403 ldrsw x9, [x15, x4, sxtx #3] 2404// CHECK-ERROR-NEXT: error: expected integer shift amount 2405// CHECK-ERROR-NEXT: str w9, [x5, w9, sxtw #-1] 2406// CHECK-ERROR-NEXT: ^ 2407// CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #2 2408// CHECK-ERROR-NEXT: str s3, [sp, w9, uxtw #1] 2409// CHECK-ERROR-NEXT: ^ 2410// CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #2 2411// CHECK-ERROR-NEXT: ldrsw x9, [x15, x4, sxtx #3] 2412// CHECK-ERROR-NEXT: ^ 2413 2414 str xzr, [x5, x9, sxtx #-1] 2415 prfm pldl3keep, [sp, x20, lsl #2] 2416 ldr d3, [x20, wzr, uxtw #4] 2417// CHECK-ERROR-NEXT: error: expected integer shift amount 2418// CHECK-ERROR-NEXT: str xzr, [x5, x9, sxtx #-1] 2419// CHECK-ERROR-NEXT: ^ 2420// CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #3 2421// CHECK-ERROR-NEXT: prfm pldl3keep, [sp, x20, lsl #2] 2422// CHECK-ERROR-NEXT: ^ 2423// CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #3 2424// CHECK-ERROR-NEXT: ldr d3, [x20, wzr, uxtw #4] 2425// CHECK-ERROR-NEXT: ^ 2426 2427 ldr q5, [sp, x2, lsl #-1] 2428 ldr q10, [x20, w4, uxtw #2] 2429 str q21, [x20, w4, uxtw #5] 2430// CHECK-ERROR-NEXT: error: expected integer shift amount 2431// CHECK-ERROR-NEXT: ldr q5, [sp, x2, lsl #-1] 2432// CHECK-ERROR-NEXT: ^ 2433// CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtw' with optional shift of #0 or #4 2434// CHECK-ERROR-NEXT: ldr q10, [x20, w4, uxtw #2] 2435// CHECK-ERROR-NEXT: ^ 2436// CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtw' with optional shift of #0 or #4 2437// CHECK-ERROR-NEXT: str q21, [x20, w4, uxtw #5] 2438// CHECK-ERROR-NEXT: ^ 2439 2440//------------------------------------------------------------------------------ 2441// Load/store register pair (offset) 2442//------------------------------------------------------------------------------ 2443 ldp w3, w2, [x4, #1] 2444 stp w1, w2, [x3, #253] 2445 stp w9, w10, [x5, #256] 2446 ldp w11, w12, [x9, #-260] 2447 stp wsp, w9, [sp] 2448// CHECK-ERROR: error: expected integer multiple of 4 in range [-256, 252] 2449// CHECK-ERROR-NEXT: ldp w3, w2, [x4, #1] 2450// CHECK-ERROR-NEXT: ^ 2451// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2452// CHECK-ERROR-NEXT: stp w1, w2, [x3, #253] 2453// CHECK-ERROR-NEXT: ^ 2454// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2455// CHECK-ERROR-NEXT: stp w9, w10, [x5, #256] 2456// CHECK-ERROR-NEXT: ^ 2457// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2458// CHECK-ERROR-NEXT: ldp w11, w12, [x9, #-260] 2459// CHECK-ERROR-NEXT: ^ 2460// CHECK-ERROR-NEXT: error: invalid operand for instruction 2461// CHECK-ERROR-NEXT: stp wsp, w9, [sp] 2462// CHECK-ERROR-NEXT: ^ 2463 2464 ldpsw x9, x2, [sp, #2] 2465 ldpsw x1, x2, [x10, #256] 2466 ldpsw x3, x4, [x11, #-260] 2467// CHECK-ERROR: error: expected integer multiple of 4 in range [-256, 252] 2468// CHECK-ERROR-NEXT: ldpsw x9, x2, [sp, #2] 2469// CHECK-ERROR-NEXT: ^ 2470// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2471// CHECK-ERROR-NEXT: ldpsw x1, x2, [x10, #256] 2472// CHECK-ERROR-NEXT: ^ 2473// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2474// CHECK-ERROR-NEXT: ldpsw x3, x4, [x11, #-260] 2475// CHECK-ERROR-NEXT: ^ 2476 2477 ldp x2, x5, [sp, #4] 2478 ldp x5, x6, [x9, #512] 2479 stp x7, x8, [x10, #-520] 2480// CHECK-ERROR: error: expected integer multiple of 8 in range [-512, 508] 2481// CHECK-ERROR-NEXT: ldp x2, x5, [sp, #4] 2482// CHECK-ERROR-NEXT: ^ 2483// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2484// CHECK-ERROR-NEXT: ldp x5, x6, [x9, #512] 2485// CHECK-ERROR-NEXT: ^ 2486// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2487// CHECK-ERROR-NEXT: stp x7, x8, [x10, #-520] 2488// CHECK-ERROR-NEXT: ^ 2489 2490 ldp sp, x3, [x10] 2491 stp x3, sp, [x9] 2492// CHECK-ERROR: error: invalid operand for instruction 2493// CHECK-ERROR-NEXT: ldp sp, x3, [x10] 2494// CHECK-ERROR-NEXT: ^ 2495// CHECK-ERROR-NEXT: error: invalid operand for instruction 2496// CHECK-ERROR-NEXT: stp x3, sp, [x9] 2497// CHECK-ERROR-NEXT: ^ 2498 2499 stp s3, s5, [sp, #-2] 2500 ldp s6, s26, [x4, #-260] 2501 stp s13, s19, [x5, #256] 2502// CHECK-ERROR: error: expected integer multiple of 4 in range [-256, 252] 2503// CHECK-ERROR-NEXT: stp s3, s5, [sp, #-2] 2504// CHECK-ERROR-NEXT: ^ 2505// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2506// CHECK-ERROR-NEXT: ldp s6, s26, [x4, #-260] 2507// CHECK-ERROR-NEXT: ^ 2508// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2509// CHECK-ERROR-NEXT: stp s13, s19, [x5, #256] 2510// CHECK-ERROR-NEXT: ^ 2511 2512 ldp d3, d4, [xzr] 2513 ldp d5, d6, [x0, #512] 2514 stp d7, d8, [x0, #-520] 2515// CHECK-ERROR: error: invalid operand for instruction 2516// CHECK-ERROR-NEXT: ldp d3, d4, [xzr] 2517// CHECK-ERROR-NEXT: ^ 2518// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2519// CHECK-ERROR-NEXT: ldp d5, d6, [x0, #512] 2520// CHECK-ERROR-NEXT: ^ 2521// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2522// CHECK-ERROR-NEXT: stp d7, d8, [x0, #-520] 2523// CHECK-ERROR-NEXT: ^ 2524 2525 ldp d3, q2, [sp] 2526 ldp q3, q5, [sp, #8] 2527 stp q20, q25, [x5, #1024] 2528 ldp q30, q15, [x23, #-1040] 2529// CHECK-ERROR: error: invalid operand for instruction 2530// CHECK-ERROR-NEXT: ldp d3, q2, [sp] 2531// CHECK-ERROR-NEXT: ^ 2532// CHECK-ERROR-NEXT: error: expected integer multiple of 16 in range [-1024, 1016] 2533// CHECK-ERROR-NEXT: ldp q3, q5, [sp, #8] 2534// CHECK-ERROR-NEXT: ^ 2535// CHECK-ERROR-NEXT: error: expected integer multiple of 16 in range [-1024, 1016] 2536// CHECK-ERROR-NEXT: stp q20, q25, [x5, #1024] 2537// CHECK-ERROR-NEXT: ^ 2538// CHECK-ERROR-NEXT: error: expected integer multiple of 16 in range [-1024, 1016] 2539// CHECK-ERROR-NEXT: ldp q30, q15, [x23, #-1040] 2540// CHECK-ERROR-NEXT: ^ 2541 2542//------------------------------------------------------------------------------ 2543// Load/store register pair (post-indexed) 2544//------------------------------------------------------------------------------ 2545 2546 ldp w3, w2, [x4], #1 2547 stp w1, w2, [x3], #253 2548 stp w9, w10, [x5], #256 2549 ldp w11, w12, [x9], #-260 2550 stp wsp, w9, [sp], #0 2551// CHECK-ERROR: error: expected integer multiple of 4 in range [-256, 252] 2552// CHECK-ERROR-NEXT: ldp w3, w2, [x4], #1 2553// CHECK-ERROR-NEXT: ^ 2554// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2555// CHECK-ERROR-NEXT: stp w1, w2, [x3], #253 2556// CHECK-ERROR-NEXT: ^ 2557// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2558// CHECK-ERROR-NEXT: stp w9, w10, [x5], #256 2559// CHECK-ERROR-NEXT: ^ 2560// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2561// CHECK-ERROR-NEXT: ldp w11, w12, [x9], #-260 2562// CHECK-ERROR-NEXT: ^ 2563// CHECK-ERROR-NEXT: error: invalid operand for instruction 2564// CHECK-ERROR-NEXT: stp wsp, w9, [sp], #0 2565// CHECK-ERROR-NEXT: ^ 2566 2567 ldpsw x9, x2, [sp], #2 2568 ldpsw x1, x2, [x10], #256 2569 ldpsw x3, x4, [x11], #-260 2570// CHECK-ERROR: error: expected integer multiple of 4 in range [-256, 252] 2571// CHECK-ERROR-NEXT: ldpsw x9, x2, [sp], #2 2572// CHECK-ERROR-NEXT: ^ 2573// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2574// CHECK-ERROR-NEXT: ldpsw x1, x2, [x10], #256 2575// CHECK-ERROR-NEXT: ^ 2576// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2577// CHECK-ERROR-NEXT: ldpsw x3, x4, [x11], #-260 2578// CHECK-ERROR-NEXT: ^ 2579 2580 ldp x2, x5, [sp], #4 2581 ldp x5, x6, [x9], #512 2582 stp x7, x8, [x10], #-520 2583// CHECK-ERROR: error: expected integer multiple of 8 in range [-512, 508] 2584// CHECK-ERROR-NEXT: ldp x2, x5, [sp], #4 2585// CHECK-ERROR-NEXT: ^ 2586// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2587// CHECK-ERROR-NEXT: ldp x5, x6, [x9], #512 2588// CHECK-ERROR-NEXT: ^ 2589// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2590// CHECK-ERROR-NEXT: stp x7, x8, [x10], #-520 2591// CHECK-ERROR-NEXT: ^ 2592 2593 ldp sp, x3, [x10], #0 2594 stp x3, sp, [x9], #0 2595// CHECK-ERROR: error: invalid operand for instruction 2596// CHECK-ERROR-NEXT: ldp sp, x3, [x10], #0 2597// CHECK-ERROR-NEXT: ^ 2598// CHECK-ERROR-NEXT: error: invalid operand for instruction 2599// CHECK-ERROR-NEXT: stp x3, sp, [x9], #0 2600// CHECK-ERROR-NEXT: ^ 2601 2602 stp s3, s5, [sp], #-2 2603 ldp s6, s26, [x4], #-260 2604 stp s13, s19, [x5], #256 2605// CHECK-ERROR: error: expected integer multiple of 4 in range [-256, 252] 2606// CHECK-ERROR-NEXT: stp s3, s5, [sp], #-2 2607// CHECK-ERROR-NEXT: ^ 2608// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2609// CHECK-ERROR-NEXT: ldp s6, s26, [x4], #-260 2610// CHECK-ERROR-NEXT: ^ 2611// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2612// CHECK-ERROR-NEXT: stp s13, s19, [x5], #256 2613// CHECK-ERROR-NEXT: ^ 2614 2615 ldp d3, d4, [xzr], #0 2616 ldp d5, d6, [x0], #512 2617 stp d7, d8, [x0], #-520 2618// CHECK-ERROR: error: invalid operand for instruction 2619// CHECK-ERROR-NEXT: ldp d3, d4, [xzr], #0 2620// CHECK-ERROR-NEXT: ^ 2621// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2622// CHECK-ERROR-NEXT: ldp d5, d6, [x0], #512 2623// CHECK-ERROR-NEXT: ^ 2624// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2625// CHECK-ERROR-NEXT: stp d7, d8, [x0], #-520 2626// CHECK-ERROR-NEXT: ^ 2627 2628 ldp d3, q2, [sp], #0 2629 ldp q3, q5, [sp], #8 2630 stp q20, q25, [x5], #1024 2631 ldp q30, q15, [x23], #-1040 2632// CHECK-ERROR: error: invalid operand for instruction 2633// CHECK-ERROR-NEXT: ldp d3, q2, [sp], #0 2634// CHECK-ERROR-NEXT: ^ 2635// CHECK-ERROR-NEXT: error: expected integer multiple of 16 in range [-1024, 1016] 2636// CHECK-ERROR-NEXT: ldp q3, q5, [sp], #8 2637// CHECK-ERROR-NEXT: ^ 2638// CHECK-ERROR-NEXT: error: expected integer multiple of 16 in range [-1024, 1016] 2639// CHECK-ERROR-NEXT: stp q20, q25, [x5], #1024 2640// CHECK-ERROR-NEXT: ^ 2641// CHECK-ERROR-NEXT: error: expected integer multiple of 16 in range [-1024, 1016] 2642// CHECK-ERROR-NEXT: ldp q30, q15, [x23], #-1040 2643// CHECK-ERROR-NEXT: ^ 2644 2645//------------------------------------------------------------------------------ 2646// Load/store register pair (pre-indexed) 2647//------------------------------------------------------------------------------ 2648 2649 ldp w3, w2, [x4, #1]! 2650 stp w1, w2, [x3, #253]! 2651 stp w9, w10, [x5, #256]! 2652 ldp w11, w12, [x9, #-260]! 2653 stp wsp, w9, [sp, #0]! 2654// CHECK-ERROR: error: expected integer multiple of 4 in range [-256, 252] 2655// CHECK-ERROR-NEXT: ldp w3, w2, [x4, #1]! 2656// CHECK-ERROR-NEXT: ^ 2657// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2658// CHECK-ERROR-NEXT: stp w1, w2, [x3, #253]! 2659// CHECK-ERROR-NEXT: ^ 2660// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2661// CHECK-ERROR-NEXT: stp w9, w10, [x5, #256]! 2662// CHECK-ERROR-NEXT: ^ 2663// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2664// CHECK-ERROR-NEXT: ldp w11, w12, [x9, #-260]! 2665// CHECK-ERROR-NEXT: ^ 2666// CHECK-ERROR-NEXT: error: invalid operand for instruction 2667// CHECK-ERROR-NEXT: stp wsp, w9, [sp, #0]! 2668// CHECK-ERROR-NEXT: ^ 2669 2670 ldpsw x9, x2, [sp, #2]! 2671 ldpsw x1, x2, [x10, #256]! 2672 ldpsw x3, x4, [x11, #-260]! 2673// CHECK-ERROR: error: expected integer multiple of 4 in range [-256, 252] 2674// CHECK-ERROR-NEXT: ldpsw x9, x2, [sp, #2]! 2675// CHECK-ERROR-NEXT: ^ 2676// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2677// CHECK-ERROR-NEXT: ldpsw x1, x2, [x10, #256]! 2678// CHECK-ERROR-NEXT: ^ 2679// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2680// CHECK-ERROR-NEXT: ldpsw x3, x4, [x11, #-260]! 2681// CHECK-ERROR-NEXT: ^ 2682 2683 ldp x2, x5, [sp, #4]! 2684 ldp x5, x6, [x9, #512]! 2685 stp x7, x8, [x10, #-520]! 2686// CHECK-ERROR: error: expected integer multiple of 8 in range [-512, 508] 2687// CHECK-ERROR-NEXT: ldp x2, x5, [sp, #4]! 2688// CHECK-ERROR-NEXT: ^ 2689// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2690// CHECK-ERROR-NEXT: ldp x5, x6, [x9, #512]! 2691// CHECK-ERROR-NEXT: ^ 2692// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2693// CHECK-ERROR-NEXT: stp x7, x8, [x10, #-520]! 2694// CHECK-ERROR-NEXT: ^ 2695 2696 ldp sp, x3, [x10, #0]! 2697 stp x3, sp, [x9, #0]! 2698// CHECK-ERROR: error: invalid operand for instruction 2699// CHECK-ERROR-NEXT: ldp sp, x3, [x10, #0]! 2700// CHECK-ERROR-NEXT: ^ 2701// CHECK-ERROR-NEXT: error: invalid operand for instruction 2702// CHECK-ERROR-NEXT: stp x3, sp, [x9, #0]! 2703// CHECK-ERROR-NEXT: ^ 2704 2705 stp s3, s5, [sp, #-2]! 2706 ldp s6, s26, [x4, #-260]! 2707 stp s13, s19, [x5, #256]! 2708// CHECK-ERROR: error: expected integer multiple of 4 in range [-256, 252] 2709// CHECK-ERROR-NEXT: stp s3, s5, [sp, #-2]! 2710// CHECK-ERROR-NEXT: ^ 2711// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2712// CHECK-ERROR-NEXT: ldp s6, s26, [x4, #-260]! 2713// CHECK-ERROR-NEXT: ^ 2714// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2715// CHECK-ERROR-NEXT: stp s13, s19, [x5, #256]! 2716// CHECK-ERROR-NEXT: ^ 2717 2718 ldp d3, d4, [xzr, #0]! 2719 ldp d5, d6, [x0, #512]! 2720 stp d7, d8, [x0, #-520]! 2721// CHECK-ERROR: error: invalid operand for instruction 2722// CHECK-ERROR-NEXT: ldp d3, d4, [xzr, #0]! 2723// CHECK-ERROR-NEXT: ^ 2724// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2725// CHECK-ERROR-NEXT: ldp d5, d6, [x0, #512]! 2726// CHECK-ERROR-NEXT: ^ 2727// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2728// CHECK-ERROR-NEXT: stp d7, d8, [x0, #-520]! 2729// CHECK-ERROR-NEXT: ^ 2730 2731 ldp d3, q2, [sp, #0]! 2732 ldp q3, q5, [sp, #8]! 2733 stp q20, q25, [x5, #1024]! 2734 ldp q30, q15, [x23, #-1040]! 2735// CHECK-ERROR: error: invalid operand for instruction 2736// CHECK-ERROR-NEXT: ldp d3, q2, [sp, #0]! 2737// CHECK-ERROR-NEXT: ^ 2738// CHECK-ERROR-NEXT: error: expected integer multiple of 16 in range [-1024, 1016] 2739// CHECK-ERROR-NEXT: ldp q3, q5, [sp, #8]! 2740// CHECK-ERROR-NEXT: ^ 2741// CHECK-ERROR-NEXT: error: expected integer multiple of 16 in range [-1024, 1016] 2742// CHECK-ERROR-NEXT: stp q20, q25, [x5, #1024]! 2743// CHECK-ERROR-NEXT: ^ 2744// CHECK-ERROR-NEXT: error: expected integer multiple of 16 in range [-1024, 1016] 2745// CHECK-ERROR-NEXT: ldp q30, q15, [x23, #-1040]! 2746// CHECK-ERROR-NEXT: ^ 2747 2748//------------------------------------------------------------------------------ 2749// Load/store register pair (offset) 2750//------------------------------------------------------------------------------ 2751 ldnp w3, w2, [x4, #1] 2752 stnp w1, w2, [x3, #253] 2753 stnp w9, w10, [x5, #256] 2754 ldnp w11, w12, [x9, #-260] 2755 stnp wsp, w9, [sp] 2756// CHECK-ERROR: error: expected integer multiple of 4 in range [-256, 252] 2757// CHECK-ERROR-NEXT: ldnp w3, w2, [x4, #1] 2758// CHECK-ERROR-NEXT: ^ 2759// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2760// CHECK-ERROR-NEXT: stnp w1, w2, [x3, #253] 2761// CHECK-ERROR-NEXT: ^ 2762// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2763// CHECK-ERROR-NEXT: stnp w9, w10, [x5, #256] 2764// CHECK-ERROR-NEXT: ^ 2765// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2766// CHECK-ERROR-NEXT: ldnp w11, w12, [x9, #-260] 2767// CHECK-ERROR-NEXT: ^ 2768// CHECK-ERROR-NEXT: error: invalid operand for instruction 2769// CHECK-ERROR-NEXT: stnp wsp, w9, [sp] 2770// CHECK-ERROR-NEXT: ^ 2771 2772 ldnp x2, x5, [sp, #4] 2773 ldnp x5, x6, [x9, #512] 2774 stnp x7, x8, [x10, #-520] 2775// CHECK-ERROR: error: expected integer multiple of 8 in range [-512, 508] 2776// CHECK-ERROR-NEXT: ldnp x2, x5, [sp, #4] 2777// CHECK-ERROR-NEXT: ^ 2778// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2779// CHECK-ERROR-NEXT: ldnp x5, x6, [x9, #512] 2780// CHECK-ERROR-NEXT: ^ 2781// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2782// CHECK-ERROR-NEXT: stnp x7, x8, [x10, #-520] 2783// CHECK-ERROR-NEXT: ^ 2784 2785 ldnp sp, x3, [x10] 2786 stnp x3, sp, [x9] 2787// CHECK-ERROR: error: invalid operand for instruction 2788// CHECK-ERROR-NEXT: ldnp sp, x3, [x10] 2789// CHECK-ERROR-NEXT: ^ 2790// CHECK-ERROR-NEXT: error: invalid operand for instruction 2791// CHECK-ERROR-NEXT: stnp x3, sp, [x9] 2792// CHECK-ERROR-NEXT: ^ 2793 2794 stnp s3, s5, [sp, #-2] 2795 ldnp s6, s26, [x4, #-260] 2796 stnp s13, s19, [x5, #256] 2797// CHECK-ERROR: error: expected integer multiple of 4 in range [-256, 252] 2798// CHECK-ERROR-NEXT: stnp s3, s5, [sp, #-2] 2799// CHECK-ERROR-NEXT: ^ 2800// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2801// CHECK-ERROR-NEXT: ldnp s6, s26, [x4, #-260] 2802// CHECK-ERROR-NEXT: ^ 2803// CHECK-ERROR-NEXT: error: expected integer multiple of 4 in range [-256, 252] 2804// CHECK-ERROR-NEXT: stnp s13, s19, [x5, #256] 2805// CHECK-ERROR-NEXT: ^ 2806 2807 ldnp d3, d4, [xzr] 2808 ldnp d5, d6, [x0, #512] 2809 stnp d7, d8, [x0, #-520] 2810// CHECK-ERROR: error: invalid operand for instruction 2811// CHECK-ERROR-NEXT: ldnp d3, d4, [xzr] 2812// CHECK-ERROR-NEXT: ^ 2813// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2814// CHECK-ERROR-NEXT: ldnp d5, d6, [x0, #512] 2815// CHECK-ERROR-NEXT: ^ 2816// CHECK-ERROR-NEXT: error: expected integer multiple of 8 in range [-512, 508] 2817// CHECK-ERROR-NEXT: stnp d7, d8, [x0, #-520] 2818// CHECK-ERROR-NEXT: ^ 2819 2820 ldnp d3, q2, [sp] 2821 ldnp q3, q5, [sp, #8] 2822 stnp q20, q25, [x5, #1024] 2823 ldnp q30, q15, [x23, #-1040] 2824// CHECK-ERROR: error: invalid operand for instruction 2825// CHECK-ERROR-NEXT: ldnp d3, q2, [sp] 2826// CHECK-ERROR-NEXT: ^ 2827// CHECK-ERROR-NEXT: error: expected integer multiple of 16 in range [-1024, 1016] 2828// CHECK-ERROR-NEXT: ldnp q3, q5, [sp, #8] 2829// CHECK-ERROR-NEXT: ^ 2830// CHECK-ERROR-NEXT: error: expected integer multiple of 16 in range [-1024, 1016] 2831// CHECK-ERROR-NEXT: stnp q20, q25, [x5, #1024] 2832// CHECK-ERROR-NEXT: ^ 2833// CHECK-ERROR-NEXT: error: expected integer multiple of 16 in range [-1024, 1016] 2834// CHECK-ERROR-NEXT: ldnp q30, q15, [x23, #-1040] 2835// CHECK-ERROR-NEXT: ^ 2836 2837//------------------------------------------------------------------------------ 2838// Logical (shifted register) 2839//------------------------------------------------------------------------------ 2840 orr w0, w1, #0xffffffff 2841 and x3, x5, #0xffffffffffffffff 2842// CHECK-ERROR: error: expected compatible register or logical immediate 2843// CHECK-ERROR-NEXT: orr w0, w1, #0xffffffff 2844// CHECK-ERROR-NEXT: ^ 2845// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate 2846// CHECK-ERROR-NEXT: and x3, x5, #0xffffffffffffffff 2847// CHECK-ERROR-NEXT: ^ 2848 2849 ands w3, w9, #0x0 2850 eor x2, x0, #0x0 2851// CHECK-ERROR: error: expected compatible register or logical immediate 2852// CHECK-ERROR-NEXT: ands w3, w9, #0x0 2853// CHECK-ERROR-NEXT: ^ 2854// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate 2855// CHECK-ERROR-NEXT: eor x2, x0, #0x0 2856// CHECK-ERROR-NEXT: ^ 2857 2858 eor w3, w5, #0x83 2859 eor x9, x20, #0x1234 2860// CHECK-ERROR: error: expected compatible register or logical immediate 2861// CHECK-ERROR-NEXT: eor w3, w5, #0x83 2862// CHECK-ERROR-NEXT: ^ 2863// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate 2864// CHECK-ERROR-NEXT: eor x9, x20, #0x1234 2865// CHECK-ERROR-NEXT: ^ 2866 2867 and wzr, w4, 0xffff0000 2868 eor xzr, x9, #0xffff0000ffff0000 2869// CHECK-ERROR: error: invalid operand for instruction 2870// CHECK-ERROR-NEXT: and wzr, w4, 0xffff0000 2871// CHECK-ERROR-NEXT: ^ 2872// CHECK-ERROR-NEXT: error: invalid operand for instruction 2873// CHECK-ERROR-NEXT: eor xzr, x9, #0xffff0000ffff0000 2874// CHECK-ERROR-NEXT: ^ 2875 2876 orr w3, wsp, #0xf0f0f0f0 2877 ands x3, sp, #0xaaaaaaaaaaaaaaaa 2878// CHECK-ERROR: error: invalid operand for instruction 2879// CHECK-ERROR-NEXT: orr w3, wsp, #0xf0f0f0f0 2880// CHECK-ERROR-NEXT: ^ 2881// CHECK-ERROR-NEXT: error: invalid operand for instruction 2882// CHECK-ERROR-NEXT: ands x3, sp, #0xaaaaaaaaaaaaaaaa 2883// CHECK-ERROR-NEXT: ^ 2884 2885 tst sp, #0xe0e0e0e0e0e0e0e0 2886// CHECK-ERROR: error: invalid operand for instruction 2887// CHECK-ERROR-NEXT: tst sp, #0xe0e0e0e0e0e0e0e0 2888// CHECK-ERROR-NEXT: ^ 2889 2890 // movi has been removed from the specification. Make sure it's really gone. 2891 movi wzr, #0x44444444 2892 movi w3, #0xffff 2893 movi x9, #0x0000ffff00000000 2894// CHECK-ERROR: error: invalid instruction 2895// CHECK-ERROR-NEXT: movi wzr, #0x44444444 2896// CHECK-ERROR-NEXT: ^ 2897// CHECK-ERROR: error: invalid instruction 2898// CHECK-ERROR-NEXT: movi w3, #0xffff 2899// CHECK-ERROR-NEXT: ^ 2900// CHECK-ERROR: error: invalid instruction 2901// CHECK-ERROR-NEXT: movi x9, #0x0000ffff00000000 2902// CHECK-ERROR-NEXT: ^ 2903 2904//------------------------------------------------------------------------------ 2905// Logical (shifted register) 2906//------------------------------------------------------------------------------ 2907 2908 //// Out of range shifts 2909 and w2, w24, w6, lsl #-1 2910 and w4, w6, w12, lsl #32 2911 and x4, x6, x12, lsl #64 2912 and x2, x5, x11, asr 2913// CHECK-ERROR: error: expected integer shift amount 2914// CHECK-ERROR-NEXT: and w2, w24, w6, lsl #-1 2915// CHECK-ERROR-NEXT: ^ 2916// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31] 2917// CHECK-ERROR-NEXT: and w4, w6, w12, lsl #32 2918// CHECK-ERROR-NEXT: ^ 2919// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63] 2920// CHECK-ERROR-NEXT: and x4, x6, x12, lsl #64 2921// CHECK-ERROR-NEXT: ^ 2922// CHECK-ERROR-NEXT: error: expected #imm after shift specifier 2923// CHECK-ERROR-NEXT: and x2, x5, x11, asr 2924// CHECK-ERROR-NEXT: ^ 2925 2926 //// sp not allowed 2927 orn wsp, w3, w5 2928 bics x20, sp, x9, lsr #0 2929 orn x2, x6, sp, lsl #3 2930// CHECK-ERROR: error: invalid operand for instruction 2931// CHECK-ERROR-NEXT: orn wsp, w3, w5 2932// CHECK-ERROR-NEXT: ^ 2933// CHECK-ERROR-NEXT: error: invalid operand for instruction 2934// CHECK-ERROR-NEXT: bics x20, sp, x9, lsr #0 2935// CHECK-ERROR-NEXT: ^ 2936// CHECK-ERROR-NEXT: error: invalid operand for instruction 2937// CHECK-ERROR-NEXT: orn x2, x6, sp, lsl #3 2938// CHECK-ERROR-NEXT: ^ 2939 2940 //// Mismatched registers 2941 and x3, w2, w1 2942 ands w1, x12, w2 2943 and x4, x5, w6, lsl #12 2944 orr w2, w5, x7, asr #0 2945// CHECK-ERROR: error: invalid operand for instruction 2946// CHECK-ERROR-NEXT: and x3, w2, w1 2947// CHECK-ERROR-NEXT: ^ 2948// CHECK-ERROR-NEXT: error: invalid operand for instruction 2949// CHECK-ERROR-NEXT: ands w1, x12, w2 2950// CHECK-ERROR-NEXT: ^ 2951// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate 2952// CHECK-ERROR-NEXT: and x4, x5, w6, lsl #12 2953// CHECK-ERROR-NEXT: ^ 2954// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate 2955// CHECK-ERROR-NEXT: orr w2, w5, x7, asr #0 2956// CHECK-ERROR-NEXT: ^ 2957 2958 //// Shifts should not be allowed on mov 2959 mov w3, w7, lsl #13 2960// CHECK-ERROR: error: invalid operand for instruction 2961// CHECK-ERROR-NEXT: mov w3, w7, lsl #13 2962// CHECK-ERROR-NEXT: ^ 2963 2964//------------------------------------------------------------------------------ 2965// Move wide (immediate) 2966//------------------------------------------------------------------------------ 2967 2968 movz w3, #65536, lsl #0 2969 movz w4, #65536 2970 movn w1, #2, lsl #1 2971 movk w3, #0, lsl #-1 2972 movn w2, #-1, lsl #0 2973 movz x3, #-1 2974 movk w3, #1, lsl #32 2975 movn x2, #12, lsl #64 2976// CHECK-ERROR: error: expected relocated symbol or integer in range [0, 65535] 2977// CHECK-ERROR-NEXT: movz w3, #65536, lsl #0 2978// CHECK-ERROR-NEXT: ^ 2979// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 2980// CHECK-ERROR-NEXT: movz w4, #65536 2981// CHECK-ERROR-NEXT: ^ 2982// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 2983// CHECK-ERROR-NEXT: movn w1, #2, lsl #1 2984// CHECK-ERROR-NEXT: ^ 2985// CHECK-ERROR-NEXT: error: only 'lsl #+N' valid after immediate 2986// CHECK-ERROR-NEXT: movk w3, #0, lsl #-1 2987// CHECK-ERROR-NEXT: ^ 2988// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 2989// CHECK-ERROR-NEXT: movn w2, #-1, lsl #0 2990// CHECK-ERROR-NEXT: ^ 2991// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 2992// CHECK-ERROR-NEXT: movz x3, #-1 2993// CHECK-ERROR-NEXT: ^ 2994// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 2995// CHECK-ERROR-NEXT: movk w3, #1, lsl #32 2996// CHECK-ERROR-NEXT: ^ 2997// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 2998// CHECK-ERROR-NEXT: movn x2, #12, lsl #64 2999// CHECK-ERROR-NEXT: ^ 3000 3001 movz x12, #:abs_g0:sym, lsl #16 3002 movz x12, #:abs_g0:sym, lsl #0 3003 movn x2, #:abs_g0:sym 3004 movk w3, #:abs_g0:sym 3005 movz x3, #:abs_g0_nc:sym 3006 movn x4, #:abs_g0_nc:sym 3007// CHECK-ERROR: error: expected relocated symbol or integer in range [0, 65535] 3008// CHECK-ERROR-NEXT: movz x12, #:abs_g0:sym, lsl #16 3009// CHECK-ERROR-NEXT: ^ 3010// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3011// CHECK-ERROR-NEXT: movz x12, #:abs_g0:sym, lsl #0 3012// CHECK-ERROR-NEXT: ^ 3013// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3014// CHECK-ERROR-NEXT: movn x2, #:abs_g0:sym 3015// CHECK-ERROR-NEXT: ^ 3016// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3017// CHECK-ERROR-NEXT: movk w3, #:abs_g0:sym 3018// CHECK-ERROR-NEXT: ^ 3019// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3020// CHECK-ERROR-NEXT: movz x3, #:abs_g0_nc:sym 3021// CHECK-ERROR-NEXT: ^ 3022// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3023// CHECK-ERROR-NEXT: movn x4, #:abs_g0_nc:sym 3024// CHECK-ERROR-NEXT: ^ 3025 3026 movn x2, #:abs_g1:sym 3027 movk w3, #:abs_g1:sym 3028 movz x3, #:abs_g1_nc:sym 3029 movn x4, #:abs_g1_nc:sym 3030// CHECK-ERROR: error: expected relocated symbol or integer in range [0, 65535] 3031// CHECK-ERROR-NEXT: movn x2, #:abs_g1:sym 3032// CHECK-ERROR-NEXT: ^ 3033// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3034// CHECK-ERROR-NEXT: movk w3, #:abs_g1:sym 3035// CHECK-ERROR-NEXT: ^ 3036// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3037// CHECK-ERROR-NEXT: movz x3, #:abs_g1_nc:sym 3038// CHECK-ERROR-NEXT: ^ 3039// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3040// CHECK-ERROR-NEXT: movn x4, #:abs_g1_nc:sym 3041// CHECK-ERROR-NEXT: ^ 3042 3043 movz w12, #:abs_g2:sym 3044 movn x12, #:abs_g2:sym 3045 movk x13, #:abs_g2:sym 3046 movk w3, #:abs_g2_nc:sym 3047 movz x13, #:abs_g2_nc:sym 3048 movn x24, #:abs_g2_nc:sym 3049// CHECK-ERROR: error: expected relocated symbol or integer in range [0, 65535] 3050// CHECK-ERROR-NEXT: movz w12, #:abs_g2:sym 3051// CHECK-ERROR-NEXT: ^ 3052// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3053// CHECK-ERROR-NEXT: movn x12, #:abs_g2:sym 3054// CHECK-ERROR-NEXT: ^ 3055// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3056// CHECK-ERROR-NEXT: movk x13, #:abs_g2:sym 3057// CHECK-ERROR-NEXT: ^ 3058// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3059// CHECK-ERROR-NEXT: movk w3, #:abs_g2_nc:sym 3060// CHECK-ERROR-NEXT: ^ 3061// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3062// CHECK-ERROR-NEXT: movz x13, #:abs_g2_nc:sym 3063// CHECK-ERROR-NEXT: ^ 3064// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3065// CHECK-ERROR-NEXT: movn x24, #:abs_g2_nc:sym 3066// CHECK-ERROR-NEXT: ^ 3067 3068 movn x19, #:abs_g3:sym 3069 movz w20, #:abs_g3:sym 3070 movk w21, #:abs_g3:sym 3071// CHECK-ERROR: error: expected relocated symbol or integer in range [0, 65535] 3072// CHECK-ERROR-NEXT: movn x19, #:abs_g3:sym 3073// CHECK-ERROR-NEXT: ^ 3074// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3075// CHECK-ERROR-NEXT: movz w20, #:abs_g3:sym 3076// CHECK-ERROR-NEXT: ^ 3077// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3078// CHECK-ERROR-NEXT: movk w21, #:abs_g3:sym 3079// CHECK-ERROR-NEXT: ^ 3080 3081 movk x19, #:abs_g0_s:sym 3082 movk w23, #:abs_g0_s:sym 3083// CHECK-ERROR: error: expected relocated symbol or integer in range [0, 65535] 3084// CHECK-ERROR-NEXT: movk x19, #:abs_g0_s:sym 3085// CHECK-ERROR-NEXT: ^ 3086// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3087// CHECK-ERROR-NEXT: movk w23, #:abs_g0_s:sym 3088// CHECK-ERROR-NEXT: ^ 3089 3090 movk x19, #:abs_g1_s:sym 3091 movk w23, #:abs_g1_s:sym 3092// CHECK-ERROR: error: expected relocated symbol or integer in range [0, 65535] 3093// CHECK-ERROR-NEXT: movk x19, #:abs_g1_s:sym 3094// CHECK-ERROR-NEXT: ^ 3095// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3096// CHECK-ERROR-NEXT: movk w23, #:abs_g1_s:sym 3097// CHECK-ERROR-NEXT: ^ 3098 3099 movz w2, #:abs_g2_s:sym 3100 movn w29, #:abs_g2_s:sym 3101 movk x19, #:abs_g2_s:sym 3102 movk w23, #:abs_g2_s:sym 3103// CHECK-ERROR: error: expected relocated symbol or integer in range [0, 65535] 3104// CHECK-ERROR-NEXT: movz w2, #:abs_g2_s:sym 3105// CHECK-ERROR-NEXT: ^ 3106// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3107// CHECK-ERROR-NEXT: movn w29, #:abs_g2_s:sym 3108// CHECK-ERROR-NEXT: ^ 3109// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3110// CHECK-ERROR-NEXT: movk x19, #:abs_g2_s:sym 3111// CHECK-ERROR-NEXT: ^ 3112// CHECK-ERROR-NEXT: error: expected relocated symbol or integer in range [0, 65535] 3113// CHECK-ERROR-NEXT: movk w23, #:abs_g2_s:sym 3114// CHECK-ERROR-NEXT: ^ 3115 3116//------------------------------------------------------------------------------ 3117// PC-relative addressing 3118//------------------------------------------------------------------------------ 3119 3120 adr sp, loc // expects xzr 3121 adrp x3, #20 // Immediate unaligned 3122 adrp w2, loc // 64-bit register needed 3123// CHECK-ERROR: error: invalid operand for instruction 3124// CHECK-ERROR-NEXT: adr sp, loc 3125// CHECK-ERROR-NEXT: ^ 3126// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 3127// CHECK-ERROR-NEXT: adrp x3, #20 3128// CHECK-ERROR-NEXT: ^ 3129// CHECK-ERROR-NEXT: error: invalid operand for instruction 3130// CHECK-ERROR-NEXT: adrp w2, loc 3131// CHECK-ERROR-NEXT: ^ 3132 3133 adr x9, #1048576 3134 adr x2, #-1048577 3135 adrp x9, #4294967296 3136 adrp x20, #-4294971392 3137// CHECK-ERROR: error: expected label or encodable integer pc offset 3138// CHECK-ERROR-NEXT: adr x9, #1048576 3139// CHECK-ERROR-NEXT: ^ 3140// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 3141// CHECK-ERROR-NEXT: adr x2, #-1048577 3142// CHECK-ERROR-NEXT: ^ 3143// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 3144// CHECK-ERROR-NEXT: adrp x9, #4294967296 3145// CHECK-ERROR-NEXT: ^ 3146// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 3147// CHECK-ERROR-NEXT: adrp x20, #-4294971392 3148// CHECK-ERROR-NEXT: ^ 3149 3150//------------------------------------------------------------------------------ 3151// System 3152//------------------------------------------------------------------------------ 3153 3154 hint #-1 3155 hint #128 3156// CHECK-ERROR: error: expected integer in range [0, 127] 3157// CHECK-ERROR-NEXT: hint #-1 3158// CHECK-ERROR-NEXT: ^ 3159// CHECK-ERROR-NEXT: error: expected integer in range [0, 127] 3160// CHECK-ERROR-NEXT: hint #128 3161// CHECK-ERROR-NEXT: ^ 3162 3163 clrex #-1 3164 clrex #16 3165// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 3166// CHECK-ERROR-NEXT: clrex #-1 3167// CHECK-ERROR-NEXT: ^ 3168// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 3169// CHECK-ERROR-NEXT: clrex #16 3170// CHECK-ERROR-NEXT: ^ 3171 3172 dsb #-1 3173 dsb #16 3174 dmb #-1 3175 dmb #16 3176// CHECK-ERROR-NEXT: error: Invalid immediate for instruction 3177// CHECK-ERROR-NEXT: dsb #-1 3178// CHECK-ERROR-NEXT: ^ 3179// CHECK-ERROR-NEXT: error: Invalid immediate for instruction 3180// CHECK-ERROR-NEXT: dsb #16 3181// CHECK-ERROR-NEXT: ^ 3182// CHECK-ERROR-NEXT: error: Invalid immediate for instruction 3183// CHECK-ERROR-NEXT: dmb #-1 3184// CHECK-ERROR-NEXT: ^ 3185// CHECK-ERROR-NEXT: error: Invalid immediate for instruction 3186// CHECK-ERROR-NEXT: dmb #16 3187// CHECK-ERROR-NEXT: ^ 3188 3189 isb #-1 3190 isb #16 3191// CHECK-ERROR-NEXT: error: Invalid immediate for instruction 3192// CHECK-ERROR-NEXT: isb #-1 3193// CHECK-ERROR-NEXT: ^ 3194// CHECK-ERROR-NEXT: error: Invalid immediate for instruction 3195// CHECK-ERROR-NEXT: isb #16 3196// CHECK-ERROR-NEXT: ^ 3197 3198 msr daifset, x4 3199 msr spsel, #-1 3200 msr spsel #-1 3201 msr daifclr, #16 3202// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 3203// CHECK-ERROR-NEXT: msr daifset, x4 3204// CHECK-ERROR-NEXT: ^ 3205// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 3206// CHECK-ERROR-NEXT: msr spsel, #-1 3207// CHECK-ERROR-NEXT: ^ 3208// CHECK-ERROR-NEXT: error: expected comma before next operand 3209// CHECK-ERROR-NEXT: msr spsel #-1 3210// CHECK-ERROR-NEXT: ^ 3211// CHECK-ERROR-NEXT: error: expected integer in range [0, 15] 3212// CHECK-ERROR-NEXT: msr daifclr, #16 3213// CHECK-ERROR-NEXT: ^ 3214 3215 sys #8, c1, c2, #7, x9 3216 sys #3, c16, c2, #3, x10 3217 sys #2, c11, c16, #5 3218 sys #4, c9, c8, #8, xzr 3219 sysl x11, #8, c1, c2, #7 3220 sysl x13, #3, c16, c2, #3 3221 sysl x9, #2, c11, c16, #5 3222 sysl x4, #4, c9, c8, #8 3223// CHECK-ERROR-NEXT: error: expected integer in range [0, 7] 3224// CHECK-ERROR-NEXT: sys #8, c1, c2, #7, x9 3225// CHECK-ERROR-NEXT: ^ 3226// CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 15 3227// CHECK-ERROR-NEXT: sys #3, c16, c2, #3, x10 3228// CHECK-ERROR-NEXT: ^ 3229// CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 15 3230// CHECK-ERROR-NEXT: sys #2, c11, c16, #5 3231// CHECK-ERROR-NEXT: ^ 3232// CHECK-ERROR-NEXT: error: expected integer in range [0, 7] 3233// CHECK-ERROR-NEXT: sys #4, c9, c8, #8, xzr 3234// CHECK-ERROR-NEXT: ^ 3235// CHECK-ERROR-NEXT: error: expected integer in range [0, 7] 3236// CHECK-ERROR-NEXT: sysl x11, #8, c1, c2, #7 3237// CHECK-ERROR-NEXT: ^ 3238// CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 15 3239// CHECK-ERROR-NEXT: sysl x13, #3, c16, c2, #3 3240// CHECK-ERROR-NEXT: ^ 3241// CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 15 3242// CHECK-ERROR-NEXT: sysl x9, #2, c11, c16, #5 3243// CHECK-ERROR-NEXT: ^ 3244// CHECK-ERROR-NEXT: error: expected integer in range [0, 7] 3245// CHECK-ERROR-NEXT: sysl x4, #4, c9, c8, #8 3246// CHECK-ERROR-NEXT: ^ 3247 3248 ic ialluis, x2 3249 ic allu, x7 3250 ic ivau 3251// CHECK-ERROR-NEXT: error: specified IC op does not use a register 3252// CHECK-ERROR-NEXT: ic ialluis, x2 3253// CHECK-ERROR-NEXT: ^ 3254// CHECK-ERROR-NEXT: error: operand specifier not recognised 3255// CHECK-ERROR-NEXT: ic allu, x7 3256// CHECK-ERROR-NEXT: ^ 3257// CHECK-ERROR-NEXT: error: specified IC op requires a register 3258// CHECK-ERROR-NEXT: ic ivau 3259// CHECK-ERROR-NEXT: ^ 3260 3261 tlbi IPAS2E1IS 3262 tlbi IPAS2LE1IS 3263 tlbi VMALLE1IS, x12 3264 tlbi ALLE2IS, x11 3265 tlbi ALLE3IS, x20 3266 tlbi VAE1IS 3267 tlbi VAE2IS 3268 tlbi VAE3IS 3269 tlbi ASIDE1IS 3270 tlbi VAAE1IS 3271 tlbi ALLE1IS, x0 3272 tlbi VALE1IS 3273 tlbi VALE2IS 3274 tlbi VALE3IS 3275 tlbi VMALLS12E1IS, xzr 3276 tlbi VAALE1IS 3277 tlbi IPAS2E1 3278 tlbi IPAS2LE1 3279 tlbi VMALLE1, x9 3280 tlbi ALLE2, x10 3281 tlbi ALLE3, x11 3282 tlbi VAE1 3283 tlbi VAE2 3284 tlbi VAE3 3285 tlbi ASIDE1 3286 tlbi VAAE1 3287 tlbi ALLE1, x25 3288 tlbi VALE1 3289 tlbi VALE2 3290 tlbi VALE3 3291 tlbi VMALLS12E1, x15 3292 tlbi VAALE1 3293// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3294// CHECK-ERROR-NEXT: tlbi IPAS2E1IS 3295// CHECK-ERROR-NEXT: ^ 3296// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3297// CHECK-ERROR-NEXT: tlbi IPAS2LE1IS 3298// CHECK-ERROR-NEXT: ^ 3299// CHECK-ERROR-NEXT: error: specified TLBI op does not use a register 3300// CHECK-ERROR-NEXT: tlbi VMALLE1IS, x12 3301// CHECK-ERROR-NEXT: ^ 3302// CHECK-ERROR-NEXT: error: specified TLBI op does not use a register 3303// CHECK-ERROR-NEXT: tlbi ALLE2IS, x11 3304// CHECK-ERROR-NEXT: ^ 3305// CHECK-ERROR-NEXT: error: specified TLBI op does not use a register 3306// CHECK-ERROR-NEXT: tlbi ALLE3IS, x20 3307// CHECK-ERROR-NEXT: ^ 3308// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3309// CHECK-ERROR-NEXT: tlbi VAE1IS 3310// CHECK-ERROR-NEXT: ^ 3311// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3312// CHECK-ERROR-NEXT: tlbi VAE2IS 3313// CHECK-ERROR-NEXT: ^ 3314// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3315// CHECK-ERROR-NEXT: tlbi VAE3IS 3316// CHECK-ERROR-NEXT: ^ 3317// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3318// CHECK-ERROR-NEXT: tlbi ASIDE1IS 3319// CHECK-ERROR-NEXT: ^ 3320// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3321// CHECK-ERROR-NEXT: tlbi VAAE1IS 3322// CHECK-ERROR-NEXT: ^ 3323// CHECK-ERROR-NEXT: error: specified TLBI op does not use a register 3324// CHECK-ERROR-NEXT: tlbi ALLE1IS, x0 3325// CHECK-ERROR-NEXT: ^ 3326// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3327// CHECK-ERROR-NEXT: tlbi VALE1IS 3328// CHECK-ERROR-NEXT: ^ 3329// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3330// CHECK-ERROR-NEXT: tlbi VALE2IS 3331// CHECK-ERROR-NEXT: ^ 3332// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3333// CHECK-ERROR-NEXT: tlbi VALE3IS 3334// CHECK-ERROR-NEXT: ^ 3335// CHECK-ERROR-NEXT: error: specified TLBI op does not use a register 3336// CHECK-ERROR-NEXT: tlbi VMALLS12E1IS, xzr 3337// CHECK-ERROR-NEXT: ^ 3338// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3339// CHECK-ERROR-NEXT: tlbi VAALE1IS 3340// CHECK-ERROR-NEXT: ^ 3341// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3342// CHECK-ERROR-NEXT: tlbi IPAS2E1 3343// CHECK-ERROR-NEXT: ^ 3344// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3345// CHECK-ERROR-NEXT: tlbi IPAS2LE1 3346// CHECK-ERROR-NEXT: ^ 3347// CHECK-ERROR-NEXT: error: specified TLBI op does not use a register 3348// CHECK-ERROR-NEXT: tlbi VMALLE1, x9 3349// CHECK-ERROR-NEXT: ^ 3350// CHECK-ERROR-NEXT: error: specified TLBI op does not use a register 3351// CHECK-ERROR-NEXT: tlbi ALLE2, x10 3352// CHECK-ERROR-NEXT: ^ 3353// CHECK-ERROR-NEXT: error: specified TLBI op does not use a register 3354// CHECK-ERROR-NEXT: tlbi ALLE3, x11 3355// CHECK-ERROR-NEXT: ^ 3356// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3357// CHECK-ERROR-NEXT: tlbi VAE1 3358// CHECK-ERROR-NEXT: ^ 3359// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3360// CHECK-ERROR-NEXT: tlbi VAE2 3361// CHECK-ERROR-NEXT: ^ 3362// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3363// CHECK-ERROR-NEXT: tlbi VAE3 3364// CHECK-ERROR-NEXT: ^ 3365// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3366// CHECK-ERROR-NEXT: tlbi ASIDE1 3367// CHECK-ERROR-NEXT: ^ 3368// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3369// CHECK-ERROR-NEXT: tlbi VAAE1 3370// CHECK-ERROR-NEXT: ^ 3371// CHECK-ERROR-NEXT: error: specified TLBI op does not use a register 3372// CHECK-ERROR-NEXT: tlbi ALLE1, x25 3373// CHECK-ERROR-NEXT: ^ 3374// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3375// CHECK-ERROR-NEXT: tlbi VALE1 3376// CHECK-ERROR-NEXT: ^ 3377// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3378// CHECK-ERROR-NEXT: tlbi VALE2 3379// CHECK-ERROR-NEXT: ^ 3380// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3381// CHECK-ERROR-NEXT: tlbi VALE3 3382// CHECK-ERROR-NEXT: ^ 3383// CHECK-ERROR-NEXT: error: specified TLBI op does not use a register 3384// CHECK-ERROR-NEXT: tlbi VMALLS12E1, x15 3385// CHECK-ERROR-NEXT: ^ 3386// CHECK-ERROR-NEXT: error: specified TLBI op requires a register 3387// CHECK-ERROR-NEXT: tlbi VAALE1 3388// CHECK-ERROR-NEXT: ^ 3389 3390// For the MSR/MRS instructions, first make sure read-only and 3391// write-only registers actually are. 3392 msr MDCCSR_EL0, x12 3393 msr DBGDTRRX_EL0, x12 3394 msr MDRAR_EL1, x12 3395 msr OSLSR_EL1, x12 3396 msr DBGAUTHSTATUS_EL1, x12 3397 msr MIDR_EL1, x12 3398 msr CCSIDR_EL1, x12 3399 msr CLIDR_EL1, x12 3400 msr CTR_EL0, x12 3401 msr MPIDR_EL1, x12 3402 msr REVIDR_EL1, x12 3403 msr AIDR_EL1, x12 3404 msr DCZID_EL0, x12 3405 msr ID_PFR0_EL1, x12 3406 msr ID_PFR1_EL1, x12 3407 msr ID_DFR0_EL1, x12 3408 msr ID_AFR0_EL1, x12 3409 msr ID_MMFR0_EL1, x12 3410 msr ID_MMFR1_EL1, x12 3411 msr ID_MMFR2_EL1, x12 3412 msr ID_MMFR3_EL1, x12 3413 msr ID_ISAR0_EL1, x12 3414 msr ID_ISAR1_EL1, x12 3415 msr ID_ISAR2_EL1, x12 3416 msr ID_ISAR3_EL1, x12 3417 msr ID_ISAR4_EL1, x12 3418 msr ID_ISAR5_EL1, x12 3419 msr MVFR0_EL1, x12 3420 msr MVFR1_EL1, x12 3421 msr MVFR2_EL1, x12 3422 msr ID_AA64PFR0_EL1, x12 3423 msr ID_AA64PFR1_EL1, x12 3424 msr ID_AA64DFR0_EL1, x12 3425 msr ID_AA64DFR1_EL1, x12 3426 msr ID_AA64AFR0_EL1, x12 3427 msr ID_AA64AFR1_EL1, x12 3428 msr ID_AA64ISAR0_EL1, x12 3429 msr ID_AA64ISAR1_EL1, x12 3430 msr ID_AA64MMFR0_EL1, x12 3431 msr ID_AA64MMFR1_EL1, x12 3432 msr PMCEID0_EL0, x12 3433 msr PMCEID1_EL0, x12 3434 msr RVBAR_EL1, x12 3435 msr RVBAR_EL2, x12 3436 msr RVBAR_EL3, x12 3437 msr ISR_EL1, x12 3438 msr CNTPCT_EL0, x12 3439 msr CNTVCT_EL0, x12 3440 msr PMEVCNTR31_EL0, x12 3441 msr PMEVTYPER31_EL0, x12 3442// CHECK-ERROR: error: expected writable system register or pstate 3443// CHECK-ERROR-NEXT: msr MDCCSR_EL0, x12 3444// CHECK-ERROR-NEXT: ^ 3445// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3446// CHECK-ERROR-NEXT: msr DBGDTRRX_EL0, x12 3447// CHECK-ERROR-NEXT: ^ 3448// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3449// CHECK-ERROR-NEXT: msr MDRAR_EL1, x12 3450// CHECK-ERROR-NEXT: ^ 3451// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3452// CHECK-ERROR-NEXT: msr OSLSR_EL1, x12 3453// CHECK-ERROR-NEXT: ^ 3454// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3455// CHECK-ERROR-NEXT: msr DBGAUTHSTATUS_EL1, x12 3456// CHECK-ERROR-NEXT: ^ 3457// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3458// CHECK-ERROR-NEXT: msr MIDR_EL1, x12 3459// CHECK-ERROR-NEXT: ^ 3460// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3461// CHECK-ERROR-NEXT: msr CCSIDR_EL1, x12 3462// CHECK-ERROR-NEXT: ^ 3463// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3464// CHECK-ERROR-NEXT: msr CLIDR_EL1, x12 3465// CHECK-ERROR-NEXT: ^ 3466// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3467// CHECK-ERROR-NEXT: msr CTR_EL0, x12 3468// CHECK-ERROR-NEXT: ^ 3469// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3470// CHECK-ERROR-NEXT: msr MPIDR_EL1, x12 3471// CHECK-ERROR-NEXT: ^ 3472// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3473// CHECK-ERROR-NEXT: msr REVIDR_EL1, x12 3474// CHECK-ERROR-NEXT: ^ 3475// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3476// CHECK-ERROR-NEXT: msr AIDR_EL1, x12 3477// CHECK-ERROR-NEXT: ^ 3478// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3479// CHECK-ERROR-NEXT: msr DCZID_EL0, x12 3480// CHECK-ERROR-NEXT: ^ 3481// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3482// CHECK-ERROR-NEXT: msr ID_PFR0_EL1, x12 3483// CHECK-ERROR-NEXT: ^ 3484// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3485// CHECK-ERROR-NEXT: msr ID_PFR1_EL1, x12 3486// CHECK-ERROR-NEXT: ^ 3487// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3488// CHECK-ERROR-NEXT: msr ID_DFR0_EL1, x12 3489// CHECK-ERROR-NEXT: ^ 3490// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3491// CHECK-ERROR-NEXT: msr ID_AFR0_EL1, x12 3492// CHECK-ERROR-NEXT: ^ 3493// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3494// CHECK-ERROR-NEXT: msr ID_MMFR0_EL1, x12 3495// CHECK-ERROR-NEXT: ^ 3496// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3497// CHECK-ERROR-NEXT: msr ID_MMFR1_EL1, x12 3498// CHECK-ERROR-NEXT: ^ 3499// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3500// CHECK-ERROR-NEXT: msr ID_MMFR2_EL1, x12 3501// CHECK-ERROR-NEXT: ^ 3502// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3503// CHECK-ERROR-NEXT: msr ID_MMFR3_EL1, x12 3504// CHECK-ERROR-NEXT: ^ 3505// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3506// CHECK-ERROR-NEXT: msr ID_ISAR0_EL1, x12 3507// CHECK-ERROR-NEXT: ^ 3508// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3509// CHECK-ERROR-NEXT: msr ID_ISAR1_EL1, x12 3510// CHECK-ERROR-NEXT: ^ 3511// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3512// CHECK-ERROR-NEXT: msr ID_ISAR2_EL1, x12 3513// CHECK-ERROR-NEXT: ^ 3514// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3515// CHECK-ERROR-NEXT: msr ID_ISAR3_EL1, x12 3516// CHECK-ERROR-NEXT: ^ 3517// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3518// CHECK-ERROR-NEXT: msr ID_ISAR4_EL1, x12 3519// CHECK-ERROR-NEXT: ^ 3520// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3521// CHECK-ERROR-NEXT: msr ID_ISAR5_EL1, x12 3522// CHECK-ERROR-NEXT: ^ 3523// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3524// CHECK-ERROR-NEXT: msr MVFR0_EL1, x12 3525// CHECK-ERROR-NEXT: ^ 3526// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3527// CHECK-ERROR-NEXT: msr MVFR1_EL1, x12 3528// CHECK-ERROR-NEXT: ^ 3529// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3530// CHECK-ERROR-NEXT: msr MVFR2_EL1, x12 3531// CHECK-ERROR-NEXT: ^ 3532// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3533// CHECK-ERROR-NEXT: msr ID_AA64PFR0_EL1, x12 3534// CHECK-ERROR-NEXT: ^ 3535// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3536// CHECK-ERROR-NEXT: msr ID_AA64PFR1_EL1, x12 3537// CHECK-ERROR-NEXT: ^ 3538// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3539// CHECK-ERROR-NEXT: msr ID_AA64DFR0_EL1, x12 3540// CHECK-ERROR-NEXT: ^ 3541// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3542// CHECK-ERROR-NEXT: msr ID_AA64DFR1_EL1, x12 3543// CHECK-ERROR-NEXT: ^ 3544// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3545// CHECK-ERROR-NEXT: msr ID_AA64AFR0_EL1, x12 3546// CHECK-ERROR-NEXT: ^ 3547// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3548// CHECK-ERROR-NEXT: msr ID_AA64AFR1_EL1, x12 3549// CHECK-ERROR-NEXT: ^ 3550// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3551// CHECK-ERROR-NEXT: msr ID_AA64ISAR0_EL1, x12 3552// CHECK-ERROR-NEXT: ^ 3553// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3554// CHECK-ERROR-NEXT: msr ID_AA64ISAR1_EL1, x12 3555// CHECK-ERROR-NEXT: ^ 3556// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3557// CHECK-ERROR-NEXT: msr ID_AA64MMFR0_EL1, x12 3558// CHECK-ERROR-NEXT: ^ 3559// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3560// CHECK-ERROR-NEXT: msr ID_AA64MMFR1_EL1, x12 3561// CHECK-ERROR-NEXT: ^ 3562// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3563// CHECK-ERROR-NEXT: msr PMCEID0_EL0, x12 3564// CHECK-ERROR-NEXT: ^ 3565// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3566// CHECK-ERROR-NEXT: msr PMCEID1_EL0, x12 3567// CHECK-ERROR-NEXT: ^ 3568// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3569// CHECK-ERROR-NEXT: msr RVBAR_EL1, x12 3570// CHECK-ERROR-NEXT: ^ 3571// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3572// CHECK-ERROR-NEXT: msr RVBAR_EL2, x12 3573// CHECK-ERROR-NEXT: ^ 3574// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3575// CHECK-ERROR-NEXT: msr RVBAR_EL3, x12 3576// CHECK-ERROR-NEXT: ^ 3577// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3578// CHECK-ERROR-NEXT: msr ISR_EL1, x12 3579// CHECK-ERROR-NEXT: ^ 3580// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3581// CHECK-ERROR-NEXT: msr CNTPCT_EL0, x12 3582// CHECK-ERROR-NEXT: ^ 3583// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3584// CHECK-ERROR-NEXT: msr CNTVCT_EL0, x12 3585// CHECK-ERROR-NEXT: ^ 3586// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3587// CHECK-ERROR-NEXT: msr PMEVCNTR31_EL0, x12 3588// CHECK-ERROR-NEXT: ^ 3589// CHECK-ERROR-NEXT: error: expected writable system register or pstate 3590// CHECK-ERROR-NEXT: msr PMEVTYPER31_EL0, x12 3591// CHECK-ERROR-NEXT: ^ 3592 3593 mrs x9, DBGDTRTX_EL0 3594 mrs x9, OSLAR_EL1 3595 mrs x9, PMSWINC_EL0 3596 mrs x9, PMEVCNTR31_EL0 3597 mrs x9, PMEVTYPER31_EL0 3598// CHECK-ERROR: error: expected readable system register 3599// CHECK-ERROR-NEXT: mrs x9, DBGDTRTX_EL0 3600// CHECK-ERROR-NEXT: ^ 3601// CHECK-ERROR-NEXT: error: expected readable system register 3602// CHECK-ERROR-NEXT: mrs x9, OSLAR_EL1 3603// CHECK-ERROR-NEXT: ^ 3604// CHECK-ERROR-NEXT: error: expected readable system register 3605// CHECK-ERROR-NEXT: mrs x9, PMSWINC_EL0 3606// CHECK-ERROR-NEXT: ^ 3607// CHECK-ERROR-NEXT: error: expected readable system register 3608// CHECK-ERROR-NEXT: mrs x9, PMEVCNTR31_EL0 3609// CHECK-ERROR-NEXT: ^ 3610// CHECK-ERROR-NEXT: error: expected readable system register 3611// CHECK-ERROR-NEXT: mrs x9, PMEVTYPER31_EL0 3612// CHECK-ERROR-NEXT: ^ 3613 3614// Now check some invalid generic names 3615 mrs xzr, s2_5_c11_c13_2 3616 mrs x12, s3_8_c11_c13_2 3617 mrs x13, s3_3_c12_c13_2 3618 mrs x19, s3_2_c15_c16_2 3619 mrs x30, s3_2_c15_c1_8 3620// CHECK-ERROR-NEXT: error: expected readable system register 3621// CHECK-ERROR-NEXT: mrs xzr, s2_5_c11_c13_2 3622// CHECK-ERROR-NEXT: ^ 3623// CHECK-ERROR-NEXT: error: expected readable system register 3624// CHECK-ERROR-NEXT: mrs x12, s3_8_c11_c13_2 3625// CHECK-ERROR-NEXT: ^ 3626// CHECK-ERROR-NEXT: error: expected readable system register 3627// CHECK-ERROR-NEXT: mrs x13, s3_3_c12_c13_2 3628// CHECK-ERROR-NEXT: ^ 3629// CHECK-ERROR-NEXT: error: expected readable system register 3630// CHECK-ERROR-NEXT: mrs x19, s3_2_c15_c16_2 3631// CHECK-ERROR-NEXT: ^ 3632// CHECK-ERROR-NEXT: error: expected readable system register 3633// CHECK-ERROR-NEXT: mrs x30, s3_2_c15_c1_8 3634// CHECK-ERROR-NEXT: ^ 3635 3636//------------------------------------------------------------------------------ 3637// Test and branch (immediate) 3638//------------------------------------------------------------------------------ 3639 3640 tbz w3, #-1, addr 3641 tbz w3, #32, nowhere 3642 tbz x9, #-1, there 3643 tbz x20, #64, dont 3644// CHECK-ERROR: error: expected integer in range [0, 31] 3645// CHECK-ERROR-NEXT: tbz w3, #-1, addr 3646// CHECK-ERROR-NEXT: ^ 3647// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 3648// CHECK-ERROR-NEXT: tbz w3, #32, nowhere 3649// CHECK-ERROR-NEXT: ^ 3650// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 3651// CHECK-ERROR-NEXT: tbz x9, #-1, there 3652// CHECK-ERROR-NEXT: ^ 3653// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 3654// CHECK-ERROR-NEXT: tbz x20, #64, dont 3655// CHECK-ERROR-NEXT: ^ 3656 3657 tbnz w3, #-1, addr 3658 tbnz w3, #32, nowhere 3659 tbnz x9, #-1, there 3660 tbnz x20, #64, dont 3661// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 3662// CHECK-ERROR-NEXT: tbnz w3, #-1, addr 3663// CHECK-ERROR-NEXT: ^ 3664// CHECK-ERROR-NEXT: error: expected integer in range [0, 31] 3665// CHECK-ERROR-NEXT: tbnz w3, #32, nowhere 3666// CHECK-ERROR-NEXT: ^ 3667// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 3668// CHECK-ERROR-NEXT: tbnz x9, #-1, there 3669// CHECK-ERROR-NEXT: ^ 3670// CHECK-ERROR-NEXT: error: expected integer in range [0, 63] 3671// CHECK-ERROR-NEXT: tbnz x20, #64, dont 3672 3673//------------------------------------------------------------------------------ 3674// Unconditional branch (immediate) 3675//------------------------------------------------------------------------------ 3676 3677 b #134217728 3678 b #-134217732 3679 b #1 3680// CHECK-ERROR: error: expected label or encodable integer pc offset 3681// CHECK-ERROR-NEXT: b #134217728 3682// CHECK-ERROR-NEXT: ^ 3683// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 3684// CHECK-ERROR-NEXT: b #-134217732 3685// CHECK-ERROR-NEXT: ^ 3686// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset 3687// CHECK-ERROR-NEXT: b #1 3688// CHECK-ERROR-NEXT: ^ 3689 3690//------------------------------------------------------------------------------ 3691// Unconditional branch (register) 3692//------------------------------------------------------------------------------ 3693 3694 br w2 3695 br sp 3696// CHECK-ERROR: error: invalid operand for instruction 3697// CHECK-ERROR-NEXT: br w2 3698// CHECK-ERROR-NEXT: ^ 3699// CHECK-ERROR-NEXT: error: invalid operand for instruction 3700// CHECK-ERROR-NEXT: br sp 3701// CHECK-ERROR-NEXT: ^ 3702 3703 //// These ones shouldn't allow any registers 3704 eret x2 3705 drps x2 3706// CHECK-ERROR: error: invalid operand for instruction 3707// CHECK-ERROR-NEXT: eret x2 3708// CHECK-ERROR-NEXT: ^ 3709// CHECK-ERROR-NEXT: error: invalid operand for instruction 3710// CHECK-ERROR-NEXT: drps x2 3711// CHECK-ERROR-NEXT: ^ 3712 3713