1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s 2 3// input should be a 64bit scalar register 4mov z0.d, w0 5// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 6// CHECK-NEXT: mov z0.d, w0 7// CHECK-NOT: [[@LINE-3]]:{{[0-9]+}}: 8 9// wzr is not a valid operand to mov 10mov z0.s, wzr 11// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 12// CHECK-NEXT: mov z0.s, wzr 13// CHECK-NOT: [[@LINE-3]]:{{[0-9]+}}: 14 15// xzr is not a valid operand to mov 16mov z0.d, xzr 17// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 18// CHECK-NEXT: mov z0.d, xzr 19// CHECK-NOT: [[@LINE-3]]:{{[0-9]+}}: 20 21 22// --------------------------------------------------------------------------// 23// Unpredicated mov of Z register only allowed for .d 24 25mov z0.b, z1.b 26// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: too few operands for instruction 27// CHECK-NEXT: mov z0.b, z1.b 28// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 29 30mov z0.h, z1.h 31// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: too few operands for instruction 32// CHECK-NEXT: mov z0.h, z1.h 33// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 34 35mov z0.s, z1.s 36// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: too few operands for instruction 37// CHECK-NEXT: mov z0.s, z1.s 38// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 39 40// --------------------------------------------------------------------------// 41// Invalid scalar operand for result element width. 42 43mov z0.d, w0 44// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 45// CHECK-NEXT: mov z0.d, w0 46// CHECK-NOT: [[@LINE-3]]:{{[0-9]+}}: 47 48mov z0.b, p0/m, x0 49// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 50// CHECK-NEXT: mov z0.b, p0/m, x0 51// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 52 53mov z0.h, p0/m, x0 54// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 55// CHECK-NEXT: mov z0.h, p0/m, x0 56// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 57 58mov z0.s, p0/m, x0 59// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 60// CHECK-NEXT: mov z0.s, p0/m, x0 61// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 62 63mov z0.d, p0/m, w0 64// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 65// CHECK-NEXT: mov z0.d, p0/m, w0 66// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 67 68mov z0.b, p0/m, h0 69// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 70// CHECK-NEXT: mov z0.b, p0/m, h0 71// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 72 73mov z0.b, p0/m, s0 74// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 75// CHECK-NEXT: mov z0.b, p0/m, s0 76// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 77 78mov z0.b, p0/m, d0 79// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 80// CHECK-NEXT: mov z0.b, p0/m, d0 81// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 82 83mov z0.h, p0/m, b0 84// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 85// CHECK-NEXT: mov z0.h, p0/m, b0 86// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 87 88mov z0.h, p0/m, s0 89// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 90// CHECK-NEXT: mov z0.h, p0/m, s0 91// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 92 93mov z0.h, p0/m, d0 94// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 95// CHECK-NEXT: mov z0.h, p0/m, d0 96// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 97 98mov z0.s, p0/m, b0 99// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 100// CHECK-NEXT: mov z0.s, p0/m, b0 101// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 102 103mov z0.s, p0/m, h0 104// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 105// CHECK-NEXT: mov z0.s, p0/m, h0 106// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 107 108mov z0.s, p0/m, d0 109// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 110// CHECK-NEXT: mov z0.s, p0/m, d0 111// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 112 113mov z0.d, p0/m, b0 114// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 115// CHECK-NEXT: mov z0.d, p0/m, b0 116// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 117 118mov z0.d, p0/m, h0 119// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 120// CHECK-NEXT: mov z0.d, p0/m, h0 121// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 122 123mov z0.d, p0/m, s0 124// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction 125// CHECK-NEXT: mov z0.d, p0/m, s0 126// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 127 128// --------------------------------------------------------------------------// 129// Invalid immediates 130 131mov z0.b, #0, lsl #8 // #0, lsl #8 is not valid for .b 132// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 133// CHECK-NEXT: mov z0.b, #0, lsl #8 134// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 135 136mov z0.b, #-129 137// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 138// CHECK-NEXT: mov z0.b, #-129 139// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 140 141mov z0.b, #-1, lsl #8 142// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 143// CHECK-NEXT: mov z0.b, #-1, lsl #8 144// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 145 146mov z0.b, #256 147// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 148// CHECK-NEXT: mov z0.b, #256 149// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 150 151mov z0.b, #1, lsl #8 152// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 153// CHECK-NEXT: mov z0.b, #1, lsl #8 154// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 155 156mov z0.h, #-129, lsl #8 157// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 158// CHECK-NEXT: mov z0.h, #-129, lsl #8 159// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 160 161// Note: 65281 is a valid logical immediate. 162mov z0.h, #65282 163// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 164// CHECK-NEXT: mov z0.h, #65282 165// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 166 167mov z0.h, #256, lsl #8 168// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 169// CHECK-NEXT: mov z0.h, #256, lsl #8 170// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 171 172mov z0.s, #-33024 173// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 174// CHECK-NEXT: mov z0.s, #-33024 175// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 176 177mov z0.s, #-129, lsl #8 178// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 179// CHECK-NEXT: mov z0.s, #-129, lsl #8 180// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 181 182mov z0.s, #32513 183// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 184// CHECK-NEXT: mov z0.s, #32513 185// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 186 187mov z0.s, #128, lsl #8 188// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 189// CHECK-NEXT: mov z0.s, #128, lsl #8 190// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 191 192mov z0.d, #-33024 193// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 194// CHECK-NEXT: mov z0.d, #-33024 195// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 196 197mov z0.d, #-129, lsl #8 198// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 199// CHECK-NEXT: mov z0.d, #-129, lsl #8 200// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 201 202mov z0.d, #32513 203// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 204// CHECK-NEXT: mov z0.d, #32513 205// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 206 207mov z0.d, #128, lsl #8 208// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 209// CHECK-NEXT: mov z0.d, #128, lsl #8 210// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 211 212mov z5.b, #0xfff9 213// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] with a shift amount of 0 214// CHECK-NEXT: mov z5.b, #0xfff9 215// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 216 217mov z5.h, #0xfffa 218// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 219// CHECK-NEXT: mov z5.h, #0xfffa 220// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 221 222mov z5.h, #0xfffffff9 223// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 224// CHECK-NEXT: mov z5.h, #0xfffffff9 225// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 226 227mov z5.s, #0xfffffffa 228// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 229// CHECK-NEXT: mov z5.s, #0xfffffffa 230// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 231 232mov z5.s, #0xffffffffffffff9 233// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 234// CHECK-NEXT: mov z5.s, #0xffffffffffffff9 235// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 236 237mov z0.b, p0/z, #0, lsl #8 // #0, lsl #8 is not valid for .b 238// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 239// CHECK-NEXT: mov z0.b, p0/z, #0, lsl #8 240// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 241 242mov z0.b, p0/z, #-129 243// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 244// CHECK-NEXT: mov z0.b, p0/z, #-129 245// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 246 247mov z0.b, p0/z, #-1, lsl #8 248// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 249// CHECK-NEXT: mov z0.b, p0/z, #-1, lsl #8 250// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 251 252mov z0.b, p0/z, #256 253// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 254// CHECK-NEXT: mov z0.b, p0/z, #256 255// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 256 257mov z0.b, p0/z, #1, lsl #8 258// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 259// CHECK-NEXT: mov z0.b, p0/z, #1, lsl #8 260// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 261 262mov z0.h, p0/z, #-33024 263// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 264// CHECK-NEXT: mov z0.h, p0/z, #-33024 265// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 266 267mov z0.h, p0/z, #-32769 268// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 269// CHECK-NEXT: mov z0.h, p0/z, #-32769 270// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 271 272mov z0.h, p0/z, #-129, lsl #8 273// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 274// CHECK-NEXT: mov z0.h, p0/z, #-129, lsl #8 275// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 276 277mov z0.h, p0/z, #32513 278// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 279// CHECK-NEXT: mov z0.h, p0/z, #32513 280// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 281 282mov z0.h, p0/z, #65281 283// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 284// CHECK-NEXT: mov z0.h, p0/z, #65281 285// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 286 287mov z0.h, p0/z, #256, lsl #8 288// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 289// CHECK-NEXT: mov z0.h, p0/z, #256, lsl #8 290// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 291 292mov z0.s, p0/z, #-33024 293// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 294// CHECK-NEXT: mov z0.s, p0/z, #-33024 295// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 296 297mov z0.s, p0/z, #-32769 298// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 299// CHECK-NEXT: mov z0.s, p0/z, #-32769 300// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 301 302mov z0.s, p0/z, #-129, lsl #8 303// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 304// CHECK-NEXT: mov z0.s, p0/z, #-129, lsl #8 305// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 306 307mov z0.s, p0/z, #32513 308// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 309// CHECK-NEXT: mov z0.s, p0/z, #32513 310// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 311 312mov z0.s, p0/z, #32768 313// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 314// CHECK-NEXT: mov z0.s, p0/z, #32768 315// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 316 317mov z0.s, p0/z, #128, lsl #8 318// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 319// CHECK-NEXT: mov z0.s, p0/z, #128, lsl #8 320// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 321 322mov z0.d, p0/z, #-33024 323// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 324// CHECK-NEXT: mov z0.d, p0/z, #-33024 325// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 326 327mov z0.d, p0/z, #-32769 328// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 329// CHECK-NEXT: mov z0.d, p0/z, #-32769 330// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 331 332mov z0.d, p0/z, #-129, lsl #8 333// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 334// CHECK-NEXT: mov z0.d, p0/z, #-129, lsl #8 335// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 336 337mov z0.d, p0/z, #32513 338// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 339// CHECK-NEXT: mov z0.d, p0/z, #32513 340// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 341 342mov z0.d, p0/z, #32768 343// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 344// CHECK-NEXT: mov z0.d, p0/z, #32768 345// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 346 347mov z0.d, p0/z, #128, lsl #8 348// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 349// CHECK-NEXT: mov z0.d, p0/z, #128, lsl #8 350// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 351 352 353// --------------------------------------------------------------------------// 354// Immediate not compatible with encode/decode function. 355 356mov z24.b, z17.b[-1] 357// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 63]. 358// CHECK-NEXT: mov z24.b, z17.b[-1] 359// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 360 361mov z17.b, z5.b[64] 362// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 63]. 363// CHECK-NEXT: mov z17.b, z5.b[64] 364// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 365 366mov z16.h, z30.h[-1] 367// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 31]. 368// CHECK-NEXT: mov z16.h, z30.h[-1] 369// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 370 371mov z19.h, z23.h[32] 372// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 31]. 373// CHECK-NEXT: mov z19.h, z23.h[32] 374// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 375 376mov z1.s, z6.s[-1] 377// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 15]. 378// CHECK-NEXT: mov z1.s, z6.s[-1] 379// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 380 381mov z24.s, z3.s[16] 382// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 15]. 383// CHECK-NEXT: mov z24.s, z3.s[16] 384// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 385 386mov z5.d, z25.d[-1] 387// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 7]. 388// CHECK-NEXT: mov z5.d, z25.d[-1] 389// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 390 391mov z12.d, z28.d[8] 392// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 7]. 393// CHECK-NEXT: mov z12.d, z28.d[8] 394// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 395 396mov z22.q, z7.q[-1] 397// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3]. 398// CHECK-NEXT: mov z22.q, z7.q[-1] 399// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 400 401mov z24.q, z21.q[4] 402// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3]. 403// CHECK-NEXT: mov z24.q, z21.q[4] 404// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 405 406 407// --------------------------------------------------------------------------// 408// Negative tests for instructions that are incompatible with movprfx 409 410movprfx z31.b, p0/z, z6.b 411mov z31.b, wsp 412// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 413// CHECK-NEXT: mov z31.b, wsp 414// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 415 416movprfx z31, z6 417mov z31.b, wsp 418// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 419// CHECK-NEXT: mov z31.b, wsp 420// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 421 422movprfx z0.d, p0/z, z7.d 423mov z0.d, #0xe0000000000003ff 424// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 425// CHECK-NEXT: mov z0.d, #0xe0000000000003ff 426// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 427 428movprfx z0, z7 429mov z0.d, #0xe0000000000003ff 430// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 431// CHECK-NEXT: mov z0.d, #0xe0000000000003ff 432// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 433 434movprfx z4.d, p7/z, z6.d 435mov z4.d, p7/m, z31.d 436// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 437// CHECK-NEXT: mov z4.d, p7/m, z31.d 438// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 439 440movprfx z31, z6 441mov z31.d, p15/m, z31.d 442// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 443// CHECK-NEXT: mov z31.d, p15/m, z31.d 444// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 445 446movprfx z0.d, p0/z, z7.d 447mov z0.d, d0 448// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 449// CHECK-NEXT: mov z0.d, d0 450// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 451 452movprfx z0, z7 453mov z0.d, d0 454// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 455// CHECK-NEXT: mov z0.d, d0 456// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 457 458movprfx z31.d, p0/z, z6.d 459mov z31.d, z0.d 460// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 461// CHECK-NEXT: mov z31.d, z0.d 462// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 463 464movprfx z31, z6 465mov z31.d, z0.d 466// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 467// CHECK-NEXT: mov z31.d, z0.d 468// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 469 470movprfx z31.d, p0/z, z6.d 471mov z31.d, z31.d[7] 472// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 473// CHECK-NEXT: mov z31.d, z31.d[7] 474// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 475 476movprfx z31, z6 477mov z31.d, z31.d[7] 478// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 479// CHECK-NEXT: mov z31.d, z31.d[7] 480// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 481