3940 lines · plain
1// RUN: not llvm-mc -triple aarch64-none-linux-gnu < %s 2> %t2// RUN: FileCheck --check-prefix=CHECK-ERROR --check-prefix=CHECK-ERROR-ARM64 < %t %s3 4//------------------------------------------------------------------------------5// Add/sub (extended register)6//------------------------------------------------------------------------------7 8 // Mismatched final register and extend9 add x2, x3, x5, sxtb10 add x2, x4, w2, uxtx11 add x2, x4, w2, lsl #312 add w5, w7, x9, sxtx13// CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]14// CHECK-ERROR: add x2, x3, x5, sxtb15// CHECK-ERROR: ^16// CHECK-ERROR: error: expected '[su]xt[bhw]' with optional integer in range [0, 4]17// CHECK-ERROR: add x2, x4, w2, uxtx18// CHECK-ERROR: ^19// CHECK-ERROR: error: expected '[su]xt[bhw]' with optional integer in range [0, 4]20// CHECK-ERROR: add x2, x4, w2, lsl #321// CHECK-ERROR: ^22// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]23// CHECK-ERROR: add w5, w7, x9, sxtx24// CHECK-ERROR: ^25 26 // Out of range extends27 add x9, x10, w11, uxtb #-128 add x3, x5, w7, uxtb #529 sub x9, x15, x2, uxth #530// CHECK-ERROR: error: expected integer shift amount31// CHECK-ERROR: add x9, x10, w11, uxtb #-132// CHECK-ERROR: ^33// CHECK-ERROR: error: expected '[su]xt[bhw]' with optional integer in range [0, 4]34// CHECK-ERROR: add x3, x5, w7, uxtb #535// CHECK-ERROR: ^36// CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]37// CHECK-ERROR: sub x9, x15, x2, uxth #538// CHECK-ERROR: ^39 40 // Wrong registers on normal variants41 add xzr, x3, x5, uxtx42 sub x3, xzr, w9, sxth #143 add x1, x2, sp, uxtx44// CHECK-ERROR: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]45// CHECK-ERROR: add xzr, x3, x5, uxtx46// CHECK-ERROR: ^47// CHECK-ERROR: error: invalid operand for instruction48// CHECK-ERROR: sub x3, xzr, w9, sxth #149// CHECK-ERROR: ^50// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]51// CHECK-ERROR: add x1, x2, sp, uxtx52// CHECK-ERROR: ^53 54 // Wrong registers on flag-setting variants55 adds sp, x3, w2, uxtb56 adds x3, xzr, x9, uxtx57 subs x2, x1, sp, uxtx58 adds x2, x1, sp, uxtb #259// CHECK-ERROR: error: invalid operand for instruction60// CHECK-ERROR: adds sp, x3, w2, uxtb61// CHECK-ERROR: ^62// CHECK-ERROR: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]63// CHECK-ERROR: adds x3, xzr, x9, uxtx64// CHECK-ERROR: ^65// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]66// CHECK-ERROR: subs x2, x1, sp, uxtx67// CHECK-ERROR: ^68// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]69// CHECK-ERROR: adds x2, x1, sp, uxtb #270// CHECK-ERROR: ^71 72 // Amount not optional if lsl valid and used73 add sp, x5, x7, lsl74// CHECK-ERROR: error: expected #imm after shift specifier75// CHECK-ERROR: add sp, x5, x7, lsl76// CHECK-ERROR: ^77 78//------------------------------------------------------------------------------79// Add/sub (immediate)80//------------------------------------------------------------------------------81 82// Out of range immediates: more than 12 bits83 add w4, w5, #-409784 add w5, w6, #0x100085 add w4, w5, #-4096, lsl #1286 add w5, w6, #0x1000, lsl #1287// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]88// CHECK-ERROR-NEXT: add w4, w5, #-409789// CHECK-ERROR-NEXT: ^90// CHECK-ERROR-AARCH64-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]91// CHECK-ERROR-AARCH64-NEXT: add w5, w6, #0x100092// CHECK-ERROR-AARCH64-NEXT: ^93// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]94// CHECK-ERROR-NEXT: add w4, w5, #-4096, lsl #1295// CHECK-ERROR-NEXT: ^96// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]97// CHECK-ERROR-NEXT: add w5, w6, #0x1000, lsl #1298// CHECK-ERROR-NEXT: ^99 100// Only lsl #0 and lsl #12 are allowed101 add w2, w3, #0x1, lsl #1102 add w5, w17, #0xfff, lsl #13103 add w17, w20, #0x1000, lsl #12104 sub xsp, x34, #0x100, lsl #-1105// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]106// CHECK-ERROR-NEXT: add w2, w3, #0x1, lsl #1107// CHECK-ERROR-NEXT: ^108// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]109// CHECK-ERROR-NEXT: add w5, w17, #0xfff, lsl #13110// CHECK-ERROR-NEXT: ^111// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]112// CHECK-ERROR-NEXT: add w17, w20, #0x1000, lsl #12113// CHECK-ERROR-NEXT: ^114// CHECK-ERROR-NEXT: error: only 'lsl #+N' valid after immediate115// CHECK-ERROR-NEXT: sub xsp, x34, #0x100, lsl #-1116// CHECK-ERROR-NEXT: ^117 118// Incorrect registers (w31 doesn't exist at all, and 31 decodes to sp for these).119 add w31, w20, #1234120 add wzr, w20, #0x123121 add w20, wzr, #0x321122 add wzr, wzr, #0xfff123// CHECK-ERROR: error: invalid operand for instruction124// CHECK-ERROR-NEXT: add w31, w20, #1234125// CHECK-ERROR-NEXT: ^126// CHECK-ERROR-NEXT: error: invalid operand for instruction127// CHECK-ERROR-NEXT: add wzr, w20, #0x123128// CHECK-ERROR-NEXT: ^129// CHECK-ERROR-NEXT: error: invalid operand for instruction130// CHECK-ERROR-NEXT: add w20, wzr, #0x321131// CHECK-ERROR-NEXT: ^132// CHECK-ERROR-NEXT: error: invalid operand for instruction133// CHECK-ERROR-NEXT: add wzr, wzr, #0xfff134// CHECK-ERROR-NEXT: ^135 136// Mixed register classes137 add xsp, w2, #123138 sub w2, x30, #32139// CHECK-ERROR: error: invalid operand for instruction140// CHECK-ERROR-NEXT: add xsp, w2, #123141// CHECK-ERROR-NEXT: ^142// CHECK-ERROR-NEXT: error: invalid operand for instruction143// CHECK-ERROR-NEXT: sub w2, x30, #32144// CHECK-ERROR-NEXT: ^145 146// Out of range immediate147 adds w0, w5, #0x10000148// CHECK-ERROR-AARCH64: error: expected compatible register, symbol or integer in range [0, 4095]149// CHECK-ERROR-AARCH64-NEXT: adds w0, w5, #0x10000150// CHECK-ERROR-AARCH64-NEXT: ^151 152// Wn|WSP should be in second place153 adds w4, wzr, #0x123154// ...but wzr is the 31 destination155 subs wsp, w5, #123156 subs x5, xzr, #0x456, lsl #12157// CHECK-ERROR: error: invalid operand for instruction158// CHECK-ERROR-NEXT: adds w4, wzr, #0x123159// CHECK-ERROR-NEXT: ^160// CHECK-ERROR-NEXT: error: invalid operand for instruction161// CHECK-ERROR-NEXT: subs wsp, w5, #123162// CHECK-ERROR-NEXT: ^163// CHECK-ERROR-NEXT: error: invalid operand for instruction164// CHECK-ERROR-NEXT: subs x5, xzr, #0x456, lsl #12165// CHECK-ERROR-NEXT: ^166 167 // MOV alias should not accept any fiddling168 mov x2, xsp, #123169 mov wsp, w27, #0xfff, lsl #12170// CHECK-ERROR: error: invalid operand for instruction171// CHECK-ERROR-NEXT: mov x2, xsp, #123172// CHECK-ERROR-NEXT: ^173// CHECK-ERROR-NEXT: error: invalid operand for instruction174// CHECK-ERROR-NEXT: mov wsp, w27, #0xfff, lsl #12175// CHECK-ERROR-NEXT: ^176 177 // A relocation should be provided for symbols178 add x3, x9, #variable179 add x3, x9, #variable-16180// CHECK-ERROR: error: expected compatible register, symbol or integer in range [0, 4095]181// CHECK-ERROR-NEXT: add x3, x9, #variable182// CHECK-ERROR-NEXT: ^183// CHECK-ERROR-NEXT: error: expected compatible register, symbol or integer in range [0, 4095]184// CHECK-ERROR-NEXT: add x3, x9, #variable-16185// CHECK-ERROR-NEXT: ^186 187 // Relocation on a sub188 sub x1, x0, :lo12:loc189// CHECK-ERROR: error: invalid immediate expression190// CHECK-ERROR: sub x1, x0, :lo12:loc191// CHECK-ERROR: ^192 193 194//------------------------------------------------------------------------------195// Add-subtract (shifted register)196//------------------------------------------------------------------------------197 198 add wsp, w1, w2, lsr #3199 add x4, sp, x9, asr #5200 add x9, x10, x5, ror #3201// CHECK-ERROR: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]202// CHECK-ERROR-NEXT: add wsp, w1, w2, lsr #3203// CHECK-ERROR-NEXT: ^204// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]205// CHECK-ERROR-NEXT: add x4, sp, x9, asr #5206// CHECK-ERROR-NEXT: ^207// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]208// CHECK-ERROR-NEXT: add x9, x10, x5, ror #3209// CHECK-ERROR-NEXT: ^210 211 add w1, w2, w3, lsl #-1212 add w1, w2, w3, lsl #32213 add w1, w2, w3, lsr #-1214 add w1, w2, w3, lsr #32215 add w1, w2, w3, asr #-1216 add w1, w2, w3, asr #32217 add x1, x2, x3, lsl #-1218 add x1, x2, x3, lsl #64219 add x1, x2, x3, lsr #-1220 add x1, x2, x3, lsr #64221 add x1, x2, x3, asr #-1222 add x1, x2, x3, asr #64223// CHECK-ERROR: error: expected integer shift amount224// CHECK-ERROR-NEXT: add w1, w2, w3, lsl #-1225// CHECK-ERROR-NEXT: ^226// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]227// CHECK-ERROR-NEXT: add w1, w2, w3, lsl #32228// CHECK-ERROR-NEXT: ^229// CHECK-ERROR-NEXT: error: expected integer shift amount230// CHECK-ERROR-NEXT: add w1, w2, w3, lsr #-1231// CHECK-ERROR-NEXT: ^232// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]233// CHECK-ERROR-NEXT: add w1, w2, w3, lsr #32234// CHECK-ERROR-NEXT: ^235// CHECK-ERROR-NEXT: error: expected integer shift amount236// CHECK-ERROR-NEXT: add w1, w2, w3, asr #-1237// CHECK-ERROR-NEXT: ^238// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]239// CHECK-ERROR-NEXT: add w1, w2, w3, asr #32240// CHECK-ERROR-NEXT: ^241// CHECK-ERROR-NEXT: error: expected integer shift amount242// CHECK-ERROR-NEXT: add x1, x2, x3, lsl #-1243// CHECK-ERROR-NEXT: ^244// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]245// CHECK-ERROR-NEXT: add x1, x2, x3, lsl #64246// CHECK-ERROR-NEXT: ^247// CHECK-ERROR-NEXT: error: expected integer shift amount248// CHECK-ERROR-NEXT: add x1, x2, x3, lsr #-1249// CHECK-ERROR-NEXT: ^250// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]251// CHECK-ERROR-NEXT: add x1, x2, x3, lsr #64252// CHECK-ERROR-NEXT: ^253// CHECK-ERROR-NEXT: error: expected integer shift amount254// CHECK-ERROR-NEXT: add x1, x2, x3, asr #-1255// CHECK-ERROR-NEXT: ^256// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]257// CHECK-ERROR-NEXT: add x1, x2, x3, asr #64258// CHECK-ERROR-NEXT: ^259 260 adds w1, w2, w3, lsl #-1261 adds w1, w2, w3, lsl #32262 adds w1, w2, w3, lsr #-1263 adds w1, w2, w3, lsr #32264 adds w1, w2, w3, asr #-1265 adds w1, w2, w3, asr #32266 adds x1, x2, x3, lsl #-1267 adds x1, x2, x3, lsl #64268 adds x1, x2, x3, lsr #-1269 adds x1, x2, x3, lsr #64270 adds x1, x2, x3, asr #-1271 adds x1, x2, x3, asr #64272// CHECK-ERROR: error: expected integer shift amount273// CHECK-ERROR-NEXT: adds w1, w2, w3, lsl #-1274// CHECK-ERROR-NEXT: ^275// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]276// CHECK-ERROR-NEXT: adds w1, w2, w3, lsl #32277// CHECK-ERROR-NEXT: ^278// CHECK-ERROR-NEXT: error: expected integer shift amount279// CHECK-ERROR-NEXT: adds w1, w2, w3, lsr #-1280// CHECK-ERROR-NEXT: ^281// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]282// CHECK-ERROR-NEXT: adds w1, w2, w3, lsr #32283// CHECK-ERROR-NEXT: ^284// CHECK-ERROR-NEXT: error: expected integer shift amount285// CHECK-ERROR-NEXT: adds w1, w2, w3, asr #-1286// CHECK-ERROR-NEXT: ^287// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]288// CHECK-ERROR-NEXT: adds w1, w2, w3, asr #32289// CHECK-ERROR-NEXT: ^290// CHECK-ERROR-NEXT: error: expected integer shift amount291// CHECK-ERROR-NEXT: adds x1, x2, x3, lsl #-1292// CHECK-ERROR-NEXT: ^293// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]294// CHECK-ERROR-NEXT: adds x1, x2, x3, lsl #64295// CHECK-ERROR-NEXT: ^296// CHECK-ERROR-NEXT: error: expected integer shift amount297// CHECK-ERROR-NEXT: adds x1, x2, x3, lsr #-1298// CHECK-ERROR-NEXT: ^299// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]300// CHECK-ERROR-NEXT: adds x1, x2, x3, lsr #64301// CHECK-ERROR-NEXT: ^302// CHECK-ERROR-NEXT: error: expected integer shift amount303// CHECK-ERROR-NEXT: adds x1, x2, x3, asr #-1304// CHECK-ERROR-NEXT: ^305// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]306// CHECK-ERROR-NEXT: adds x1, x2, x3, asr #64307// CHECK-ERROR-NEXT: ^308 309 sub w1, w2, w3, lsl #-1310 sub w1, w2, w3, lsl #32311 sub w1, w2, w3, lsr #-1312 sub w1, w2, w3, lsr #32313 sub w1, w2, w3, asr #-1314 sub w1, w2, w3, asr #32315 sub x1, x2, x3, lsl #-1316 sub x1, x2, x3, lsl #64317 sub x1, x2, x3, lsr #-1318 sub x1, x2, x3, lsr #64319 sub x1, x2, x3, asr #-1320 sub x1, x2, x3, asr #64321// CHECK-ERROR: error: expected integer shift amount322// CHECK-ERROR-NEXT: sub w1, w2, w3, lsl #-1323// CHECK-ERROR-NEXT: ^324// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]325// CHECK-ERROR-NEXT: sub w1, w2, w3, lsl #32326// CHECK-ERROR-NEXT: ^327// CHECK-ERROR-NEXT: error: expected integer shift amount328// CHECK-ERROR-NEXT: sub w1, w2, w3, lsr #-1329// CHECK-ERROR-NEXT: ^330// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]331// CHECK-ERROR-NEXT: sub w1, w2, w3, lsr #32332// CHECK-ERROR-NEXT: ^333// CHECK-ERROR-NEXT: error: expected integer shift amount334// CHECK-ERROR-NEXT: sub w1, w2, w3, asr #-1335// CHECK-ERROR-NEXT: ^336// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]337// CHECK-ERROR-NEXT: sub w1, w2, w3, asr #32338// CHECK-ERROR-NEXT: ^339// CHECK-ERROR-NEXT: error: expected integer shift amount340// CHECK-ERROR-NEXT: sub x1, x2, x3, lsl #-1341// CHECK-ERROR-NEXT: ^342// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]343// CHECK-ERROR-NEXT: sub x1, x2, x3, lsl #64344// CHECK-ERROR-NEXT: ^345// CHECK-ERROR-NEXT: error: expected integer shift amount346// CHECK-ERROR-NEXT: sub x1, x2, x3, lsr #-1347// CHECK-ERROR-NEXT: ^348// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]349// CHECK-ERROR-NEXT: sub x1, x2, x3, lsr #64350// CHECK-ERROR-NEXT: ^351// CHECK-ERROR-NEXT: error: expected integer shift amount352// CHECK-ERROR-NEXT: sub x1, x2, x3, asr #-1353// CHECK-ERROR-NEXT: ^354// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]355// CHECK-ERROR-NEXT: sub x1, x2, x3, asr #64356// CHECK-ERROR-NEXT: ^357 358 subs w1, w2, w3, lsl #-1359 subs w1, w2, w3, lsl #32360 subs w1, w2, w3, lsr #-1361 subs w1, w2, w3, lsr #32362 subs w1, w2, w3, asr #-1363 subs w1, w2, w3, asr #32364 subs x1, x2, x3, lsl #-1365 subs x1, x2, x3, lsl #64366 subs x1, x2, x3, lsr #-1367 subs x1, x2, x3, lsr #64368 subs x1, x2, x3, asr #-1369 subs x1, x2, x3, asr #64370// CHECK-ERROR: error: expected integer shift amount371// CHECK-ERROR-NEXT: subs w1, w2, w3, lsl #-1372// CHECK-ERROR-NEXT: ^373// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]374// CHECK-ERROR-NEXT: subs w1, w2, w3, lsl #32375// CHECK-ERROR-NEXT: ^376// CHECK-ERROR-NEXT: error: expected integer shift amount377// CHECK-ERROR-NEXT: subs w1, w2, w3, lsr #-1378// CHECK-ERROR-NEXT: ^379// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]380// CHECK-ERROR-NEXT: subs w1, w2, w3, lsr #32381// CHECK-ERROR-NEXT: ^382// CHECK-ERROR-NEXT: error: expected integer shift amount383// CHECK-ERROR-NEXT: subs w1, w2, w3, asr #-1384// CHECK-ERROR-NEXT: ^385// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]386// CHECK-ERROR-NEXT: subs w1, w2, w3, asr #32387// CHECK-ERROR-NEXT: ^388// CHECK-ERROR-NEXT: error: expected integer shift amount389// CHECK-ERROR-NEXT: subs x1, x2, x3, lsl #-1390// CHECK-ERROR-NEXT: ^391// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]392// CHECK-ERROR-NEXT: subs x1, x2, x3, lsl #64393// CHECK-ERROR-NEXT: ^394// CHECK-ERROR-NEXT: error: expected integer shift amount395// CHECK-ERROR-NEXT: subs x1, x2, x3, lsr #-1396// CHECK-ERROR-NEXT: ^397// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]398// CHECK-ERROR-NEXT: subs x1, x2, x3, lsr #64399// CHECK-ERROR-NEXT: ^400// CHECK-ERROR-NEXT: error: expected integer shift amount401// CHECK-ERROR-NEXT: subs x1, x2, x3, asr #-1402// CHECK-ERROR-NEXT: ^403// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]404// CHECK-ERROR-NEXT: subs x1, x2, x3, asr #64405// CHECK-ERROR-NEXT: ^406 407 cmn w9, w10, lsl #-1408 cmn w9, w10, lsl #32409 cmn w11, w12, lsr #-1410 cmn w11, w12, lsr #32411 cmn w19, wzr, asr #-1412 cmn wzr, wzr, asr #32413 cmn x9, x10, lsl #-1414 cmn x9, x10, lsl #64415 cmn x11, x12, lsr #-1416 cmn x11, x12, lsr #64417 cmn x19, xzr, asr #-1418 cmn xzr, xzr, asr #64419// CHECK-ERROR: error: expected integer shift amount420// CHECK-ERROR-NEXT: cmn w9, w10, lsl #-1421// CHECK-ERROR-NEXT: ^422// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]423// CHECK-ERROR-NEXT: cmn w9, w10, lsl #32424// CHECK-ERROR-NEXT: ^425// CHECK-ERROR-NEXT: error: expected integer shift amount426// CHECK-ERROR-NEXT: cmn w11, w12, lsr #-1427// CHECK-ERROR-NEXT: ^428// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]429// CHECK-ERROR-NEXT: cmn w11, w12, lsr #32430// CHECK-ERROR-NEXT: ^431// CHECK-ERROR-NEXT: error: expected integer shift amount432// CHECK-ERROR-NEXT: cmn w19, wzr, asr #-1433// CHECK-ERROR-NEXT: ^434// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]435// CHECK-ERROR-NEXT: cmn wzr, wzr, asr #32436// CHECK-ERROR-NEXT: ^437// CHECK-ERROR-NEXT: error: expected integer shift amount438// CHECK-ERROR-NEXT: cmn x9, x10, lsl #-1439// CHECK-ERROR-NEXT: ^440// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]441// CHECK-ERROR-NEXT: cmn x9, x10, lsl #64442// CHECK-ERROR-NEXT: ^443// CHECK-ERROR-NEXT: error: expected integer shift amount444// CHECK-ERROR-NEXT: cmn x11, x12, lsr #-1445// CHECK-ERROR-NEXT: ^446// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]447// CHECK-ERROR-NEXT: cmn x11, x12, lsr #64448// CHECK-ERROR-NEXT: ^449// CHECK-ERROR-NEXT: error: expected integer shift amount450// CHECK-ERROR-NEXT: cmn x19, xzr, asr #-1451// CHECK-ERROR-NEXT: ^452// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]453// CHECK-ERROR-NEXT: cmn xzr, xzr, asr #64454// CHECK-ERROR-NEXT: ^455 456 cmp w9, w10, lsl #-1457 cmp w9, w10, lsl #32458 cmp w11, w12, lsr #-1459 cmp w11, w12, lsr #32460 cmp w19, wzr, asr #-1461 cmp wzr, wzr, asr #32462 cmp x9, x10, lsl #-1463 cmp x9, x10, lsl #64464 cmp x11, x12, lsr #-1465 cmp x11, x12, lsr #64466 cmp x19, xzr, asr #-1467 cmp xzr, xzr, asr #64468// CHECK-ERROR: error: expected integer shift amount469// CHECK-ERROR-NEXT: cmp w9, w10, lsl #-1470// CHECK-ERROR-NEXT: ^471// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]472// CHECK-ERROR-NEXT: cmp w9, w10, lsl #32473// CHECK-ERROR-NEXT: ^474// CHECK-ERROR-NEXT: error: expected integer shift amount475// CHECK-ERROR-NEXT: cmp w11, w12, lsr #-1476// CHECK-ERROR-NEXT: ^477// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]478// CHECK-ERROR-NEXT: cmp w11, w12, lsr #32479// CHECK-ERROR-NEXT: ^480// CHECK-ERROR-NEXT: error: expected integer shift amount481// CHECK-ERROR-NEXT: cmp w19, wzr, asr #-1482// CHECK-ERROR-NEXT: ^483// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]484// CHECK-ERROR-NEXT: cmp wzr, wzr, asr #32485// CHECK-ERROR-NEXT: ^486// CHECK-ERROR-NEXT: error: expected integer shift amount487// CHECK-ERROR-NEXT: cmp x9, x10, lsl #-1488// CHECK-ERROR-NEXT: ^489// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]490// CHECK-ERROR-NEXT: cmp x9, x10, lsl #64491// CHECK-ERROR-NEXT: ^492// CHECK-ERROR-NEXT: error: expected integer shift amount493// CHECK-ERROR-NEXT: cmp x11, x12, lsr #-1494// CHECK-ERROR-NEXT: ^495// CHECK-ERROR-NEXT: error: expected 'sxtx' 'uxtx' or 'lsl' with optional integer in range [0, 4]496// CHECK-ERROR-NEXT: cmp x11, x12, lsr #64497// CHECK-ERROR-NEXT: ^498// CHECK-ERROR-NEXT: error: expected integer shift amount499// CHECK-ERROR-NEXT: cmp x19, xzr, asr #-1500// CHECK-ERROR-NEXT: ^501// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]502// CHECK-ERROR-NEXT: cmp xzr, xzr, asr #64503// CHECK-ERROR-NEXT: ^504 505 neg w9, w10, lsl #-1506 neg w9, w10, lsl #32507 neg w11, w12, lsr #-1508 neg w11, w12, lsr #32509 neg w19, wzr, asr #-1510 neg wzr, wzr, asr #32511 neg x9, x10, lsl #-1512 neg x9, x10, lsl #64513 neg x11, x12, lsr #-1514 neg x11, x12, lsr #64515 neg x19, xzr, asr #-1516 neg xzr, xzr, asr #64517// CHECK-ERROR: error: expected integer shift amount518// CHECK-ERROR-NEXT: neg w9, w10, lsl #-1519// CHECK-ERROR-NEXT: ^520// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]521// CHECK-ERROR-NEXT: neg w9, w10, lsl #32522// CHECK-ERROR-NEXT: ^523// CHECK-ERROR-NEXT: error: expected integer shift amount524// CHECK-ERROR-NEXT: neg w11, w12, lsr #-1525// CHECK-ERROR-NEXT: ^526// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]527// CHECK-ERROR-NEXT: neg w11, w12, lsr #32528// CHECK-ERROR-NEXT: ^529// CHECK-ERROR-NEXT: error: expected integer shift amount530// CHECK-ERROR-NEXT: neg w19, wzr, asr #-1531// CHECK-ERROR-NEXT: ^532// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]533// CHECK-ERROR-NEXT: neg wzr, wzr, asr #32534// CHECK-ERROR-NEXT: ^535// CHECK-ERROR-NEXT: error: expected integer shift amount536// CHECK-ERROR-NEXT: neg x9, x10, lsl #-1537// CHECK-ERROR-NEXT: ^538// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]539// CHECK-ERROR-NEXT: neg x9, x10, lsl #64540// CHECK-ERROR-NEXT: ^541// CHECK-ERROR-NEXT: error: expected integer shift amount542// CHECK-ERROR-NEXT: neg x11, x12, lsr #-1543// CHECK-ERROR-NEXT: ^544// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]545// CHECK-ERROR-NEXT: neg x11, x12, lsr #64546// CHECK-ERROR-NEXT: ^547// CHECK-ERROR-NEXT: error: expected integer shift amount548// CHECK-ERROR-NEXT: neg x19, xzr, asr #-1549// CHECK-ERROR-NEXT: ^550// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]551// CHECK-ERROR-NEXT: neg xzr, xzr, asr #64552// CHECK-ERROR-NEXT: ^553 554 negs w9, w10, lsl #-1555 negs w9, w10, lsl #32556 negs w11, w12, lsr #-1557 negs w11, w12, lsr #32558 negs w19, wzr, asr #-1559 negs wzr, wzr, asr #32560 negs x9, x10, lsl #-1561 negs x9, x10, lsl #64562 negs x11, x12, lsr #-1563 negs x11, x12, lsr #64564 negs x19, xzr, asr #-1565 negs xzr, xzr, asr #64566// CHECK-ERROR: error: expected integer shift amount567// CHECK-ERROR-NEXT: negs w9, w10, lsl #-1568// CHECK-ERROR-NEXT: ^569// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]570// CHECK-ERROR-NEXT: negs w9, w10, lsl #32571// CHECK-ERROR-NEXT: ^572// CHECK-ERROR-NEXT: error: expected integer shift amount573// CHECK-ERROR-NEXT: negs w11, w12, lsr #-1574// CHECK-ERROR-NEXT: ^575// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]576// CHECK-ERROR-NEXT: negs w11, w12, lsr #32577// CHECK-ERROR-NEXT: ^578// CHECK-ERROR-NEXT: error: expected integer shift amount579// CHECK-ERROR-NEXT: negs w19, wzr, asr #-1580// CHECK-ERROR-NEXT: ^581// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]582// CHECK-ERROR-NEXT: negs wzr, wzr, asr #32583// CHECK-ERROR-NEXT: ^584// CHECK-ERROR-NEXT: error: expected integer shift amount585// CHECK-ERROR-NEXT: negs x9, x10, lsl #-1586// CHECK-ERROR-NEXT: ^587// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]588// CHECK-ERROR-NEXT: negs x9, x10, lsl #64589// CHECK-ERROR-NEXT: ^590// CHECK-ERROR-NEXT: error: expected integer shift amount591// CHECK-ERROR-NEXT: negs x11, x12, lsr #-1592// CHECK-ERROR-NEXT: ^593// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]594// CHECK-ERROR-NEXT: negs x11, x12, lsr #64595// CHECK-ERROR-NEXT: ^596// CHECK-ERROR-NEXT: error: expected integer shift amount597// CHECK-ERROR-NEXT: negs x19, xzr, asr #-1598// CHECK-ERROR-NEXT: ^599// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]600// CHECK-ERROR-NEXT: negs xzr, xzr, asr #64601// CHECK-ERROR-NEXT: ^602 603//------------------------------------------------------------------------------604// Add-subtract (shifted register)605//------------------------------------------------------------------------------606 607 adc wsp, w3, w5608 adc w1, wsp, w2609 adc w0, w10, wsp610// CHECK-ERROR: error: invalid operand for instruction611// CHECK-ERROR-NEXT: adc wsp, w3, w5612// CHECK-ERROR-NEXT: ^613// CHECK-ERROR-NEXT: error: invalid operand for instruction614// CHECK-ERROR-NEXT: adc w1, wsp, w2615// CHECK-ERROR-NEXT: ^616// CHECK-ERROR-NEXT: error: invalid operand for instruction617// CHECK-ERROR-NEXT: adc w0, w10, wsp618// CHECK-ERROR-NEXT: ^619 620 adc sp, x3, x5621 adc x1, sp, x2622 adc x0, x10, sp623// CHECK-ERROR: error: invalid operand for instruction624// CHECK-ERROR-NEXT: adc sp, x3, x5625// CHECK-ERROR-NEXT: ^626// CHECK-ERROR-NEXT: error: invalid operand for instruction627// CHECK-ERROR-NEXT: adc x1, sp, x2628// CHECK-ERROR-NEXT: ^629// CHECK-ERROR-NEXT: error: invalid operand for instruction630// CHECK-ERROR-NEXT: adc x0, x10, sp631// CHECK-ERROR-NEXT: ^632 633 adcs wsp, w3, w5634 adcs w1, wsp, w2635 adcs w0, w10, wsp636// CHECK-ERROR: error: invalid operand for instruction637// CHECK-ERROR-NEXT: adcs wsp, w3, w5638// CHECK-ERROR-NEXT: ^639// CHECK-ERROR-NEXT: error: invalid operand for instruction640// CHECK-ERROR-NEXT: adcs w1, wsp, w2641// CHECK-ERROR-NEXT: ^642// CHECK-ERROR-NEXT: error: invalid operand for instruction643// CHECK-ERROR-NEXT: adcs w0, w10, wsp644// CHECK-ERROR-NEXT: ^645 646 adcs sp, x3, x5647 adcs x1, sp, x2648 adcs x0, x10, sp649// CHECK-ERROR: error: invalid operand for instruction650// CHECK-ERROR-NEXT: adcs sp, x3, x5651// CHECK-ERROR-NEXT: ^652// CHECK-ERROR-NEXT: error: invalid operand for instruction653// CHECK-ERROR-NEXT: adcs x1, sp, x2654// CHECK-ERROR-NEXT: ^655// CHECK-ERROR-NEXT: error: invalid operand for instruction656// CHECK-ERROR-NEXT: adcs x0, x10, sp657// CHECK-ERROR-NEXT: ^658 659 sbc wsp, w3, w5660 sbc w1, wsp, w2661 sbc w0, w10, wsp662// CHECK-ERROR: error: invalid operand for instruction663// CHECK-ERROR-NEXT: sbc wsp, w3, w5664// CHECK-ERROR-NEXT: ^665// CHECK-ERROR-NEXT: error: invalid operand for instruction666// CHECK-ERROR-NEXT: sbc w1, wsp, w2667// CHECK-ERROR-NEXT: ^668// CHECK-ERROR-NEXT: error: invalid operand for instruction669// CHECK-ERROR-NEXT: sbc w0, w10, wsp670// CHECK-ERROR-NEXT: ^671 672 sbc sp, x3, x5673 sbc x1, sp, x2674 sbc x0, x10, sp675// CHECK-ERROR: error: invalid operand for instruction676// CHECK-ERROR-NEXT: sbc sp, x3, x5677// CHECK-ERROR-NEXT: ^678// CHECK-ERROR-NEXT: error: invalid operand for instruction679// CHECK-ERROR-NEXT: sbc x1, sp, x2680// CHECK-ERROR-NEXT: ^681// CHECK-ERROR-NEXT: error: invalid operand for instruction682// CHECK-ERROR-NEXT: sbc x0, x10, sp683// CHECK-ERROR-NEXT: ^684 685 sbcs wsp, w3, w5686 sbcs w1, wsp, w2687 sbcs w0, w10, wsp688// CHECK-ERROR: error: invalid operand for instruction689// CHECK-ERROR-NEXT: sbcs wsp, w3, w5690// CHECK-ERROR-NEXT: ^691// CHECK-ERROR-NEXT: error: invalid operand for instruction692// CHECK-ERROR-NEXT: sbcs w1, wsp, w2693// CHECK-ERROR-NEXT: ^694// CHECK-ERROR-NEXT: error: invalid operand for instruction695// CHECK-ERROR-NEXT: sbcs w0, w10, wsp696// CHECK-ERROR-NEXT: ^697 698 sbcs sp, x3, x5699 sbcs x1, sp, x2700 sbcs x0, x10, sp701// CHECK-ERROR: error: invalid operand for instruction702// CHECK-ERROR-NEXT: sbcs sp, x3, x5703// CHECK-ERROR-NEXT: ^704// CHECK-ERROR-NEXT: error: invalid operand for instruction705// CHECK-ERROR-NEXT: sbcs x1, sp, x2706// CHECK-ERROR-NEXT: ^707// CHECK-ERROR-NEXT: error: invalid operand for instruction708// CHECK-ERROR-NEXT: sbcs x0, x10, sp709// CHECK-ERROR-NEXT: ^710 711 ngc wsp, w3712 ngc w9, wsp713 ngc sp, x9714 ngc x2, sp715// CHECK-ERROR: error: invalid operand for instruction716// CHECK-ERROR-NEXT: ngc wsp, w3717// CHECK-ERROR-NEXT: ^718// CHECK-ERROR-NEXT: error: invalid operand for instruction719// CHECK-ERROR-NEXT: ngc w9, wsp720// CHECK-ERROR-NEXT: ^721// CHECK-ERROR-NEXT: error: invalid operand for instruction722// CHECK-ERROR-NEXT: ngc sp, x9723// CHECK-ERROR-NEXT: ^724// CHECK-ERROR-NEXT: error: invalid operand for instruction725// CHECK-ERROR-NEXT: ngc x2, sp726// CHECK-ERROR-NEXT: ^727 728 ngcs wsp, w3729 ngcs w9, wsp730 ngcs sp, x9731 ngcs x2, sp732// CHECK-ERROR: error: invalid operand for instruction733// CHECK-ERROR-NEXT: ngcs wsp, w3734// CHECK-ERROR-NEXT: ^735// CHECK-ERROR-NEXT: error: invalid operand for instruction736// CHECK-ERROR-NEXT: ngcs w9, wsp737// CHECK-ERROR-NEXT: ^738// CHECK-ERROR-NEXT: error: invalid operand for instruction739// CHECK-ERROR-NEXT: ngcs sp, x9740// CHECK-ERROR-NEXT: ^741// CHECK-ERROR-NEXT: error: invalid operand for instruction742// CHECK-ERROR-NEXT: ngcs x2, sp743// CHECK-ERROR-NEXT: ^744 745//------------------------------------------------------------------------------746// Logical (immediates)747//------------------------------------------------------------------------------748 749 and w2, w3, #4294967296750 eor w2, w3, #4294967296751 orr w2, w3, #4294967296752 ands w2, w3, #4294967296753// CHECK-ERROR: error: expected compatible register or logical immediate754// CHECK-ERROR-NEXT: and w2, w3, #4294967296755// CHECK-ERROR-NEXT: ^756// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate757// CHECK-ERROR-NEXT: eor w2, w3, #4294967296758// CHECK-ERROR-NEXT: ^759// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate760// CHECK-ERROR-NEXT: orr w2, w3, #4294967296761// CHECK-ERROR-NEXT: ^762// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate763// CHECK-ERROR-NEXT: ands w2, w3, #4294967296764// CHECK-ERROR-NEXT: ^765 766//------------------------------------------------------------------------------767// Bitfield768//------------------------------------------------------------------------------769 770 sbfm x3, w13, #0, #0771 sbfm w12, x9, #0, #0772 sbfm sp, x3, #3, #5773 sbfm w3, wsp, #1, #9774 sbfm x9, x5, #-1, #0775 sbfm x9, x5, #0, #-1776// CHECK-ERROR: error: invalid operand for instruction777// CHECK-ERROR-NEXT: sbfm x3, w13, #0, #0778// CHECK-ERROR-NEXT: ^779// CHECK-ERROR-NEXT: error: invalid operand for instruction780// CHECK-ERROR-NEXT: sbfm w12, x9, #0, #0781// CHECK-ERROR-NEXT: ^782// CHECK-ERROR-NEXT: error: invalid operand for instruction783// CHECK-ERROR-NEXT: sbfm sp, x3, #3, #5784// CHECK-ERROR-NEXT: ^785// CHECK-ERROR-NEXT: error: invalid operand for instruction786// CHECK-ERROR-NEXT: sbfm w3, wsp, #1, #9787// CHECK-ERROR-NEXT: ^788// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]789// CHECK-ERROR-NEXT: sbfm x9, x5, #-1, #0790// CHECK-ERROR-NEXT: ^791// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]792// CHECK-ERROR-NEXT: sbfm x9, x5, #0, #-1793// CHECK-ERROR-NEXT: ^794 795 sbfm w3, w5, #32, #1796 sbfm w7, w11, #19, #32797 sbfm x29, x30, #64, #0798 sbfm x10, x20, #63, #64799// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]800// CHECK-ERROR-NEXT: sbfm w3, w5, #32, #1801// CHECK-ERROR-NEXT: ^802// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]803// CHECK-ERROR-NEXT: sbfm w7, w11, #19, #32804// CHECK-ERROR-NEXT: ^805// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]806// CHECK-ERROR-NEXT: sbfm x29, x30, #64, #0807// CHECK-ERROR-NEXT: ^808// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]809// CHECK-ERROR-NEXT: sbfm x10, x20, #63, #64810// CHECK-ERROR-NEXT: ^811 812 ubfm w3, w5, #32, #1813 ubfm w7, w11, #19, #32814 ubfm x29, x30, #64, #0815 ubfm x10, x20, #63, #64816// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]817// CHECK-ERROR-NEXT: ubfm w3, w5, #32, #1818// CHECK-ERROR-NEXT: ^819// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]820// CHECK-ERROR-NEXT: ubfm w7, w11, #19, #32821// CHECK-ERROR-NEXT: ^822// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]823// CHECK-ERROR-NEXT: ubfm x29, x30, #64, #0824// CHECK-ERROR-NEXT: ^825// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]826// CHECK-ERROR-NEXT: ubfm x10, x20, #63, #64827// CHECK-ERROR-NEXT: ^828 829 bfm w3, w5, #32, #1830 bfm w7, w11, #19, #32831 bfm x29, x30, #64, #0832 bfm x10, x20, #63, #64833// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]834// CHECK-ERROR-NEXT: bfm w3, w5, #32, #1835// CHECK-ERROR-NEXT: ^836// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]837// CHECK-ERROR-NEXT: bfm w7, w11, #19, #32838// CHECK-ERROR-NEXT: ^839// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]840// CHECK-ERROR-NEXT: bfm x29, x30, #64, #0841// CHECK-ERROR-NEXT: ^842// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]843// CHECK-ERROR-NEXT: bfm x10, x20, #63, #64844// CHECK-ERROR-NEXT: ^845 846 sxtb x3, x2847 sxth xzr, xzr848 sxtw x3, x5849// CHECK-ERROR-AARCH64: error: invalid operand for instruction850// CHECK-ERROR-AARCH64-NEXT: sxtb x3, x2851// CHECK-ERROR-AARCH64-NEXT: ^852// CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction853// CHECK-ERROR-AARCH64-NEXT: sxth xzr, xzr854// CHECK-ERROR-AARCH64-NEXT: ^855// CHECK-ERROR-AARCH64-NEXT: error: invalid operand for instruction856// CHECK-ERROR-AARCH64-NEXT: sxtw x3, x5857// CHECK-ERROR-AARCH64-NEXT: ^858 859 uxtb x3, x12860 uxth x5, x9861 uxtw x3, x5862 uxtb x2, sp863 uxtb sp, xzr864// CHECK-ERROR: error: invalid operand for instruction865// CHECK-ERROR-NEXT: uxtb x3, x12866// CHECK-ERROR-NEXT: ^867// CHECK-ERROR-NEXT: error: invalid operand for instruction868// CHECK-ERROR-NEXT: uxth x5, x9869// CHECK-ERROR-NEXT: ^870// CHECK-ERROR-AARCH64-NEXT: error: invalid instruction871// CHECK-ERROR-AARCH64-NEXT: uxtw x3, x5872// CHECK-ERROR-AARCH64-NEXT: ^873// CHECK-ERROR-NEXT: error: invalid operand for instruction874// CHECK-ERROR-NEXT: uxtb x2, sp875// CHECK-ERROR-NEXT: ^876// CHECK-ERROR-NEXT: error: invalid operand for instruction877// CHECK-ERROR-NEXT: uxtb sp, xzr878// CHECK-ERROR-NEXT: ^879 880 asr x3, w2, #1881 asr sp, x2, #1882 asr x25, x26, #-1883 asr x25, x26, #64884 asr w9, w8, #32885// CHECK-ERROR: error: invalid operand for instruction886// CHECK-ERROR-NEXT: asr x3, w2, #1887// CHECK-ERROR-NEXT: ^888// CHECK-ERROR-NEXT: error: invalid operand for instruction889// CHECK-ERROR-NEXT: asr sp, x2, #1890// CHECK-ERROR-NEXT: ^891// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]892// CHECK-ERROR-NEXT: asr x25, x26, #-1893// CHECK-ERROR-NEXT: ^894// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]895// CHECK-ERROR-NEXT: asr x25, x26, #64896// CHECK-ERROR-NEXT: ^897// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]898// CHECK-ERROR-NEXT: asr w9, w8, #32899// CHECK-ERROR-NEXT: ^900 901 sbfiz w1, w2, #0, #0902 sbfiz wsp, w9, #0, #1903 sbfiz w9, w10, #32, #1904 sbfiz w11, w12, #32, #0905 sbfiz w9, w10, #10, #23906 sbfiz x3, x5, #12, #53907 sbfiz sp, x3, #7, #6908 sbfiz w3, wsp, #10, #8909// CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]910// CHECK-ERROR-ARM64: error: expected integer in range [1, 32]911// CHECK-ERROR-NEXT: sbfiz w1, w2, #0, #0912// CHECK-ERROR-NEXT: ^913// CHECK-ERROR-NEXT: error: invalid operand for instruction914// CHECK-ERROR-NEXT: sbfiz wsp, w9, #0, #1915// CHECK-ERROR-NEXT: ^916// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]917// CHECK-ERROR-NEXT: sbfiz w9, w10, #32, #1918// CHECK-ERROR-NEXT: ^919// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]920// CHECK-ERROR-NEXT: sbfiz w11, w12, #32, #0921// CHECK-ERROR-NEXT: ^922// CHECK-ERROR-NEXT: error: requested insert overflows register923// CHECK-ERROR-NEXT: sbfiz w9, w10, #10, #23924// CHECK-ERROR-NEXT: ^925// CHECK-ERROR-NEXT: error: requested insert overflows register926// CHECK-ERROR-NEXT: sbfiz x3, x5, #12, #53927// CHECK-ERROR-NEXT: ^928// CHECK-ERROR-NEXT: error: invalid operand for instruction929// CHECK-ERROR-NEXT: sbfiz sp, x3, #7, #6930// CHECK-ERROR-NEXT: ^931// CHECK-ERROR-NEXT: error: invalid operand for instruction932// CHECK-ERROR-NEXT: sbfiz w3, wsp, #10, #8933// CHECK-ERROR-NEXT: ^934 935 sbfx w1, w2, #0, #0936 sbfx wsp, w9, #0, #1937 sbfx w9, w10, #32, #1938 sbfx w11, w12, #32, #0939 sbfx w9, w10, #10, #23940 sbfx x3, x5, #12, #53941 sbfx sp, x3, #7, #6942 sbfx w3, wsp, #10, #8943// CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]944// CHECK-ERROR-ARM64: error: expected integer in range [1, 32]945// CHECK-ERROR-NEXT: sbfx w1, w2, #0, #0946// CHECK-ERROR-NEXT: ^947// CHECK-ERROR-NEXT: error: invalid operand for instruction948// CHECK-ERROR-NEXT: sbfx wsp, w9, #0, #1949// CHECK-ERROR-NEXT: ^950// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]951// CHECK-ERROR-NEXT: sbfx w9, w10, #32, #1952// CHECK-ERROR-NEXT: ^953// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]954// CHECK-ERROR-NEXT: sbfx w11, w12, #32, #0955// CHECK-ERROR-NEXT: ^956// CHECK-ERROR-NEXT: error: requested extract overflows register957// CHECK-ERROR-NEXT: sbfx w9, w10, #10, #23958// CHECK-ERROR-NEXT: ^959// CHECK-ERROR-NEXT: error: requested extract overflows register960// CHECK-ERROR-NEXT: sbfx x3, x5, #12, #53961// CHECK-ERROR-NEXT: ^962// CHECK-ERROR-NEXT: error: invalid operand for instruction963// CHECK-ERROR-NEXT: sbfx sp, x3, #7, #6964// CHECK-ERROR-NEXT: ^965// CHECK-ERROR-NEXT: error: invalid operand for instruction966// CHECK-ERROR-NEXT: sbfx w3, wsp, #10, #8967// CHECK-ERROR-NEXT: ^968 969 bfi w1, w2, #0, #0970 bfi wsp, w9, #0, #1971 bfi w9, w10, #32, #1972 bfi w11, w12, #32, #0973 bfi w9, w10, #10, #23974 bfi x3, x5, #12, #53975 bfi sp, x3, #7, #6976 bfi w3, wsp, #10, #8977// CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]978// CHECK-ERROR-ARM64: error: expected integer in range [1, 32]979// CHECK-ERROR-NEXT: bfi w1, w2, #0, #0980// CHECK-ERROR-NEXT: ^981// CHECK-ERROR-NEXT: error: invalid operand for instruction982// CHECK-ERROR-NEXT: bfi wsp, w9, #0, #1983// CHECK-ERROR-NEXT: ^984// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]985// CHECK-ERROR-NEXT: bfi w9, w10, #32, #1986// CHECK-ERROR-NEXT: ^987// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]988// CHECK-ERROR-NEXT: bfi w11, w12, #32, #0989// CHECK-ERROR-NEXT: ^990// CHECK-ERROR-NEXT: error: requested insert overflows register991// CHECK-ERROR-NEXT: bfi w9, w10, #10, #23992// CHECK-ERROR-NEXT: ^993// CHECK-ERROR-NEXT: error: requested insert overflows register994// CHECK-ERROR-NEXT: bfi x3, x5, #12, #53995// CHECK-ERROR-NEXT: ^996// CHECK-ERROR-NEXT: error: invalid operand for instruction997// CHECK-ERROR-NEXT: bfi sp, x3, #7, #6998// CHECK-ERROR-NEXT: ^999// CHECK-ERROR-NEXT: error: invalid operand for instruction1000// CHECK-ERROR-NEXT: bfi w3, wsp, #10, #81001// CHECK-ERROR-NEXT: ^1002 1003 bfxil w1, w2, #0, #01004 bfxil wsp, w9, #0, #11005 bfxil w9, w10, #32, #11006 bfxil w11, w12, #32, #01007 bfxil w9, w10, #10, #231008 bfxil x3, x5, #12, #531009 bfxil sp, x3, #7, #61010 bfxil w3, wsp, #10, #81011// CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]1012// CHECK-ERROR-ARM64: error: expected integer in range [1, 32]1013// CHECK-ERROR-NEXT: bfxil w1, w2, #0, #01014// CHECK-ERROR-NEXT: ^1015// CHECK-ERROR-NEXT: error: invalid operand for instruction1016// CHECK-ERROR-NEXT: bfxil wsp, w9, #0, #11017// CHECK-ERROR-NEXT: ^1018// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1019// CHECK-ERROR-NEXT: bfxil w9, w10, #32, #11020// CHECK-ERROR-NEXT: ^1021// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1022// CHECK-ERROR-NEXT: bfxil w11, w12, #32, #01023// CHECK-ERROR-NEXT: ^1024// CHECK-ERROR-NEXT: error: requested extract overflows register1025// CHECK-ERROR-NEXT: bfxil w9, w10, #10, #231026// CHECK-ERROR-NEXT: ^1027// CHECK-ERROR-NEXT: error: requested extract overflows register1028// CHECK-ERROR-NEXT: bfxil x3, x5, #12, #531029// CHECK-ERROR-NEXT: ^1030// CHECK-ERROR-NEXT: error: invalid operand for instruction1031// CHECK-ERROR-NEXT: bfxil sp, x3, #7, #61032// CHECK-ERROR-NEXT: ^1033// CHECK-ERROR-NEXT: error: invalid operand for instruction1034// CHECK-ERROR-NEXT: bfxil w3, wsp, #10, #81035// CHECK-ERROR-NEXT: ^1036 1037 ubfiz w1, w2, #0, #01038 ubfiz wsp, w9, #0, #11039 ubfiz w9, w10, #32, #11040 ubfiz w11, w12, #32, #01041 ubfiz w9, w10, #10, #231042 ubfiz x3, x5, #12, #531043 ubfiz sp, x3, #7, #61044 ubfiz w3, wsp, #10, #81045// CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]1046// CHECK-ERROR-ARM64: error: expected integer in range [1, 32]1047// CHECK-ERROR-NEXT: ubfiz w1, w2, #0, #01048// CHECK-ERROR-NEXT: ^1049// CHECK-ERROR-NEXT: error: invalid operand for instruction1050// CHECK-ERROR-NEXT: ubfiz wsp, w9, #0, #11051// CHECK-ERROR-NEXT: ^1052// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1053// CHECK-ERROR-NEXT: ubfiz w9, w10, #32, #11054// CHECK-ERROR-NEXT: ^1055// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1056// CHECK-ERROR-NEXT: ubfiz w11, w12, #32, #01057// CHECK-ERROR-NEXT: ^1058// CHECK-ERROR-NEXT: error: requested insert overflows register1059// CHECK-ERROR-NEXT: ubfiz w9, w10, #10, #231060// CHECK-ERROR-NEXT: ^1061// CHECK-ERROR-NEXT: error: requested insert overflows register1062// CHECK-ERROR-NEXT: ubfiz x3, x5, #12, #531063// CHECK-ERROR-NEXT: ^1064// CHECK-ERROR-NEXT: error: invalid operand for instruction1065// CHECK-ERROR-NEXT: ubfiz sp, x3, #7, #61066// CHECK-ERROR-NEXT: ^1067// CHECK-ERROR-NEXT: error: invalid operand for instruction1068// CHECK-ERROR-NEXT: ubfiz w3, wsp, #10, #81069// CHECK-ERROR-NEXT: ^1070 1071 ubfx w1, w2, #0, #01072 ubfx wsp, w9, #0, #11073 ubfx w9, w10, #32, #11074 ubfx w11, w12, #32, #01075 ubfx w9, w10, #10, #231076 ubfx x3, x5, #12, #531077 ubfx sp, x3, #7, #61078 ubfx w3, wsp, #10, #81079// CHECK-ERROR-AARCH64: error: expected integer in range [<lsb>, 31]1080// CHECK-ERROR-ARM64: error: expected integer in range [1, 32]1081// CHECK-ERROR-NEXT: ubfx w1, w2, #0, #01082// CHECK-ERROR-NEXT: ^1083// CHECK-ERROR-NEXT: error: invalid operand for instruction1084// CHECK-ERROR-NEXT: ubfx wsp, w9, #0, #11085// CHECK-ERROR-NEXT: ^1086// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1087// CHECK-ERROR-NEXT: ubfx w9, w10, #32, #11088// CHECK-ERROR-NEXT: ^1089// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1090// CHECK-ERROR-NEXT: ubfx w11, w12, #32, #01091// CHECK-ERROR-NEXT: ^1092// CHECK-ERROR-NEXT: error: requested extract overflows register1093// CHECK-ERROR-NEXT: ubfx w9, w10, #10, #231094// CHECK-ERROR-NEXT: ^1095// CHECK-ERROR-NEXT: error: requested extract overflows register1096// CHECK-ERROR-NEXT: ubfx x3, x5, #12, #531097// CHECK-ERROR-NEXT: ^1098// CHECK-ERROR-NEXT: error: invalid operand for instruction1099// CHECK-ERROR-NEXT: ubfx sp, x3, #7, #61100// CHECK-ERROR-NEXT: ^1101// CHECK-ERROR-NEXT: error: invalid operand for instruction1102// CHECK-ERROR-NEXT: ubfx w3, wsp, #10, #81103// CHECK-ERROR-NEXT: ^1104 1105 bfc wsp, #3, #61106 bfc w4, #2, #311107 bfc sp, #0, #11108 bfc x6, #0, #01109// CHECK-ERROR: error: invalid operand for instruction1110// CHECK-ERROR-NEXT: bfc wsp, #3, #61111// CHECK-ERROR-NEXT: ^1112// CHECK-ERROR-NEXT: error: requested insert overflows register1113// CHECK-ERROR-NEXT: bfc w4, #2, #311114// CHECK-ERROR-NEXT: ^1115// CHECK-ERROR-NEXT: error: invalid operand for instruction1116// CHECK-ERROR-NEXT: bfc sp, #0, #11117// CHECK-ERROR-NEXT: ^1118// CHECK-ERROR-NEXT: error: expected integer in range [1, 32]1119// CHECK-ERROR-NEXT: bfc x6, #0, #01120// CHECK-ERROR-NEXT: ^1121 1122//------------------------------------------------------------------------------1123// Compare & branch (immediate)1124//------------------------------------------------------------------------------1125 1126 cbnz wsp, lbl1127 cbz sp, lbl1128 cbz x3, x51129// CHECK-ERROR: error: invalid operand for instruction1130// CHECK-ERROR-NEXT: cbnz wsp, lbl1131// CHECK-ERROR-NEXT: ^1132// CHECK-ERROR-NEXT: error: invalid operand for instruction1133// CHECK-ERROR-NEXT: cbz sp, lbl1134// CHECK-ERROR-NEXT: ^1135// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset1136// CHECK-ERROR-NEXT: cbz x3, x51137// CHECK-ERROR-NEXT: ^1138 1139 cbz w20, #10485761140 cbnz xzr, #-10485801141 cbz x29, #11142// CHECK-ERROR: error: expected label or encodable integer pc offset1143// CHECK-ERROR-NEXT: cbz w20, #10485761144// CHECK-ERROR-NEXT: ^1145// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset1146// CHECK-ERROR-NEXT: cbnz xzr, #-10485801147// CHECK-ERROR-NEXT: ^1148// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset1149// CHECK-ERROR-NEXT: cbz x29, #11150// CHECK-ERROR-NEXT: ^1151 1152/// Test "bad" names1153cbz w1, lsl1154// CHECK-ERROR: [[#@LINE-1]]:12: error: expected #imm after shift specifier1155 1156//------------------------------------------------------------------------------1157// Conditional branch (immediate)1158//------------------------------------------------------------------------------1159 1160 b.zf lbl1161// CHECK-ERROR: error: invalid condition code1162// CHECK-ERROR-NEXT: b.zf lbl1163// CHECK-ERROR-NEXT: ^1164 1165 b.eq #10485761166 b.ge #-10485801167 b.cc #11168// CHECK-ERROR: error: expected label or encodable integer pc offset1169// CHECK-ERROR-NEXT: b.eq #10485761170// CHECK-ERROR-NEXT: ^1171// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset1172// CHECK-ERROR-NEXT: b.ge #-10485801173// CHECK-ERROR-NEXT: ^1174// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset1175// CHECK-ERROR-NEXT: b.cc #11176// CHECK-ERROR-NEXT: ^1177 1178//------------------------------------------------------------------------------1179// Conditional compare (immediate)1180//------------------------------------------------------------------------------1181 1182 ccmp wsp, #4, #2, ne1183 ccmp w25, #-1, #15, hs1184 ccmp w3, #32, #0, ge1185 ccmp w19, #5, #-1, lt1186 ccmp w20, #7, #16, hs1187// CHECK-ERROR: error: invalid operand for instruction1188// CHECK-ERROR-NEXT: ccmp wsp, #4, #2, ne1189// CHECK-ERROR-NEXT: ^1190// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1191// CHECK-ERROR-NEXT: ccmp w25, #-1, #15, hs1192// CHECK-ERROR-NEXT: ^1193// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1194// CHECK-ERROR-NEXT: ccmp w3, #32, #0, ge1195// CHECK-ERROR-NEXT: ^1196// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1197// CHECK-ERROR-NEXT: ccmp w19, #5, #-1, lt1198// CHECK-ERROR-NEXT: ^1199// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1200// CHECK-ERROR-NEXT: ccmp w20, #7, #16, hs1201// CHECK-ERROR-NEXT: ^1202 1203 ccmp sp, #4, #2, ne1204 ccmp x25, #-1, #15, hs1205 ccmp x3, #32, #0, ge1206 ccmp x19, #5, #-1, lt1207 ccmp x20, #7, #16, hs1208// CHECK-ERROR: error: invalid operand for instruction1209// CHECK-ERROR-NEXT: ccmp sp, #4, #2, ne1210// CHECK-ERROR-NEXT: ^1211// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1212// CHECK-ERROR-NEXT: ccmp x25, #-1, #15, hs1213// CHECK-ERROR-NEXT: ^1214// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1215// CHECK-ERROR-NEXT: ccmp x3, #32, #0, ge1216// CHECK-ERROR-NEXT: ^1217// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1218// CHECK-ERROR-NEXT: ccmp x19, #5, #-1, lt1219// CHECK-ERROR-NEXT: ^1220// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1221// CHECK-ERROR-NEXT: ccmp x20, #7, #16, hs1222// CHECK-ERROR-NEXT: ^1223 1224 ccmn wsp, #4, #2, ne1225 ccmn w25, #-1, #15, hs1226 ccmn w3, #32, #0, ge1227 ccmn w19, #5, #-1, lt1228 ccmn w20, #7, #16, hs1229// CHECK-ERROR: error: invalid operand for instruction1230// CHECK-ERROR-NEXT: ccmn wsp, #4, #2, ne1231// CHECK-ERROR-NEXT: ^1232// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1233// CHECK-ERROR-NEXT: ccmn w25, #-1, #15, hs1234// CHECK-ERROR-NEXT: ^1235// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1236// CHECK-ERROR-NEXT: ccmn w3, #32, #0, ge1237// CHECK-ERROR-NEXT: ^1238// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1239// CHECK-ERROR-NEXT: ccmn w19, #5, #-1, lt1240// CHECK-ERROR-NEXT: ^1241// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1242// CHECK-ERROR-NEXT: ccmn w20, #7, #16, hs1243// CHECK-ERROR-NEXT: ^1244 1245 ccmn sp, #4, #2, ne1246 ccmn x25, #-1, #15, hs1247 ccmn x3, #32, #0, ge1248 ccmn x19, #5, #-1, lt1249 ccmn x20, #7, #16, hs1250// CHECK-ERROR: error: invalid operand for instruction1251// CHECK-ERROR-NEXT: ccmn sp, #4, #2, ne1252// CHECK-ERROR-NEXT: ^1253// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1254// CHECK-ERROR-NEXT: ccmn x25, #-1, #15, hs1255// CHECK-ERROR-NEXT: ^1256// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1257// CHECK-ERROR-NEXT: ccmn x3, #32, #0, ge1258// CHECK-ERROR-NEXT: ^1259// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1260// CHECK-ERROR-NEXT: ccmn x19, #5, #-1, lt1261// CHECK-ERROR-NEXT: ^1262// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1263// CHECK-ERROR-NEXT: ccmn x20, #7, #16, hs1264// CHECK-ERROR-NEXT: ^1265 1266//------------------------------------------------------------------------------1267// Conditional compare (register)1268//------------------------------------------------------------------------------1269 1270 ccmp wsp, w4, #2, ne1271 ccmp w3, wsp, #0, ge1272 ccmp w19, w5, #-1, lt1273 ccmp w20, w7, #16, hs1274// CHECK-ERROR: error: invalid operand for instruction1275// CHECK-ERROR-NEXT: ccmp wsp, w4, #2, ne1276// CHECK-ERROR-NEXT: ^1277// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1278// CHECK-ERROR-NEXT: ccmp w3, wsp, #0, ge1279// CHECK-ERROR-NEXT: ^1280// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1281// CHECK-ERROR-NEXT: ccmp w19, w5, #-1, lt1282// CHECK-ERROR-NEXT: ^1283// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1284// CHECK-ERROR-NEXT: ccmp w20, w7, #16, hs1285// CHECK-ERROR-NEXT: ^1286 1287 ccmp sp, x4, #2, ne1288 ccmp x25, sp, #15, hs1289 ccmp x19, x5, #-1, lt1290 ccmp x20, x7, #16, hs1291// CHECK-ERROR: error: invalid operand for instruction1292// CHECK-ERROR-NEXT: ccmp sp, x4, #2, ne1293// CHECK-ERROR-NEXT: ^1294// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1295// CHECK-ERROR-NEXT: ccmp x25, sp, #15, hs1296// CHECK-ERROR-NEXT: ^1297// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1298// CHECK-ERROR-NEXT: ccmp x19, x5, #-1, lt1299// CHECK-ERROR-NEXT: ^1300// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1301// CHECK-ERROR-NEXT: ccmp x20, x7, #16, hs1302// CHECK-ERROR-NEXT: ^1303 1304 ccmn wsp, w4, #2, ne1305 ccmn w25, wsp, #15, hs1306 ccmn w19, w5, #-1, lt1307 ccmn w20, w7, #16, hs1308// CHECK-ERROR: error: invalid operand for instruction1309// CHECK-ERROR-NEXT: ccmn wsp, w4, #2, ne1310// CHECK-ERROR-NEXT: ^1311// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1312// CHECK-ERROR-NEXT: ccmn w25, wsp, #15, hs1313// CHECK-ERROR-NEXT: ^1314// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1315// CHECK-ERROR-NEXT: ccmn w19, w5, #-1, lt1316// CHECK-ERROR-NEXT: ^1317// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1318// CHECK-ERROR-NEXT: ccmn w20, w7, #16, hs1319// CHECK-ERROR-NEXT: ^1320 1321 ccmn sp, x4, #2, ne1322 ccmn x25, sp, #15, hs1323 ccmn x19, x5, #-1, lt1324 ccmn x20, x7, #16, hs1325// CHECK-ERROR: error: invalid operand for instruction1326// CHECK-ERROR-NEXT: ccmn sp, x4, #2, ne1327// CHECK-ERROR-NEXT: ^1328// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1329// CHECK-ERROR-NEXT: ccmn x25, sp, #15, hs1330// CHECK-ERROR-NEXT: ^1331// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1332// CHECK-ERROR-NEXT: ccmn x19, x5, #-1, lt1333// CHECK-ERROR-NEXT: ^1334// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1335// CHECK-ERROR-NEXT: ccmn x20, x7, #16, hs1336// CHECK-ERROR-NEXT: ^1337 1338//------------------------------------------------------------------------------1339// Conditional select1340//------------------------------------------------------------------------------1341 1342 csel w4, wsp, w9, eq1343 csel wsp, w2, w3, ne1344 csel w10, w11, wsp, ge1345 csel w1, w2, w3, #31346 csel x4, sp, x9, eq1347 csel sp, x2, x3, ne1348 csel x10, x11, sp, ge1349 csel x1, x2, x3, #31350 csel x1, x2, x3, lsl #1, eq1351// CHECK-ERROR: error: invalid operand for instruction1352// CHECK-ERROR-NEXT: csel w4, wsp, w9, eq1353// CHECK-ERROR-NEXT: ^1354// CHECK-ERROR-NEXT: error: invalid operand for instruction1355// CHECK-ERROR-NEXT: csel wsp, w2, w3, ne1356// CHECK-ERROR-NEXT: ^1357// CHECK-ERROR-NEXT: error: invalid operand for instruction1358// CHECK-ERROR-NEXT: csel w10, w11, wsp, ge1359// CHECK-ERROR-NEXT: ^1360// CHECK-ERROR-NEXT: error: expected AArch64 condition code1361// CHECK-ERROR-NEXT: csel w1, w2, w3, #31362// CHECK-ERROR-NEXT: ^1363// CHECK-ERROR-NEXT: error: invalid operand for instruction1364// CHECK-ERROR-NEXT: csel x4, sp, x9, eq1365// CHECK-ERROR-NEXT: ^1366// CHECK-ERROR-NEXT: error: invalid operand for instruction1367// CHECK-ERROR-NEXT: csel sp, x2, x3, ne1368// CHECK-ERROR-NEXT: ^1369// CHECK-ERROR-NEXT: error: invalid operand for instruction1370// CHECK-ERROR-NEXT: csel x10, x11, sp, ge1371// CHECK-ERROR-NEXT: ^1372// CHECK-ERROR-NEXT: error: expected AArch64 condition code1373// CHECK-ERROR-NEXT: csel x1, x2, x3, #31374// CHECK-ERROR-NEXT: ^1375// CHECK-ERROR-NEXT: error: expected AArch64 condition code1376// CHECK-ERROR-NEXT: csel x1, x2, x3, lsl #1, eq1377// CHECK-ERROR-NEXT: ^1378 1379 csinc w20, w21, wsp, mi1380 csinc sp, x30, x29, eq1381// CHECK-ERROR: error: invalid operand for instruction1382// CHECK-ERROR-NEXT: csinc w20, w21, wsp, mi1383// CHECK-ERROR-NEXT: ^1384// CHECK-ERROR-NEXT: error: invalid operand for instruction1385// CHECK-ERROR-NEXT: csinc sp, x30, x29, eq1386// CHECK-ERROR-NEXT: ^1387 1388 csinv w20, wsp, wsp, mi1389 csinv sp, x30, x29, le1390// CHECK-ERROR: error: invalid operand for instruction1391// CHECK-ERROR-NEXT: csinv w20, wsp, wsp, mi1392// CHECK-ERROR-NEXT: ^1393// CHECK-ERROR-NEXT: error: invalid operand for instruction1394// CHECK-ERROR-NEXT: csinv sp, x30, x29, le1395// CHECK-ERROR-NEXT: ^1396 1397 csneg w20, w21, wsp, mi1398 csneg x0, sp, x29, le1399// CHECK-ERROR: error: invalid operand for instruction1400// CHECK-ERROR-NEXT: csneg w20, w21, wsp, mi1401// CHECK-ERROR-NEXT: ^1402// CHECK-ERROR-NEXT: error: invalid operand for instruction1403// CHECK-ERROR-NEXT: csneg x0, sp, x29, le1404// CHECK-ERROR-NEXT: ^1405 1406 cset wsp, lt1407 csetm sp, ge1408 cset w1, al1409 csetm x6, nv1410// CHECK-ERROR: error: invalid operand for instruction1411// CHECK-ERROR-NEXT: cset wsp, lt1412// CHECK-ERROR-NEXT: ^1413// CHECK-ERROR-NEXT: error: invalid operand for instruction1414// CHECK-ERROR-NEXT: csetm sp, ge1415// CHECK-ERROR-NEXT: ^1416// CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction1417// CHECK-ERROR-NEXT: cset w1, al1418// CHECK-ERROR-NEXT: ^1419// CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction1420// CHECK-ERROR-NEXT: csetm x6, nv1421// CHECK-ERROR-NEXT: ^1422 1423 cinc w3, wsp, ne1424 cinc sp, x9, eq1425 cinc x2, x0, nv1426// CHECK-ERROR: error: invalid operand for instruction1427// CHECK-ERROR-NEXT: cinc w3, wsp, ne1428// CHECK-ERROR-NEXT: ^1429// CHECK-ERROR-NEXT: error: invalid operand for instruction1430// CHECK-ERROR-NEXT: cinc sp, x9, eq1431// CHECK-ERROR-NEXT: ^1432// CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction1433// CHECK-ERROR-NEXT: cinc x2, x0, nv1434// CHECK-ERROR-NEXT: ^1435 1436 cinv w3, wsp, ne1437 cinv sp, x9, eq1438 cinv w8, x7, nv1439// CHECK-ERROR: error: invalid operand for instruction1440// CHECK-ERROR-NEXT: cinv w3, wsp, ne1441// CHECK-ERROR-NEXT: ^1442// CHECK-ERROR-NEXT: error: invalid operand for instruction1443// CHECK-ERROR-NEXT: cinv sp, x9, eq1444// CHECK-ERROR-NEXT: ^1445// CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction1446// CHECK-ERROR-NEXT: cinv w8, x7, nv1447// CHECK-ERROR-NEXT: ^1448 1449 cneg w3, wsp, ne1450 cneg sp, x9, eq1451 cneg x4, x5, al1452// CHECK-ERROR: error: invalid operand for instruction1453// CHECK-ERROR-NEXT: cneg w3, wsp, ne1454// CHECK-ERROR-NEXT: ^1455// CHECK-ERROR-NEXT: error: invalid operand for instruction1456// CHECK-ERROR-NEXT: cneg sp, x9, eq1457// CHECK-ERROR-NEXT: ^1458// CHECK-ERROR-NEXT: error: condition codes AL and NV are invalid for this instruction1459// CHECK-ERROR-NEXT: cneg x4, x5, al1460// CHECK-ERROR-NEXT: ^1461 1462//------------------------------------------------------------------------------1463// Data Processing (1 source)1464//------------------------------------------------------------------------------1465 rbit x23, w21466//CHECK-ERROR: error: invalid operand for instruction1467//CHECK-ERROR-NEXT: rbit x23, w21468 1469 cls sp, x21470//CHECK-ERROR: error: invalid operand for instruction1471//CHECK-ERROR-NEXT: cls sp, x21472 1473 clz wsp, w31474//CHECK-ERROR: error: invalid operand for instruction1475//CHECK-ERROR-NEXT: clz wsp, w31476 1477//------------------------------------------------------------------------------1478// Data Processing (2 sources)1479//------------------------------------------------------------------------------1480 udiv x23, w2, x181481//CHECK-ERROR: error: invalid operand for instruction1482//CHECK-ERROR-NEXT: udiv x23, w2, x181483 1484 lsl sp, x2, x41485//CHECK-ERROR: error: invalid operand for instruction1486//CHECK-ERROR-NEXT: lsl sp, x2, x41487 1488 asr wsp, w3, w91489//CHECK-ERROR: error: invalid operand for instruction1490//CHECK-ERROR-NEXT: asr wsp, w3, w91491 1492//------------------------------------------------------------------------------1493// Data Processing (3 sources)1494//------------------------------------------------------------------------------1495 1496 madd sp, x3, x9, x101497//CHECK-ERROR: error: invalid operand for instruction1498//CHECK-ERROR-NEXT: madd sp, x3, x9, x101499 1500//------------------------------------------------------------------------------1501// Exception generation1502//------------------------------------------------------------------------------1503 svc #-11504 hlt #655361505 dcps4 #431506 dcps41507// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 65535]1508// CHECK-ERROR-NEXT: svc #-11509// CHECK-ERROR-NEXT: ^1510// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 65535]1511// CHECK-ERROR-NEXT: hlt #655361512// CHECK-ERROR-NEXT: ^1513// CHECK-ERROR-NEXT: error: {{invalid instruction|unrecognized instruction mnemonic}}1514// CHECK-ERROR-NEXT: dcps4 #431515// CHECK-ERROR-NEXT: ^1516// CHECK-ERROR-NEXT: error: {{invalid instruction|unrecognized instruction mnemonic}}1517// CHECK-ERROR-NEXT: dcps41518// CHECK-ERROR-NEXT: ^1519 1520//------------------------------------------------------------------------------1521// Extract (immediate)1522//------------------------------------------------------------------------------1523 1524 extr w2, w20, w30, #-11525 extr w9, w19, w20, #321526// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1527// CHECK-ERROR-NEXT: extr w2, w20, w30, #-11528// CHECK-ERROR-NEXT: ^1529// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1530// CHECK-ERROR-NEXT: extr w9, w19, w20, #321531// CHECK-ERROR-NEXT: ^1532 1533 extr x10, x15, x20, #-11534 extr x20, x25, x30, #641535// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]1536// CHECK-ERROR-NEXT: extr x10, x15, x20, #-11537// CHECK-ERROR-NEXT: ^1538// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]1539// CHECK-ERROR-NEXT: extr x20, x25, x30, #641540// CHECK-ERROR-NEXT: ^1541 1542 ror w9, w10, #321543 ror x10, x11, #641544// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]1545// CHECK-ERROR-NEXT: ror w9, w10, #321546// CHECK-ERROR-NEXT: ^1547// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]1548// CHECK-ERROR-NEXT: ror x10, x11, #641549// CHECK-ERROR-NEXT: ^1550 1551//------------------------------------------------------------------------------1552// Floating-point compare1553//------------------------------------------------------------------------------1554 1555 fcmp s3, d21556// CHECK-ERROR-AARCH64: error: expected floating-point constant #0.01557// CHECK-ERROR-ARM64: error: invalid operand for instruction1558// CHECK-ERROR-NEXT: fcmp s3, d21559// CHECK-ERROR-NEXT: ^1560 1561 fcmp s9, #-0.01562 fcmp d3, #-0.01563 fcmp s1, #1.01564 fcmpe s30, #-0.01565// CHECK-ERROR: error: expected floating-point constant #0.01566// CHECK-ERROR-NEXT: fcmp s9, #-0.01567// CHECK-ERROR-NEXT: ^1568// CHECK-ERROR-NEXT: error: expected floating-point constant #0.01569// CHECK-ERROR-NEXT: fcmp d3, #-0.01570// CHECK-ERROR-NEXT: ^1571// CHECK-ERROR-NEXT: error: expected floating-point constant #0.01572// CHECK-ERROR-NEXT: fcmp s1, #1.01573// CHECK-ERROR-NEXT: ^1574// CHECK-ERROR-NEXT: error: expected floating-point constant #0.01575// CHECK-ERROR-NEXT: fcmpe s30, #-0.01576// CHECK-ERROR-NEXT: ^1577 1578//------------------------------------------------------------------------------1579// Floating-point conditional compare1580//------------------------------------------------------------------------------1581 1582 fccmp s19, s5, #-1, lt1583 fccmp s20, s7, #16, hs1584// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1585// CHECK-ERROR-NEXT: fccmp s19, s5, #-1, lt1586// CHECK-ERROR-NEXT: ^1587// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1588// CHECK-ERROR-NEXT: fccmp s20, s7, #16, hs1589// CHECK-ERROR-NEXT: ^1590 1591 fccmp d19, d5, #-1, lt1592 fccmp d20, d7, #16, hs1593// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1594// CHECK-ERROR-NEXT: fccmp d19, d5, #-1, lt1595// CHECK-ERROR-NEXT: ^1596// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1597// CHECK-ERROR-NEXT: fccmp d20, d7, #16, hs1598// CHECK-ERROR-NEXT: ^1599 1600 fccmpe s19, s5, #-1, lt1601 fccmpe s20, s7, #16, hs1602// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1603// CHECK-ERROR-NEXT: fccmpe s19, s5, #-1, lt1604// CHECK-ERROR-NEXT: ^1605// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1606// CHECK-ERROR-NEXT: fccmpe s20, s7, #16, hs1607// CHECK-ERROR-NEXT: ^1608 1609 fccmpe d19, d5, #-1, lt1610 fccmpe d20, d7, #16, hs1611// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1612// CHECK-ERROR-NEXT: fccmpe d19, d5, #-1, lt1613// CHECK-ERROR-NEXT: ^1614// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]1615// CHECK-ERROR-NEXT: fccmpe d20, d7, #16, hs1616// CHECK-ERROR-NEXT: ^1617 1618//------------------------------------------------------------------------------1619// Floating-point conditional compare1620//------------------------------------------------------------------------------1621 1622 fcsel q3, q20, q9, pl1623 fcsel h9, h10, h11, mi1624 fcsel b9, b10, b11, mi1625// CHECK-ERROR: error: invalid operand for instruction1626// CHECK-ERROR-NEXT: fcsel q3, q20, q9, pl1627// CHECK-ERROR-NEXT: ^1628// CHECK-ERROR-NEXT: error: instruction requires: fullfp161629// CHECK-ERROR-NEXT: fcsel h9, h10, h11, mi1630// CHECK-ERROR-NEXT: ^1631// CHECK-ERROR-NEXT: error: invalid operand for instruction1632// CHECK-ERROR-NEXT: fcsel b9, b10, b11, mi1633// CHECK-ERROR-NEXT: ^1634 1635//------------------------------------------------------------------------------1636// Floating-point data-processing (1 source)1637//------------------------------------------------------------------------------1638 1639 fmov d0, s31640 fcvt d0, d11641// CHECK-ERROR: error: expected compatible register or floating-point constant1642// CHECK-ERROR-NEXT: fmov d0, s31643// CHECK-ERROR-NEXT: ^1644// CHECK-ERROR-NEXT: error: invalid operand for instruction1645// CHECK-ERROR-NEXT: fcvt d0, d11646// CHECK-ERROR-NEXT: ^1647 1648 1649//------------------------------------------------------------------------------1650// Floating-point data-processing (2 sources)1651//------------------------------------------------------------------------------1652 1653 fadd s0, d3, d71654 fmaxnm d3, s19, d121655 fnmul d1, d9, s181656// CHECK-ERROR: error: invalid operand for instruction1657// CHECK-ERROR-NEXT: fadd s0, d3, d71658// CHECK-ERROR-NEXT: ^1659// CHECK-ERROR-NEXT: error: invalid operand for instruction1660// CHECK-ERROR-NEXT: fmaxnm d3, s19, d121661// CHECK-ERROR-NEXT: ^1662// CHECK-ERROR-NEXT: error: invalid operand for instruction1663// CHECK-ERROR-NEXT: fnmul d1, d9, s181664// CHECK-ERROR-NEXT: ^1665 1666//------------------------------------------------------------------------------1667// Floating-point data-processing (3 sources)1668//------------------------------------------------------------------------------1669 1670 fmadd b3, b4, b5, b61671 fmsub h1, h2, h3, h41672 fnmadd q3, q5, q6, q71673 fnmsub s2, s4, d5, h91674// CHECK-ERROR: error: invalid operand for instruction1675// CHECK-ERROR-NEXT: fmadd b3, b4, b5, b61676// CHECK-ERROR-NEXT: ^1677// CHECK-ERROR-NEXT: error: instruction requires: fullfp161678// CHECK-ERROR-NEXT: fmsub h1, h2, h3, h41679// CHECK-ERROR-NEXT: ^1680// CHECK-ERROR-NEXT: error: invalid operand for instruction1681// CHECK-ERROR-NEXT: fnmadd q3, q5, q6, q71682// CHECK-ERROR-NEXT: ^1683// CHECK-ERROR-NEXT: error: invalid operand for instruction1684// CHECK-ERROR-NEXT: fnmsub s2, s4, d5, h91685// CHECK-ERROR-NEXT: ^1686 1687//------------------------------------------------------------------------------1688// Floating-point conditional compare1689//------------------------------------------------------------------------------1690 1691 fcvtzs w13, s31, #01692 fcvtzs w19, s20, #331693 fcvtzs wsp, s19, #141694// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]1695// CHECK-ERROR-NEXT: fcvtzs w13, s31, #01696// CHECK-ERROR-NEXT: ^1697// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]1698// CHECK-ERROR-NEXT: fcvtzs w19, s20, #331699// CHECK-ERROR-NEXT: ^1700// CHECK-ERROR-NEXT: error: invalid operand for instruction1701// CHECK-ERROR-NEXT: fcvtzs wsp, s19, #141702// CHECK-ERROR-NEXT: ^1703 1704 fcvtzs x13, s31, #01705 fcvtzs x19, s20, #651706 fcvtzs sp, s19, #141707// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]1708// CHECK-ERROR-NEXT: fcvtzs x13, s31, #01709// CHECK-ERROR-NEXT: ^1710// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]1711// CHECK-ERROR-NEXT: fcvtzs x19, s20, #651712// CHECK-ERROR-NEXT: ^1713// CHECK-ERROR-NEXT: error: invalid operand for instruction1714// CHECK-ERROR-NEXT: fcvtzs sp, s19, #141715// CHECK-ERROR-NEXT: ^1716 1717 fcvtzu w13, s31, #01718 fcvtzu w19, s20, #331719 fcvtzu wsp, s19, #141720// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]1721// CHECK-ERROR-NEXT: fcvtzu w13, s31, #01722// CHECK-ERROR-NEXT: ^1723// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 32]1724// CHECK-ERROR-NEXT: fcvtzu w19, s20, #331725// CHECK-ERROR-NEXT: ^1726// CHECK-ERROR-NEXT: error: invalid operand for instruction1727// CHECK-ERROR-NEXT: fcvtzu wsp, s19, #141728// CHECK-ERROR-NEXT: ^1729 1730 fcvtzu x13, s31, #01731 fcvtzu x19, s20, #651732 fcvtzu sp, s19, #141733// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]1734// CHECK-ERROR-NEXT: fcvtzu x13, s31, #01735// CHECK-ERROR-NEXT: ^1736// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [1, 64]1737// CHECK-ERROR-NEXT: fcvtzu x19, s20, #651738// CHECK-ERROR-NEXT: ^1739// CHECK-ERROR-NEXT: error: invalid operand for instruction1740// CHECK-ERROR-NEXT: fcvtzu sp, s19, #141741// CHECK-ERROR-NEXT: ^1742 1743 scvtf w13, s31, #01744 scvtf w19, s20, #331745 scvtf wsp, s19, #141746// CHECK-ERROR-NEXT: error: invalid operand for instruction1747// CHECK-ERROR-NEXT: scvtf w13, s31, #01748// CHECK-ERROR-NEXT: ^1749// CHECK-ERROR-NEXT: error: invalid operand for instruction1750// CHECK-ERROR-NEXT: scvtf w19, s20, #331751// CHECK-ERROR-NEXT: ^1752// CHECK-ERROR-NEXT: error: invalid operand for instruction1753// CHECK-ERROR-NEXT: scvtf wsp, s19, #141754// CHECK-ERROR-NEXT: ^1755 1756 scvtf x13, s31, #01757 scvtf x19, s20, #651758 scvtf sp, s19, #141759// CHECK-ERROR-NEXT: error: invalid operand for instruction1760// CHECK-ERROR-NEXT: scvtf x13, s31, #01761// CHECK-ERROR-NEXT: ^1762// CHECK-ERROR-NEXT: error: invalid operand for instruction1763// CHECK-ERROR-NEXT: scvtf x19, s20, #651764// CHECK-ERROR-NEXT: ^1765// CHECK-ERROR-NEXT: error: invalid operand for instruction1766// CHECK-ERROR-NEXT: scvtf sp, s19, #141767// CHECK-ERROR-NEXT: ^1768 1769 ucvtf w13, s31, #01770 ucvtf w19, s20, #331771 ucvtf wsp, s19, #141772// CHECK-ERROR-NEXT: error: invalid operand for instruction1773// CHECK-ERROR-NEXT: ucvtf w13, s31, #01774// CHECK-ERROR-NEXT: ^1775// CHECK-ERROR-NEXT: error: invalid operand for instruction1776// CHECK-ERROR-NEXT: ucvtf w19, s20, #331777// CHECK-ERROR-NEXT: ^1778// CHECK-ERROR-NEXT: error: invalid operand for instruction1779// CHECK-ERROR-NEXT: ucvtf wsp, s19, #141780// CHECK-ERROR-NEXT: ^1781 1782 ucvtf x13, s31, #01783 ucvtf x19, s20, #651784 ucvtf sp, s19, #141785// CHECK-ERROR-NEXT: error: invalid operand for instruction1786// CHECK-ERROR-NEXT: ucvtf x13, s31, #01787// CHECK-ERROR-NEXT: ^1788// CHECK-ERROR-NEXT: error: invalid operand for instruction1789// CHECK-ERROR-NEXT: ucvtf x19, s20, #651790// CHECK-ERROR-NEXT: ^1791// CHECK-ERROR-NEXT: error: invalid operand for instruction1792// CHECK-ERROR-NEXT: ucvtf sp, s19, #141793// CHECK-ERROR-NEXT: ^1794 1795//------------------------------------------------------------------------------1796// Floating-point immediate1797//------------------------------------------------------------------------------1798 ;; Exponent too large1799 fmov d3, #0.06251800 fmov s2, #32.01801 fmov s2, #321802 fmov v0.4s, #-321803// CHECK-ERROR: error: expected compatible register or floating-point constant1804// CHECK-ERROR-NEXT: fmov d3, #0.06251805// CHECK-ERROR-NEXT: ^1806// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant1807// CHECK-ERROR-NEXT: fmov s2, #32.01808// CHECK-ERROR-NEXT: ^1809// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant1810// CHECK-ERROR-NEXT: fmov s2, #321811// CHECK-ERROR-NEXT: ^1812// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant1813// CHECK-ERROR-NEXT: fmov v0.4s, #-321814// CHECK-ERROR-NEXT: ^1815 1816 ;; Fraction too precise1817 fmov s9, #1.031251818 fmov s28, #1.968751819// CHECK-ERROR: error: expected compatible register or floating-point constant1820// CHECK-ERROR-NEXT: fmov s9, #1.031251821// CHECK-ERROR-NEXT: ^1822// CHECK-ERROR-NEXT: error: expected compatible register or floating-point constant1823// CHECK-ERROR-NEXT: fmov s28, #1.968751824// CHECK-ERROR-NEXT: ^1825 1826 ;; Explicitly encoded value too large1827 fmov s15, #0x1001828// CHECK-ERROR: error: encoded floating point value out of range1829// CHECK-ERROR-NEXT: fmov s15, #0x1001830// CHECK-ERROR-NEXT: ^1831 1832 ;; Not possible to fmov ZR to a whole vector1833 fmov v0.4s, #0.01834// CHECK-ERROR: error: expected compatible register or floating-point constant1835// CHECK-ERROR-NEXT: fmov v0.4s, #0.01836// CHECK-ERROR-NEXT: ^1837 1838//------------------------------------------------------------------------------1839// Floating-point <-> integer conversion1840//------------------------------------------------------------------------------1841 1842 fmov x3, v0.d[0]1843 fmov v29.1d[1], x21844 fmov x7, v0.d[2]1845 fcvtns sp, s51846 scvtf s6, wsp1847// CHECK-ERROR: error: expected lane specifier '[1]'1848// CHECK-ERROR-NEXT: fmov x3, v0.d[0]1849// CHECK-ERROR-NEXT: ^1850// CHECK-ERROR-AARCH64-NEXT: error: lane number incompatible with layout1851// CHECK-ERROR-ARM64-NEXT: error: invalid operand for instruction1852// CHECK-ERROR-NEXT: fmov v29.1d[1], x21853// CHECK-ERROR-NEXT: ^1854// CHECK-ERROR-AARCH64-NEXT: error: lane number incompatible with layout1855// CHECK-ERROR-ARM64-NEXT: error: expected lane specifier '[1]'1856// CHECK-ERROR-NEXT: fmov x7, v0.d[2]1857// CHECK-ERROR-NEXT: ^1858// CHECK-ERROR-NEXT: error: invalid operand for instruction1859// CHECK-ERROR-NEXT: fcvtns sp, s51860// CHECK-ERROR-NEXT: ^1861// CHECK-ERROR-NEXT: error: invalid operand for instruction1862// CHECK-ERROR-NEXT: scvtf s6, wsp1863// CHECK-ERROR-NEXT: ^1864 1865//------------------------------------------------------------------------------1866// Load-register (literal)1867//------------------------------------------------------------------------------1868 1869 ldr sp, some_label1870 ldrsw w3, somewhere1871 ldr v0, some_label1872// CHECK-ERROR: error: invalid operand for instruction1873// CHECK-ERROR-NEXT: ldr sp, some_label1874// CHECK-ERROR-NEXT: ^1875// CHECK-ERROR-NEXT: error: invalid operand for instruction1876// CHECK-ERROR-NEXT: ldrsw w3, somewhere1877// CHECK-ERROR-NEXT: ^1878// CHECK-ERROR-NEXT: error: invalid operand for instruction1879// CHECK-ERROR-NEXT: ldr v0, some_label1880// CHECK-ERROR-NEXT: ^1881 1882 ldrsw x2, #10485761883 ldr q0, #-10485801884 ldr x0, #21885// CHECK-ERROR: error: expected label or encodable integer pc offset1886// CHECK-ERROR-NEXT: ldrsw x2, #10485761887// CHECK-ERROR-NEXT: ^1888// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset1889// CHECK-ERROR-NEXT: ldr q0, #-10485801890// CHECK-ERROR-NEXT: ^1891// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset1892// CHECK-ERROR-NEXT: ldr x0, #21893// CHECK-ERROR-NEXT: ^1894 1895//------------------------------------------------------------------------------1896// Load/store exclusive1897//------------------------------------------------------------------------------1898 1899 stxrb w2, w3, [x4, #20]1900 stlxrh w10, w11, [w2]1901// CHECK-ERROR-AARCH64: error: expected '#0'1902// CHECK-ERROR-ARM64: error: index must be absent or #01903// CHECK-ERROR-NEXT: stxrb w2, w3, [x4, #20]1904// CHECK-ERROR-NEXT: ^1905// CHECK-ERROR: error: invalid operand for instruction1906// CHECK-ERROR-NEXT: stlxrh w10, w11, [w2]1907// CHECK-ERROR-NEXT: ^1908 1909 stlxr x20, w21, [sp]1910// CHECK-ERROR: error: invalid operand for instruction1911// CHECK-ERROR-NEXT: stlxr x20, w21, [sp]1912// CHECK-ERROR-NEXT: ^1913 1914 ldxr sp, [sp]1915// CHECK-ERROR: error: invalid operand for instruction1916// CHECK-ERROR-NEXT: ldxr sp, [sp]1917// CHECK-ERROR-NEXT: ^1918 1919 stxp x1, x2, x3, [x4]1920// CHECK-ERROR: error: invalid operand for instruction1921// CHECK-ERROR-NEXT: stxp x1, x2, x3, [x4]1922// CHECK-ERROR-NEXT: ^1923 1924 stlxp w5, x1, w4, [x5]1925// CHECK-ERROR: error: invalid operand for instruction1926// CHECK-ERROR-NEXT: stlxp w5, x1, w4, [x5]1927// CHECK-ERROR-NEXT: ^1928 1929 stlxp w17, w6, x7, [x22]1930// CHECK-ERROR: error: invalid operand for instruction1931// CHECK-ERROR-NEXT: stlxp w17, w6, x7, [x22]1932// CHECK-ERROR-NEXT: ^1933 1934//------------------------------------------------------------------------------1935// Load/store (unscaled immediate)1936//------------------------------------------------------------------------------1937 ldur v0, [x0, #0]1938 stur v0, [x0, #0]1939// CHECK-ERROR-NEXT: error: invalid operand for instruction1940// CHECK-ERROR-NEXT: ldur v0, [x0, #0]1941// CHECK-ERROR-NEXT: ^1942// CHECK-ERROR-NEXT: error: invalid operand for instruction1943// CHECK-ERROR-NEXT: stur v0, [x0, #0]1944// CHECK-ERROR-NEXT: ^1945 1946 ldurb w2, [sp, #256]1947 sturh w17, [x1, #256]1948 ldursw x20, [x1, #256]1949 ldur x12, [sp, #256]1950// CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]1951// CHECK-ERROR-NEXT: ldurb w2, [sp, #256]1952// CHECK-ERROR-NEXT: ^1953// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]1954// CHECK-ERROR-NEXT: sturh w17, [x1, #256]1955// CHECK-ERROR-NEXT: ^1956// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]1957// CHECK-ERROR-NEXT: ldursw x20, [x1, #256]1958// CHECK-ERROR-NEXT: ^1959// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]1960// CHECK-ERROR-NEXT: ldur x12, [sp, #256]1961// CHECK-ERROR-NEXT: ^1962 1963 stur h2, [x2, #-257]1964 stur b2, [x2, #-257]1965 ldursb x9, [sp, #-257]1966 ldur w2, [x30, #-257]1967 stur q9, [x20, #-257]1968// CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]1969// CHECK-ERROR-NEXT: stur h2, [x2, #-257]1970// CHECK-ERROR-NEXT: ^1971// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]1972// CHECK-ERROR-NEXT: stur b2, [x2, #-257]1973// CHECK-ERROR-NEXT: ^1974// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]1975// CHECK-ERROR-NEXT: ldursb x9, [sp, #-257]1976// CHECK-ERROR-NEXT: ^1977// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]1978// CHECK-ERROR-NEXT: ldur w2, [x30, #-257]1979// CHECK-ERROR-NEXT: ^1980// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]1981// CHECK-ERROR-NEXT: stur q9, [x20, #-257]1982// CHECK-ERROR-NEXT: ^1983 1984 prfum pstl3strm, [xzr]1985// CHECK-ERROR: error: invalid operand for instruction1986// CHECK-ERROR-NEXT: prfum pstl3strm, [xzr]1987// CHECK-ERROR-NEXT: ^1988 1989//------------------------------------------------------------------------------1990// Load-store register (immediate post-indexed)1991//------------------------------------------------------------------------------1992 ldr v0, [x0], #01993 str v0, [x0], #01994// CHECK-ERROR: error: invalid operand for instruction1995// CHECK-ERROR-NEXT: ldr v0, [x0], #01996// CHECK-ERROR-NEXT: ^1997// CHECK-ERROR: error: invalid operand for instruction1998// CHECK-ERROR-NEXT: str v0, [x0], #01999// CHECK-ERROR-NEXT: ^2000 2001 ldr x3, [x4, #25], #02002 ldr x4, [x9, #0], #42003// CHECK-ERROR-AARCH64: error: invalid operand for instruction2004// CHECK-ERROR-ARM64: error: invalid operand for instruction2005// CHECK-ERROR-NEXT: ldr x3, [x4, #25], #02006// CHECK-ERROR-NEXT: ^2007// CHECK-ERROR-AARCH64-NEXT: error: expected label or encodable integer pc offset2008// CHECK-ERROR-AARCH64-NEXT: ldr x4, [x9, #0], #42009// CHECK-ERROR-AARCH64-NEXT: ^2010 2011 strb w1, [x19], #2562012 strb w9, [sp], #-2572013 strh w1, [x19], #2562014 strh w9, [sp], #-2572015 str w1, [x19], #2562016 str w9, [sp], #-2572017// CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]2018// CHECK-ERROR-NEXT: strb w1, [x19], #2562019// CHECK-ERROR-NEXT: ^2020// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2021// CHECK-ERROR-NEXT: strb w9, [sp], #-2572022// CHECK-ERROR-NEXT: ^2023// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2024// CHECK-ERROR-NEXT: strh w1, [x19], #2562025// CHECK-ERROR-NEXT: ^2026// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2027// CHECK-ERROR-NEXT: strh w9, [sp], #-2572028// CHECK-ERROR-NEXT: ^2029// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2030// CHECK-ERROR-NEXT: str w1, [x19], #2562031// CHECK-ERROR-NEXT: ^2032// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2033// CHECK-ERROR-NEXT: str w9, [sp], #-2572034// CHECK-ERROR-NEXT: ^2035 2036 ldrb w1, [x19], #2562037 ldrb w9, [sp], #-2572038 ldrh w1, [x19], #2562039 ldrh w9, [sp], #-2572040 ldr w1, [x19], #2562041 ldr w9, [sp], #-2572042// CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]2043// CHECK-ERROR-NEXT: ldrb w1, [x19], #2562044// CHECK-ERROR-NEXT: ^2045// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2046// CHECK-ERROR-NEXT: ldrb w9, [sp], #-2572047// CHECK-ERROR-NEXT: ^2048// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2049// CHECK-ERROR-NEXT: ldrh w1, [x19], #2562050// CHECK-ERROR-NEXT: ^2051// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2052// CHECK-ERROR-NEXT: ldrh w9, [sp], #-2572053// CHECK-ERROR-NEXT: ^2054// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2055// CHECK-ERROR-NEXT: ldr w1, [x19], #2562056// CHECK-ERROR-NEXT: ^2057// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2058// CHECK-ERROR-NEXT: ldr w9, [sp], #-2572059// CHECK-ERROR-NEXT: ^2060 2061 ldrsb x2, [x3], #2562062 ldrsb x22, [x13], #-2572063 ldrsh x2, [x3], #2562064 ldrsh x22, [x13], #-2572065 ldrsw x2, [x3], #2562066 ldrsw x22, [x13], #-2572067// CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]2068// CHECK-ERROR-NEXT: ldrsb x2, [x3], #2562069// CHECK-ERROR-NEXT: ^2070// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2071// CHECK-ERROR-NEXT: ldrsb x22, [x13], #-2572072// CHECK-ERROR-NEXT: ^2073// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2074// CHECK-ERROR-NEXT: ldrsh x2, [x3], #2562075// CHECK-ERROR-NEXT: ^2076// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2077// CHECK-ERROR-NEXT: ldrsh x22, [x13], #-2572078// CHECK-ERROR-NEXT: ^2079// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2080// CHECK-ERROR-NEXT: ldrsw x2, [x3], #2562081// CHECK-ERROR-NEXT: ^2082// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2083// CHECK-ERROR-NEXT: ldrsw x22, [x13], #-2572084// CHECK-ERROR-NEXT: ^2085 2086 ldrsb w2, [x3], #2562087 ldrsb w22, [x13], #-2572088 ldrsh w2, [x3], #2562089 ldrsh w22, [x13], #-2572090// CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]2091// CHECK-ERROR-NEXT: ldrsb w2, [x3], #2562092// CHECK-ERROR-NEXT: ^2093// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2094// CHECK-ERROR-NEXT: ldrsb w22, [x13], #-2572095// CHECK-ERROR-NEXT: ^2096// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2097// CHECK-ERROR-NEXT: ldrsh w2, [x3], #2562098// CHECK-ERROR-NEXT: ^2099// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2100// CHECK-ERROR-NEXT: ldrsh w22, [x13], #-2572101// CHECK-ERROR-NEXT: ^2102 2103 str b3, [x3], #2562104 str b3, [x13], #-2572105 str h3, [x3], #2562106 str h3, [x13], #-2572107 str s3, [x3], #2562108 str s3, [x13], #-2572109 str d3, [x3], #2562110 str d3, [x13], #-2572111 str q3, [x3], #2562112 str q3, [x13], #-2572113// CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]2114// CHECK-ERROR-NEXT: str b3, [x3], #2562115// CHECK-ERROR-NEXT: ^2116// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2117// CHECK-ERROR-NEXT: str b3, [x13], #-2572118// CHECK-ERROR-NEXT: ^2119// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2120// CHECK-ERROR-NEXT: str h3, [x3], #2562121// CHECK-ERROR-NEXT: ^2122// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2123// CHECK-ERROR-NEXT: str h3, [x13], #-2572124// CHECK-ERROR-NEXT: ^2125// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2126// CHECK-ERROR-NEXT: str s3, [x3], #2562127// CHECK-ERROR-NEXT: ^2128// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2129// CHECK-ERROR-NEXT: str s3, [x13], #-2572130// CHECK-ERROR-NEXT: ^2131// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2132// CHECK-ERROR-NEXT: str d3, [x3], #2562133// CHECK-ERROR-NEXT: ^2134// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2135// CHECK-ERROR-NEXT: str d3, [x13], #-2572136// CHECK-ERROR-NEXT: ^2137// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2138// CHECK-ERROR-NEXT: str q3, [x3], #2562139// CHECK-ERROR-NEXT: ^2140// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2141// CHECK-ERROR-NEXT: str q3, [x13], #-2572142// CHECK-ERROR-NEXT: ^2143 2144 ldr b3, [x3], #2562145 ldr b3, [x13], #-2572146 ldr h3, [x3], #2562147 ldr h3, [x13], #-2572148 ldr s3, [x3], #2562149 ldr s3, [x13], #-2572150 ldr d3, [x3], #2562151 ldr d3, [x13], #-2572152 ldr q3, [x3], #2562153 ldr q3, [x13], #-2572154// CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]2155// CHECK-ERROR-NEXT: ldr b3, [x3], #2562156// CHECK-ERROR-NEXT: ^2157// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2158// CHECK-ERROR-NEXT: ldr b3, [x13], #-2572159// CHECK-ERROR-NEXT: ^2160// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2161// CHECK-ERROR-NEXT: ldr h3, [x3], #2562162// CHECK-ERROR-NEXT: ^2163// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2164// CHECK-ERROR-NEXT: ldr h3, [x13], #-2572165// CHECK-ERROR-NEXT: ^2166// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2167// CHECK-ERROR-NEXT: ldr s3, [x3], #2562168// CHECK-ERROR-NEXT: ^2169// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2170// CHECK-ERROR-NEXT: ldr s3, [x13], #-2572171// CHECK-ERROR-NEXT: ^2172// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2173// CHECK-ERROR-NEXT: ldr d3, [x3], #2562174// CHECK-ERROR-NEXT: ^2175// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2176// CHECK-ERROR-NEXT: ldr d3, [x13], #-2572177// CHECK-ERROR-NEXT: ^2178// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2179// CHECK-ERROR-NEXT: ldr q3, [x3], #2562180// CHECK-ERROR-NEXT: ^2181// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2182// CHECK-ERROR-NEXT: ldr q3, [x13], #-2572183// CHECK-ERROR-NEXT: ^2184 2185//------------------------------------------------------------------------------2186// Load-store register (immediate pre-indexed)2187//------------------------------------------------------------------------------2188 ldr v0, [x0, #0]!2189 str v0, [x0, #0]!2190// CHECK-ERROR: error: invalid operand for instruction2191// CHECK-ERROR-NEXT: ldr v0, [x0, #0]!2192// CHECK-ERROR-NEXT: ^2193// CHECK-ERROR: error: invalid operand for instruction2194// CHECK-ERROR-NEXT: str v0, [x0, #0]!2195// CHECK-ERROR-NEXT: ^2196 2197 ldr x3, [x4]!2198// CHECK-ERROR: error:2199// CHECK-ERROR-NEXT: ldr x3, [x4]!2200// CHECK-ERROR-NEXT: ^2201 2202 strb w1, [x19, #256]!2203 strb w9, [sp, #-257]!2204 strh w1, [x19, #256]!2205 strh w9, [sp, #-257]!2206 str w1, [x19, #256]!2207 str w9, [sp, #-257]!2208// CHECK-ERROR: error: invalid operand for instruction2209// CHECK-ERROR-NEXT: strb w1, [x19, #256]!2210// CHECK-ERROR-NEXT: ^2211// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2212// CHECK-ERROR-NEXT: strb w9, [sp, #-257]!2213// CHECK-ERROR-NEXT: ^2214// CHECK-ERROR-NEXT: error: invalid operand for instruction2215// CHECK-ERROR-NEXT: strh w1, [x19, #256]!2216// CHECK-ERROR-NEXT: ^2217// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2218// CHECK-ERROR-NEXT: strh w9, [sp, #-257]!2219// CHECK-ERROR-NEXT: ^2220// CHECK-ERROR-NEXT: error: invalid operand for instruction2221// CHECK-ERROR-NEXT: str w1, [x19, #256]!2222// CHECK-ERROR-NEXT: ^2223// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2224// CHECK-ERROR-NEXT: str w9, [sp, #-257]!2225// CHECK-ERROR-NEXT: ^2226 2227 ldrb w1, [x19, #256]!2228 ldrb w9, [sp, #-257]!2229 ldrh w1, [x19, #256]!2230 ldrh w9, [sp, #-257]!2231 ldr w1, [x19, #256]!2232 ldr w9, [sp, #-257]!2233// CHECK-ERROR: error: invalid operand for instruction2234// CHECK-ERROR-NEXT: ldrb w1, [x19, #256]!2235// CHECK-ERROR-NEXT: ^2236// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2237// CHECK-ERROR-NEXT: ldrb w9, [sp, #-257]!2238// CHECK-ERROR-NEXT: ^2239// CHECK-ERROR-NEXT: error: invalid operand for instruction2240// CHECK-ERROR-NEXT: ldrh w1, [x19, #256]!2241// CHECK-ERROR-NEXT: ^2242// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2243// CHECK-ERROR-NEXT: ldrh w9, [sp, #-257]!2244// CHECK-ERROR-NEXT: ^2245// CHECK-ERROR-NEXT: error: invalid operand for instruction2246// CHECK-ERROR-NEXT: ldr w1, [x19, #256]!2247// CHECK-ERROR-NEXT: ^2248// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2249// CHECK-ERROR-NEXT: ldr w9, [sp, #-257]!2250// CHECK-ERROR-NEXT: ^2251 2252 ldrsb x2, [x3, #256]!2253 ldrsb x22, [x13, #-257]!2254 ldrsh x2, [x3, #256]!2255 ldrsh x22, [x13, #-257]!2256 ldrsw x2, [x3, #256]!2257 ldrsw x22, [x13, #-257]!2258// CHECK-ERROR: error: invalid operand for instruction2259// CHECK-ERROR-NEXT: ldrsb x2, [x3, #256]!2260// CHECK-ERROR-NEXT: ^2261// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2262// CHECK-ERROR-NEXT: ldrsb x22, [x13, #-257]!2263// CHECK-ERROR-NEXT: ^2264// CHECK-ERROR-NEXT: error: invalid operand for instruction2265// CHECK-ERROR-NEXT: ldrsh x2, [x3, #256]!2266// CHECK-ERROR-NEXT: ^2267// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2268// CHECK-ERROR-NEXT: ldrsh x22, [x13, #-257]!2269// CHECK-ERROR-NEXT: ^2270// CHECK-ERROR-NEXT: error: invalid operand for instruction2271// CHECK-ERROR-NEXT: ldrsw x2, [x3, #256]!2272// CHECK-ERROR-NEXT: ^2273// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2274// CHECK-ERROR-NEXT: ldrsw x22, [x13, #-257]!2275// CHECK-ERROR-NEXT: ^2276 2277 ldrsb w2, [x3, #256]!2278 ldrsb w22, [x13, #-257]!2279 ldrsh w2, [x3, #256]!2280 ldrsh w22, [x13, #-257]!2281// CHECK-ERROR: error: invalid operand for instruction2282// CHECK-ERROR-NEXT: ldrsb w2, [x3, #256]!2283// CHECK-ERROR-NEXT: ^2284// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2285// CHECK-ERROR-NEXT: ldrsb w22, [x13, #-257]!2286// CHECK-ERROR-NEXT: ^2287// CHECK-ERROR-NEXT: error: invalid operand for instruction2288// CHECK-ERROR-NEXT: ldrsh w2, [x3, #256]!2289// CHECK-ERROR-NEXT: ^2290// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2291// CHECK-ERROR-NEXT: ldrsh w22, [x13, #-257]!2292// CHECK-ERROR-NEXT: ^2293 2294 str b3, [x3, #256]!2295 str b3, [x13, #-257]!2296 str h3, [x3, #256]!2297 str h3, [x13, #-257]!2298 str s3, [x3, #256]!2299 str s3, [x13, #-257]!2300 str d3, [x3, #256]!2301 str d3, [x13, #-257]!2302// CHECK-ERROR: error: invalid operand for instruction2303// CHECK-ERROR-NEXT: str b3, [x3, #256]!2304// CHECK-ERROR-NEXT: ^2305// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2306// CHECK-ERROR-NEXT: str b3, [x13, #-257]!2307// CHECK-ERROR-NEXT: ^2308// CHECK-ERROR-NEXT: error: invalid operand for instruction2309// CHECK-ERROR-NEXT: str h3, [x3, #256]!2310// CHECK-ERROR-NEXT: ^2311// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2312// CHECK-ERROR-NEXT: str h3, [x13, #-257]!2313// CHECK-ERROR-NEXT: ^2314// CHECK-ERROR-NEXT: error: invalid operand for instruction2315// CHECK-ERROR-NEXT: str s3, [x3, #256]!2316// CHECK-ERROR-NEXT: ^2317// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2318// CHECK-ERROR-NEXT: str s3, [x13, #-257]!2319// CHECK-ERROR-NEXT: ^2320// CHECK-ERROR-NEXT: error: invalid operand for instruction2321// CHECK-ERROR-NEXT: str d3, [x3, #256]!2322// CHECK-ERROR-NEXT: ^2323// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2324// CHECK-ERROR-NEXT: str d3, [x13, #-257]!2325// CHECK-ERROR-NEXT: ^2326 2327 ldr b3, [x3, #256]!2328 ldr b3, [x13, #-257]!2329 ldr h3, [x3, #256]!2330 ldr h3, [x13, #-257]!2331 ldr s3, [x3, #256]!2332 ldr s3, [x13, #-257]!2333 ldr d3, [x3, #256]!2334 ldr d3, [x13, #-257]!2335// CHECK-ERROR: error: invalid operand for instruction2336// CHECK-ERROR-NEXT: ldr b3, [x3, #256]!2337// CHECK-ERROR-NEXT: ^2338// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2339// CHECK-ERROR-NEXT: ldr b3, [x13, #-257]!2340// CHECK-ERROR-NEXT: ^2341// CHECK-ERROR-NEXT: error: invalid operand for instruction2342// CHECK-ERROR-NEXT: ldr h3, [x3, #256]!2343// CHECK-ERROR-NEXT: ^2344// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2345// CHECK-ERROR-NEXT: ldr h3, [x13, #-257]!2346// CHECK-ERROR-NEXT: ^2347// CHECK-ERROR-NEXT: error: invalid operand for instruction2348// CHECK-ERROR-NEXT: ldr s3, [x3, #256]!2349// CHECK-ERROR-NEXT: ^2350// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2351// CHECK-ERROR-NEXT: ldr s3, [x13, #-257]!2352// CHECK-ERROR-NEXT: ^2353// CHECK-ERROR-NEXT: error: invalid operand for instruction2354// CHECK-ERROR-NEXT: ldr d3, [x3, #256]!2355// CHECK-ERROR-NEXT: ^2356// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2357// CHECK-ERROR-NEXT: ldr d3, [x13, #-257]!2358// CHECK-ERROR-NEXT: ^2359 2360//------------------------------------------------------------------------------2361// Load/store (unprivileged)2362//------------------------------------------------------------------------------2363 2364 ldtrb w2, [sp, #256]2365 sttrh w17, [x1, #256]2366 ldtrsw x20, [x1, #256]2367 ldtr x12, [sp, #256]2368// CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]2369// CHECK-ERROR-NEXT: ldtrb w2, [sp, #256]2370// CHECK-ERROR-NEXT: ^2371// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2372// CHECK-ERROR-NEXT: sttrh w17, [x1, #256]2373// CHECK-ERROR-NEXT: ^2374// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2375// CHECK-ERROR-NEXT: ldtrsw x20, [x1, #256]2376// CHECK-ERROR-NEXT: ^2377// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2378// CHECK-ERROR-NEXT: ldtr x12, [sp, #256]2379// CHECK-ERROR-NEXT: ^2380 2381 sttr h2, [x2, #-257]2382 sttr b2, [x2, #-257]2383 ldtrsb x9, [sp, #-257]2384 ldtr w2, [x30, #-257]2385 sttr q9, [x20, #-257]2386// CHECK-ERROR: error: invalid operand for instruction2387// CHECK-ERROR-NEXT: sttr h2, [x2, #-257]2388// CHECK-ERROR-NEXT: ^2389// CHECK-ERROR-NEXT: error: invalid operand for instruction2390// CHECK-ERROR-NEXT: sttr b2, [x2, #-257]2391// CHECK-ERROR-NEXT: ^2392// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2393// CHECK-ERROR-NEXT: ldtrsb x9, [sp, #-257]2394// CHECK-ERROR-NEXT: ^2395// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2396// CHECK-ERROR-NEXT: ldtr w2, [x30, #-257]2397// CHECK-ERROR-NEXT: ^2398// CHECK-ERROR-NEXT: error: invalid operand for instruction2399// CHECK-ERROR-NEXT: sttr q9, [x20, #-257]2400// CHECK-ERROR-NEXT: ^2401 2402 2403//------------------------------------------------------------------------------2404// Load/store (unsigned immediate)2405//------------------------------------------------------------------------------2406 ldr v0, [x0, #0]2407 str v0, [x0, #0]2408// CHECK-ERROR: error: invalid operand for instruction2409// CHECK-ERROR-NEXT: ldr v0, [x0, #0]2410// CHECK-ERROR-NEXT: ^2411// CHECK-ERROR: error: invalid operand for instruction2412// CHECK-ERROR-NEXT: str v0, [x0, #0]2413// CHECK-ERROR-NEXT: ^2414 2415//// Out of range immediates2416 ldr q0, [x11, #65536]2417 ldr x0, [sp, #32768]2418 ldr w0, [x4, #16384]2419 ldrh w2, [x21, #8192]2420 ldrb w3, [x12, #4096]2421// CHECK-ERROR: error: {{expected|index must be an}} integer in range [-256, 255]2422// CHECK-ERROR-NEXT: ldr q0, [x11, #65536]2423// CHECK-ERROR-NEXT: ^2424// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2425// CHECK-ERROR-NEXT: ldr x0, [sp, #32768]2426// CHECK-ERROR-NEXT: ^2427// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2428// CHECK-ERROR-NEXT: ldr w0, [x4, #16384]2429// CHECK-ERROR-NEXT: ^2430// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2431// CHECK-ERROR-NEXT: ldrh w2, [x21, #8192]2432// CHECK-ERROR-NEXT: ^2433// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2434// CHECK-ERROR-NEXT: ldrb w3, [x12, #4096]2435// CHECK-ERROR-NEXT: ^2436 2437//// Misaligned addresses2438 ldr w0, [x0, #2]2439 ldrsh w2, [x0, #123]2440 str q0, [x0, #8]2441// CHECK-ERROR-AARCH64: error: too few operands for instruction2442// CHECK-ERROR-AARCH64-NEXT: ldr w0, [x0, #2]2443// CHECK-ERROR-AARCH64-NEXT: ^2444// CHECK-ERROR-AARCH64-NEXT: error: too few operands for instruction2445// CHECK-ERROR-AARCH64-NEXT: ldrsh w2, [x0, #123]2446// CHECK-ERROR-AARCH64-NEXT: ^2447// CHECK-ERROR-AARCH64-NEXT: error: too few operands for instruction2448// CHECK-ERROR-AARCH64-NEXT: str q0, [x0, #8]2449// CHECK-ERROR-AARCH64-NEXT: ^2450 2451//// 32-bit addresses2452 ldr w0, [w20]2453 ldrsh x3, [wsp]2454// CHECK-ERROR: error: invalid operand for instruction2455// CHECK-ERROR-NEXT: ldr w0, [w20]2456// CHECK-ERROR-NEXT: ^2457// CHECK-ERROR-NEXT: error: invalid operand for instruction2458// CHECK-ERROR-NEXT: ldrsh x3, [wsp]2459// CHECK-ERROR-NEXT: ^2460 2461//// Store things2462 strb w0, [wsp]2463 strh w31, [x23, #1]2464 str x5, [x22, #12]2465 str w7, [x12, #16384]2466// CHECK-ERROR: error: invalid operand for instruction2467// CHECK-ERROR-NEXT: strb w0, [wsp]2468// CHECK-ERROR-NEXT: ^2469// CHECK-ERROR-AARCH64: error: invalid operand for instruction2470// CHECK-ERROR-AARCH64-NEXT: strh w31, [x23, #1]2471// CHECK-ERROR-AARCH64-NEXT: ^2472// CHECK-ERROR-AARCH64-NEXT: error: too few operands for instruction2473// CHECK-ERROR-AARCH64-NEXT: str x5, [x22, #12]2474// CHECK-ERROR-AARCH64-NEXT: ^2475// CHECK-ERROR-NEXT: error: {{expected|index must be an}} integer in range [-256, 255]2476// CHECK-ERROR-NEXT: str w7, [x12, #16384]2477// CHECK-ERROR-NEXT: ^2478 2479//// Bad PRFMs2480 prfm #-1, [sp]2481 prfm #32, [sp, #8]2482 prfm pldl1strm, [w3, #8]2483 prfm wibble, [sp]2484// CHECK-ERROR-AARCH64: error: Invalid immediate for instruction2485// CHECK-ERROR-ARM64: error: prefetch operand out of range, [0,31] expected2486// CHECK-ERROR-NEXT: prfm #-1, [sp]2487// CHECK-ERROR-NEXT: ^2488// CHECK-ERROR-AARCH64-NEXT: error: Invalid immediate for instruction2489// CHECK-ERROR-ARM64-NEXT: error: prefetch operand out of range, [0,31] expected2490// CHECK-ERROR-NEXT: prfm #32, [sp, #8]2491// CHECK-ERROR-NEXT: ^2492// CHECK-ERROR-NEXT: error: invalid operand for instruction2493// CHECK-ERROR-NEXT: prfm pldl1strm, [w3, #8]2494// CHECK-ERROR-NEXT: ^2495// CHECK-ERROR-AARCH64-NEXT: error: operand specifier not recognised2496// CHECK-ERROR-ARM64-NEXT: error: prefetch hint expected2497// CHECK-ERROR-NEXT: prfm wibble, [sp]2498// CHECK-ERROR-NEXT: ^2499 2500//------------------------------------------------------------------------------2501// Load/store register (register offset)2502//------------------------------------------------------------------------------2503 ldr v0, [x0, xzr]2504 ldr v0, [x0, x1, lsl #0]2505 ldr v0, [x0, x1, lsl #0]2506 str v0, [x0, xzr]2507 str v0, [x0, x1, lsl #0]2508 str v0, [x0, x1, lsl #0]2509// CHECK-ERROR-NEXT: error: invalid operand for instruction2510// CHECK-ERROR-NEXT: ldr v0, [x0, xzr]2511// CHECK-ERROR-NEXT: ^2512// CHECK-ERROR-NEXT: error: invalid operand for instruction2513// CHECK-ERROR-NEXT: ldr v0, [x0, x1, lsl #0]2514// CHECK-ERROR-NEXT: ^2515// CHECK-ERROR-NEXT: error: invalid operand for instruction2516// CHECK-ERROR-NEXT: ldr v0, [x0, x1, lsl #0]2517// CHECK-ERROR-NEXT: ^2518// CHECK-ERROR-NEXT: error: invalid operand for instruction2519// CHECK-ERROR-NEXT: str v0, [x0, xzr]2520// CHECK-ERROR-NEXT: ^2521// CHECK-ERROR-NEXT: error: invalid operand for instruction2522// CHECK-ERROR-NEXT: str v0, [x0, x1, lsl #0]2523// CHECK-ERROR-NEXT: ^2524// CHECK-ERROR-NEXT: error: invalid operand for instruction2525// CHECK-ERROR-NEXT: str v0, [x0, x1, lsl #0]2526// CHECK-ERROR-NEXT: ^2527 2528 ldr w3, [xzr, x3]2529 ldr w4, [x0, x4, lsl]2530 ldr w9, [x5, x5, uxtw]2531 ldr w10, [x6, x9, sxtw #2]2532 ldr w11, [x7, w2, lsl #2]2533 ldr w12, [x8, w1, sxtx]2534// CHECK-ERROR-NEXT: error: invalid operand for instruction2535// CHECK-ERROR-NEXT: ldr w3, [xzr, x3]2536// CHECK-ERROR-NEXT: ^2537// CHECK-ERROR-NEXT: error: expected #imm after shift specifier2538// CHECK-ERROR-NEXT: ldr w4, [x0, x4, lsl]2539// CHECK-ERROR-NEXT: ^2540// CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #22541// CHECK-ERROR-NEXT: ldr w9, [x5, x5, uxtw]2542// CHECK-ERROR-NEXT: ^2543// CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #22544// CHECK-ERROR-NEXT: ldr w10, [x6, x9, sxtw #2]2545// CHECK-ERROR-NEXT: ^2546// CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #22547// CHECK-ERROR-NEXT: ldr w11, [x7, w2, lsl #2]2548// CHECK-ERROR-NEXT: ^2549// CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #22550// CHECK-ERROR-NEXT: ldr w12, [x8, w1, sxtx]2551// CHECK-ERROR-NEXT: ^2552 2553 ldrsb w9, [x4, x2, lsl #-1]2554 strb w9, [x4, x2, lsl #1]2555// CHECK-ERROR-NEXT: error: expected integer shift amount2556// CHECK-ERROR-NEXT: ldrsb w9, [x4, x2, lsl #-1]2557// CHECK-ERROR-NEXT: ^2558// CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #02559// CHECK-ERROR-NEXT: strb w9, [x4, x2, lsl #1]2560// CHECK-ERROR-NEXT: ^2561 2562 ldrsh w9, [x4, x2, lsl #-1]2563 ldr h13, [x4, w2, uxtw #2]2564// CHECK-ERROR-NEXT: error: expected integer shift amount2565// CHECK-ERROR-NEXT: ldrsh w9, [x4, x2, lsl #-1]2566// CHECK-ERROR-NEXT: ^2567// CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #12568// CHECK-ERROR-NEXT: ldr h13, [x4, w2, uxtw #2]2569// CHECK-ERROR-NEXT: ^2570 2571 str w9, [x5, w9, sxtw #-1]2572 str s3, [sp, w9, uxtw #1]2573 ldrsw x9, [x15, x4, sxtx #3]2574// CHECK-ERROR-NEXT: error: expected integer shift amount2575// CHECK-ERROR-NEXT: str w9, [x5, w9, sxtw #-1]2576// CHECK-ERROR-NEXT: ^2577// CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #22578// CHECK-ERROR-NEXT: str s3, [sp, w9, uxtw #1]2579// CHECK-ERROR-NEXT: ^2580// CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #22581// CHECK-ERROR-NEXT: ldrsw x9, [x15, x4, sxtx #3]2582// CHECK-ERROR-NEXT: ^2583 2584 str xzr, [x5, x9, sxtx #-1]2585 prfm pldl3keep, [sp, x20, lsl #2]2586 ldr d3, [x20, wzr, uxtw #4]2587// CHECK-ERROR-NEXT: error: expected integer shift amount2588// CHECK-ERROR-NEXT: str xzr, [x5, x9, sxtx #-1]2589// CHECK-ERROR-NEXT: ^2590// CHECK-ERROR-NEXT: error: expected 'lsl' or 'sxtx' with optional shift of #0 or #32591// CHECK-ERROR-NEXT: prfm pldl3keep, [sp, x20, lsl #2]2592// CHECK-ERROR-NEXT: ^2593// CHECK-ERROR-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #32594// CHECK-ERROR-NEXT: ldr d3, [x20, wzr, uxtw #4]2595// CHECK-ERROR-NEXT: ^2596 2597 ldr q5, [sp, x2, lsl #-1]2598 ldr q10, [x20, w4, uxtw #2]2599 str q21, [x20, w4, uxtw #5]2600// CHECK-ERROR-NEXT: error: expected integer shift amount2601// CHECK-ERROR-NEXT: ldr q5, [sp, x2, lsl #-1]2602// CHECK-ERROR-NEXT: ^2603// CHECK-ERROR-AARCH64-NEXT: error: expected 'lsl' or 'sxtw' with optional shift of #0 or #42604// CHECK-ERROR-ARM64-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #42605// CHECK-ERROR-NEXT: ldr q10, [x20, w4, uxtw #2]2606// CHECK-ERROR-NEXT: ^2607// CHECK-ERROR-AARCH64-NEXT: error: expected 'lsl' or 'sxtw' with optional shift of #0 or #42608// CHECK-ERROR-ARM64-NEXT: error: expected 'uxtw' or 'sxtw' with optional shift of #0 or #42609// CHECK-ERROR-NEXT: str q21, [x20, w4, uxtw #5]2610// CHECK-ERROR-NEXT: ^2611 2612//------------------------------------------------------------------------------2613// Load/store register pair (offset)2614//------------------------------------------------------------------------------2615 ldp v0, v1, [x0, #0]2616 stp v0, v1, [x0, #0]2617// CHECK-ERROR-NEXT: error: invalid operand for instruction2618// CHECK-ERROR-NEXT: ldp v0, v1, [x0, #0]2619// CHECK-ERROR-NEXT: ^2620// CHECK-ERROR-NEXT: error: invalid operand for instruction2621// CHECK-ERROR-NEXT: stp v0, v1, [x0, #0]2622// CHECK-ERROR-NEXT: ^2623 2624 ldp w3, w2, [x4, #1]2625 stp w1, w2, [x3, #253]2626 stp w9, w10, [x5, #256]2627 ldp w11, w12, [x9, #-260]2628 stp wsp, w9, [sp]2629// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2630// CHECK-ERROR-NEXT: ldp w3, w2, [x4, #1]2631// CHECK-ERROR-NEXT: ^2632// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2633// CHECK-ERROR-NEXT: stp w1, w2, [x3, #253]2634// CHECK-ERROR-NEXT: ^2635// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2636// CHECK-ERROR-NEXT: stp w9, w10, [x5, #256]2637// CHECK-ERROR-NEXT: ^2638// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2639// CHECK-ERROR-NEXT: ldp w11, w12, [x9, #-260]2640// CHECK-ERROR-NEXT: ^2641// CHECK-ERROR-NEXT: error: invalid operand for instruction2642// CHECK-ERROR-NEXT: stp wsp, w9, [sp]2643// CHECK-ERROR-NEXT: ^2644 2645 ldpsw x9, x2, [sp, #2]2646 ldpsw x1, x2, [x10, #256]2647 ldpsw x3, x4, [x11, #-260]2648// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2649// CHECK-ERROR-NEXT: ldpsw x9, x2, [sp, #2]2650// CHECK-ERROR-NEXT: ^2651// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2652// CHECK-ERROR-NEXT: ldpsw x1, x2, [x10, #256]2653// CHECK-ERROR-NEXT: ^2654// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2655// CHECK-ERROR-NEXT: ldpsw x3, x4, [x11, #-260]2656// CHECK-ERROR-NEXT: ^2657 2658 ldp x2, x5, [sp, #4]2659 ldp x5, x6, [x9, #512]2660 stp x7, x8, [x10, #-520]2661// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2662// CHECK-ERROR-NEXT: ldp x2, x5, [sp, #4]2663// CHECK-ERROR-NEXT: ^2664// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2665// CHECK-ERROR-NEXT: ldp x5, x6, [x9, #512]2666// CHECK-ERROR-NEXT: ^2667// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2668// CHECK-ERROR-NEXT: stp x7, x8, [x10, #-520]2669// CHECK-ERROR-NEXT: ^2670 2671 ldp sp, x3, [x10]2672 stp x3, sp, [x9]2673// CHECK-ERROR: error: invalid operand for instruction2674// CHECK-ERROR-NEXT: ldp sp, x3, [x10]2675// CHECK-ERROR-NEXT: ^2676// CHECK-ERROR-NEXT: error: invalid operand for instruction2677// CHECK-ERROR-NEXT: stp x3, sp, [x9]2678// CHECK-ERROR-NEXT: ^2679 2680 stp s3, s5, [sp, #-2]2681 ldp s6, s26, [x4, #-260]2682 stp s13, s19, [x5, #256]2683// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2684// CHECK-ERROR-NEXT: stp s3, s5, [sp, #-2]2685// CHECK-ERROR-NEXT: ^2686// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2687// CHECK-ERROR-NEXT: ldp s6, s26, [x4, #-260]2688// CHECK-ERROR-NEXT: ^2689// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2690// CHECK-ERROR-NEXT: stp s13, s19, [x5, #256]2691// CHECK-ERROR-NEXT: ^2692 2693 ldp d3, d4, [xzr]2694 ldp d5, d6, [x0, #512]2695 stp d7, d8, [x0, #-520]2696// CHECK-ERROR: error: invalid operand for instruction2697// CHECK-ERROR-NEXT: ldp d3, d4, [xzr]2698// CHECK-ERROR-NEXT: ^2699// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2700// CHECK-ERROR-NEXT: ldp d5, d6, [x0, #512]2701// CHECK-ERROR-NEXT: ^2702// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2703// CHECK-ERROR-NEXT: stp d7, d8, [x0, #-520]2704// CHECK-ERROR-NEXT: ^2705 2706 ldp d3, q2, [sp]2707 ldp q3, q5, [sp, #8]2708 stp q20, q25, [x5, #1024]2709 ldp q30, q15, [x23, #-1040]2710// CHECK-ERROR: error: invalid operand for instruction2711// CHECK-ERROR-NEXT: ldp d3, q2, [sp]2712// CHECK-ERROR-NEXT: ^2713// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]2714// CHECK-ERROR-NEXT: ldp q3, q5, [sp, #8]2715// CHECK-ERROR-NEXT: ^2716// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]2717// CHECK-ERROR-NEXT: stp q20, q25, [x5, #1024]2718// CHECK-ERROR-NEXT: ^2719// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]2720// CHECK-ERROR-NEXT: ldp q30, q15, [x23, #-1040]2721// CHECK-ERROR-NEXT: ^2722 2723//------------------------------------------------------------------------------2724// Load/store register pair (post-indexed)2725//------------------------------------------------------------------------------2726 ldp v0, v1, [x0], #02727 stp v0, v1, [x0], #02728// CHECK-ERROR-NEXT: error: invalid operand for instruction2729// CHECK-ERROR-NEXT: ldp v0, v1, [x0], #02730// CHECK-ERROR-NEXT: ^2731// CHECK-ERROR-NEXT: error: invalid operand for instruction2732// CHECK-ERROR-NEXT: stp v0, v1, [x0], #02733// CHECK-ERROR-NEXT: ^2734 2735 ldp w3, w2, [x4], #12736 stp w1, w2, [x3], #2532737 stp w9, w10, [x5], #2562738 ldp w11, w12, [x9], #-2602739 stp wsp, w9, [sp], #02740// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2741// CHECK-ERROR-NEXT: ldp w3, w2, [x4], #12742// CHECK-ERROR-NEXT: ^2743// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2744// CHECK-ERROR-NEXT: stp w1, w2, [x3], #2532745// CHECK-ERROR-NEXT: ^2746// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2747// CHECK-ERROR-NEXT: stp w9, w10, [x5], #2562748// CHECK-ERROR-NEXT: ^2749// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2750// CHECK-ERROR-NEXT: ldp w11, w12, [x9], #-2602751// CHECK-ERROR-NEXT: ^2752// CHECK-ERROR-NEXT: error: invalid operand for instruction2753// CHECK-ERROR-NEXT: stp wsp, w9, [sp], #02754// CHECK-ERROR-NEXT: ^2755 2756 ldpsw x9, x2, [sp], #22757 ldpsw x1, x2, [x10], #2562758 ldpsw x3, x4, [x11], #-2602759// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2760// CHECK-ERROR-NEXT: ldpsw x9, x2, [sp], #22761// CHECK-ERROR-NEXT: ^2762// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2763// CHECK-ERROR-NEXT: ldpsw x1, x2, [x10], #2562764// CHECK-ERROR-NEXT: ^2765// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2766// CHECK-ERROR-NEXT: ldpsw x3, x4, [x11], #-2602767// CHECK-ERROR-NEXT: ^2768 2769 ldp x2, x5, [sp], #42770 ldp x5, x6, [x9], #5122771 stp x7, x8, [x10], #-5202772// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2773// CHECK-ERROR-NEXT: ldp x2, x5, [sp], #42774// CHECK-ERROR-NEXT: ^2775// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2776// CHECK-ERROR-NEXT: ldp x5, x6, [x9], #5122777// CHECK-ERROR-NEXT: ^2778// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2779// CHECK-ERROR-NEXT: stp x7, x8, [x10], #-5202780// CHECK-ERROR-NEXT: ^2781 2782 ldp sp, x3, [x10], #02783 stp x3, sp, [x9], #02784// CHECK-ERROR: error: invalid operand for instruction2785// CHECK-ERROR-NEXT: ldp sp, x3, [x10], #02786// CHECK-ERROR-NEXT: ^2787// CHECK-ERROR-NEXT: error: invalid operand for instruction2788// CHECK-ERROR-NEXT: stp x3, sp, [x9], #02789// CHECK-ERROR-NEXT: ^2790 2791 stp s3, s5, [sp], #-22792 ldp s6, s26, [x4], #-2602793 stp s13, s19, [x5], #2562794// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2795// CHECK-ERROR-NEXT: stp s3, s5, [sp], #-22796// CHECK-ERROR-NEXT: ^2797// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2798// CHECK-ERROR-NEXT: ldp s6, s26, [x4], #-2602799// CHECK-ERROR-NEXT: ^2800// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2801// CHECK-ERROR-NEXT: stp s13, s19, [x5], #2562802// CHECK-ERROR-NEXT: ^2803 2804 ldp d3, d4, [xzr], #02805 ldp d5, d6, [x0], #5122806 stp d7, d8, [x0], #-5202807// CHECK-ERROR: error: invalid operand for instruction2808// CHECK-ERROR-NEXT: ldp d3, d4, [xzr], #02809// CHECK-ERROR-NEXT: ^2810// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2811// CHECK-ERROR-NEXT: ldp d5, d6, [x0], #5122812// CHECK-ERROR-NEXT: ^2813// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2814// CHECK-ERROR-NEXT: stp d7, d8, [x0], #-5202815// CHECK-ERROR-NEXT: ^2816 2817 ldp d3, q2, [sp], #02818 ldp q3, q5, [sp], #82819 stp q20, q25, [x5], #10242820 ldp q30, q15, [x23], #-10402821// CHECK-ERROR: error: invalid operand for instruction2822// CHECK-ERROR-NEXT: ldp d3, q2, [sp], #02823// CHECK-ERROR-NEXT: ^2824// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]2825// CHECK-ERROR-NEXT: ldp q3, q5, [sp], #82826// CHECK-ERROR-NEXT: ^2827// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]2828// CHECK-ERROR-NEXT: stp q20, q25, [x5], #10242829// CHECK-ERROR-NEXT: ^2830// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]2831// CHECK-ERROR-NEXT: ldp q30, q15, [x23], #-10402832// CHECK-ERROR-NEXT: ^2833 2834//------------------------------------------------------------------------------2835// Load/store register pair (pre-indexed)2836//------------------------------------------------------------------------------2837 ldp v0, v1, [x0, #0]!2838 stp v0, v1, [x0, #0]!2839// CHECK-ERROR-NEXT: error: invalid operand for instruction2840// CHECK-ERROR-NEXT: ldp v0, v1, [x0, #0]!2841// CHECK-ERROR-NEXT: ^2842// CHECK-ERROR-NEXT: error: invalid operand for instruction2843// CHECK-ERROR-NEXT: stp v0, v1, [x0, #0]!2844// CHECK-ERROR-NEXT: ^2845 2846 ldp w3, w2, [x4, #1]!2847 stp w1, w2, [x3, #253]!2848 stp w9, w10, [x5, #256]!2849 ldp w11, w12, [x9, #-260]!2850 stp wsp, w9, [sp, #0]!2851// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2852// CHECK-ERROR-NEXT: ldp w3, w2, [x4, #1]!2853// CHECK-ERROR-NEXT: ^2854// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2855// CHECK-ERROR-NEXT: stp w1, w2, [x3, #253]!2856// CHECK-ERROR-NEXT: ^2857// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2858// CHECK-ERROR-NEXT: stp w9, w10, [x5, #256]!2859// CHECK-ERROR-NEXT: ^2860// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2861// CHECK-ERROR-NEXT: ldp w11, w12, [x9, #-260]!2862// CHECK-ERROR-NEXT: ^2863// CHECK-ERROR-NEXT: error: invalid operand for instruction2864// CHECK-ERROR-NEXT: stp wsp, w9, [sp, #0]!2865// CHECK-ERROR-NEXT: ^2866 2867 ldpsw x9, x2, [sp, #2]!2868 ldpsw x1, x2, [x10, #256]!2869 ldpsw x3, x4, [x11, #-260]!2870// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2871// CHECK-ERROR-NEXT: ldpsw x9, x2, [sp, #2]!2872// CHECK-ERROR-NEXT: ^2873// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2874// CHECK-ERROR-NEXT: ldpsw x1, x2, [x10, #256]!2875// CHECK-ERROR-NEXT: ^2876// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2877// CHECK-ERROR-NEXT: ldpsw x3, x4, [x11, #-260]!2878// CHECK-ERROR-NEXT: ^2879 2880 ldp x2, x5, [sp, #4]!2881 ldp x5, x6, [x9, #512]!2882 stp x7, x8, [x10, #-520]!2883// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2884// CHECK-ERROR-NEXT: ldp x2, x5, [sp, #4]!2885// CHECK-ERROR-NEXT: ^2886// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2887// CHECK-ERROR-NEXT: ldp x5, x6, [x9, #512]!2888// CHECK-ERROR-NEXT: ^2889// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2890// CHECK-ERROR-NEXT: stp x7, x8, [x10, #-520]!2891// CHECK-ERROR-NEXT: ^2892 2893 ldp sp, x3, [x10, #0]!2894 stp x3, sp, [x9, #0]!2895// CHECK-ERROR: error: invalid operand for instruction2896// CHECK-ERROR-NEXT: ldp sp, x3, [x10, #0]!2897// CHECK-ERROR-NEXT: ^2898// CHECK-ERROR-NEXT: error: invalid operand for instruction2899// CHECK-ERROR-NEXT: stp x3, sp, [x9, #0]!2900// CHECK-ERROR-NEXT: ^2901 2902 stp s3, s5, [sp, #-2]!2903 ldp s6, s26, [x4, #-260]!2904 stp s13, s19, [x5, #256]!2905// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2906// CHECK-ERROR-NEXT: stp s3, s5, [sp, #-2]!2907// CHECK-ERROR-NEXT: ^2908// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2909// CHECK-ERROR-NEXT: ldp s6, s26, [x4, #-260]!2910// CHECK-ERROR-NEXT: ^2911// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2912// CHECK-ERROR-NEXT: stp s13, s19, [x5, #256]!2913// CHECK-ERROR-NEXT: ^2914 2915 ldp d3, d4, [xzr, #0]!2916 ldp d5, d6, [x0, #512]!2917 stp d7, d8, [x0, #-520]!2918// CHECK-ERROR: error: invalid operand for instruction2919// CHECK-ERROR-NEXT: ldp d3, d4, [xzr, #0]!2920// CHECK-ERROR-NEXT: ^2921// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2922// CHECK-ERROR-NEXT: ldp d5, d6, [x0, #512]!2923// CHECK-ERROR-NEXT: ^2924// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2925// CHECK-ERROR-NEXT: stp d7, d8, [x0, #-520]!2926// CHECK-ERROR-NEXT: ^2927 2928 ldp d3, q2, [sp, #0]!2929 ldp q3, q5, [sp, #8]!2930 stp q20, q25, [x5, #1024]!2931 ldp q30, q15, [x23, #-1040]!2932// CHECK-ERROR: error: invalid operand for instruction2933// CHECK-ERROR-NEXT: ldp d3, q2, [sp, #0]!2934// CHECK-ERROR-NEXT: ^2935// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]2936// CHECK-ERROR-NEXT: ldp q3, q5, [sp, #8]!2937// CHECK-ERROR-NEXT: ^2938// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]2939// CHECK-ERROR-NEXT: stp q20, q25, [x5, #1024]!2940// CHECK-ERROR-NEXT: ^2941// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]2942// CHECK-ERROR-NEXT: ldp q30, q15, [x23, #-1040]!2943// CHECK-ERROR-NEXT: ^2944 2945//------------------------------------------------------------------------------2946// Load/store register pair (offset)2947//------------------------------------------------------------------------------2948 ldnp v0, v1, [x0, #0]2949 stnp v0, v1, [x0, #0]2950// CHECK-ERROR-NEXT: error: invalid operand for instruction2951// CHECK-ERROR-NEXT: ldnp v0, v1, [x0, #0]2952// CHECK-ERROR-NEXT: ^2953// CHECK-ERROR-NEXT: error: invalid operand for instruction2954// CHECK-ERROR-NEXT: stnp v0, v1, [x0, #0]2955// CHECK-ERROR-NEXT: ^2956 2957 ldnp w3, w2, [x4, #1]2958 stnp w1, w2, [x3, #253]2959 stnp w9, w10, [x5, #256]2960 ldnp w11, w12, [x9, #-260]2961 stnp wsp, w9, [sp]2962// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2963// CHECK-ERROR-NEXT: ldnp w3, w2, [x4, #1]2964// CHECK-ERROR-NEXT: ^2965// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2966// CHECK-ERROR-NEXT: stnp w1, w2, [x3, #253]2967// CHECK-ERROR-NEXT: ^2968// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2969// CHECK-ERROR-NEXT: stnp w9, w10, [x5, #256]2970// CHECK-ERROR-NEXT: ^2971// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]2972// CHECK-ERROR-NEXT: ldnp w11, w12, [x9, #-260]2973// CHECK-ERROR-NEXT: ^2974// CHECK-ERROR-NEXT: error: invalid operand for instruction2975// CHECK-ERROR-NEXT: stnp wsp, w9, [sp]2976// CHECK-ERROR-NEXT: ^2977 2978 ldnp x2, x5, [sp, #4]2979 ldnp x5, x6, [x9, #512]2980 stnp x7, x8, [x10, #-520]2981// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2982// CHECK-ERROR-NEXT: ldnp x2, x5, [sp, #4]2983// CHECK-ERROR-NEXT: ^2984// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2985// CHECK-ERROR-NEXT: ldnp x5, x6, [x9, #512]2986// CHECK-ERROR-NEXT: ^2987// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]2988// CHECK-ERROR-NEXT: stnp x7, x8, [x10, #-520]2989// CHECK-ERROR-NEXT: ^2990 2991 ldnp sp, x3, [x10]2992 stnp x3, sp, [x9]2993// CHECK-ERROR: error: invalid operand for instruction2994// CHECK-ERROR-NEXT: ldnp sp, x3, [x10]2995// CHECK-ERROR-NEXT: ^2996// CHECK-ERROR-NEXT: error: invalid operand for instruction2997// CHECK-ERROR-NEXT: stnp x3, sp, [x9]2998// CHECK-ERROR-NEXT: ^2999 3000 stnp s3, s5, [sp, #-2]3001 ldnp s6, s26, [x4, #-260]3002 stnp s13, s19, [x5, #256]3003// CHECK-ERROR: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]3004// CHECK-ERROR-NEXT: stnp s3, s5, [sp, #-2]3005// CHECK-ERROR-NEXT: ^3006// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]3007// CHECK-ERROR-NEXT: ldnp s6, s26, [x4, #-260]3008// CHECK-ERROR-NEXT: ^3009// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 4 in range [-256, 252]3010// CHECK-ERROR-NEXT: stnp s13, s19, [x5, #256]3011// CHECK-ERROR-NEXT: ^3012 3013 ldnp d3, d4, [xzr]3014 ldnp d5, d6, [x0, #512]3015 stnp d7, d8, [x0, #-520]3016// CHECK-ERROR: error: invalid operand for instruction3017// CHECK-ERROR-NEXT: ldnp d3, d4, [xzr]3018// CHECK-ERROR-NEXT: ^3019// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]3020// CHECK-ERROR-NEXT: ldnp d5, d6, [x0, #512]3021// CHECK-ERROR-NEXT: ^3022// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 8 in range [-512, 504]3023// CHECK-ERROR-NEXT: stnp d7, d8, [x0, #-520]3024// CHECK-ERROR-NEXT: ^3025 3026 ldnp d3, q2, [sp]3027 ldnp q3, q5, [sp, #8]3028 stnp q20, q25, [x5, #1024]3029 ldnp q30, q15, [x23, #-1040]3030// CHECK-ERROR: error: invalid operand for instruction3031// CHECK-ERROR-NEXT: ldnp d3, q2, [sp]3032// CHECK-ERROR-NEXT: ^3033// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]3034// CHECK-ERROR-NEXT: ldnp q3, q5, [sp, #8]3035// CHECK-ERROR-NEXT: ^3036// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]3037// CHECK-ERROR-NEXT: stnp q20, q25, [x5, #1024]3038// CHECK-ERROR-NEXT: ^3039// CHECK-ERROR-NEXT: error: {{expected integer|index must be a}} multiple of 16 in range [-1024, 1008]3040// CHECK-ERROR-NEXT: ldnp q30, q15, [x23, #-1040]3041// CHECK-ERROR-NEXT: ^3042 3043//------------------------------------------------------------------------------3044// Logical (shifted register)3045//------------------------------------------------------------------------------3046 orr w0, w1, #0xffffffff3047 and x3, x5, #0xffffffffffffffff3048// CHECK-ERROR: error: expected compatible register or logical immediate3049// CHECK-ERROR-NEXT: orr w0, w1, #0xffffffff3050// CHECK-ERROR-NEXT: ^3051// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate3052// CHECK-ERROR-NEXT: and x3, x5, #0xffffffffffffffff3053// CHECK-ERROR-NEXT: ^3054 3055 ands w3, w9, #0x03056 eor x2, x0, #0x03057// CHECK-ERROR: error: expected compatible register or logical immediate3058// CHECK-ERROR-NEXT: ands w3, w9, #0x03059// CHECK-ERROR-NEXT: ^3060// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate3061// CHECK-ERROR-NEXT: eor x2, x0, #0x03062// CHECK-ERROR-NEXT: ^3063 3064 eor w3, w5, #0x833065 eor x9, x20, #0x12343066// CHECK-ERROR: error: expected compatible register or logical immediate3067// CHECK-ERROR-NEXT: eor w3, w5, #0x833068// CHECK-ERROR-NEXT: ^3069// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate3070// CHECK-ERROR-NEXT: eor x9, x20, #0x12343071// CHECK-ERROR-NEXT: ^3072 3073 and wzr, w4, 0xffff00003074 eor xzr, x9, #0xffff0000ffff00003075// CHECK-ERROR: error: invalid operand for instruction3076// CHECK-ERROR-NEXT: and wzr, w4, 0xffff00003077// CHECK-ERROR-NEXT: ^3078// CHECK-ERROR-NEXT: error: invalid operand for instruction3079// CHECK-ERROR-NEXT: eor xzr, x9, #0xffff0000ffff00003080// CHECK-ERROR-NEXT: ^3081 3082 orr w3, wsp, #0xf0f0f0f03083 ands x3, sp, #0xaaaaaaaaaaaaaaaa3084// CHECK-ERROR: error: invalid operand for instruction3085// CHECK-ERROR-NEXT: orr w3, wsp, #0xf0f0f0f03086// CHECK-ERROR-NEXT: ^3087// CHECK-ERROR-NEXT: error: invalid operand for instruction3088// CHECK-ERROR-NEXT: ands x3, sp, #0xaaaaaaaaaaaaaaaa3089// CHECK-ERROR-NEXT: ^3090 3091 tst sp, #0xe0e0e0e0e0e0e0e03092// CHECK-ERROR: error: invalid operand for instruction3093// CHECK-ERROR-NEXT: tst sp, #0xe0e0e0e0e0e0e0e03094// CHECK-ERROR-NEXT: ^3095 3096 // movi has been removed from the specification. Make sure it's really gone.3097 movi wzr, #0x444444443098 movi w3, #0xffff3099 movi x9, #0x0000ffff000000003100// CHECK-ERROR: error: invalid operand for instruction3101// CHECK-ERROR-NEXT: movi wzr, #0x444444443102// CHECK-ERROR-NEXT: ^3103// CHECK-ERROR: error: invalid operand for instruction3104// CHECK-ERROR-NEXT: movi w3, #0xffff3105// CHECK-ERROR-NEXT: ^3106// CHECK-ERROR: error: invalid operand for instruction3107// CHECK-ERROR-NEXT: movi x9, #0x0000ffff000000003108// CHECK-ERROR-NEXT: ^3109 3110//------------------------------------------------------------------------------3111// Logical (shifted register)3112//------------------------------------------------------------------------------3113 3114 //// Out of range shifts3115 and w2, w24, w6, lsl #-13116 and w4, w6, w12, lsl #323117 and x4, x6, x12, lsl #643118 and x2, x5, x11, asr3119// CHECK-ERROR: error: expected integer shift amount3120// CHECK-ERROR-NEXT: and w2, w24, w6, lsl #-13121// CHECK-ERROR-NEXT: ^3122// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 31]3123// CHECK-ERROR-NEXT: and w4, w6, w12, lsl #323124// CHECK-ERROR-NEXT: ^3125// CHECK-ERROR-NEXT: error: expected 'lsl', 'lsr' or 'asr' with optional integer in range [0, 63]3126// CHECK-ERROR-NEXT: and x4, x6, x12, lsl #643127// CHECK-ERROR-NEXT: ^3128// CHECK-ERROR-NEXT: error: expected #imm after shift specifier3129// CHECK-ERROR-NEXT: and x2, x5, x11, asr3130// CHECK-ERROR-NEXT: ^3131 3132 //// sp not allowed3133 orn wsp, w3, w53134 bics x20, sp, x9, lsr #03135 orn x2, x6, sp, lsl #33136// FIXME: the diagnostic we get for 'orn wsp, w3, w5' is from the orn alias,3137// which is a better match than the genuine ORNWri, whereas it would be better3138// to get the ORNWri diagnostic when the alias did not match, i.e. the3139// alias' diagnostics should have a lower priority.3140// CHECK-ERROR: error: expected compatible register or logical immediate3141// CHECK-ERROR-NEXT: orn wsp, w3, w53142// CHECK-ERROR-NEXT: ^3143// CHECK-ERROR-NEXT: error: invalid operand for instruction3144// CHECK-ERROR-NEXT: bics x20, sp, x9, lsr #03145// CHECK-ERROR-NEXT: ^3146// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate3147// CHECK-ERROR-NEXT: orn x2, x6, sp, lsl #33148// CHECK-ERROR-NEXT: ^3149 3150 //// Mismatched registers3151 and x3, w2, w13152 ands w1, x12, w23153 and x4, x5, w6, lsl #123154 orr w2, w5, x7, asr #03155// CHECK-ERROR: error: invalid operand for instruction3156// CHECK-ERROR-NEXT: and x3, w2, w13157// CHECK-ERROR-NEXT: ^3158// CHECK-ERROR-NEXT: error: invalid operand for instruction3159// CHECK-ERROR-NEXT: ands w1, x12, w23160// CHECK-ERROR-NEXT: ^3161// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate3162// CHECK-ERROR-NEXT: and x4, x5, w6, lsl #123163// CHECK-ERROR-NEXT: ^3164// CHECK-ERROR-NEXT: error: expected compatible register or logical immediate3165// CHECK-ERROR-NEXT: orr w2, w5, x7, asr #03166// CHECK-ERROR-NEXT: ^3167 3168 //// Shifts should not be allowed on mov3169 mov w3, w7, lsl #133170// CHECK-ERROR: error: invalid operand for instruction3171// CHECK-ERROR-NEXT: mov w3, w7, lsl #133172// CHECK-ERROR-NEXT: ^3173 3174//------------------------------------------------------------------------------3175// Move wide (immediate)3176//------------------------------------------------------------------------------3177 3178 movz w3, #65536, lsl #03179 movz w4, #655363180 movn w1, #2, lsl #13181 movk w3, #0, lsl #-13182 movn w2, #-1, lsl #03183 movz x3, #-13184 movk w3, #1, lsl #323185 movn x2, #12, lsl #643186// CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]3187// CHECK-ERROR-NEXT: movz w3, #65536, lsl #03188// CHECK-ERROR-NEXT: ^3189// CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]3190// CHECK-ERROR-NEXT: movz w4, #655363191// CHECK-ERROR-NEXT: ^3192// CHECK-ERROR-AARCH64-NEXT: error: expected relocated symbol or integer in range [0, 65535]3193// CHECK-ERROR-ARM64-NEXT: error: expected 'lsl' with optional integer 0 or 163194// CHECK-ERROR-NEXT: movn w1, #2, lsl #13195// CHECK-ERROR-NEXT: ^3196// CHECK-ERROR-AARCH64-NEXT: error: only 'lsl #+N' valid after immediate3197// CHECK-ERROR-ARM64-NEXT: error: expected integer shift amount3198// CHECK-ERROR-NEXT: movk w3, #0, lsl #-13199// CHECK-ERROR-NEXT: ^3200// CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]3201// CHECK-ERROR-NEXT: movn w2, #-1, lsl #03202// CHECK-ERROR-NEXT: ^3203// CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]3204// CHECK-ERROR-NEXT: movz x3, #-13205// CHECK-ERROR-NEXT: ^3206// CHECK-ERROR-AARCH64-NEXT: error: expected relocated symbol or integer in range [0, 65535]3207// CHECK-ERROR-ARM64-NEXT: error: expected 'lsl' with optional integer 0 or 163208// CHECK-ERROR-NEXT: movk w3, #1, lsl #323209// CHECK-ERROR-NEXT: ^3210// CHECK-ERROR-AARCH64-NEXT: error: expected relocated symbol or integer in range [0, 65535]3211// CHECK-ERROR-ARM64-NEXT: error: expected 'lsl' with optional integer 0, 16, 32 or 483212// CHECK-ERROR-NEXT: movn x2, #12, lsl #643213// CHECK-ERROR-NEXT: ^3214 3215 movz x12, #:abs_g0:sym, lsl #163216 movz x12, #:abs_g0:sym, lsl #03217 movn x2, #:abs_g0:sym3218 movk w3, #:abs_g0:sym3219 movz x3, #:abs_g0_nc:sym3220 movn x4, #:abs_g0_nc:sym3221// CHECK-ERROR: error: invalid operand for instruction3222// CHECK-ERROR-NEXT: movz x12, #:abs_g0:sym, lsl #163223// CHECK-ERROR-NEXT: ^3224// CHECK-ERROR: error: invalid operand for instruction3225// CHECK-ERROR-NEXT: movz x12, #:abs_g0:sym, lsl #03226// CHECK-ERROR-NEXT: ^3227 3228 movn x2, #:abs_g1:sym3229 movk w3, #:abs_g1:sym3230 movz x3, #:abs_g1_nc:sym3231 movn x4, #:abs_g1_nc:sym3232 3233 movz w12, #:abs_g2:sym3234 movn x12, #:abs_g2:sym3235 movk x13, #:abs_g2:sym3236 movk w3, #:abs_g2_nc:sym3237 movz x13, #:abs_g2_nc:sym3238 movn x24, #:abs_g2_nc:sym3239// CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]3240// CHECK-ERROR-NEXT: movz w12, #:abs_g2:sym3241// CHECK-ERROR-NEXT: ^3242// CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]3243// CHECK-ERROR-NEXT: movk w3, #:abs_g2_nc:sym3244// CHECK-ERROR-NEXT: ^3245 3246 movn x19, #:abs_g3:sym3247 movz w20, #:abs_g3:sym3248 movk w21, #:abs_g3:sym3249// CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]3250// CHECK-ERROR-NEXT: movz w20, #:abs_g3:sym3251// CHECK-ERROR-NEXT: ^3252// CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]3253// CHECK-ERROR-NEXT: movk w21, #:abs_g3:sym3254// CHECK-ERROR-NEXT: ^3255 3256 movk x19, #:abs_g0_s:sym3257 movk w23, #:abs_g0_s:sym3258 3259 movk x19, #:abs_g1_s:sym3260 movk w23, #:abs_g1_s:sym3261 3262 movz w2, #:abs_g2_s:sym3263 movn w29, #:abs_g2_s:sym3264 movk x19, #:abs_g2_s:sym3265 movk w23, #:abs_g2_s:sym3266// CHECK-ERROR: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]3267// CHECK-ERROR-NEXT: movz w2, #:abs_g2_s:sym3268// CHECK-ERROR-NEXT: ^3269// CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]3270// CHECK-ERROR-NEXT: movn w29, #:abs_g2_s:sym3271// CHECK-ERROR-NEXT: ^3272// CHECK-ERROR-NEXT: error: {{expected relocated symbol or|immediate must be an}} integer in range [0, 65535]3273// CHECK-ERROR-NEXT: movk w23, #:abs_g2_s:sym3274// CHECK-ERROR-NEXT: ^3275 3276//------------------------------------------------------------------------------3277// PC-relative addressing3278//------------------------------------------------------------------------------3279 3280 adr sp, loc // expects xzr3281 adr x0, :got:loc // bad relocation type3282 adr x1, :lo12:loc3283 adrp x3, #20 // Immediate unaligned3284 adrp w2, loc // 64-bit register needed3285 adrp x5, :got_lo12:loc // bad relocation type3286// CHECK-ERROR: error: invalid operand for instruction3287// CHECK-ERROR-NEXT: adr sp, loc3288// CHECK-ERROR-NEXT: ^3289// CHECK-ERROR-NEXT: error: unexpected adr label3290// CHECK-ERROR-NEXT: adr x0, :got:loc3291// CHECK-ERROR-NEXT: ^3292// CHECK-ERROR-NEXT: error: unexpected adr label3293// CHECK-ERROR-NEXT: adr x1, :lo12:loc3294// CHECK-ERROR-NEXT: ^3295// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset3296// CHECK-ERROR-NEXT: adrp x3, #203297// CHECK-ERROR-NEXT: ^3298// CHECK-ERROR-NEXT: error: invalid operand for instruction3299// CHECK-ERROR-NEXT: adrp w2, loc3300// CHECK-ERROR-NEXT: ^3301// CHECK-ERROR-NEXT: error: page or gotpage label reference expected3302// CHECK-ERROR-NEXT: adrp x5, :got_lo12:loc3303// CHECK-ERROR-NEXT: ^3304 3305 adr x9, #10485763306 adr x2, #-10485773307 adrp x9, #42949672963308 adrp x20, #-42949713923309// CHECK-ERROR: error: expected label or encodable integer pc offset3310// CHECK-ERROR-NEXT: adr x9, #10485763311// CHECK-ERROR-NEXT: ^3312// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset3313// CHECK-ERROR-NEXT: adr x2, #-10485773314// CHECK-ERROR-NEXT: ^3315// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset3316// CHECK-ERROR-NEXT: adrp x9, #42949672963317// CHECK-ERROR-NEXT: ^3318// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset3319// CHECK-ERROR-NEXT: adrp x20, #-42949713923320// CHECK-ERROR-NEXT: ^3321 3322//------------------------------------------------------------------------------3323// System3324//------------------------------------------------------------------------------3325 3326 hint #-13327 hint #1283328// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 127]3329// CHECK-ERROR-NEXT: hint #-13330// CHECK-ERROR-NEXT: ^3331// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 127]3332// CHECK-ERROR-NEXT: hint #1283333// CHECK-ERROR-NEXT: ^3334 3335 clrex #-13336 clrex #163337// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]3338// CHECK-ERROR-NEXT: clrex #-13339// CHECK-ERROR-NEXT: ^3340// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 15]3341// CHECK-ERROR-NEXT: clrex #163342// CHECK-ERROR-NEXT: ^3343 3344 dsb #-13345 dsb #173346 dsb foo3347 dmb #-13348 dmb #173349 dmb foo3350// CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}3351// CHECK-ERROR-NEXT: dsb #-13352// CHECK-ERROR-NEXT: ^3353// CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}3354// CHECK-ERROR-NEXT: dsb #173355// CHECK-ERROR-NEXT: ^3356// CHECK-ERROR-NEXT: error: invalid barrier option name3357// CHECK-ERROR-NEXT: dsb foo3358// CHECK-ERROR-NEXT: ^3359// CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}3360// CHECK-ERROR-NEXT: dmb #-13361// CHECK-ERROR-NEXT: ^3362// CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}3363// CHECK-ERROR-NEXT: dmb #173364// CHECK-ERROR-NEXT: ^3365// CHECK-ERROR-NEXT: error: invalid barrier option name3366// CHECK-ERROR-NEXT: dmb foo3367// CHECK-ERROR-NEXT: ^3368 3369 isb #-13370 isb #163371 isb foo3372// CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}3373// CHECK-ERROR-NEXT: isb #-13374// CHECK-ERROR-NEXT: ^3375// CHECK-ERROR-NEXT: error: {{Invalid immediate for instruction|barrier operand out of range}}3376// CHECK-ERROR-NEXT: isb #163377// CHECK-ERROR-NEXT: ^3378// CHECK-ERROR-NEXT: error: 'sy' or #imm operand expected3379// CHECK-ERROR-NEXT: isb foo3380// CHECK-ERROR-NEXT: ^3381 3382 msr daifset, x43383 msr spsel, #-13384 msr spsel #-13385 msr daifclr, #163386 msr CurrentEL, x123387// CHECK-ERROR: [[@LINE-5]]:22: error: {{expected|immediate must be an}} integer in range [0, 15]3388// CHECK-ERROR: [[@LINE-5]]:20: error: {{expected|immediate must be an}} integer in range [0, 15]3389// CHECK-ERROR: [[@LINE-5]]:{{9|19}}: error: {{too few operands for instruction|expected comma before next operand|unexpected token in argument list}}3390// CHECK-ERROR: [[@LINE-5]]:22: error: {{expected|immediate must be an}} integer in range [0, 15]3391// CHECK-ERROR: [[@LINE-5]]:13: error: expected writable system register or pstate3392 3393 sys #8, c1, c2, #7, x93394 sys #3, c16, c2, #3, x103395 sys #2, c11, c16, #53396 sys #4, c9, c8, #8, xzr3397 sysl x11, #8, c1, c2, #73398 sysl x13, #3, c16, c2, #33399 sysl x9, #2, c11, c16, #53400 sysl x4, #4, c9, c8, #83401// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 7]3402// CHECK-ERROR-NEXT: sys #8, c1, c2, #7, x93403// CHECK-ERROR-NEXT: ^3404// CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 153405// CHECK-ERROR-NEXT: sys #3, c16, c2, #3, x103406// CHECK-ERROR-NEXT: ^3407// CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 153408// CHECK-ERROR-NEXT: sys #2, c11, c16, #53409// CHECK-ERROR-NEXT: ^3410// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 7]3411// CHECK-ERROR-NEXT: sys #4, c9, c8, #8, xzr3412// CHECK-ERROR-NEXT: ^3413// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 7]3414// CHECK-ERROR-NEXT: sysl x11, #8, c1, c2, #73415// CHECK-ERROR-NEXT: ^3416// CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 153417// CHECK-ERROR-NEXT: sysl x13, #3, c16, c2, #33418// CHECK-ERROR-NEXT: ^3419// CHECK-ERROR-NEXT: error: Expected cN operand where 0 <= N <= 153420// CHECK-ERROR-NEXT: sysl x9, #2, c11, c16, #53421// CHECK-ERROR-NEXT: ^3422// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 7]3423// CHECK-ERROR-NEXT: sysl x4, #4, c9, c8, #83424// CHECK-ERROR-NEXT: ^3425 3426 ic ialluis, x23427 ic allu, x73428 ic ivau3429// CHECK-ERROR-NEXT: error: specified {{IC|ic}} op does not use a register3430// CHECK-ERROR-NEXT: ic ialluis, x23431// CHECK-ERROR-NEXT: ^3432// CHECK-ERROR-AARCH64-NEXT: error: operand specifier not recognised3433// CHECK-ERROR-ARM64-NEXT: error: invalid operand for IC instruction3434// CHECK-ERROR-NEXT: ic allu, x73435// CHECK-ERROR-NEXT: ^3436// CHECK-ERROR-NEXT: error: specified {{IC|ic}} op requires a register3437// CHECK-ERROR-NEXT: ic ivau3438// CHECK-ERROR-NEXT: ^3439 3440 tlbi IPAS2E1IS3441 tlbi IPAS2LE1IS3442 tlbi VMALLE1IS, x123443 tlbi ALLE2IS, x113444 tlbi ALLE3IS, x203445 tlbi VAE1IS3446 tlbi VAE2IS3447 tlbi VAE3IS3448 tlbi ASIDE1IS3449 tlbi VAAE1IS3450 tlbi ALLE1IS, x03451 tlbi VALE1IS3452 tlbi VALE2IS3453 tlbi VALE3IS3454 tlbi VMALLS12E1IS, xzr3455 tlbi VAALE1IS3456 tlbi IPAS2E13457 tlbi IPAS2LE13458 tlbi VMALLE1, x93459 tlbi ALLE2, x103460 tlbi ALLE3, x113461 tlbi VAE13462 tlbi VAE23463 tlbi VAE33464 tlbi ASIDE13465 tlbi VAAE13466 tlbi ALLE1, x253467 tlbi VALE13468 tlbi VALE23469 tlbi VALE33470 tlbi VMALLS12E1, x153471 tlbi VAALE13472// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3473// CHECK-ERROR-NEXT: tlbi IPAS2E1IS3474// CHECK-ERROR-NEXT: ^3475// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3476// CHECK-ERROR-NEXT: tlbi IPAS2LE1IS3477// CHECK-ERROR-NEXT: ^3478// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register3479// CHECK-ERROR-NEXT: tlbi VMALLE1IS, x123480// CHECK-ERROR-NEXT: ^3481// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register3482// CHECK-ERROR-NEXT: tlbi ALLE2IS, x113483// CHECK-ERROR-NEXT: ^3484// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register3485// CHECK-ERROR-NEXT: tlbi ALLE3IS, x203486// CHECK-ERROR-NEXT: ^3487// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3488// CHECK-ERROR-NEXT: tlbi VAE1IS3489// CHECK-ERROR-NEXT: ^3490// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3491// CHECK-ERROR-NEXT: tlbi VAE2IS3492// CHECK-ERROR-NEXT: ^3493// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3494// CHECK-ERROR-NEXT: tlbi VAE3IS3495// CHECK-ERROR-NEXT: ^3496// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3497// CHECK-ERROR-NEXT: tlbi ASIDE1IS3498// CHECK-ERROR-NEXT: ^3499// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3500// CHECK-ERROR-NEXT: tlbi VAAE1IS3501// CHECK-ERROR-NEXT: ^3502// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register3503// CHECK-ERROR-NEXT: tlbi ALLE1IS, x03504// CHECK-ERROR-NEXT: ^3505// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3506// CHECK-ERROR-NEXT: tlbi VALE1IS3507// CHECK-ERROR-NEXT: ^3508// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3509// CHECK-ERROR-NEXT: tlbi VALE2IS3510// CHECK-ERROR-NEXT: ^3511// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3512// CHECK-ERROR-NEXT: tlbi VALE3IS3513// CHECK-ERROR-NEXT: ^3514// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register3515// CHECK-ERROR-NEXT: tlbi VMALLS12E1IS, xzr3516// CHECK-ERROR-NEXT: ^3517// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3518// CHECK-ERROR-NEXT: tlbi VAALE1IS3519// CHECK-ERROR-NEXT: ^3520// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3521// CHECK-ERROR-NEXT: tlbi IPAS2E13522// CHECK-ERROR-NEXT: ^3523// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3524// CHECK-ERROR-NEXT: tlbi IPAS2LE13525// CHECK-ERROR-NEXT: ^3526// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register3527// CHECK-ERROR-NEXT: tlbi VMALLE1, x93528// CHECK-ERROR-NEXT: ^3529// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register3530// CHECK-ERROR-NEXT: tlbi ALLE2, x103531// CHECK-ERROR-NEXT: ^3532// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register3533// CHECK-ERROR-NEXT: tlbi ALLE3, x113534// CHECK-ERROR-NEXT: ^3535// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3536// CHECK-ERROR-NEXT: tlbi VAE13537// CHECK-ERROR-NEXT: ^3538// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3539// CHECK-ERROR-NEXT: tlbi VAE23540// CHECK-ERROR-NEXT: ^3541// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3542// CHECK-ERROR-NEXT: tlbi VAE33543// CHECK-ERROR-NEXT: ^3544// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3545// CHECK-ERROR-NEXT: tlbi ASIDE13546// CHECK-ERROR-NEXT: ^3547// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3548// CHECK-ERROR-NEXT: tlbi VAAE13549// CHECK-ERROR-NEXT: ^3550// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register3551// CHECK-ERROR-NEXT: tlbi ALLE1, x253552// CHECK-ERROR-NEXT: ^3553// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3554// CHECK-ERROR-NEXT: tlbi VALE13555// CHECK-ERROR-NEXT: ^3556// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3557// CHECK-ERROR-NEXT: tlbi VALE23558// CHECK-ERROR-NEXT: ^3559// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3560// CHECK-ERROR-NEXT: tlbi VALE33561// CHECK-ERROR-NEXT: ^3562// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op does not use a register3563// CHECK-ERROR-NEXT: tlbi VMALLS12E1, x153564// CHECK-ERROR-NEXT: ^3565// CHECK-ERROR-NEXT: error: specified {{TLBI|tlbi}} op requires a register3566// CHECK-ERROR-NEXT: tlbi VAALE13567// CHECK-ERROR-NEXT: ^3568 3569// For the MSR/MRS instructions, first make sure read-only and3570// write-only registers actually are.3571 msr MDCCSR_EL0, x123572 msr DBGDTRRX_EL0, x123573 msr MDRAR_EL1, x123574 msr OSLSR_EL1, x123575 msr DBGAUTHSTATUS_EL1, x123576 msr MIDR_EL1, x123577 msr CCSIDR_EL1, x123578 msr CLIDR_EL1, x123579 msr CCSIDR2_EL1, x123580 msr CTR_EL0, x123581 msr MPIDR_EL1, x123582 msr REVIDR_EL1, x123583 msr AIDR_EL1, x123584 msr DCZID_EL0, x123585 msr ID_PFR0_EL1, x123586 msr ID_PFR1_EL1, x123587 msr ID_DFR0_EL1, x123588 msr ID_DFR1_EL1, x123589 msr ID_AFR0_EL1, x123590 msr ID_MMFR0_EL1, x123591 msr ID_MMFR1_EL1, x123592 msr ID_MMFR2_EL1, x123593 msr ID_MMFR3_EL1, x123594 msr ID_MMFR4_EL1, x123595 msr ID_MMFR5_EL1, x123596 msr ID_ISAR0_EL1, x123597 msr ID_ISAR1_EL1, x123598 msr ID_ISAR2_EL1, x123599 msr ID_ISAR3_EL1, x123600 msr ID_ISAR4_EL1, x123601 msr ID_ISAR5_EL1, x123602 msr MVFR0_EL1, x123603 msr MVFR1_EL1, x123604 msr MVFR2_EL1, x123605 msr ID_AA64PFR0_EL1, x123606 msr ID_AA64PFR1_EL1, x123607 msr ID_AA64PFR2_EL1, x123608 msr ID_AA64DFR0_EL1, x123609 msr ID_AA64DFR1_EL1, x123610 msr ID_AA64DFR2_EL1, x123611 msr ID_AA64AFR0_EL1, x123612 msr ID_AA64AFR1_EL1, x123613 msr ID_AA64ISAR0_EL1, x123614 msr ID_AA64ISAR1_EL1, x123615 msr ID_AA64ISAR2_EL1, x123616 msr ID_AA64ISAR3_EL1, x123617 msr ID_AA64MMFR0_EL1, x123618 msr ID_AA64MMFR1_EL1, x123619 msr ID_AA64MMFR2_EL1, x123620 msr ID_AA64MMFR3_EL1, x123621 msr ID_AA64MMFR4_EL1, x123622 msr PMCEID0_EL0, x123623 msr PMCEID1_EL0, x123624 msr PMMIR_EL1, x123625 msr RVBAR_EL1, x123626 msr RVBAR_EL2, x123627 msr RVBAR_EL3, x123628 msr ISR_EL1, x123629 msr CNTPCT_EL0, x123630 msr CNTVCT_EL0, x123631 msr PMEVCNTR31_EL0, x123632 msr PMEVTYPER31_EL0, x123633// CHECK-ERROR: error: expected writable system register or pstate3634// CHECK-ERROR-NEXT: msr MDCCSR_EL0, x123635// CHECK-ERROR-NEXT: ^3636// CHECK-ERROR-NEXT: error: expected writable system register or pstate3637// CHECK-ERROR-NEXT: msr DBGDTRRX_EL0, x123638// CHECK-ERROR-NEXT: ^3639// CHECK-ERROR-NEXT: error: expected writable system register or pstate3640// CHECK-ERROR-NEXT: msr MDRAR_EL1, x123641// CHECK-ERROR-NEXT: ^3642// CHECK-ERROR-NEXT: error: expected writable system register or pstate3643// CHECK-ERROR-NEXT: msr OSLSR_EL1, x123644// CHECK-ERROR-NEXT: ^3645// CHECK-ERROR-NEXT: error: expected writable system register or pstate3646// CHECK-ERROR-NEXT: msr DBGAUTHSTATUS_EL1, x123647// CHECK-ERROR-NEXT: ^3648// CHECK-ERROR-NEXT: error: expected writable system register or pstate3649// CHECK-ERROR-NEXT: msr MIDR_EL1, x123650// CHECK-ERROR-NEXT: ^3651// CHECK-ERROR-NEXT: error: expected writable system register or pstate3652// CHECK-ERROR-NEXT: msr CCSIDR_EL1, x123653// CHECK-ERROR-NEXT: ^3654// CHECK-ERROR-NEXT: error: expected writable system register or pstate3655// CHECK-ERROR-NEXT: msr CLIDR_EL1, x123656// CHECK-ERROR-NEXT: ^3657// CHECK-ERROR-NEXT: error: expected writable system register or pstate3658// CHECK-ERROR-NEXT: msr CCSIDR2_EL1, x123659// CHECK-ERROR-NEXT: ^3660// CHECK-ERROR-NEXT: error: expected writable system register or pstate3661// CHECK-ERROR-NEXT: msr CTR_EL0, x123662// CHECK-ERROR-NEXT: ^3663// CHECK-ERROR-NEXT: error: expected writable system register or pstate3664// CHECK-ERROR-NEXT: msr MPIDR_EL1, x123665// CHECK-ERROR-NEXT: ^3666// CHECK-ERROR-NEXT: error: expected writable system register or pstate3667// CHECK-ERROR-NEXT: msr REVIDR_EL1, x123668// CHECK-ERROR-NEXT: ^3669// CHECK-ERROR-NEXT: error: expected writable system register or pstate3670// CHECK-ERROR-NEXT: msr AIDR_EL1, x123671// CHECK-ERROR-NEXT: ^3672// CHECK-ERROR-NEXT: error: expected writable system register or pstate3673// CHECK-ERROR-NEXT: msr DCZID_EL0, x123674// CHECK-ERROR-NEXT: ^3675// CHECK-ERROR-NEXT: error: expected writable system register or pstate3676// CHECK-ERROR-NEXT: msr ID_PFR0_EL1, x123677// CHECK-ERROR-NEXT: ^3678// CHECK-ERROR-NEXT: error: expected writable system register or pstate3679// CHECK-ERROR-NEXT: msr ID_PFR1_EL1, x123680// CHECK-ERROR-NEXT: ^3681// CHECK-ERROR-NEXT: error: expected writable system register or pstate3682// CHECK-ERROR-NEXT: msr ID_DFR0_EL1, x123683// CHECK-ERROR-NEXT: ^3684// CHECK-ERROR-NEXT: error: expected writable system register or pstate3685// CHECK-ERROR-NEXT: msr ID_DFR1_EL1, x123686// CHECK-ERROR-NEXT: ^3687// CHECK-ERROR-NEXT: error: expected writable system register or pstate3688// CHECK-ERROR-NEXT: msr ID_AFR0_EL1, x123689// CHECK-ERROR-NEXT: ^3690// CHECK-ERROR-NEXT: error: expected writable system register or pstate3691// CHECK-ERROR-NEXT: msr ID_MMFR0_EL1, x123692// CHECK-ERROR-NEXT: ^3693// CHECK-ERROR-NEXT: error: expected writable system register or pstate3694// CHECK-ERROR-NEXT: msr ID_MMFR1_EL1, x123695// CHECK-ERROR-NEXT: ^3696// CHECK-ERROR-NEXT: error: expected writable system register or pstate3697// CHECK-ERROR-NEXT: msr ID_MMFR2_EL1, x123698// CHECK-ERROR-NEXT: ^3699// CHECK-ERROR-NEXT: error: expected writable system register or pstate3700// CHECK-ERROR-NEXT: msr ID_MMFR3_EL1, x123701// CHECK-ERROR-NEXT: ^3702// CHECK-ERROR-NEXT: error: expected writable system register or pstate3703// CHECK-ERROR-NEXT: msr ID_MMFR4_EL1, x123704// CHECK-ERROR-NEXT: ^3705// CHECK-ERROR-NEXT: error: expected writable system register or pstate3706// CHECK-ERROR-NEXT: msr ID_MMFR5_EL1, x123707// CHECK-ERROR-NEXT: ^3708// CHECK-ERROR-NEXT: error: expected writable system register or pstate3709// CHECK-ERROR-NEXT: msr ID_ISAR0_EL1, x123710// CHECK-ERROR-NEXT: ^3711// CHECK-ERROR-NEXT: error: expected writable system register or pstate3712// CHECK-ERROR-NEXT: msr ID_ISAR1_EL1, x123713// CHECK-ERROR-NEXT: ^3714// CHECK-ERROR-NEXT: error: expected writable system register or pstate3715// CHECK-ERROR-NEXT: msr ID_ISAR2_EL1, x123716// CHECK-ERROR-NEXT: ^3717// CHECK-ERROR-NEXT: error: expected writable system register or pstate3718// CHECK-ERROR-NEXT: msr ID_ISAR3_EL1, x123719// CHECK-ERROR-NEXT: ^3720// CHECK-ERROR-NEXT: error: expected writable system register or pstate3721// CHECK-ERROR-NEXT: msr ID_ISAR4_EL1, x123722// CHECK-ERROR-NEXT: ^3723// CHECK-ERROR-NEXT: error: expected writable system register or pstate3724// CHECK-ERROR-NEXT: msr ID_ISAR5_EL1, x123725// CHECK-ERROR-NEXT: ^3726// CHECK-ERROR-NEXT: error: expected writable system register or pstate3727// CHECK-ERROR-NEXT: msr MVFR0_EL1, x123728// CHECK-ERROR-NEXT: ^3729// CHECK-ERROR-NEXT: error: expected writable system register or pstate3730// CHECK-ERROR-NEXT: msr MVFR1_EL1, x123731// CHECK-ERROR-NEXT: ^3732// CHECK-ERROR-NEXT: error: expected writable system register or pstate3733// CHECK-ERROR-NEXT: msr MVFR2_EL1, x123734// CHECK-ERROR-NEXT: ^3735// CHECK-ERROR-NEXT: error: expected writable system register or pstate3736// CHECK-ERROR-NEXT: msr ID_AA64PFR0_EL1, x123737// CHECK-ERROR-NEXT: ^3738// CHECK-ERROR-NEXT: error: expected writable system register or pstate3739// CHECK-ERROR-NEXT: msr ID_AA64PFR1_EL1, x123740// CHECK-ERROR-NEXT: ^3741// CHECK-ERROR-NEXT: error: expected writable system register or pstate3742// CHECK-ERROR-NEXT: msr ID_AA64PFR2_EL1, x123743// CHECK-ERROR-NEXT: ^3744// CHECK-ERROR-NEXT: error: expected writable system register or pstate3745// CHECK-ERROR-NEXT: msr ID_AA64DFR0_EL1, x123746// CHECK-ERROR-NEXT: ^3747// CHECK-ERROR-NEXT: error: expected writable system register or pstate3748// CHECK-ERROR-NEXT: msr ID_AA64DFR1_EL1, x123749// CHECK-ERROR-NEXT: ^3750// CHECK-ERROR-NEXT: error: expected writable system register or pstate3751// CHECK-ERROR-NEXT: msr ID_AA64DFR2_EL1, x123752// CHECK-ERROR-NEXT: ^3753// CHECK-ERROR-NEXT: error: expected writable system register or pstate3754// CHECK-ERROR-NEXT: msr ID_AA64AFR0_EL1, x123755// CHECK-ERROR-NEXT: ^3756// CHECK-ERROR-NEXT: error: expected writable system register or pstate3757// CHECK-ERROR-NEXT: msr ID_AA64AFR1_EL1, x123758// CHECK-ERROR-NEXT: ^3759// CHECK-ERROR-NEXT: error: expected writable system register or pstate3760// CHECK-ERROR-NEXT: msr ID_AA64ISAR0_EL1, x123761// CHECK-ERROR-NEXT: ^3762// CHECK-ERROR-NEXT: error: expected writable system register or pstate3763// CHECK-ERROR-NEXT: msr ID_AA64ISAR1_EL1, x123764// CHECK-ERROR-NEXT: ^3765// CHECK-ERROR-NEXT: error: expected writable system register or pstate3766// CHECK-ERROR-NEXT: msr ID_AA64ISAR2_EL1, x123767// CHECK-ERROR-NEXT: ^3768// CHECK-ERROR-NEXT: error: expected writable system register or pstate3769// CHECK-ERROR-NEXT: msr ID_AA64ISAR3_EL1, x123770// CHECK-ERROR-NEXT: ^3771// CHECK-ERROR-NEXT: error: expected writable system register or pstate3772// CHECK-ERROR-NEXT: msr ID_AA64MMFR0_EL1, x123773// CHECK-ERROR-NEXT: ^3774// CHECK-ERROR-NEXT: error: expected writable system register or pstate3775// CHECK-ERROR-NEXT: msr ID_AA64MMFR1_EL1, x123776// CHECK-ERROR-NEXT: ^3777// CHECK-ERROR-NEXT: error: expected writable system register or pstate3778// CHECK-ERROR-NEXT: msr ID_AA64MMFR2_EL1, x123779// CHECK-ERROR-NEXT: ^3780// CHECK-ERROR-NEXT: error: expected writable system register or pstate3781// CHECK-ERROR-NEXT: msr ID_AA64MMFR3_EL1, x123782// CHECK-ERROR-NEXT: ^3783// CHECK-ERROR-NEXT: error: expected writable system register or pstate3784// CHECK-ERROR-NEXT: msr ID_AA64MMFR4_EL1, x123785// CHECK-ERROR-NEXT: ^3786// CHECK-ERROR-NEXT: error: expected writable system register or pstate3787// CHECK-ERROR-NEXT: msr PMCEID0_EL0, x123788// CHECK-ERROR-NEXT: ^3789// CHECK-ERROR-NEXT: error: expected writable system register or pstate3790// CHECK-ERROR-NEXT: msr PMCEID1_EL0, x123791// CHECK-ERROR-NEXT: ^3792// CHECK-ERROR-NEXT: error: expected writable system register or pstate3793// CHECK-ERROR-NEXT: msr PMMIR_EL1, x123794// CHECK-ERROR-NEXT: ^3795// CHECK-ERROR-NEXT: error: expected writable system register or pstate3796// CHECK-ERROR-NEXT: msr RVBAR_EL1, x123797// CHECK-ERROR-NEXT: ^3798// CHECK-ERROR-NEXT: error: expected writable system register or pstate3799// CHECK-ERROR-NEXT: msr RVBAR_EL2, x123800// CHECK-ERROR-NEXT: ^3801// CHECK-ERROR-NEXT: error: expected writable system register or pstate3802// CHECK-ERROR-NEXT: msr RVBAR_EL3, x123803// CHECK-ERROR-NEXT: ^3804// CHECK-ERROR-NEXT: error: expected writable system register or pstate3805// CHECK-ERROR-NEXT: msr ISR_EL1, x123806// CHECK-ERROR-NEXT: ^3807// CHECK-ERROR-NEXT: error: expected writable system register or pstate3808// CHECK-ERROR-NEXT: msr CNTPCT_EL0, x123809// CHECK-ERROR-NEXT: ^3810// CHECK-ERROR-NEXT: error: expected writable system register or pstate3811// CHECK-ERROR-NEXT: msr CNTVCT_EL0, x123812// CHECK-ERROR-NEXT: ^3813// CHECK-ERROR-NEXT: error: expected writable system register or pstate3814// CHECK-ERROR-NEXT: msr PMEVCNTR31_EL0, x123815// CHECK-ERROR-NEXT: ^3816// CHECK-ERROR-NEXT: error: expected writable system register or pstate3817// CHECK-ERROR-NEXT: msr PMEVTYPER31_EL0, x123818// CHECK-ERROR-NEXT: ^3819 3820 mrs x9, DBGDTRTX_EL03821 mrs x9, OSLAR_EL13822 mrs x9, PMSWINC_EL03823 mrs x9, PMEVCNTR31_EL03824 mrs x9, PMEVTYPER31_EL03825// CHECK-ERROR: error: expected readable system register3826// CHECK-ERROR-NEXT: mrs x9, DBGDTRTX_EL03827// CHECK-ERROR-NEXT: ^3828// CHECK-ERROR-NEXT: error: expected readable system register3829// CHECK-ERROR-NEXT: mrs x9, OSLAR_EL13830// CHECK-ERROR-NEXT: ^3831// CHECK-ERROR-NEXT: error: expected readable system register3832// CHECK-ERROR-NEXT: mrs x9, PMSWINC_EL03833// CHECK-ERROR-NEXT: ^3834// CHECK-ERROR-NEXT: error: expected readable system register3835// CHECK-ERROR-NEXT: mrs x9, PMEVCNTR31_EL03836// CHECK-ERROR-NEXT: ^3837// CHECK-ERROR-NEXT: error: expected readable system register3838// CHECK-ERROR-NEXT: mrs x9, PMEVTYPER31_EL03839// CHECK-ERROR-NEXT: ^3840 3841// Now check some invalid generic names3842 mrs x12, s3_8_c11_c13_23843 mrs x19, s3_2_c15_c16_23844 mrs x30, s3_2_c15_c1_83845 mrs x4, s4_7_c15_c15_73846 mrs x14, s3_7_c16_c15_73847// CHECK-ERROR-NEXT: error: expected readable system register3848// CHECK-ERROR-NEXT: mrs x12, s3_8_c11_c13_23849// CHECK-ERROR-NEXT: ^3850// CHECK-ERROR-NEXT: error: expected readable system register3851// CHECK-ERROR-NEXT: mrs x19, s3_2_c15_c16_23852// CHECK-ERROR-NEXT: ^3853// CHECK-ERROR-NEXT: error: expected readable system register3854// CHECK-ERROR-NEXT: mrs x30, s3_2_c15_c1_83855// CHECK-ERROR-NEXT: ^3856// CHECK-ERROR-NEXT: error: expected readable system register3857// CHECK-ERROR-NEXT: mrs x4, s4_7_c15_c15_73858// CHECK-ERROR-NEXT: ^3859// CHECK-ERROR-NEXT: error: expected readable system register3860// CHECK-ERROR-NEXT: mrs x14, s3_7_c16_c15_73861// CHECK-ERROR-NEXT: ^3862 3863//------------------------------------------------------------------------------3864// Test and branch (immediate)3865//------------------------------------------------------------------------------3866 3867 tbz w3, #-1, addr3868 tbz w3, #32, nowhere3869 tbz x9, #-1, there3870 tbz x20, #64, dont3871// CHECK-ERROR: error: {{expected|immediate must be an}} integer in range [0, 31]3872// CHECK-ERROR-NEXT: tbz w3, #-1, addr3873// CHECK-ERROR-NEXT: ^3874// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]3875// CHECK-ERROR-NEXT: tbz w3, #32, nowhere3876// CHECK-ERROR-NEXT: ^3877// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]3878// CHECK-ERROR-NEXT: tbz x9, #-1, there3879// CHECK-ERROR-NEXT: ^3880// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]3881// CHECK-ERROR-NEXT: tbz x20, #64, dont3882// CHECK-ERROR-NEXT: ^3883 3884 tbnz w3, #-1, addr3885 tbnz w3, #32, nowhere3886 tbnz x9, #-1, there3887 tbnz x20, #64, dont3888// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]3889// CHECK-ERROR-NEXT: tbnz w3, #-1, addr3890// CHECK-ERROR-NEXT: ^3891// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 31]3892// CHECK-ERROR-NEXT: tbnz w3, #32, nowhere3893// CHECK-ERROR-NEXT: ^3894// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]3895// CHECK-ERROR-NEXT: tbnz x9, #-1, there3896// CHECK-ERROR-NEXT: ^3897// CHECK-ERROR-NEXT: error: {{expected|immediate must be an}} integer in range [0, 63]3898// CHECK-ERROR-NEXT: tbnz x20, #64, dont3899 3900//------------------------------------------------------------------------------3901// Unconditional branch (immediate)3902//------------------------------------------------------------------------------3903 3904 b #1342177283905 b #-1342177323906 b #13907// CHECK-ERROR: error: expected label or encodable integer pc offset3908// CHECK-ERROR-NEXT: b #1342177283909// CHECK-ERROR-NEXT: ^3910// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset3911// CHECK-ERROR-NEXT: b #-1342177323912// CHECK-ERROR-NEXT: ^3913// CHECK-ERROR-NEXT: error: expected label or encodable integer pc offset3914// CHECK-ERROR-NEXT: b #13915// CHECK-ERROR-NEXT: ^3916 3917//------------------------------------------------------------------------------3918// Unconditional branch (register)3919//------------------------------------------------------------------------------3920 3921 br w23922 br sp3923// CHECK-ERROR: error: invalid operand for instruction3924// CHECK-ERROR-NEXT: br w23925// CHECK-ERROR-NEXT: ^3926// CHECK-ERROR-NEXT: error: invalid operand for instruction3927// CHECK-ERROR-NEXT: br sp3928// CHECK-ERROR-NEXT: ^3929 3930 //// These ones shouldn't allow any registers3931 eret x23932 drps x23933// CHECK-ERROR: error: invalid operand for instruction3934// CHECK-ERROR-NEXT: eret x23935// CHECK-ERROR-NEXT: ^3936// CHECK-ERROR-NEXT: error: invalid operand for instruction3937// CHECK-ERROR-NEXT: drps x23938// CHECK-ERROR-NEXT: ^3939 3940