brintos

brintos / llvm-project-archived public Read only

0
0
Text · 178.6 KiB · 028700f Raw
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