1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve < %s \ 2// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST 3// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \ 4// RUN: | FileCheck %s --check-prefix=CHECK-ERROR 5// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \ 6// RUN: | llvm-objdump -d -mattr=+sve - | FileCheck %s --check-prefix=CHECK-INST 7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve < %s \ 8// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN 9 10mov z0.b, w0 11// CHECK-INST: mov z0.b, w0 12// CHECK-ENCODING: [0x00,0x38,0x20,0x05] 13// CHECK-ERROR: instruction requires: sve 14// CHECK-UNKNOWN: 00 38 20 05 <unknown> 15 16mov z0.h, w0 17// CHECK-INST: mov z0.h, w0 18// CHECK-ENCODING: [0x00,0x38,0x60,0x05] 19// CHECK-ERROR: instruction requires: sve 20// CHECK-UNKNOWN: 00 38 60 05 <unknown> 21 22mov z0.s, w0 23// CHECK-INST: mov z0.s, w0 24// CHECK-ENCODING: [0x00,0x38,0xa0,0x05] 25// CHECK-ERROR: instruction requires: sve 26// CHECK-UNKNOWN: 00 38 a0 05 <unknown> 27 28mov z0.d, x0 29// CHECK-INST: mov z0.d, x0 30// CHECK-ENCODING: [0x00,0x38,0xe0,0x05] 31// CHECK-ERROR: instruction requires: sve 32// CHECK-UNKNOWN: 00 38 e0 05 <unknown> 33 34mov z31.h, wsp 35// CHECK-INST: mov z31.h, wsp 36// CHECK-ENCODING: [0xff,0x3b,0x60,0x05] 37// CHECK-ERROR: instruction requires: sve 38// CHECK-UNKNOWN: ff 3b 60 05 <unknown> 39 40mov z31.s, wsp 41// CHECK-INST: mov z31.s, wsp 42// CHECK-ENCODING: [0xff,0x3b,0xa0,0x05] 43// CHECK-ERROR: instruction requires: sve 44// CHECK-UNKNOWN: ff 3b a0 05 <unknown> 45 46mov z31.d, sp 47// CHECK-INST: mov z31.d, sp 48// CHECK-ENCODING: [0xff,0x3b,0xe0,0x05] 49// CHECK-ERROR: instruction requires: sve 50// CHECK-UNKNOWN: ff 3b e0 05 <unknown> 51 52mov z31.b, wsp 53// CHECK-INST: mov z31.b, wsp 54// CHECK-ENCODING: [0xff,0x3b,0x20,0x05] 55// CHECK-ERROR: instruction requires: sve 56// CHECK-UNKNOWN: ff 3b 20 05 <unknown> 57 58mov z0.d, z0.d 59// CHECK-INST: mov z0.d, z0.d 60// CHECK-ENCODING: [0x00,0x30,0x60,0x04] 61// CHECK-ERROR: instruction requires: sve 62// CHECK-UNKNOWN: 00 30 60 04 <unknown> 63 64mov z31.d, z0.d 65// CHECK-INST: mov z31.d, z0.d 66// CHECK-ENCODING: [0x1f,0x30,0x60,0x04] 67// CHECK-ERROR: instruction requires: sve 68// CHECK-UNKNOWN: 1f 30 60 04 <unknown> 69 70mov z5.b, #-128 71// CHECK-INST: mov z5.b, #-128 72// CHECK-ENCODING: [0x05,0xd0,0x38,0x25] 73// CHECK-ERROR: instruction requires: sve 74// CHECK-UNKNOWN: 05 d0 38 25 <unknown> 75 76mov z5.b, #127 77// CHECK-INST: mov z5.b, #127 78// CHECK-ENCODING: [0xe5,0xcf,0x38,0x25] 79// CHECK-ERROR: instruction requires: sve 80// CHECK-UNKNOWN: e5 cf 38 25 <unknown> 81 82mov z5.b, #255 83// CHECK-INST: mov z5.b, #-1 84// CHECK-ENCODING: [0xe5,0xdf,0x38,0x25] 85// CHECK-ERROR: instruction requires: sve 86// CHECK-UNKNOWN: e5 df 38 25 <unknown> 87 88mov z21.h, #-128 89// CHECK-INST: mov z21.h, #-128 90// CHECK-ENCODING: [0x15,0xd0,0x78,0x25] 91// CHECK-ERROR: instruction requires: sve 92// CHECK-UNKNOWN: 15 d0 78 25 <unknown> 93 94mov z21.h, #-128, lsl #8 95// CHECK-INST: mov z21.h, #-32768 96// CHECK-ENCODING: [0x15,0xf0,0x78,0x25] 97// CHECK-ERROR: instruction requires: sve 98// CHECK-UNKNOWN: 15 f0 78 25 <unknown> 99 100mov z21.h, #-32768 101// CHECK-INST: mov z21.h, #-32768 102// CHECK-ENCODING: [0x15,0xf0,0x78,0x25] 103// CHECK-ERROR: instruction requires: sve 104// CHECK-UNKNOWN: 15 f0 78 25 <unknown> 105 106mov z21.h, #127 107// CHECK-INST: mov z21.h, #127 108// CHECK-ENCODING: [0xf5,0xcf,0x78,0x25] 109// CHECK-ERROR: instruction requires: sve 110// CHECK-UNKNOWN: f5 cf 78 25 <unknown> 111 112mov z21.h, #127, lsl #8 113// CHECK-INST: mov z21.h, #32512 114// CHECK-ENCODING: [0xf5,0xef,0x78,0x25] 115// CHECK-ERROR: instruction requires: sve 116// CHECK-UNKNOWN: f5 ef 78 25 <unknown> 117 118mov z21.h, #32512 119// CHECK-INST: mov z21.h, #32512 120// CHECK-ENCODING: [0xf5,0xef,0x78,0x25] 121// CHECK-ERROR: instruction requires: sve 122// CHECK-UNKNOWN: f5 ef 78 25 <unknown> 123 124mov z21.s, #-128 125// CHECK-INST: mov z21.s, #-128 126// CHECK-ENCODING: [0x15,0xd0,0xb8,0x25] 127// CHECK-ERROR: instruction requires: sve 128// CHECK-UNKNOWN: 15 d0 b8 25 <unknown> 129 130mov z21.s, #-128, lsl #8 131// CHECK-INST: mov z21.s, #-32768 132// CHECK-ENCODING: [0x15,0xf0,0xb8,0x25] 133// CHECK-ERROR: instruction requires: sve 134// CHECK-UNKNOWN: 15 f0 b8 25 <unknown> 135 136mov z21.s, #-32768 137// CHECK-INST: mov z21.s, #-32768 138// CHECK-ENCODING: [0x15,0xf0,0xb8,0x25] 139// CHECK-ERROR: instruction requires: sve 140// CHECK-UNKNOWN: 15 f0 b8 25 <unknown> 141 142mov z21.s, #127 143// CHECK-INST: mov z21.s, #127 144// CHECK-ENCODING: [0xf5,0xcf,0xb8,0x25] 145// CHECK-ERROR: instruction requires: sve 146// CHECK-UNKNOWN: f5 cf b8 25 <unknown> 147 148mov z21.s, #127, lsl #8 149// CHECK-INST: mov z21.s, #32512 150// CHECK-ENCODING: [0xf5,0xef,0xb8,0x25] 151// CHECK-ERROR: instruction requires: sve 152// CHECK-UNKNOWN: f5 ef b8 25 <unknown> 153 154mov z21.s, #32512 155// CHECK-INST: mov z21.s, #32512 156// CHECK-ENCODING: [0xf5,0xef,0xb8,0x25] 157// CHECK-ERROR: instruction requires: sve 158// CHECK-UNKNOWN: f5 ef b8 25 <unknown> 159 160mov z21.d, #-128 161// CHECK-INST: mov z21.d, #-128 162// CHECK-ENCODING: [0x15,0xd0,0xf8,0x25] 163// CHECK-ERROR: instruction requires: sve 164// CHECK-UNKNOWN: 15 d0 f8 25 <unknown> 165 166mov z21.d, #-128, lsl #8 167// CHECK-INST: mov z21.d, #-32768 168// CHECK-ENCODING: [0x15,0xf0,0xf8,0x25] 169// CHECK-ERROR: instruction requires: sve 170// CHECK-UNKNOWN: 15 f0 f8 25 <unknown> 171 172mov z21.d, #-32768 173// CHECK-INST: mov z21.d, #-32768 174// CHECK-ENCODING: [0x15,0xf0,0xf8,0x25] 175// CHECK-ERROR: instruction requires: sve 176// CHECK-UNKNOWN: 15 f0 f8 25 <unknown> 177 178mov z21.d, #127 179// CHECK-INST: mov z21.d, #127 180// CHECK-ENCODING: [0xf5,0xcf,0xf8,0x25] 181// CHECK-ERROR: instruction requires: sve 182// CHECK-UNKNOWN: f5 cf f8 25 <unknown> 183 184mov z21.d, #127, lsl #8 185// CHECK-INST: mov z21.d, #32512 186// CHECK-ENCODING: [0xf5,0xef,0xf8,0x25] 187// CHECK-ERROR: instruction requires: sve 188// CHECK-UNKNOWN: f5 ef f8 25 <unknown> 189 190mov z21.d, #32512 191// CHECK-INST: mov z21.d, #32512 192// CHECK-ENCODING: [0xf5,0xef,0xf8,0x25] 193// CHECK-ERROR: instruction requires: sve 194// CHECK-UNKNOWN: f5 ef f8 25 <unknown> 195 196mov z0.h, #32768 197// CHECK-INST: mov z0.h, #-32768 198// CHECK-ENCODING: [0x00,0xf0,0x78,0x25] 199// CHECK-ERROR: instruction requires: sve 200// CHECK-UNKNOWN: 00 f0 78 25 <unknown> 201 202mov z0.h, #65280 203// CHECK-INST: mov z0.h, #-256 204// CHECK-ENCODING: [0xe0,0xff,0x78,0x25] 205// CHECK-ERROR: instruction requires: sve 206// CHECK-UNKNOWN: e0 ff 78 25 <unknown> 207 208mov z0.s, #-32769 209// CHECK-INST: mov z0.s, #0xffff7fff 210// CHECK-ENCODING: [0xc0,0x83,0xc0,0x05] 211// CHECK-ERROR: instruction requires: sve 212// CHECK-UNKNOWN: c0 83 c0 05 <unknown> 213 214mov z0.s, #32768 215// CHECK-INST: mov z0.s, #32768 216// CHECK-ENCODING: [0x00,0x88,0xc0,0x05] 217// CHECK-ERROR: instruction requires: sve 218// CHECK-UNKNOWN: 00 88 c0 05 <unknown> 219 220mov z0.d, #-32769 221// CHECK-INST: mov z0.d, #0xffffffffffff7fff 222// CHECK-ENCODING: [0xc0,0x87,0xc3,0x05] 223// CHECK-ERROR: instruction requires: sve 224// CHECK-UNKNOWN: c0 87 c3 05 <unknown> 225 226mov z0.d, #32768 227// CHECK-INST: mov z0.d, #32768 228// CHECK-ENCODING: [0x00,0x88,0xc3,0x05] 229// CHECK-ERROR: instruction requires: sve 230// CHECK-UNKNOWN: 00 88 c3 05 <unknown> 231 232mov z0.d, #0xe0000000000003ff 233// CHECK-INST: mov z0.d, #0xe0000000000003ff 234// CHECK-ENCODING: [0x80,0x19,0xc2,0x05] 235// CHECK-ERROR: instruction requires: sve 236// CHECK-UNKNOWN: 80 19 c2 05 <unknown> 237 238mov z5.b, p0/z, #-128 239// CHECK-INST: mov z5.b, p0/z, #-128 240// CHECK-ENCODING: [0x05,0x10,0x10,0x05] 241// CHECK-ERROR: instruction requires: sve 242// CHECK-UNKNOWN: 05 10 10 05 <unknown> 243 244mov z5.b, p0/z, #127 245// CHECK-INST: mov z5.b, p0/z, #127 246// CHECK-ENCODING: [0xe5,0x0f,0x10,0x05] 247// CHECK-ERROR: instruction requires: sve 248// CHECK-UNKNOWN: e5 0f 10 05 <unknown> 249 250mov z5.b, p0/z, #255 251// CHECK-INST: mov z5.b, p0/z, #-1 252// CHECK-ENCODING: [0xe5,0x1f,0x10,0x05] 253// CHECK-ERROR: instruction requires: sve 254// CHECK-UNKNOWN: e5 1f 10 05 <unknown> 255 256mov z21.h, p0/z, #-128 257// CHECK-INST: mov z21.h, p0/z, #-128 258// CHECK-ENCODING: [0x15,0x10,0x50,0x05] 259// CHECK-ERROR: instruction requires: sve 260// CHECK-UNKNOWN: 15 10 50 05 <unknown> 261 262mov z21.h, p0/z, #-128, lsl #8 263// CHECK-INST: mov z21.h, p0/z, #-32768 264// CHECK-ENCODING: [0x15,0x30,0x50,0x05] 265// CHECK-ERROR: instruction requires: sve 266// CHECK-UNKNOWN: 15 30 50 05 <unknown> 267 268mov z21.h, p0/z, #-32768 269// CHECK-INST: mov z21.h, p0/z, #-32768 270// CHECK-ENCODING: [0x15,0x30,0x50,0x05] 271// CHECK-ERROR: instruction requires: sve 272// CHECK-UNKNOWN: 15 30 50 05 <unknown> 273 274mov z21.h, p0/z, #127 275// CHECK-INST: mov z21.h, p0/z, #127 276// CHECK-ENCODING: [0xf5,0x0f,0x50,0x05] 277// CHECK-ERROR: instruction requires: sve 278// CHECK-UNKNOWN: f5 0f 50 05 <unknown> 279 280mov z21.h, p0/z, #127, lsl #8 281// CHECK-INST: mov z21.h, p0/z, #32512 282// CHECK-ENCODING: [0xf5,0x2f,0x50,0x05] 283// CHECK-ERROR: instruction requires: sve 284// CHECK-UNKNOWN: f5 2f 50 05 <unknown> 285 286mov z21.h, p0/z, #32512 287// CHECK-INST: mov z21.h, p0/z, #32512 288// CHECK-ENCODING: [0xf5,0x2f,0x50,0x05] 289// CHECK-ERROR: instruction requires: sve 290// CHECK-UNKNOWN: f5 2f 50 05 <unknown> 291 292mov z21.s, p0/z, #-128 293// CHECK-INST: mov z21.s, p0/z, #-128 294// CHECK-ENCODING: [0x15,0x10,0x90,0x05] 295// CHECK-ERROR: instruction requires: sve 296// CHECK-UNKNOWN: 15 10 90 05 <unknown> 297 298mov z21.s, p0/z, #-128, lsl #8 299// CHECK-INST: mov z21.s, p0/z, #-32768 300// CHECK-ENCODING: [0x15,0x30,0x90,0x05] 301// CHECK-ERROR: instruction requires: sve 302// CHECK-UNKNOWN: 15 30 90 05 <unknown> 303 304mov z21.s, p0/z, #-32768 305// CHECK-INST: mov z21.s, p0/z, #-32768 306// CHECK-ENCODING: [0x15,0x30,0x90,0x05] 307// CHECK-ERROR: instruction requires: sve 308// CHECK-UNKNOWN: 15 30 90 05 <unknown> 309 310mov z21.s, p0/z, #127 311// CHECK-INST: mov z21.s, p0/z, #127 312// CHECK-ENCODING: [0xf5,0x0f,0x90,0x05] 313// CHECK-ERROR: instruction requires: sve 314// CHECK-UNKNOWN: f5 0f 90 05 <unknown> 315 316mov z21.s, p0/z, #127, lsl #8 317// CHECK-INST: mov z21.s, p0/z, #32512 318// CHECK-ENCODING: [0xf5,0x2f,0x90,0x05] 319// CHECK-ERROR: instruction requires: sve 320// CHECK-UNKNOWN: f5 2f 90 05 <unknown> 321 322mov z21.s, p0/z, #32512 323// CHECK-INST: mov z21.s, p0/z, #32512 324// CHECK-ENCODING: [0xf5,0x2f,0x90,0x05] 325// CHECK-ERROR: instruction requires: sve 326// CHECK-UNKNOWN: f5 2f 90 05 <unknown> 327 328mov z21.d, p0/z, #-128 329// CHECK-INST: mov z21.d, p0/z, #-128 330// CHECK-ENCODING: [0x15,0x10,0xd0,0x05] 331// CHECK-ERROR: instruction requires: sve 332// CHECK-UNKNOWN: 15 10 d0 05 <unknown> 333 334mov z21.d, p0/z, #-128, lsl #8 335// CHECK-INST: mov z21.d, p0/z, #-32768 336// CHECK-ENCODING: [0x15,0x30,0xd0,0x05] 337// CHECK-ERROR: instruction requires: sve 338// CHECK-UNKNOWN: 15 30 d0 05 <unknown> 339 340mov z21.d, p0/z, #-32768 341// CHECK-INST: mov z21.d, p0/z, #-32768 342// CHECK-ENCODING: [0x15,0x30,0xd0,0x05] 343// CHECK-ERROR: instruction requires: sve 344// CHECK-UNKNOWN: 15 30 d0 05 <unknown> 345 346mov z21.d, p0/z, #127 347// CHECK-INST: mov z21.d, p0/z, #127 348// CHECK-ENCODING: [0xf5,0x0f,0xd0,0x05] 349// CHECK-ERROR: instruction requires: sve 350// CHECK-UNKNOWN: f5 0f d0 05 <unknown> 351 352mov z21.d, p0/z, #127, lsl #8 353// CHECK-INST: mov z21.d, p0/z, #32512 354// CHECK-ENCODING: [0xf5,0x2f,0xd0,0x05] 355// CHECK-ERROR: instruction requires: sve 356// CHECK-UNKNOWN: f5 2f d0 05 <unknown> 357 358mov z21.d, p0/z, #32512 359// CHECK-INST: mov z21.d, p0/z, #32512 360// CHECK-ENCODING: [0xf5,0x2f,0xd0,0x05] 361// CHECK-ERROR: instruction requires: sve 362// CHECK-UNKNOWN: f5 2f d0 05 <unknown> 363 364 365// --------------------------------------------------------------------------// 366// Tests for merging variant (/m) and testing the range of predicate (> 7) 367// is allowed. 368 369mov z5.b, p15/m, #-128 370// CHECK-INST: mov z5.b, p15/m, #-128 371// CHECK-ENCODING: [0x05,0x50,0x1f,0x05] 372// CHECK-ERROR: instruction requires: sve 373// CHECK-UNKNOWN: 05 50 1f 05 <unknown> 374 375mov z21.h, p15/m, #-128 376// CHECK-INST: mov z21.h, p15/m, #-128 377// CHECK-ENCODING: [0x15,0x50,0x5f,0x05] 378// CHECK-ERROR: instruction requires: sve 379// CHECK-UNKNOWN: 15 50 5f 05 <unknown> 380 381mov z21.h, p15/m, #-128, lsl #8 382// CHECK-INST: mov z21.h, p15/m, #-32768 383// CHECK-ENCODING: [0x15,0x70,0x5f,0x05] 384// CHECK-ERROR: instruction requires: sve 385// CHECK-UNKNOWN: 15 70 5f 05 <unknown> 386 387mov z21.s, p15/m, #-128 388// CHECK-INST: mov z21.s, p15/m, #-128 389// CHECK-ENCODING: [0x15,0x50,0x9f,0x05] 390// CHECK-ERROR: instruction requires: sve 391// CHECK-UNKNOWN: 15 50 9f 05 <unknown> 392 393mov z21.s, p15/m, #-128, lsl #8 394// CHECK-INST: mov z21.s, p15/m, #-32768 395// CHECK-ENCODING: [0x15,0x70,0x9f,0x05] 396// CHECK-ERROR: instruction requires: sve 397// CHECK-UNKNOWN: 15 70 9f 05 <unknown> 398 399mov z21.d, p15/m, #-128 400// CHECK-INST: mov z21.d, p15/m, #-128 401// CHECK-ENCODING: [0x15,0x50,0xdf,0x05] 402// CHECK-ERROR: instruction requires: sve 403// CHECK-UNKNOWN: 15 50 df 05 <unknown> 404 405mov z21.d, p15/m, #-128, lsl #8 406// CHECK-INST: mov z21.d, p15/m, #-32768 407// CHECK-ENCODING: [0x15,0x70,0xdf,0x05] 408// CHECK-ERROR: instruction requires: sve 409// CHECK-UNKNOWN: 15 70 df 05 <unknown> 410 411// --------------------------------------------------------------------------// 412// Tests for indexed variant 413 414mov z0.b, z0.b[0] 415// CHECK-INST: mov z0.b, b0 416// CHECK-ENCODING: [0x00,0x20,0x21,0x05] 417// CHECK-ERROR: instruction requires: sve 418// CHECK-UNKNOWN: 00 20 21 05 <unknown> 419 420mov z0.h, z0.h[0] 421// CHECK-INST: mov z0.h, h0 422// CHECK-ENCODING: [0x00,0x20,0x22,0x05] 423// CHECK-ERROR: instruction requires: sve 424// CHECK-UNKNOWN: 00 20 22 05 <unknown> 425 426mov z0.s, z0.s[0] 427// CHECK-INST: mov z0.s, s0 428// CHECK-ENCODING: [0x00,0x20,0x24,0x05] 429// CHECK-ERROR: instruction requires: sve 430// CHECK-UNKNOWN: 00 20 24 05 <unknown> 431 432mov z0.d, z0.d[0] 433// CHECK-INST: mov z0.d, d0 434// CHECK-ENCODING: [0x00,0x20,0x28,0x05] 435// CHECK-ERROR: instruction requires: sve 436// CHECK-UNKNOWN: 00 20 28 05 <unknown> 437 438mov z0.q, z0.q[0] 439// CHECK-INST: mov z0.q, q0 440// CHECK-ENCODING: [0x00,0x20,0x30,0x05] 441// CHECK-ERROR: instruction requires: sve 442// CHECK-UNKNOWN: 00 20 30 05 <unknown> 443 444mov z0.b, b0 445// CHECK-INST: mov z0.b, b0 446// CHECK-ENCODING: [0x00,0x20,0x21,0x05] 447// CHECK-ERROR: instruction requires: sve 448// CHECK-UNKNOWN: 00 20 21 05 <unknown> 449 450mov z0.h, h0 451// CHECK-INST: mov z0.h, h0 452// CHECK-ENCODING: [0x00,0x20,0x22,0x05] 453// CHECK-ERROR: instruction requires: sve 454// CHECK-UNKNOWN: 00 20 22 05 <unknown> 455 456mov z0.s, s0 457// CHECK-INST: mov z0.s, s0 458// CHECK-ENCODING: [0x00,0x20,0x24,0x05] 459// CHECK-ERROR: instruction requires: sve 460// CHECK-UNKNOWN: 00 20 24 05 <unknown> 461 462mov z0.d, d0 463// CHECK-INST: mov z0.d, d0 464// CHECK-ENCODING: [0x00,0x20,0x28,0x05] 465// CHECK-ERROR: instruction requires: sve 466// CHECK-UNKNOWN: 00 20 28 05 <unknown> 467 468mov z0.q, q0 469// CHECK-INST: mov z0.q, q0 470// CHECK-ENCODING: [0x00,0x20,0x30,0x05] 471// CHECK-ERROR: instruction requires: sve 472// CHECK-UNKNOWN: 00 20 30 05 <unknown> 473 474mov z31.b, z31.b[63] 475// CHECK-INST: mov z31.b, z31.b[63] 476// CHECK-ENCODING: [0xff,0x23,0xff,0x05] 477// CHECK-ERROR: instruction requires: sve 478// CHECK-UNKNOWN: ff 23 ff 05 <unknown> 479 480mov z31.h, z31.h[31] 481// CHECK-INST: mov z31.h, z31.h[31] 482// CHECK-ENCODING: [0xff,0x23,0xfe,0x05] 483// CHECK-ERROR: instruction requires: sve 484// CHECK-UNKNOWN: ff 23 fe 05 <unknown> 485 486mov z31.s, z31.s[15] 487// CHECK-INST: mov z31.s, z31.s[15] 488// CHECK-ENCODING: [0xff,0x23,0xfc,0x05] 489// CHECK-ERROR: instruction requires: sve 490// CHECK-UNKNOWN: ff 23 fc 05 <unknown> 491 492mov z31.d, z31.d[7] 493// CHECK-INST: mov z31.d, z31.d[7] 494// CHECK-ENCODING: [0xff,0x23,0xf8,0x05] 495// CHECK-ERROR: instruction requires: sve 496// CHECK-UNKNOWN: ff 23 f8 05 <unknown> 497 498mov z5.q, z17.q[3] 499// CHECK-INST: mov z5.q, z17.q[3] 500// CHECK-ENCODING: [0x25,0x22,0xf0,0x05] 501// CHECK-ERROR: instruction requires: sve 502// CHECK-UNKNOWN: 25 22 f0 05 <unknown> 503 504 505// --------------------------------------------------------------------------// 506// Tests for predicated copy of SIMD/FP registers. 507 508mov z0.b, p0/m, w0 509// CHECK-INST: mov z0.b, p0/m, w0 510// CHECK-ENCODING: [0x00,0xa0,0x28,0x05] 511// CHECK-ERROR: instruction requires: sve 512// CHECK-UNKNOWN: 00 a0 28 05 <unknown> 513 514mov z0.h, p0/m, w0 515// CHECK-INST: mov z0.h, p0/m, w0 516// CHECK-ENCODING: [0x00,0xa0,0x68,0x05] 517// CHECK-ERROR: instruction requires: sve 518// CHECK-UNKNOWN: 00 a0 68 05 <unknown> 519 520mov z0.s, p0/m, w0 521// CHECK-INST: mov z0.s, p0/m, w0 522// CHECK-ENCODING: [0x00,0xa0,0xa8,0x05] 523// CHECK-ERROR: instruction requires: sve 524// CHECK-UNKNOWN: 00 a0 a8 05 <unknown> 525 526mov z0.d, p0/m, x0 527// CHECK-INST: mov z0.d, p0/m, x0 528// CHECK-ENCODING: [0x00,0xa0,0xe8,0x05] 529// CHECK-ERROR: instruction requires: sve 530// CHECK-UNKNOWN: 00 a0 e8 05 <unknown> 531 532mov z31.b, p7/m, wsp 533// CHECK-INST: mov z31.b, p7/m, wsp 534// CHECK-ENCODING: [0xff,0xbf,0x28,0x05] 535// CHECK-ERROR: instruction requires: sve 536// CHECK-UNKNOWN: ff bf 28 05 <unknown> 537 538mov z31.h, p7/m, wsp 539// CHECK-INST: mov z31.h, p7/m, wsp 540// CHECK-ENCODING: [0xff,0xbf,0x68,0x05] 541// CHECK-ERROR: instruction requires: sve 542// CHECK-UNKNOWN: ff bf 68 05 <unknown> 543 544mov z31.s, p7/m, wsp 545// CHECK-INST: mov z31.s, p7/m, wsp 546// CHECK-ENCODING: [0xff,0xbf,0xa8,0x05] 547// CHECK-ERROR: instruction requires: sve 548// CHECK-UNKNOWN: ff bf a8 05 <unknown> 549 550mov z31.d, p7/m, sp 551// CHECK-INST: mov z31.d, p7/m, sp 552// CHECK-ENCODING: [0xff,0xbf,0xe8,0x05] 553// CHECK-ERROR: instruction requires: sve 554// CHECK-UNKNOWN: ff bf e8 05 <unknown> 555 556mov z0.b, p0/m, b0 557// CHECK-INST: mov z0.b, p0/m, b0 558// CHECK-ENCODING: [0x00,0x80,0x20,0x05] 559// CHECK-ERROR: instruction requires: sve 560// CHECK-UNKNOWN: 00 80 20 05 <unknown> 561 562mov z31.b, p7/m, b31 563// CHECK-INST: mov z31.b, p7/m, b31 564// CHECK-ENCODING: [0xff,0x9f,0x20,0x05] 565// CHECK-ERROR: instruction requires: sve 566// CHECK-UNKNOWN: ff 9f 20 05 <unknown> 567 568mov z0.h, p0/m, h0 569// CHECK-INST: mov z0.h, p0/m, h0 570// CHECK-ENCODING: [0x00,0x80,0x60,0x05] 571// CHECK-ERROR: instruction requires: sve 572// CHECK-UNKNOWN: 00 80 60 05 <unknown> 573 574mov z31.h, p7/m, h31 575// CHECK-INST: mov z31.h, p7/m, h31 576// CHECK-ENCODING: [0xff,0x9f,0x60,0x05] 577// CHECK-ERROR: instruction requires: sve 578// CHECK-UNKNOWN: ff 9f 60 05 <unknown> 579 580mov z0.s, p0/m, s0 581// CHECK-INST: mov z0.s, p0/m, s0 582// CHECK-ENCODING: [0x00,0x80,0xa0,0x05] 583// CHECK-ERROR: instruction requires: sve 584// CHECK-UNKNOWN: 00 80 a0 05 <unknown> 585 586mov z31.s, p7/m, s31 587// CHECK-INST: mov z31.s, p7/m, s31 588// CHECK-ENCODING: [0xff,0x9f,0xa0,0x05] 589// CHECK-ERROR: instruction requires: sve 590// CHECK-UNKNOWN: ff 9f a0 05 <unknown> 591 592mov z0.d, p0/m, d0 593// CHECK-INST: mov z0.d, p0/m, d0 594// CHECK-ENCODING: [0x00,0x80,0xe0,0x05] 595// CHECK-ERROR: instruction requires: sve 596// CHECK-UNKNOWN: 00 80 e0 05 <unknown> 597 598mov z31.d, p7/m, d31 599// CHECK-INST: mov z31.d, p7/m, d31 600// CHECK-ENCODING: [0xff,0x9f,0xe0,0x05] 601// CHECK-ERROR: instruction requires: sve 602// CHECK-UNKNOWN: ff 9f e0 05 <unknown> 603 604mov p0.b, p0/m, p0.b 605// CHECK-INST: mov p0.b, p0/m, p0.b 606// CHECK-ENCODING: [0x10,0x42,0x00,0x25] 607// CHECK-ERROR: instruction requires: sve 608// CHECK-UNKNOWN: 10 42 00 25 <unknown> 609 610mov p15.b, p15/m, p15.b 611// CHECK-INST: mov p15.b, p15/m, p15.b 612// CHECK-ENCODING: [0xff,0x7f,0x0f,0x25] 613// CHECK-ERROR: instruction requires: sve 614// CHECK-UNKNOWN: ff 7f 0f 25 <unknown> 615 616mov z31.b, p15/m, z31.b 617// CHECK-INST: mov z31.b, p15/m, z31.b 618// CHECK-ENCODING: [0xff,0xff,0x3f,0x05] 619// CHECK-ERROR: instruction requires: sve 620// CHECK-UNKNOWN: ff ff 3f 05 <unknown> 621 622mov z31.h, p15/m, z31.h 623// CHECK-INST: mov z31.h, p15/m, z31.h 624// CHECK-ENCODING: [0xff,0xff,0x7f,0x05] 625// CHECK-ERROR: instruction requires: sve 626// CHECK-UNKNOWN: ff ff 7f 05 <unknown> 627 628mov z31.s, p15/m, z31.s 629// CHECK-INST: mov z31.s, p15/m, z31.s 630// CHECK-ENCODING: [0xff,0xff,0xbf,0x05] 631// CHECK-ERROR: instruction requires: sve 632// CHECK-UNKNOWN: ff ff bf 05 <unknown> 633 634mov z31.d, p15/m, z31.d 635// CHECK-INST: mov z31.d, p15/m, z31.d 636// CHECK-ENCODING: [0xff,0xff,0xff,0x05] 637// CHECK-ERROR: instruction requires: sve 638// CHECK-UNKNOWN: ff ff ff 05 <unknown> 639 640mov p0.b, p0.b 641// CHECK-INST: mov p0.b, p0.b 642// CHECK-ENCODING: [0x00,0x40,0x80,0x25] 643// CHECK-ERROR: instruction requires: sve 644// CHECK-UNKNOWN: 00 40 80 25 <unknown> 645 646mov p15.b, p15.b 647// CHECK-INST: mov p15.b, p15.b 648// CHECK-ENCODING: [0xef,0x7d,0x8f,0x25] 649// CHECK-ERROR: instruction requires: sve 650// CHECK-UNKNOWN: ef 7d 8f 25 <unknown> 651 652mov p0.b, p0/z, p0.b 653// CHECK-INST: mov p0.b, p0/z, p0.b 654// CHECK-ENCODING: [0x00,0x40,0x00,0x25] 655// CHECK-ERROR: instruction requires: sve 656// CHECK-UNKNOWN: 00 40 00 25 <unknown> 657 658mov p15.b, p15/z, p15.b 659// CHECK-INST: mov p15.b, p15/z, p15.b 660// CHECK-ENCODING: [0xef,0x7d,0x0f,0x25] 661// CHECK-ERROR: instruction requires: sve 662// CHECK-UNKNOWN: ef 7d 0f 25 <unknown> 663 664 665// --------------------------------------------------------------------------// 666// Test compatibility with MOVPRFX instruction. 667 668movprfx z31.d, p7/z, z6.d 669// CHECK-INST: movprfx z31.d, p7/z, z6.d 670// CHECK-ENCODING: [0xdf,0x3c,0xd0,0x04] 671// CHECK-ERROR: instruction requires: sve 672// CHECK-UNKNOWN: df 3c d0 04 <unknown> 673 674mov z31.d, p7/m, sp 675// CHECK-INST: mov z31.d, p7/m, sp 676// CHECK-ENCODING: [0xff,0xbf,0xe8,0x05] 677// CHECK-ERROR: instruction requires: sve 678// CHECK-UNKNOWN: ff bf e8 05 <unknown> 679 680movprfx z31, z6 681// CHECK-INST: movprfx z31, z6 682// CHECK-ENCODING: [0xdf,0xbc,0x20,0x04] 683// CHECK-ERROR: instruction requires: sve 684// CHECK-UNKNOWN: df bc 20 04 <unknown> 685 686mov z31.d, p7/m, sp 687// CHECK-INST: mov z31.d, p7/m, sp 688// CHECK-ENCODING: [0xff,0xbf,0xe8,0x05] 689// CHECK-ERROR: instruction requires: sve 690// CHECK-UNKNOWN: ff bf e8 05 <unknown> 691 692movprfx z21.d, p7/z, z28.d 693// CHECK-INST: movprfx z21.d, p7/z, z28.d 694// CHECK-ENCODING: [0x95,0x3f,0xd0,0x04] 695// CHECK-ERROR: instruction requires: sve 696// CHECK-UNKNOWN: 95 3f d0 04 <unknown> 697 698mov z21.d, p7/m, #-128, lsl #8 699// CHECK-INST: mov z21.d, p7/m, #-32768 700// CHECK-ENCODING: [0x15,0x70,0xd7,0x05] 701// CHECK-ERROR: instruction requires: sve 702// CHECK-UNKNOWN: 15 70 d7 05 <unknown> 703 704movprfx z21, z28 705// CHECK-INST: movprfx z21, z28 706// CHECK-ENCODING: [0x95,0xbf,0x20,0x04] 707// CHECK-ERROR: instruction requires: sve 708// CHECK-UNKNOWN: 95 bf 20 04 <unknown> 709 710mov z21.d, p15/m, #-128, lsl #8 711// CHECK-INST: mov z21.d, p15/m, #-32768 712// CHECK-ENCODING: [0x15,0x70,0xdf,0x05] 713// CHECK-ERROR: instruction requires: sve 714// CHECK-UNKNOWN: 15 70 df 05 <unknown> 715 716movprfx z4.d, p7/z, z6.d 717// CHECK-INST: movprfx z4.d, p7/z, z6.d 718// CHECK-ENCODING: [0xc4,0x3c,0xd0,0x04] 719// CHECK-ERROR: instruction requires: sve 720// CHECK-UNKNOWN: c4 3c d0 04 <unknown> 721 722mov z4.d, p7/m, d31 723// CHECK-INST: mov z4.d, p7/m, d31 724// CHECK-ENCODING: [0xe4,0x9f,0xe0,0x05] 725// CHECK-ERROR: instruction requires: sve 726// CHECK-UNKNOWN: e4 9f e0 05 <unknown> 727 728movprfx z4, z6 729// CHECK-INST: movprfx z4, z6 730// CHECK-ENCODING: [0xc4,0xbc,0x20,0x04] 731// CHECK-ERROR: instruction requires: sve 732// CHECK-UNKNOWN: c4 bc 20 04 <unknown> 733 734mov z4.d, p7/m, d31 735// CHECK-INST: mov z4.d, p7/m, d31 736// CHECK-ENCODING: [0xe4,0x9f,0xe0,0x05] 737// CHECK-ERROR: instruction requires: sve 738// CHECK-UNKNOWN: e4 9f e0 05 <unknown> 739