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, #-1, lsl #8 137// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 138// CHECK-NEXT: mov z0.b, #-1, lsl #8 139// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 140 141mov z0.b, #256 142// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 143// CHECK-NEXT: mov z0.b, #256 144// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 145 146mov z0.b, #1, lsl #8 147// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 148// CHECK-NEXT: mov z0.b, #1, lsl #8 149// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 150 151// Note: 65281 is a valid logical immediate. 152mov z0.h, #65282 153// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 154// CHECK-NEXT: mov z0.h, #65282 155// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 156 157mov z0.h, #256, lsl #8 158// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 159// CHECK-NEXT: mov z0.h, #256, lsl #8 160// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 161 162mov z0.s, #-33024 163// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 164// CHECK-NEXT: mov z0.s, #-33024 165// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 166 167mov z0.s, #-129, 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, 32512] 169// CHECK-NEXT: mov z0.s, #-129, lsl #8 170// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 171 172mov z0.s, #32513 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, #32513 175// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 176 177mov z0.s, #128, 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, #128, lsl #8 180// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 181 182mov z0.d, #-33024 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.d, #-33024 185// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 186 187mov z0.d, #-129, 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.d, #-129, lsl #8 190// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 191 192mov z0.d, #32513 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, #32513 195// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 196 197mov z0.d, #128, 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, #128, lsl #8 200// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 201 202mov z5.b, #0xfff9 203// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] with a shift amount of 0 204// CHECK-NEXT: mov z5.b, #0xfff9 205// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 206 207mov z5.h, #0xfffffff9 208// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 209// CHECK-NEXT: mov z5.h, #0xfffffff9 210// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 211 212mov z5.s, #0xffffffffffffff9 213// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 214// CHECK-NEXT: mov z5.s, #0xffffffffffffff9 215// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 216 217mov z0.b, p0/z, #0, lsl #8 // #0, lsl #8 is not valid for .b 218// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 219// CHECK-NEXT: mov z0.b, p0/z, #0, lsl #8 220// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 221 222mov z0.b, p0/z, #-1, lsl #8 223// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 224// CHECK-NEXT: mov z0.b, p0/z, #-1, lsl #8 225// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 226 227mov z0.b, p0/z, #256 228// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 229// CHECK-NEXT: mov z0.b, p0/z, #256 230// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 231 232mov z0.b, p0/z, #1, lsl #8 233// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 234// CHECK-NEXT: mov z0.b, p0/z, #1, lsl #8 235// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 236 237mov z0.h, p0/z, #-32769 238// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 239// CHECK-NEXT: mov z0.h, p0/z, #-32769 240// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 241 242mov z0.h, p0/z, #32513 243// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 244// CHECK-NEXT: mov z0.h, p0/z, #32513 245// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 246 247mov z0.h, p0/z, #65281 248// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 249// CHECK-NEXT: mov z0.h, p0/z, #65281 250// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 251 252mov z0.h, p0/z, #256, lsl #8 253// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 254// CHECK-NEXT: mov z0.h, p0/z, #256, lsl #8 255// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 256 257mov z0.s, p0/z, #-33024 258// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 259// CHECK-NEXT: mov z0.s, p0/z, #-33024 260// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 261 262mov z0.s, p0/z, #-32769 263// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 264// CHECK-NEXT: mov z0.s, p0/z, #-32769 265// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 266 267mov z0.s, p0/z, #-129, lsl #8 268// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 269// CHECK-NEXT: mov z0.s, p0/z, #-129, lsl #8 270// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 271 272mov z0.s, p0/z, #32513 273// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 274// CHECK-NEXT: mov z0.s, p0/z, #32513 275// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 276 277mov z0.s, p0/z, #32768 278// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 279// CHECK-NEXT: mov z0.s, p0/z, #32768 280// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 281 282mov z0.s, p0/z, #128, lsl #8 283// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 284// CHECK-NEXT: mov z0.s, p0/z, #128, lsl #8 285// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 286 287mov z0.d, p0/z, #-33024 288// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 289// CHECK-NEXT: mov z0.d, p0/z, #-33024 290// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 291 292mov z0.d, p0/z, #-32769 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.d, p0/z, #-32769 295// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 296 297mov z0.d, p0/z, #-129, lsl #8 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.d, p0/z, #-129, lsl #8 300// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 301 302mov z0.d, p0/z, #32513 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.d, p0/z, #32513 305// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 306 307mov z0.d, p0/z, #32768 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.d, p0/z, #32768 310// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 311 312mov z0.d, p0/z, #128, lsl #8 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.d, p0/z, #128, lsl #8 315// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 316 317 318// --------------------------------------------------------------------------// 319// Immediate not compatible with encode/decode function. 320 321mov z24.b, z17.b[-1] 322// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 63]. 323// CHECK-NEXT: mov z24.b, z17.b[-1] 324// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 325 326mov z17.b, z5.b[64] 327// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 63]. 328// CHECK-NEXT: mov z17.b, z5.b[64] 329// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 330 331mov z16.h, z30.h[-1] 332// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 31]. 333// CHECK-NEXT: mov z16.h, z30.h[-1] 334// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 335 336mov z19.h, z23.h[32] 337// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 31]. 338// CHECK-NEXT: mov z19.h, z23.h[32] 339// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 340 341mov z1.s, z6.s[-1] 342// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 15]. 343// CHECK-NEXT: mov z1.s, z6.s[-1] 344// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 345 346mov z24.s, z3.s[16] 347// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 15]. 348// CHECK-NEXT: mov z24.s, z3.s[16] 349// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 350 351mov z5.d, z25.d[-1] 352// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 7]. 353// CHECK-NEXT: mov z5.d, z25.d[-1] 354// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 355 356mov z12.d, z28.d[8] 357// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 7]. 358// CHECK-NEXT: mov z12.d, z28.d[8] 359// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 360 361mov z22.q, z7.q[-1] 362// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3]. 363// CHECK-NEXT: mov z22.q, z7.q[-1] 364// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 365 366mov z24.q, z21.q[4] 367// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: vector lane must be an integer in range [0, 3]. 368// CHECK-NEXT: mov z24.q, z21.q[4] 369// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 370 371 372// --------------------------------------------------------------------------// 373// Negative tests for instructions that are incompatible with movprfx 374 375movprfx z31.b, p0/z, z6.b 376mov z31.b, wsp 377// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 378// CHECK-NEXT: mov z31.b, wsp 379// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 380 381movprfx z31, z6 382mov z31.b, wsp 383// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 384// CHECK-NEXT: mov z31.b, wsp 385// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 386 387movprfx z0.d, p0/z, z7.d 388mov z0.d, #0xe0000000000003ff 389// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 390// CHECK-NEXT: mov z0.d, #0xe0000000000003ff 391// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 392 393movprfx z0, z7 394mov z0.d, #0xe0000000000003ff 395// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 396// CHECK-NEXT: mov z0.d, #0xe0000000000003ff 397// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 398 399movprfx z4.d, p7/z, z6.d 400mov z4.d, p7/m, z31.d 401// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 402// CHECK-NEXT: mov z4.d, p7/m, z31.d 403// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 404 405movprfx z31, z6 406mov z31.d, p15/m, z31.d 407// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 408// CHECK-NEXT: mov z31.d, p15/m, z31.d 409// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 410 411movprfx z0.d, p0/z, z7.d 412mov z0.d, d0 413// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 414// CHECK-NEXT: mov z0.d, d0 415// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 416 417movprfx z0, z7 418mov z0.d, d0 419// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 420// CHECK-NEXT: mov z0.d, d0 421// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 422 423movprfx z31.d, p0/z, z6.d 424mov z31.d, z0.d 425// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 426// CHECK-NEXT: mov z31.d, z0.d 427// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 428 429movprfx z31, z6 430mov z31.d, z0.d 431// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 432// CHECK-NEXT: mov z31.d, z0.d 433// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 434 435movprfx z31.d, p0/z, z6.d 436mov z31.d, z31.d[7] 437// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 438// CHECK-NEXT: mov z31.d, z31.d[7] 439// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 440 441movprfx z31, z6 442mov z31.d, z31.d[7] 443// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction is unpredictable when following a movprfx, suggest replacing movprfx with mov 444// CHECK-NEXT: mov z31.d, z31.d[7] 445// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 446