851 lines · plain
1; RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon -output-asm-variant=1 -show-encoding -print-imm-hex < %s | FileCheck %s2 3foo:4;-----------------------------------------------------------------------------5; ADD #0 to/from SP/WSP is a MOV6;-----------------------------------------------------------------------------7 add x1, sp, #08; CHECK: mov x1, sp9 add sp, x2, #010; CHECK: mov sp, x211 add w3, wsp, #012; CHECK: mov w3, wsp13 add wsp, w4, #014; CHECK: mov wsp, w415 mov x5, sp16; CHECK: mov x5, sp17 mov sp, x618; CHECK: mov sp, x619 mov w7, wsp20; CHECK: mov w7, wsp21 mov wsp, w822; CHECK: mov wsp, w823 24;-----------------------------------------------------------------------------25; ORR Rd, Rn, Rn is a MOV26;-----------------------------------------------------------------------------27 orr x2, xzr, x928; CHECK: mov x2, x929 orr w2, wzr, w930; CHECK: mov w2, w931 mov x3, x432; CHECK: mov x3, x433 mov w5, w634; CHECK: mov w5, w635 36;-----------------------------------------------------------------------------37; TST Xn, #<imm>38;-----------------------------------------------------------------------------39 tst w1, #340 tst x1, #341 tst w1, w242 tst x1, x243 ands wzr, w1, w2, lsl #244 ands xzr, x1, x2, lsl #345 tst w3, w7, lsl #3146 tst x2, x20, asr #047 48; CHECK: tst w1, #0x3 ; encoding: [0x3f,0x04,0x00,0x72]49; CHECK: tst x1, #0x3 ; encoding: [0x3f,0x04,0x40,0xf2]50; CHECK: tst w1, w2 ; encoding: [0x3f,0x00,0x02,0x6a]51; CHECK: tst x1, x2 ; encoding: [0x3f,0x00,0x02,0xea]52; CHECK: tst w1, w2, lsl #2 ; encoding: [0x3f,0x08,0x02,0x6a]53; CHECK: tst x1, x2, lsl #3 ; encoding: [0x3f,0x0c,0x02,0xea]54; CHECK: tst w3, w7, lsl #31 ; encoding: [0x7f,0x7c,0x07,0x6a]55; CHECK: tst x2, x20, asr #0 ; encoding: [0x5f,0x00,0x94,0xea]56 57;-----------------------------------------------------------------------------58; ADDS to WZR/XZR is a CMN59;-----------------------------------------------------------------------------60 cmn w1, #3, lsl #061 cmn x2, #419430462 cmn w4, w563 cmn x6, x764 cmn w8, w9, asr #365 cmn x2, x3, lsr #466 cmn x2, w3, uxtb #167 cmn x4, x5, uxtx #168 69; CHECK: cmn w1, #0x3 ; encoding: [0x3f,0x0c,0x00,0x31]70; CHECK: cmn x2, #0x400, lsl #12 ; encoding: [0x5f,0x00,0x50,0xb1]71; CHECK: cmn w4, w5 ; encoding: [0x9f,0x00,0x05,0x2b]72; CHECK: cmn x6, x7 ; encoding: [0xdf,0x00,0x07,0xab]73; CHECK: cmn w8, w9, asr #3 ; encoding: [0x1f,0x0d,0x89,0x2b]74; CHECK: cmn x2, x3, lsr #4 ; encoding: [0x5f,0x10,0x43,0xab]75; CHECK: cmn x2, w3, uxtb #1 ; encoding: [0x5f,0x04,0x23,0xab]76; CHECK: cmn x4, x5, uxtx #1 ; encoding: [0x9f,0x64,0x25,0xab]77 78 79;-----------------------------------------------------------------------------80; SUBS to WZR/XZR is a CMP81;-----------------------------------------------------------------------------82 cmp w1, #1024, lsl #1283 cmp x2, #102484 cmp w4, w585 cmp x6, x786 cmp w8, w9, asr #387 cmp x2, x3, lsr #488 cmp x2, w3, uxth #289 cmp x4, x5, uxtx90 cmp wzr, w191 cmp x8, w8, uxtw92 cmp w9, w8, uxtw93 cmp wsp, w9, lsl #094 95; CHECK: cmp w1, #0x400, lsl #12 ; encoding: [0x3f,0x00,0x50,0x71]96; CHECK: cmp x2, #0x400 ; encoding: [0x5f,0x00,0x10,0xf1]97; CHECK: cmp w4, w5 ; encoding: [0x9f,0x00,0x05,0x6b]98; CHECK: cmp x6, x7 ; encoding: [0xdf,0x00,0x07,0xeb]99; CHECK: cmp w8, w9, asr #3 ; encoding: [0x1f,0x0d,0x89,0x6b]100; CHECK: cmp x2, x3, lsr #4 ; encoding: [0x5f,0x10,0x43,0xeb]101; CHECK: cmp x2, w3, uxth #2 ; encoding: [0x5f,0x28,0x23,0xeb]102; CHECK: cmp x4, x5, uxtx ; encoding: [0x9f,0x60,0x25,0xeb]103; CHECK: cmp wzr, w1 ; encoding: [0xff,0x03,0x01,0x6b]104; CHECK: cmp x8, w8, uxtw ; encoding: [0x1f,0x41,0x28,0xeb]105; CHECK: cmp w9, w8, uxtw ; encoding: [0x3f,0x41,0x28,0x6b]106; CHECK: cmp wsp, w9 ; encoding: [0xff,0x43,0x29,0x6b]107 108 109;-----------------------------------------------------------------------------110; SUB/SUBS from WZR/XZR is a NEG111;-----------------------------------------------------------------------------112 113 neg w0, w1114; CHECK: neg w0, w1115 neg w0, w1, lsl #1116; CHECK: neg w0, w1, lsl #1117 neg x0, x1118; CHECK: neg x0, x1119 neg x0, x1, asr #1120; CHECK: neg x0, x1, asr #1121 negs w0, w1122; CHECK: negs w0, w1123 negs w0, w1, lsl #1124; CHECK: negs w0, w1, lsl #1125 negs x0, x1126; CHECK: negs x0, x1127 negs x0, x1, asr #1128; CHECK: negs x0, x1, asr #1129 130;-----------------------------------------------------------------------------131; MOV aliases132;-----------------------------------------------------------------------------133 134 mov x0, #281470681743360135 mov x0, #18446744073709486080136 137; CHECK: mov x0, #0xffff00000000138; CHECK: mov x0, #-0x10000139 140 mov w0, #0xffffffff141 mov w0, #0xffffff00142 mov wzr, #0xffffffff143 mov wzr, #0xffffff00144 145; CHECK: mov w0, #-0x1146; CHECK: mov w0, #-0x100147; CHECK: mov wzr, #-0x1148; CHECK: mov wzr, #-0x100149 150 ; 0 can be encoded by MOVZ in multiple ways, only "lsl #0" is a MOV alias.151 movz x0, #0152 movz x0, #0, lsl #16153 movz x0, #0, lsl #32154 movz x0, #0, lsl #48155 movz w0, #0156 movz w0, #0, lsl #16157; CHECK: mov x0, #0x0158; CHECK: movz x0, #0x0, lsl #16159; CHECK: movz x0, #0x0, lsl #32160; CHECK: movz x0, #0x0, lsl #48161; CHECK: mov w0, #0x0162; CHECK: movz w0, #0x0, lsl #16163 164 ; Similarly to MOVZ, -1 can be encoded in multiple ways, only one of which is165 ; "MOV".166 movn x0, #0167 movn x0, #0, lsl #16168 movn x0, #0, lsl #32169 movn x0, #0, lsl #48170 movn w0, #0171 movn w0, #0, lsl #16172; CHECK: mov x0, #-0x1173; CHECK: movn x0, #0x0, lsl #16174; CHECK: movn x0, #0x0, lsl #32175; CHECK: movn x0, #0x0, lsl #48176; CHECK: mov w0, #-0x1177; CHECK: movn w0, #0x0, lsl #16178 179 ; Two 32-bit immediates are encodable by both MOVN and MOVZ, make sure the MOV180 ; corresponds to the MOVZ version.181 movz w0, #0xffff182 movz w0, #0xffff, lsl #16183 movn w0, #0xffff184 movn w0, #0xffff, lsl #16185; CHECK: mov w0, #0xffff186; CHECK: mov w0, #-0x10000187; CHECK: movn w0, #0xffff188; CHECK: movn w0, #0xffff, lsl #16189 190 orr x20, xzr, #0xaaaaaaaaaaaaaaaa191 orr w15, wzr, #0xaaaaaaaa192; CHECK: mov x20, #-0x5555555555555556193; CHECK: mov w15, #-0x55555556194 195 ; ORR is mostly repeating bit sequences and cannot encode -1, so it only196 ; overlaps with MOVZ or MOVN if the repeat-width is the whole register. In197 ; both cases MOVZ/MOVN are preferred.198 orr x3, xzr, #0x1199 orr w3, wzr, #0x1200 orr x3, xzr, #0x10000201 orr w3, wzr, #0x10000202 orr x3, xzr, #0x700000000203 orr x3, xzr, #0x3000000000000204; CHECK: orr x3, xzr, #0x1205; CHECK: orr w3, wzr, #0x1206; CHECK: orr x3, xzr, #0x10000207; CHECK: orr w3, wzr, #0x10000208; CHECK: orr x3, xzr, #0x700000000209; CHECK: orr x3, xzr, #0x3000000000000210 211 212 orr x5, xzr, #0xfffffffffffffff0213 orr w2, wzr, #0xfffffffe214 orr x5, xzr, #0xfffffffffcffffff215 orr w2, wzr, #0xf0ffffff216 orr x5, xzr, #0xffffff00ffffffff217 orr x5, xzr, #0x8000ffffffffffff218; CHECK: orr x5, xzr, #0xfffffffffffffff0219; CHECK: orr w2, wzr, #0xfffffffe220; CHECK: orr x5, xzr, #0x8000ffffffffffff221 222 ; 0xffff is interesting because there are exceptions in the MOVN rules for223 ; it. Make sure we don't accidentally fall down any of those holes.224 orr w3, wzr, #0xffff0000225 orr w3, wzr, #0xffff226 orr x3, xzr, #0xffff000000000000227 orr x5, xzr, #0x0000ffffffffffff228; CHECK: orr w3, wzr, #0xffff0000229; CHECK: orr w3, wzr, #0xffff230; CHECK: orr x3, xzr, #0xffff000000000000231; CHECK: orr x5, xzr, #0xffffffffffff232 233;-----------------------------------------------------------------------------234; MVN aliases235;-----------------------------------------------------------------------------236 237 mvn w4, w9238 mvn x2, x3239 orn w4, wzr, w9240 241; CHECK: mvn w4, w9 ; encoding: [0xe4,0x03,0x29,0x2a]242; CHECK: mvn x2, x3 ; encoding: [0xe2,0x03,0x23,0xaa]243; CHECK: mvn w4, w9 ; encoding: [0xe4,0x03,0x29,0x2a]244 245 mvn w4, w9, lsl #1246 mvn x2, x3, lsl #1247 orn w4, wzr, w9, lsl #1248 249; CHECK: mvn w4, w9, lsl #1 ; encoding: [0xe4,0x07,0x29,0x2a]250; CHECK: mvn x2, x3, lsl #1 ; encoding: [0xe2,0x07,0x23,0xaa]251; CHECK: mvn w4, w9, lsl #1 ; encoding: [0xe4,0x07,0x29,0x2a]252 253;-----------------------------------------------------------------------------254; Bitfield aliases255;-----------------------------------------------------------------------------256 257 bfi w0, w0, #1, #4258 bfi x0, x0, #1, #4259 bfi w0, w0, #0, #2260 bfi x0, x0, #0, #2261 bfxil w0, w0, #2, #3262 bfxil x0, x0, #2, #3263 sbfiz w0, w0, #1, #4264 sbfiz x0, x0, #1, #4265 sbfx w0, w0, #2, #3266 sbfx x0, x0, #2, #3267 ubfiz w0, w0, #1, #4268 ubfiz x0, x0, #1, #4269 ubfx w0, w0, #2, #3270 ubfx x0, x0, #2, #3271 272; CHECK: bfi w0, w0, #1, #4273; CHECK: bfi x0, x0, #1, #4274; CHECK: bfxil w0, w0, #0, #2275; CHECK: bfxil x0, x0, #0, #2276; CHECK: bfxil w0, w0, #2, #3277; CHECK: bfxil x0, x0, #2, #3278; CHECK: sbfiz w0, w0, #1, #4279; CHECK: sbfiz x0, x0, #1, #4280; CHECK: sbfx w0, w0, #2, #3281; CHECK: sbfx x0, x0, #2, #3282; CHECK: ubfiz w0, w0, #1, #4283; CHECK: ubfiz x0, x0, #1, #4284; CHECK: ubfx w0, w0, #2, #3285; CHECK: ubfx x0, x0, #2, #3286 287;-----------------------------------------------------------------------------288; Shift (immediate) aliases289;-----------------------------------------------------------------------------290 291; CHECK: asr w1, w3, #13292; CHECK: asr x1, x3, #13293; CHECK: lsl w0, w0, #1294; CHECK: lsl x0, x0, #1295; CHECK: lsr w0, w0, #4296; CHECK: lsr x0, x0, #4297 298 sbfm w1, w3, #13, #31299 sbfm x1, x3, #13, #63300 ubfm w0, w0, #31, #30301 ubfm x0, x0, #63, #62302 ubfm w0, w0, #4, #31303 ubfm x0, x0, #4, #63304; CHECK: ror w1, w3, #0x5305; CHECK: ror x1, x3, #0x5306 ror w1, w3, #5307 ror x1, x3, #5308; CHECK: lsl w1, wzr, #3309 lsl w1, wzr, #3310 311;-----------------------------------------------------------------------------312; Sign/Zero extend aliases313;-----------------------------------------------------------------------------314 315 sxtb w1, w2316 sxth w1, w2317 uxtb w1, w2318 uxth w1, w2319 320; CHECK: sxtb w1, w2321; CHECK: sxth w1, w2322; CHECK: uxtb w1, w2323; CHECK: uxth w1, w2324 325 sxtb x1, w2326 sxth x1, w2327 sxtw x1, w2328 uxtb x1, w2329 uxth x1, w2330 uxtw x1, w2331 332; CHECK: sxtb x1, w2333; CHECK: sxth x1, w2334; CHECK: sxtw x1, w2335; CHECK: uxtb w1, w2336; CHECK: uxth w1, w2337; CHECK: ubfx x1, x2, #0, #32338 339;-----------------------------------------------------------------------------340; Negate with carry341;-----------------------------------------------------------------------------342 343 ngc w1, w2344 ngc x1, x2345 ngcs w1, w2346 ngcs x1, x2347 348; CHECK: ngc w1, w2349; CHECK: ngc x1, x2350; CHECK: ngcs w1, w2351; CHECK: ngcs x1, x2352 353;-----------------------------------------------------------------------------354; 6.6.1 Multiply aliases355;-----------------------------------------------------------------------------356 357 mneg w1, w2, w3358 mneg x1, x2, x3359 mul w1, w2, w3360 mul x1, x2, x3361 smnegl x1, w2, w3362 umnegl x1, w2, w3363 smull x1, w2, w3364 umull x1, w2, w3365 366; CHECK: mneg w1, w2, w3367; CHECK: mneg x1, x2, x3368; CHECK: mul w1, w2, w3369; CHECK: mul x1, x2, x3370; CHECK: smnegl x1, w2, w3371; CHECK: umnegl x1, w2, w3372; CHECK: smull x1, w2, w3373; CHECK: umull x1, w2, w3374 375;-----------------------------------------------------------------------------376; Conditional select aliases377;-----------------------------------------------------------------------------378 379 cset w1, eq380 cset x1, eq381 csetm w1, ne382 csetm x1, ne383 cinc w1, w2, lt384 cinc x1, x2, lt385 cinv w1, w2, mi386 cinv x1, x2, mi387 388; CHECK: cset w1, eq389; CHECK: cset x1, eq390; CHECK: csetm w1, ne391; CHECK: csetm x1, ne392; CHECK: cinc w1, w2, lt393; CHECK: cinc x1, x2, lt394; CHECK: cinv w1, w2, mi395; CHECK: cinv x1, x2, mi396 397;-----------------------------------------------------------------------------398; SYS aliases399;-----------------------------------------------------------------------------400 401 sys #0, c7, c1, #0402; CHECK: ic ialluis403 sys #0, c7, c5, #0404; CHECK: ic iallu405 sys #3, c7, c5, #1406; CHECK: ic ivau407 408 sys #3, c7, c4, #1409; CHECK: dc zva410 sys #0, c7, c6, #1411; CHECK: dc ivac412 sys #0, c7, c6, #2413; CHECK: dc isw414 sys #3, c7, c10, #1415; CHECK: dc cvac416 sys #0, c7, c10, #2417; CHECK: dc csw418 sys #3, c7, c11, #1419; CHECK: dc cvau420 sys #3, c7, c14, #1421; CHECK: dc civac422 sys #0, c7, c14, #2423; CHECK: dc cisw424 425 sys #0, c7, c8, #0426; CHECK: at s1e1r427 sys #4, c7, c8, #0428; CHECK: at s1e2r429 sys #6, c7, c8, #0430; CHECK: at s1e3r431 sys #0, c7, c8, #1432; CHECK: at s1e1w433 sys #4, c7, c8, #1434; CHECK: at s1e2w435 sys #6, c7, c8, #1436; CHECK: at s1e3w437 sys #0, c7, c8, #2438; CHECK: at s1e0r439 sys #0, c7, c8, #3440; CHECK: at s1e0w441 sys #4, c7, c8, #4442; CHECK: at s12e1r443 sys #4, c7, c8, #5444; CHECK: at s12e1w445 sys #4, c7, c8, #6446; CHECK: at s12e0r447 sys #4, c7, c8, #7448; CHECK: at s12e0w449 450 sys #0, c8, c3, #0451; CHECK: tlbi vmalle1is452 sys #4, c8, c3, #0453; CHECK: tlbi alle2is454 sys #6, c8, c3, #0455; CHECK: tlbi alle3is456 sys #0, c8, c3, #1457; CHECK: tlbi vae1is458 sys #4, c8, c3, #1459; CHECK: tlbi vae2is460 sys #6, c8, c3, #1461; CHECK: tlbi vae3is462 sys #0, c8, c3, #2463; CHECK: tlbi aside1is464 sys #0, c8, c3, #3465; CHECK: tlbi vaae1is466 sys #4, c8, c3, #4467; CHECK: tlbi alle1is468 sys #0, c8, c3, #5469; CHECK: tlbi vale1is470 sys #0, c8, c3, #7471; CHECK: tlbi vaale1is472 sys #0, c8, c7, #0473; CHECK: tlbi vmalle1474 sys #4, c8, c7, #0475; CHECK: tlbi alle2476 sys #4, c8, c3, #5477; CHECK: tlbi vale2is478 sys #6, c8, c3, #5479; CHECK: tlbi vale3is480 sys #6, c8, c7, #0481; CHECK: tlbi alle3482 sys #0, c8, c7, #1483; CHECK: tlbi vae1484 sys #4, c8, c7, #1485; CHECK: tlbi vae2486 sys #6, c8, c7, #1487; CHECK: tlbi vae3488 sys #0, c8, c7, #2489; CHECK: tlbi aside1490 sys #0, c8, c7, #3491; CHECK: tlbi vaae1492 sys #4, c8, c7, #4493; CHECK: tlbi alle1494 sys #0, c8, c7, #5495; CHECK: tlbi vale1496 sys #4, c8, c7, #5497; CHECK: tlbi vale2498 sys #6, c8, c7, #5499; CHECK: tlbi vale3500 sys #0, c8, c7, #7501; CHECK: tlbi vaale1502 sys #4, c8, c4, #1503; CHECK: tlbi ipas2e1504 sys #4, c8, c4, #5505; CHECK: tlbi ipas2le1506 sys #4, c8, c0, #1507; CHECK: tlbi ipas2e1is508 sys #4, c8, c0, #5509; CHECK: tlbi ipas2le1is510 sys #4, c8, c7, #6511; CHECK: tlbi vmalls12e1512 sys #4, c8, c3, #6513; CHECK: tlbi vmalls12e1is514 515; Check that all 5 register bits are set (0x31):516; (from Arm ARM regarding TLBI instructions without operands)517; "Rt should be encoded as 0b11111. If the Rt field is not set to 0b11111,518; it is CONSTRAINED UNPREDICTABLE whether:519; * The instruction is UNDEFINED.520; * The instruction behaves as if the Rt field is set to 0b11111."521;522; Do not disassemble this to `tlbi` but a SYS alias instead523;524 sys #4, c8, c7, #6, x30525; CHECK: sys #0x4, c8, c7, #0x6, x30526 sys #4, c8, c7, #6, x31527; CHECK: tlbi vmalls12e1528 529 ic ialluis530; CHECK: ic ialluis ; encoding: [0x1f,0x71,0x08,0xd5]531 ic iallu532; CHECK: ic iallu ; encoding: [0x1f,0x75,0x08,0xd5]533 ic ivau, x0534; CHECK: ic ivau, x0 ; encoding: [0x20,0x75,0x0b,0xd5]535 536 dc zva, x0537; CHECK: dc zva, x0 ; encoding: [0x20,0x74,0x0b,0xd5]538 dc ivac, x0539; CHECK: dc ivac, x0 ; encoding: [0x20,0x76,0x08,0xd5]540 dc isw, x0541; CHECK: dc isw, x0 ; encoding: [0x40,0x76,0x08,0xd5]542 dc cvac, x0543; CHECK: dc cvac, x0 ; encoding: [0x20,0x7a,0x0b,0xd5]544 dc csw, x0545; CHECK: dc csw, x0 ; encoding: [0x40,0x7a,0x08,0xd5]546 dc cvau, x0547; CHECK: dc cvau, x0 ; encoding: [0x20,0x7b,0x0b,0xd5]548 dc civac, x0549; CHECK: dc civac, x0 ; encoding: [0x20,0x7e,0x0b,0xd5]550 dc cisw, x0551; CHECK: dc cisw, x0 ; encoding: [0x40,0x7e,0x08,0xd5]552 553 at s1e1r, x0554; CHECK: at s1e1r, x0 ; encoding: [0x00,0x78,0x08,0xd5]555 at s1e2r, x0556; CHECK: at s1e2r, x0 ; encoding: [0x00,0x78,0x0c,0xd5]557 at s1e3r, x0558; CHECK: at s1e3r, x0 ; encoding: [0x00,0x78,0x0e,0xd5]559 at s1e1w, x0560; CHECK: at s1e1w, x0 ; encoding: [0x20,0x78,0x08,0xd5]561 at s1e2w, x0562; CHECK: at s1e2w, x0 ; encoding: [0x20,0x78,0x0c,0xd5]563 at s1e3w, x0564; CHECK: at s1e3w, x0 ; encoding: [0x20,0x78,0x0e,0xd5]565 at s1e0r, x0566; CHECK: at s1e0r, x0 ; encoding: [0x40,0x78,0x08,0xd5]567 at s1e0w, x0568; CHECK: at s1e0w, x0 ; encoding: [0x60,0x78,0x08,0xd5]569 at s12e1r, x0570; CHECK: at s12e1r, x0 ; encoding: [0x80,0x78,0x0c,0xd5]571 at s12e1w, x0572; CHECK: at s12e1w, x0 ; encoding: [0xa0,0x78,0x0c,0xd5]573 at s12e0r, x0574; CHECK: at s12e0r, x0 ; encoding: [0xc0,0x78,0x0c,0xd5]575 at s12e0w, x0576; CHECK: at s12e0w, x0 ; encoding: [0xe0,0x78,0x0c,0xd5]577 578 tlbi vmalle1is579; CHECK: tlbi vmalle1is ; encoding: [0x1f,0x83,0x08,0xd5]580 tlbi alle2is581; CHECK: tlbi alle2is ; encoding: [0x1f,0x83,0x0c,0xd5]582 tlbi alle3is583; CHECK: tlbi alle3is ; encoding: [0x1f,0x83,0x0e,0xd5]584 tlbi vae1is, x0585; CHECK: tlbi vae1is, x0 ; encoding: [0x20,0x83,0x08,0xd5]586 tlbi vae2is, x0587; CHECK: tlbi vae2is, x0 ; encoding: [0x20,0x83,0x0c,0xd5]588 tlbi vae3is, x0589; CHECK: tlbi vae3is, x0 ; encoding: [0x20,0x83,0x0e,0xd5]590 tlbi aside1is, x0591; CHECK: tlbi aside1is, x0 ; encoding: [0x40,0x83,0x08,0xd5]592 tlbi vaae1is, x0593; CHECK: tlbi vaae1is, x0 ; encoding: [0x60,0x83,0x08,0xd5]594 tlbi alle1is595; CHECK: tlbi alle1is ; encoding: [0x9f,0x83,0x0c,0xd5]596 tlbi vale1is, x0597; CHECK: tlbi vale1is, x0 ; encoding: [0xa0,0x83,0x08,0xd5]598 tlbi vaale1is, x0599; CHECK: tlbi vaale1is, x0 ; encoding: [0xe0,0x83,0x08,0xd5]600 tlbi vmalle1601; CHECK: tlbi vmalle1 ; encoding: [0x1f,0x87,0x08,0xd5]602 tlbi alle2603; CHECK: tlbi alle2 ; encoding: [0x1f,0x87,0x0c,0xd5]604 tlbi vale2is, x0605; CHECK: tlbi vale2is, x0 ; encoding: [0xa0,0x83,0x0c,0xd5]606 tlbi vale3is, x0607; CHECK: tlbi vale3is, x0 ; encoding: [0xa0,0x83,0x0e,0xd5]608 tlbi alle3609; CHECK: tlbi alle3 ; encoding: [0x1f,0x87,0x0e,0xd5]610 tlbi vae1, x0611; CHECK: tlbi vae1, x0 ; encoding: [0x20,0x87,0x08,0xd5]612 tlbi vae2, x0613; CHECK: tlbi vae2, x0 ; encoding: [0x20,0x87,0x0c,0xd5]614 tlbi vae3, x0615; CHECK: tlbi vae3, x0 ; encoding: [0x20,0x87,0x0e,0xd5]616 tlbi aside1, x0617; CHECK: tlbi aside1, x0 ; encoding: [0x40,0x87,0x08,0xd5]618 tlbi vaae1, x0619; CHECK: tlbi vaae1, x0 ; encoding: [0x60,0x87,0x08,0xd5]620 tlbi alle1621; CHECK: tlbi alle1 ; encoding: [0x9f,0x87,0x0c,0xd5622 tlbi vale1, x0623; CHECK: tlbi vale1, x0 ; encoding: [0xa0,0x87,0x08,0xd5]624 tlbi vale2, x0625; CHECK: tlbi vale2, x0 ; encoding: [0xa0,0x87,0x0c,0xd5]626 tlbi vale3, x0627; CHECK: tlbi vale3, x0 ; encoding: [0xa0,0x87,0x0e,0xd5]628 tlbi vaale1, x0629; CHECK: tlbi vaale1, x0 ; encoding: [0xe0,0x87,0x08,0xd5]630 tlbi ipas2e1, x0631; CHECK: tlbi ipas2e1, x0 ; encoding: [0x20,0x84,0x0c,0xd5]632 tlbi ipas2le1, x0633; CHECK: tlbi ipas2le1, x0 ; encoding: [0xa0,0x84,0x0c,0xd5]634 tlbi ipas2e1is, x0635; CHECK: tlbi ipas2e1is, x0 ; encoding: [0x20,0x80,0x0c,0xd5]636 tlbi ipas2le1is, x0637; CHECK: tlbi ipas2le1is, x0 ; encoding: [0xa0,0x80,0x0c,0xd5]638 tlbi vmalls12e1639; CHECK: tlbi vmalls12e1 ; encoding: [0xdf,0x87,0x0c,0xd5]640 tlbi vmalls12e1is641; CHECK: tlbi vmalls12e1is ; encoding: [0xdf,0x83,0x0c,0xd5]642 643;-----------------------------------------------------------------------------644; 5.8.5 Vector Arithmetic aliases645;-----------------------------------------------------------------------------646 647 cmls.8b v0, v2, v1648 cmls.16b v0, v2, v1649 cmls.4h v0, v2, v1650 cmls.8h v0, v2, v1651 cmls.2s v0, v2, v1652 cmls.4s v0, v2, v1653 cmls.2d v0, v2, v1654; CHECK: cmhs.8b v0, v1, v2655; CHECK: cmhs.16b v0, v1, v2656; CHECK: cmhs.4h v0, v1, v2657; CHECK: cmhs.8h v0, v1, v2658; CHECK: cmhs.2s v0, v1, v2659; CHECK: cmhs.4s v0, v1, v2660; CHECK: cmhs.2d v0, v1, v2661 662 cmlo.8b v0, v2, v1663 cmlo.16b v0, v2, v1664 cmlo.4h v0, v2, v1665 cmlo.8h v0, v2, v1666 cmlo.2s v0, v2, v1667 cmlo.4s v0, v2, v1668 cmlo.2d v0, v2, v1669; CHECK: cmhi.8b v0, v1, v2670; CHECK: cmhi.16b v0, v1, v2671; CHECK: cmhi.4h v0, v1, v2672; CHECK: cmhi.8h v0, v1, v2673; CHECK: cmhi.2s v0, v1, v2674; CHECK: cmhi.4s v0, v1, v2675; CHECK: cmhi.2d v0, v1, v2676 677 cmle.8b v0, v2, v1678 cmle.16b v0, v2, v1679 cmle.4h v0, v2, v1680 cmle.8h v0, v2, v1681 cmle.2s v0, v2, v1682 cmle.4s v0, v2, v1683 cmle.2d v0, v2, v1684; CHECK: cmge.8b v0, v1, v2685; CHECK: cmge.16b v0, v1, v2686; CHECK: cmge.4h v0, v1, v2687; CHECK: cmge.8h v0, v1, v2688; CHECK: cmge.2s v0, v1, v2689; CHECK: cmge.4s v0, v1, v2690; CHECK: cmge.2d v0, v1, v2691 692 cmlt.8b v0, v2, v1693 cmlt.16b v0, v2, v1694 cmlt.4h v0, v2, v1695 cmlt.8h v0, v2, v1696 cmlt.2s v0, v2, v1697 cmlt.4s v0, v2, v1698 cmlt.2d v0, v2, v1699; CHECK: cmgt.8b v0, v1, v2700; CHECK: cmgt.16b v0, v1, v2701; CHECK: cmgt.4h v0, v1, v2702; CHECK: cmgt.8h v0, v1, v2703; CHECK: cmgt.2s v0, v1, v2704; CHECK: cmgt.4s v0, v1, v2705; CHECK: cmgt.2d v0, v1, v2706 707 fcmle.2s v0, v2, v1708 fcmle.4s v0, v2, v1709 fcmle.2d v0, v2, v1710; CHECK: fcmge.2s v0, v1, v2711; CHECK: fcmge.4s v0, v1, v2712; CHECK: fcmge.2d v0, v1, v2713 714 fcmlt.2s v0, v2, v1715 fcmlt.4s v0, v2, v1716 fcmlt.2d v0, v2, v1717; CHECK: fcmgt.2s v0, v1, v2718; CHECK: fcmgt.4s v0, v1, v2719; CHECK: fcmgt.2d v0, v1, v2720 721 facle.2s v0, v2, v1722 facle.4s v0, v2, v1723 facle.2d v0, v2, v1724; CHECK: facge.2s v0, v1, v2725; CHECK: facge.4s v0, v1, v2726; CHECK: facge.2d v0, v1, v2727 728 faclt.2s v0, v2, v1729 faclt.4s v0, v2, v1730 faclt.2d v0, v2, v1731; CHECK: facgt.2s v0, v1, v2732; CHECK: facgt.4s v0, v1, v2733; CHECK: facgt.2d v0, v1, v2734 735;-----------------------------------------------------------------------------736; 5.8.6 Scalar Arithmetic aliases737;-----------------------------------------------------------------------------738 739 cmls d0, d2, d1740; CHECK: cmhs d0, d1, d2741 742 cmle d0, d2, d1743; CHECK: cmge d0, d1, d2744 745 cmlo d0, d2, d1746; CHECK: cmhi d0, d1, d2747 748 cmlt d0, d2, d1749; CHECK: cmgt d0, d1, d2750 751 fcmle s0, s2, s1752 fcmle d0, d2, d1753; CHECK: fcmge s0, s1, s2754; CHECK: fcmge d0, d1, d2755 756 fcmlt s0, s2, s1757 fcmlt d0, d2, d1758; CHECK: fcmgt s0, s1, s2759; CHECK: fcmgt d0, d1, d2760 761 facle s0, s2, s1762 facle d0, d2, d1763; CHECK: facge s0, s1, s2764; CHECK: facge d0, d1, d2765 766 faclt s0, s2, s1767 faclt d0, d2, d1768; CHECK: facgt s0, s1, s2769; CHECK: facgt d0, d1, d2770 771;-----------------------------------------------------------------------------772; 5.8.14 Vector Shift (immediate)773;-----------------------------------------------------------------------------774 sxtl v1.8h, v2.8b775; CHECK: sshll.8h v1, v2, #0776 sxtl.8h v1, v2777; CHECK: sshll.8h v1, v2, #0778 779 sxtl v1.4s, v2.4h780; CHECK: sshll.4s v1, v2, #0781 sxtl.4s v1, v2782; CHECK: sshll.4s v1, v2, #0783 784 sxtl v1.2d, v2.2s785; CHECK: sshll.2d v1, v2, #0786 sxtl.2d v1, v2787; CHECK: sshll.2d v1, v2, #0788 789 sxtl2 v1.8h, v2.16b790; CHECK: sshll2.8h v1, v2, #0791 sxtl2.8h v1, v2792; CHECK: sshll2.8h v1, v2, #0793 794 sxtl2 v1.4s, v2.8h795; CHECK: sshll2.4s v1, v2, #0796 sxtl2.4s v1, v2797; CHECK: sshll2.4s v1, v2, #0798 799 sxtl2 v1.2d, v2.4s800; CHECK: sshll2.2d v1, v2, #0801 sxtl2.2d v1, v2802; CHECK: sshll2.2d v1, v2, #0803 804 uxtl v1.8h, v2.8b805; CHECK: ushll.8h v1, v2, #0806 uxtl.8h v1, v2807; CHECK: ushll.8h v1, v2, #0808 809 uxtl v1.4s, v2.4h810; CHECK: ushll.4s v1, v2, #0811 uxtl.4s v1, v2812; CHECK: ushll.4s v1, v2, #0813 814 uxtl v1.2d, v2.2s815; CHECK: ushll.2d v1, v2, #0816 uxtl.2d v1, v2817; CHECK: ushll.2d v1, v2, #0818 819 uxtl2 v1.8h, v2.16b820; CHECK: ushll2.8h v1, v2, #0821 uxtl2.8h v1, v2822; CHECK: ushll2.8h v1, v2, #0823 824 uxtl2 v1.4s, v2.8h825; CHECK: ushll2.4s v1, v2, #0826 uxtl2.4s v1, v2827; CHECK: ushll2.4s v1, v2, #0828 829 uxtl2 v1.2d, v2.4s830; CHECK: ushll2.2d v1, v2, #0831 uxtl2.2d v1, v2832; CHECK: ushll2.2d v1, v2, #0833 834 835;-----------------------------------------------------------------------------836; MOVI verbose syntax with shift operand omitted.837;-----------------------------------------------------------------------------838 movi v4.16b, #0x00839 movi v4.16B, #0x01840 movi v4.8b, #0x02841 movi v4.8B, #0x03842 movi v1.2d, #0x000000000000ff843 movi v2.2D, #0x000000000000ff844 845; CHECK: movi.16b v4, #0x0 ; encoding: [0x04,0xe4,0x00,0x4f]846; CHECK: movi.16b v4, #0x1 ; encoding: [0x24,0xe4,0x00,0x4f]847; CHECK: movi.8b v4, #0x2 ; encoding: [0x44,0xe4,0x00,0x0f]848; CHECK: movi.8b v4, #0x3 ; encoding: [0x64,0xe4,0x00,0x0f]849; CHECK: movi.2d v1, #0x000000000000ff ; encoding: [0x21,0xe4,0x00,0x6f]850; CHECK: movi.2d v2, #0x000000000000ff ; encoding: [0x22,0xe4,0x00,0x6f]851