1; RUN: llvm-mc -triple arm64-apple-darwin -mattr=neon -output-asm-variant=1 -show-encoding < %s | FileCheck %s 2 3foo: 4;----------------------------------------------------------------------------- 5; ADD #0 to/from SP/WSP is a MOV 6;----------------------------------------------------------------------------- 7 add x1, sp, #0 8; CHECK: mov x1, sp 9 add sp, x2, #0 10; CHECK: mov sp, x2 11 add w3, wsp, #0 12; CHECK: mov w3, wsp 13 add wsp, w4, #0 14; CHECK: mov wsp, w4 15 mov x5, sp 16; CHECK: mov x5, sp 17 mov sp, x6 18; CHECK: mov sp, x6 19 mov w7, wsp 20; CHECK: mov w7, wsp 21 mov wsp, w8 22; CHECK: mov wsp, w8 23 24;----------------------------------------------------------------------------- 25; ORR Rd, Rn, Rn is a MOV 26;----------------------------------------------------------------------------- 27 orr x2, xzr, x9 28; CHECK: mov x2, x9 29 orr w2, wzr, w9 30; CHECK: mov w2, w9 31 mov x3, x4 32; CHECK: mov x3, x4 33 mov w5, w6 34; CHECK: mov w5, w6 35 36;----------------------------------------------------------------------------- 37; TST Xn, #<imm> 38;----------------------------------------------------------------------------- 39 tst w1, #3 40 tst x1, #3 41 tst w1, w2 42 tst x1, x2 43 ands wzr, w1, w2, lsl #2 44 ands xzr, x1, x2, lsl #3 45 tst w3, w7, lsl #31 46 tst x2, x20, asr #0 47 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 CMN 59;----------------------------------------------------------------------------- 60 cmn w1, #3, lsl #0 61 cmn x2, #4194304 62 cmn w4, w5 63 cmn x6, x7 64 cmn w8, w9, asr #3 65 cmn x2, x3, lsr #4 66 cmn x2, w3, uxtb #1 67 cmn x4, x5, uxtx #1 68 69; CHECK: cmn w1, #3 ; encoding: [0x3f,0x0c,0x00,0x31] 70; CHECK: cmn x2, #1024, 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 CMP 81;----------------------------------------------------------------------------- 82 cmp w1, #1024, lsl #12 83 cmp x2, #1024 84 cmp w4, w5 85 cmp x6, x7 86 cmp w8, w9, asr #3 87 cmp x2, x3, lsr #4 88 cmp x2, w3, uxth #2 89 cmp x4, x5, uxtx 90 cmp wzr, w1 91 cmp x8, w8, uxtw 92 cmp w9, w8, uxtw 93 cmp wsp, w9, lsl #0 94 95; CHECK: cmp w1, #1024, lsl #12 ; encoding: [0x3f,0x00,0x50,0x71] 96; CHECK: cmp x2, #1024 ; 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 NEG 111;----------------------------------------------------------------------------- 112 113 neg w0, w1 114; CHECK: neg w0, w1 115 neg w0, w1, lsl #1 116; CHECK: neg w0, w1, lsl #1 117 neg x0, x1 118; CHECK: neg x0, x1 119 neg x0, x1, asr #1 120; CHECK: neg x0, x1, asr #1 121 negs w0, w1 122; CHECK: negs w0, w1 123 negs w0, w1, lsl #1 124; CHECK: negs w0, w1, lsl #1 125 negs x0, x1 126; CHECK: negs x0, x1 127 negs x0, x1, asr #1 128; CHECK: negs x0, x1, asr #1 129 130;----------------------------------------------------------------------------- 131; MOV aliases 132;----------------------------------------------------------------------------- 133 134 mov x0, #281470681743360 135 mov x0, #18446744073709486080 136 137; CHECK: movz x0, #0xffff, lsl #32 138; CHECK: movn x0, #0xffff 139 140 mov w0, #0xffffffff 141 mov w0, #0xffffff00 142 mov wzr, #0xffffffff 143 mov wzr, #0xffffff00 144 145; CHECK: movn w0, #0 146; CHECK: movn w0, #0xff 147; CHECK: movn wzr, #0 148; CHECK: movn wzr, #0xff 149 150;----------------------------------------------------------------------------- 151; MVN aliases 152;----------------------------------------------------------------------------- 153 154 mvn w4, w9 155 mvn x2, x3 156 orn w4, wzr, w9 157 158; CHECK: mvn w4, w9 ; encoding: [0xe4,0x03,0x29,0x2a] 159; CHECK: mvn x2, x3 ; encoding: [0xe2,0x03,0x23,0xaa] 160; CHECK: mvn w4, w9 ; encoding: [0xe4,0x03,0x29,0x2a] 161 162 mvn w4, w9, lsl #1 163 mvn x2, x3, lsl #1 164 orn w4, wzr, w9, lsl #1 165 166; CHECK: mvn w4, w9, lsl #1 ; encoding: [0xe4,0x07,0x29,0x2a] 167; CHECK: mvn x2, x3, lsl #1 ; encoding: [0xe2,0x07,0x23,0xaa] 168; CHECK: mvn w4, w9, lsl #1 ; encoding: [0xe4,0x07,0x29,0x2a] 169 170;----------------------------------------------------------------------------- 171; Bitfield aliases 172;----------------------------------------------------------------------------- 173 174 bfi w0, w0, #1, #4 175 bfi x0, x0, #1, #4 176 bfi w0, w0, #0, #2 177 bfi x0, x0, #0, #2 178 bfxil w0, w0, #2, #3 179 bfxil x0, x0, #2, #3 180 sbfiz w0, w0, #1, #4 181 sbfiz x0, x0, #1, #4 182 sbfx w0, w0, #2, #3 183 sbfx x0, x0, #2, #3 184 ubfiz w0, w0, #1, #4 185 ubfiz x0, x0, #1, #4 186 ubfx w0, w0, #2, #3 187 ubfx x0, x0, #2, #3 188 189; CHECK: bfi w0, w0, #1, #4 190; CHECK: bfi x0, x0, #1, #4 191; CHECK: bfxil w0, w0, #0, #2 192; CHECK: bfxil x0, x0, #0, #2 193; CHECK: bfxil w0, w0, #2, #3 194; CHECK: bfxil x0, x0, #2, #3 195; CHECK: sbfiz w0, w0, #1, #4 196; CHECK: sbfiz x0, x0, #1, #4 197; CHECK: sbfx w0, w0, #2, #3 198; CHECK: sbfx x0, x0, #2, #3 199; CHECK: ubfiz w0, w0, #1, #4 200; CHECK: ubfiz x0, x0, #1, #4 201; CHECK: ubfx w0, w0, #2, #3 202; CHECK: ubfx x0, x0, #2, #3 203 204;----------------------------------------------------------------------------- 205; Shift (immediate) aliases 206;----------------------------------------------------------------------------- 207 208; CHECK: asr w1, w3, #13 209; CHECK: asr x1, x3, #13 210; CHECK: lsl w0, w0, #1 211; CHECK: lsl x0, x0, #1 212; CHECK: lsr w0, w0, #4 213; CHECK: lsr x0, x0, #4 214 215 sbfm w1, w3, #13, #31 216 sbfm x1, x3, #13, #63 217 ubfm w0, w0, #31, #30 218 ubfm x0, x0, #63, #62 219 ubfm w0, w0, #4, #31 220 ubfm x0, x0, #4, #63 221; CHECK: ror w1, w3, #5 222; CHECK: ror x1, x3, #5 223 ror w1, w3, #5 224 ror x1, x3, #5 225; CHECK: lsl w1, wzr, #3 226 lsl w1, wzr, #3 227 228;----------------------------------------------------------------------------- 229; Sign/Zero extend aliases 230;----------------------------------------------------------------------------- 231 232 sxtb w1, w2 233 sxth w1, w2 234 uxtb w1, w2 235 uxth w1, w2 236 237; CHECK: sxtb w1, w2 238; CHECK: sxth w1, w2 239; CHECK: uxtb w1, w2 240; CHECK: uxth w1, w2 241 242 sxtb x1, w2 243 sxth x1, w2 244 sxtw x1, w2 245 uxtb x1, w2 246 uxth x1, w2 247 uxtw x1, w2 248 249; CHECK: sxtb x1, w2 250; CHECK: sxth x1, w2 251; CHECK: sxtw x1, w2 252; CHECK: uxtb w1, w2 253; CHECK: uxth w1, w2 254; CHECK: ubfx x1, x2, #0, #32 255 256;----------------------------------------------------------------------------- 257; Negate with carry 258;----------------------------------------------------------------------------- 259 260 ngc w1, w2 261 ngc x1, x2 262 ngcs w1, w2 263 ngcs x1, x2 264 265; CHECK: ngc w1, w2 266; CHECK: ngc x1, x2 267; CHECK: ngcs w1, w2 268; CHECK: ngcs x1, x2 269 270;----------------------------------------------------------------------------- 271; 6.6.1 Multiply aliases 272;----------------------------------------------------------------------------- 273 274 mneg w1, w2, w3 275 mneg x1, x2, x3 276 mul w1, w2, w3 277 mul x1, x2, x3 278 smnegl x1, w2, w3 279 umnegl x1, w2, w3 280 smull x1, w2, w3 281 umull x1, w2, w3 282 283; CHECK: mneg w1, w2, w3 284; CHECK: mneg x1, x2, x3 285; CHECK: mul w1, w2, w3 286; CHECK: mul x1, x2, x3 287; CHECK: smnegl x1, w2, w3 288; CHECK: umnegl x1, w2, w3 289; CHECK: smull x1, w2, w3 290; CHECK: umull x1, w2, w3 291 292;----------------------------------------------------------------------------- 293; Conditional select aliases 294;----------------------------------------------------------------------------- 295 296 cset w1, eq 297 cset x1, eq 298 csetm w1, ne 299 csetm x1, ne 300 cinc w1, w2, lt 301 cinc x1, x2, lt 302 cinv w1, w2, mi 303 cinv x1, x2, mi 304 305; CHECK: cset w1, eq 306; CHECK: cset x1, eq 307; CHECK: csetm w1, ne 308; CHECK: csetm x1, ne 309; CHECK: cinc w1, w2, lt 310; CHECK: cinc x1, x2, lt 311; CHECK: cinv w1, w2, mi 312; CHECK: cinv x1, x2, mi 313 314;----------------------------------------------------------------------------- 315; SYS aliases 316;----------------------------------------------------------------------------- 317 318 sys #0, c7, c1, #0 319; CHECK: ic ialluis 320 sys #0, c7, c5, #0 321; CHECK: ic iallu 322 sys #3, c7, c5, #1 323; CHECK: ic ivau 324 325 sys #3, c7, c4, #1 326; CHECK: dc zva 327 sys #0, c7, c6, #1 328; CHECK: dc ivac 329 sys #0, c7, c6, #2 330; CHECK: dc isw 331 sys #3, c7, c10, #1 332; CHECK: dc cvac 333 sys #0, c7, c10, #2 334; CHECK: dc csw 335 sys #3, c7, c11, #1 336; CHECK: dc cvau 337 sys #3, c7, c14, #1 338; CHECK: dc civac 339 sys #0, c7, c14, #2 340; CHECK: dc cisw 341 342 sys #0, c7, c8, #0 343; CHECK: at s1e1r 344 sys #4, c7, c8, #0 345; CHECK: at s1e2r 346 sys #6, c7, c8, #0 347; CHECK: at s1e3r 348 sys #0, c7, c8, #1 349; CHECK: at s1e1w 350 sys #4, c7, c8, #1 351; CHECK: at s1e2w 352 sys #6, c7, c8, #1 353; CHECK: at s1e3w 354 sys #0, c7, c8, #2 355; CHECK: at s1e0r 356 sys #0, c7, c8, #3 357; CHECK: at s1e0w 358 sys #4, c7, c8, #4 359; CHECK: at s12e1r 360 sys #4, c7, c8, #5 361; CHECK: at s12e1w 362 sys #4, c7, c8, #6 363; CHECK: at s12e0r 364 sys #4, c7, c8, #7 365; CHECK: at s12e0w 366 367 sys #0, c8, c3, #0 368; CHECK: tlbi vmalle1is 369 sys #4, c8, c3, #0 370; CHECK: tlbi alle2is 371 sys #6, c8, c3, #0 372; CHECK: tlbi alle3is 373 sys #0, c8, c3, #1 374; CHECK: tlbi vae1is 375 sys #4, c8, c3, #1 376; CHECK: tlbi vae2is 377 sys #6, c8, c3, #1 378; CHECK: tlbi vae3is 379 sys #0, c8, c3, #2 380; CHECK: tlbi aside1is 381 sys #0, c8, c3, #3 382; CHECK: tlbi vaae1is 383 sys #4, c8, c3, #4 384; CHECK: tlbi alle1is 385 sys #0, c8, c3, #5 386; CHECK: tlbi vale1is 387 sys #0, c8, c3, #7 388; CHECK: tlbi vaale1is 389 sys #0, c8, c7, #0 390; CHECK: tlbi vmalle1 391 sys #4, c8, c7, #0 392; CHECK: tlbi alle2 393 sys #4, c8, c3, #5 394; CHECK: tlbi vale2is 395 sys #6, c8, c3, #5 396; CHECK: tlbi vale3is 397 sys #6, c8, c7, #0 398; CHECK: tlbi alle3 399 sys #0, c8, c7, #1 400; CHECK: tlbi vae1 401 sys #4, c8, c7, #1 402; CHECK: tlbi vae2 403 sys #6, c8, c7, #1 404; CHECK: tlbi vae3 405 sys #0, c8, c7, #2 406; CHECK: tlbi aside1 407 sys #0, c8, c7, #3 408; CHECK: tlbi vaae1 409 sys #4, c8, c7, #4 410; CHECK: tlbi alle1 411 sys #0, c8, c7, #5 412; CHECK: tlbi vale1 413 sys #4, c8, c7, #5 414; CHECK: tlbi vale2 415 sys #6, c8, c7, #5 416; CHECK: tlbi vale3 417 sys #0, c8, c7, #7 418; CHECK: tlbi vaale1 419 sys #4, c8, c4, #1 420; CHECK: tlbi ipas2e1 421 sys #4, c8, c4, #5 422; CHECK: tlbi ipas2le1 423 sys #4, c8, c0, #1 424; CHECK: tlbi ipas2e1is 425 sys #4, c8, c0, #5 426; CHECK: tlbi ipas2le1is 427 sys #4, c8, c7, #6 428; CHECK: tlbi vmalls12e1 429 sys #4, c8, c3, #6 430; CHECK: tlbi vmalls12e1is 431 432 ic ialluis 433; CHECK: ic ialluis ; encoding: [0x1f,0x71,0x08,0xd5] 434 ic iallu 435; CHECK: ic iallu ; encoding: [0x1f,0x75,0x08,0xd5] 436 ic ivau, x0 437; CHECK: ic ivau, x0 ; encoding: [0x20,0x75,0x0b,0xd5] 438 439 dc zva, x0 440; CHECK: dc zva, x0 ; encoding: [0x20,0x74,0x0b,0xd5] 441 dc ivac, x0 442; CHECK: dc ivac, x0 ; encoding: [0x20,0x76,0x08,0xd5] 443 dc isw, x0 444; CHECK: dc isw, x0 ; encoding: [0x40,0x76,0x08,0xd5] 445 dc cvac, x0 446; CHECK: dc cvac, x0 ; encoding: [0x20,0x7a,0x0b,0xd5] 447 dc csw, x0 448; CHECK: dc csw, x0 ; encoding: [0x40,0x7a,0x08,0xd5] 449 dc cvau, x0 450; CHECK: dc cvau, x0 ; encoding: [0x20,0x7b,0x0b,0xd5] 451 dc civac, x0 452; CHECK: dc civac, x0 ; encoding: [0x20,0x7e,0x0b,0xd5] 453 dc cisw, x0 454; CHECK: dc cisw, x0 ; encoding: [0x40,0x7e,0x08,0xd5] 455 456 at s1e1r, x0 457; CHECK: at s1e1r, x0 ; encoding: [0x00,0x78,0x08,0xd5] 458 at s1e2r, x0 459; CHECK: at s1e2r, x0 ; encoding: [0x00,0x78,0x0c,0xd5] 460 at s1e3r, x0 461; CHECK: at s1e3r, x0 ; encoding: [0x00,0x78,0x0e,0xd5] 462 at s1e1w, x0 463; CHECK: at s1e1w, x0 ; encoding: [0x20,0x78,0x08,0xd5] 464 at s1e2w, x0 465; CHECK: at s1e2w, x0 ; encoding: [0x20,0x78,0x0c,0xd5] 466 at s1e3w, x0 467; CHECK: at s1e3w, x0 ; encoding: [0x20,0x78,0x0e,0xd5] 468 at s1e0r, x0 469; CHECK: at s1e0r, x0 ; encoding: [0x40,0x78,0x08,0xd5] 470 at s1e0w, x0 471; CHECK: at s1e0w, x0 ; encoding: [0x60,0x78,0x08,0xd5] 472 at s12e1r, x0 473; CHECK: at s12e1r, x0 ; encoding: [0x80,0x78,0x0c,0xd5] 474 at s12e1w, x0 475; CHECK: at s12e1w, x0 ; encoding: [0xa0,0x78,0x0c,0xd5] 476 at s12e0r, x0 477; CHECK: at s12e0r, x0 ; encoding: [0xc0,0x78,0x0c,0xd5] 478 at s12e0w, x0 479; CHECK: at s12e0w, x0 ; encoding: [0xe0,0x78,0x0c,0xd5] 480 481 tlbi vmalle1is 482; CHECK: tlbi vmalle1is ; encoding: [0x1f,0x83,0x08,0xd5] 483 tlbi alle2is 484; CHECK: tlbi alle2is ; encoding: [0x1f,0x83,0x0c,0xd5] 485 tlbi alle3is 486; CHECK: tlbi alle3is ; encoding: [0x1f,0x83,0x0e,0xd5] 487 tlbi vae1is, x0 488; CHECK: tlbi vae1is, x0 ; encoding: [0x20,0x83,0x08,0xd5] 489 tlbi vae2is, x0 490; CHECK: tlbi vae2is, x0 ; encoding: [0x20,0x83,0x0c,0xd5] 491 tlbi vae3is, x0 492; CHECK: tlbi vae3is, x0 ; encoding: [0x20,0x83,0x0e,0xd5] 493 tlbi aside1is, x0 494; CHECK: tlbi aside1is, x0 ; encoding: [0x40,0x83,0x08,0xd5] 495 tlbi vaae1is, x0 496; CHECK: tlbi vaae1is, x0 ; encoding: [0x60,0x83,0x08,0xd5] 497 tlbi alle1is 498; CHECK: tlbi alle1is ; encoding: [0x9f,0x83,0x0c,0xd5] 499 tlbi vale1is, x0 500; CHECK: tlbi vale1is, x0 ; encoding: [0xa0,0x83,0x08,0xd5] 501 tlbi vaale1is, x0 502; CHECK: tlbi vaale1is, x0 ; encoding: [0xe0,0x83,0x08,0xd5] 503 tlbi vmalle1 504; CHECK: tlbi vmalle1 ; encoding: [0x1f,0x87,0x08,0xd5] 505 tlbi alle2 506; CHECK: tlbi alle2 ; encoding: [0x1f,0x87,0x0c,0xd5] 507 tlbi vale2is, x0 508; CHECK: tlbi vale2is, x0 ; encoding: [0xa0,0x83,0x0c,0xd5] 509 tlbi vale3is, x0 510; CHECK: tlbi vale3is, x0 ; encoding: [0xa0,0x83,0x0e,0xd5] 511 tlbi alle3 512; CHECK: tlbi alle3 ; encoding: [0x1f,0x87,0x0e,0xd5] 513 tlbi vae1, x0 514; CHECK: tlbi vae1, x0 ; encoding: [0x20,0x87,0x08,0xd5] 515 tlbi vae2, x0 516; CHECK: tlbi vae2, x0 ; encoding: [0x20,0x87,0x0c,0xd5] 517 tlbi vae3, x0 518; CHECK: tlbi vae3, x0 ; encoding: [0x20,0x87,0x0e,0xd5] 519 tlbi aside1, x0 520; CHECK: tlbi aside1, x0 ; encoding: [0x40,0x87,0x08,0xd5] 521 tlbi vaae1, x0 522; CHECK: tlbi vaae1, x0 ; encoding: [0x60,0x87,0x08,0xd5] 523 tlbi alle1 524; CHECK: tlbi alle1 ; encoding: [0x9f,0x87,0x0c,0xd5 525 tlbi vale1, x0 526; CHECK: tlbi vale1, x0 ; encoding: [0xa0,0x87,0x08,0xd5] 527 tlbi vale2, x0 528; CHECK: tlbi vale2, x0 ; encoding: [0xa0,0x87,0x0c,0xd5] 529 tlbi vale3, x0 530; CHECK: tlbi vale3, x0 ; encoding: [0xa0,0x87,0x0e,0xd5] 531 tlbi vaale1, x0 532; CHECK: tlbi vaale1, x0 ; encoding: [0xe0,0x87,0x08,0xd5] 533 tlbi ipas2e1, x0 534; CHECK: tlbi ipas2e1, x0 ; encoding: [0x20,0x84,0x0c,0xd5] 535 tlbi ipas2le1, x0 536; CHECK: tlbi ipas2le1, x0 ; encoding: [0xa0,0x84,0x0c,0xd5] 537 tlbi ipas2e1is, x0 538; CHECK: tlbi ipas2e1is, x0 ; encoding: [0x20,0x80,0x0c,0xd5] 539 tlbi ipas2le1is, x0 540; CHECK: tlbi ipas2le1is, x0 ; encoding: [0xa0,0x80,0x0c,0xd5] 541 tlbi vmalls12e1 542; CHECK: tlbi vmalls12e1 ; encoding: [0xdf,0x87,0x0c,0xd5] 543 tlbi vmalls12e1is 544; CHECK: tlbi vmalls12e1is ; encoding: [0xdf,0x83,0x0c,0xd5] 545 546;----------------------------------------------------------------------------- 547; 5.8.5 Vector Arithmetic aliases 548;----------------------------------------------------------------------------- 549 550 cmls.8b v0, v2, v1 551 cmls.16b v0, v2, v1 552 cmls.4h v0, v2, v1 553 cmls.8h v0, v2, v1 554 cmls.2s v0, v2, v1 555 cmls.4s v0, v2, v1 556 cmls.2d v0, v2, v1 557; CHECK: cmhs.8b v0, v1, v2 558; CHECK: cmhs.16b v0, v1, v2 559; CHECK: cmhs.4h v0, v1, v2 560; CHECK: cmhs.8h v0, v1, v2 561; CHECK: cmhs.2s v0, v1, v2 562; CHECK: cmhs.4s v0, v1, v2 563; CHECK: cmhs.2d v0, v1, v2 564 565 cmlo.8b v0, v2, v1 566 cmlo.16b v0, v2, v1 567 cmlo.4h v0, v2, v1 568 cmlo.8h v0, v2, v1 569 cmlo.2s v0, v2, v1 570 cmlo.4s v0, v2, v1 571 cmlo.2d v0, v2, v1 572; CHECK: cmhi.8b v0, v1, v2 573; CHECK: cmhi.16b v0, v1, v2 574; CHECK: cmhi.4h v0, v1, v2 575; CHECK: cmhi.8h v0, v1, v2 576; CHECK: cmhi.2s v0, v1, v2 577; CHECK: cmhi.4s v0, v1, v2 578; CHECK: cmhi.2d v0, v1, v2 579 580 cmle.8b v0, v2, v1 581 cmle.16b v0, v2, v1 582 cmle.4h v0, v2, v1 583 cmle.8h v0, v2, v1 584 cmle.2s v0, v2, v1 585 cmle.4s v0, v2, v1 586 cmle.2d v0, v2, v1 587; CHECK: cmge.8b v0, v1, v2 588; CHECK: cmge.16b v0, v1, v2 589; CHECK: cmge.4h v0, v1, v2 590; CHECK: cmge.8h v0, v1, v2 591; CHECK: cmge.2s v0, v1, v2 592; CHECK: cmge.4s v0, v1, v2 593; CHECK: cmge.2d v0, v1, v2 594 595 cmlt.8b v0, v2, v1 596 cmlt.16b v0, v2, v1 597 cmlt.4h v0, v2, v1 598 cmlt.8h v0, v2, v1 599 cmlt.2s v0, v2, v1 600 cmlt.4s v0, v2, v1 601 cmlt.2d v0, v2, v1 602; CHECK: cmgt.8b v0, v1, v2 603; CHECK: cmgt.16b v0, v1, v2 604; CHECK: cmgt.4h v0, v1, v2 605; CHECK: cmgt.8h v0, v1, v2 606; CHECK: cmgt.2s v0, v1, v2 607; CHECK: cmgt.4s v0, v1, v2 608; CHECK: cmgt.2d v0, v1, v2 609 610 fcmle.2s v0, v2, v1 611 fcmle.4s v0, v2, v1 612 fcmle.2d v0, v2, v1 613; CHECK: fcmge.2s v0, v1, v2 614; CHECK: fcmge.4s v0, v1, v2 615; CHECK: fcmge.2d v0, v1, v2 616 617 fcmlt.2s v0, v2, v1 618 fcmlt.4s v0, v2, v1 619 fcmlt.2d v0, v2, v1 620; CHECK: fcmgt.2s v0, v1, v2 621; CHECK: fcmgt.4s v0, v1, v2 622; CHECK: fcmgt.2d v0, v1, v2 623 624 facle.2s v0, v2, v1 625 facle.4s v0, v2, v1 626 facle.2d v0, v2, v1 627; CHECK: facge.2s v0, v1, v2 628; CHECK: facge.4s v0, v1, v2 629; CHECK: facge.2d v0, v1, v2 630 631 faclt.2s v0, v2, v1 632 faclt.4s v0, v2, v1 633 faclt.2d v0, v2, v1 634; CHECK: facgt.2s v0, v1, v2 635; CHECK: facgt.4s v0, v1, v2 636; CHECK: facgt.2d v0, v1, v2 637 638;----------------------------------------------------------------------------- 639; 5.8.6 Scalar Arithmetic aliases 640;----------------------------------------------------------------------------- 641 642 cmls d0, d2, d1 643; CHECK: cmhs d0, d1, d2 644 645 cmle d0, d2, d1 646; CHECK: cmge d0, d1, d2 647 648 cmlo d0, d2, d1 649; CHECK: cmhi d0, d1, d2 650 651 cmlt d0, d2, d1 652; CHECK: cmgt d0, d1, d2 653 654 fcmle s0, s2, s1 655 fcmle d0, d2, d1 656; CHECK: fcmge s0, s1, s2 657; CHECK: fcmge d0, d1, d2 658 659 fcmlt s0, s2, s1 660 fcmlt d0, d2, d1 661; CHECK: fcmgt s0, s1, s2 662; CHECK: fcmgt d0, d1, d2 663 664 facle s0, s2, s1 665 facle d0, d2, d1 666; CHECK: facge s0, s1, s2 667; CHECK: facge d0, d1, d2 668 669 faclt s0, s2, s1 670 faclt d0, d2, d1 671; CHECK: facgt s0, s1, s2 672; CHECK: facgt d0, d1, d2 673 674;----------------------------------------------------------------------------- 675; 5.8.14 Vector Shift (immediate) 676;----------------------------------------------------------------------------- 677 sxtl v1.8h, v2.8b 678; CHECK: sshll.8h v1, v2, #0 679 sxtl.8h v1, v2 680; CHECK: sshll.8h v1, v2, #0 681 682 sxtl v1.4s, v2.4h 683; CHECK: sshll.4s v1, v2, #0 684 sxtl.4s v1, v2 685; CHECK: sshll.4s v1, v2, #0 686 687 sxtl v1.2d, v2.2s 688; CHECK: sshll.2d v1, v2, #0 689 sxtl.2d v1, v2 690; CHECK: sshll.2d v1, v2, #0 691 692 sxtl2 v1.8h, v2.16b 693; CHECK: sshll2.8h v1, v2, #0 694 sxtl2.8h v1, v2 695; CHECK: sshll2.8h v1, v2, #0 696 697 sxtl2 v1.4s, v2.8h 698; CHECK: sshll2.4s v1, v2, #0 699 sxtl2.4s v1, v2 700; CHECK: sshll2.4s v1, v2, #0 701 702 sxtl2 v1.2d, v2.4s 703; CHECK: sshll2.2d v1, v2, #0 704 sxtl2.2d v1, v2 705; CHECK: sshll2.2d v1, v2, #0 706 707 uxtl v1.8h, v2.8b 708; CHECK: ushll.8h v1, v2, #0 709 uxtl.8h v1, v2 710; CHECK: ushll.8h v1, v2, #0 711 712 uxtl v1.4s, v2.4h 713; CHECK: ushll.4s v1, v2, #0 714 uxtl.4s v1, v2 715; CHECK: ushll.4s v1, v2, #0 716 717 uxtl v1.2d, v2.2s 718; CHECK: ushll.2d v1, v2, #0 719 uxtl.2d v1, v2 720; CHECK: ushll.2d v1, v2, #0 721 722 uxtl2 v1.8h, v2.16b 723; CHECK: ushll2.8h v1, v2, #0 724 uxtl2.8h v1, v2 725; CHECK: ushll2.8h v1, v2, #0 726 727 uxtl2 v1.4s, v2.8h 728; CHECK: ushll2.4s v1, v2, #0 729 uxtl2.4s v1, v2 730; CHECK: ushll2.4s v1, v2, #0 731 732 uxtl2 v1.2d, v2.4s 733; CHECK: ushll2.2d v1, v2, #0 734 uxtl2.2d v1, v2 735; CHECK: ushll2.2d v1, v2, #0 736 737 738;----------------------------------------------------------------------------- 739; MOVI verbose syntax with shift operand omitted. 740;----------------------------------------------------------------------------- 741 movi v4.16b, #0x00 742 movi v4.16B, #0x01 743 movi v4.8b, #0x02 744 movi v4.8B, #0x03 745 movi v1.2d, #0x000000000000ff 746 movi v2.2D, #0x000000000000ff 747 748; CHECK: movi.16b v4, #0 ; encoding: [0x04,0xe4,0x00,0x4f] 749; CHECK: movi.16b v4, #0x1 ; encoding: [0x24,0xe4,0x00,0x4f] 750; CHECK: movi.8b v4, #0x2 ; encoding: [0x44,0xe4,0x00,0x0f] 751; CHECK: movi.8b v4, #0x3 ; encoding: [0x64,0xe4,0x00,0x0f] 752; CHECK: movi.2d v1, #0x000000000000ff ; encoding: [0x21,0xe4,0x00,0x6f] 753; CHECK: movi.2d v2, #0x000000000000ff ; encoding: [0x22,0xe4,0x00,0x6f] 754