1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve 2>&1 < %s| FileCheck %s 2 3// --------------------------------------------------------------------------// 4// Invalid scalar operand for result element width. 5 6cpy z0.b, p0/m, x0 7// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 8// CHECK-NEXT: cpy z0.b, p0/m, x0 9// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 10 11cpy z0.h, p0/m, x0 12// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 13// CHECK-NEXT: cpy z0.h, p0/m, x0 14// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 15 16cpy z0.s, p0/m, x0 17// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 18// CHECK-NEXT: cpy z0.s, p0/m, x0 19// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 20 21cpy z0.d, p0/m, w0 22// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 23// CHECK-NEXT: cpy z0.d, p0/m, w0 24// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 25 26cpy z0.b, p0/m, h0 27// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 28// CHECK-NEXT: cpy z0.b, p0/m, h0 29// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 30 31cpy z0.b, p0/m, s0 32// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 33// CHECK-NEXT: cpy z0.b, p0/m, s0 34// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 35 36cpy z0.b, p0/m, d0 37// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 38// CHECK-NEXT: cpy z0.b, p0/m, d0 39// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 40 41cpy z0.h, p0/m, b0 42// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 43// CHECK-NEXT: cpy z0.h, p0/m, b0 44// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 45 46cpy z0.h, p0/m, s0 47// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 48// CHECK-NEXT: cpy z0.h, p0/m, s0 49// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 50 51cpy z0.h, p0/m, d0 52// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 53// CHECK-NEXT: cpy z0.h, p0/m, d0 54// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 55 56cpy z0.s, p0/m, b0 57// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 58// CHECK-NEXT: cpy z0.s, p0/m, b0 59// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 60 61cpy z0.s, p0/m, h0 62// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 63// CHECK-NEXT: cpy z0.s, p0/m, h0 64// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 65 66cpy z0.s, p0/m, d0 67// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 68// CHECK-NEXT: cpy z0.s, p0/m, d0 69// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 70 71cpy z0.d, p0/m, b0 72// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 73// CHECK-NEXT: cpy z0.d, p0/m, b0 74// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 75 76cpy z0.d, p0/m, h0 77// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 78// CHECK-NEXT: cpy z0.d, p0/m, h0 79// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 80 81cpy z0.d, p0/m, s0 82// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand 83// CHECK-NEXT: cpy z0.d, p0/m, s0 84// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 85 86 87// --------------------------------------------------------------------------// 88// Invalid immediates 89 90cpy z0.b, p0/z, #0, lsl #8 // #0, lsl #8 is not valid for .b 91// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 92// CHECK-NEXT: cpy z0.b, p0/z, #0, lsl #8 93// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 94 95cpy z0.b, p0/z, #-129 96// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 97// CHECK-NEXT: cpy z0.b, p0/z, #-129 98// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 99 100cpy z0.b, p0/z, #-1, lsl #8 101// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 102// CHECK-NEXT: cpy z0.b, p0/z, #-1, lsl #8 103// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 104 105cpy z0.b, p0/z, #256 106// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 107// CHECK-NEXT: cpy z0.b, p0/z, #256 108// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 109 110cpy z0.b, p0/z, #1, lsl #8 111// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 255] 112// CHECK-NEXT: cpy z0.b, p0/z, #1, lsl #8 113// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 114 115cpy z0.h, p0/z, #-33024 116// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 117// CHECK-NEXT: cpy z0.h, p0/z, #-33024 118// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 119 120cpy z0.h, p0/z, #-32769 121// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 122// CHECK-NEXT: cpy z0.h, p0/z, #-32769 123// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 124 125cpy z0.h, p0/z, #-129, lsl #8 126// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 127// CHECK-NEXT: cpy z0.h, p0/z, #-129, lsl #8 128// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 129 130cpy z0.h, p0/z, #32513 131// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 132// CHECK-NEXT: cpy z0.h, p0/z, #32513 133// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 134 135cpy z0.h, p0/z, #65281 136// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 137// CHECK-NEXT: cpy z0.h, p0/z, #65281 138// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 139 140cpy z0.h, p0/z, #256, lsl #8 141// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 65280] 142// CHECK-NEXT: cpy z0.h, p0/z, #256, lsl #8 143// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 144 145cpy z0.s, p0/z, #-33024 146// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 147// CHECK-NEXT: cpy z0.s, p0/z, #-33024 148// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 149 150cpy z0.s, p0/z, #-32769 151// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 152// CHECK-NEXT: cpy z0.s, p0/z, #-32769 153// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 154 155cpy z0.s, p0/z, #-129, lsl #8 156// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 157// CHECK-NEXT: cpy z0.s, p0/z, #-129, lsl #8 158// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 159 160cpy z0.s, p0/z, #32513 161// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 162// CHECK-NEXT: cpy z0.s, p0/z, #32513 163// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 164 165cpy z0.s, p0/z, #32768 166// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 167// CHECK-NEXT: cpy z0.s, p0/z, #32768 168// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 169 170cpy z0.s, p0/z, #128, lsl #8 171// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 172// CHECK-NEXT: cpy z0.s, p0/z, #128, lsl #8 173// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 174 175cpy z0.d, p0/z, #-33024 176// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 177// CHECK-NEXT: cpy z0.d, p0/z, #-33024 178// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 179 180cpy z0.d, p0/z, #-32769 181// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 182// CHECK-NEXT: cpy z0.d, p0/z, #-32769 183// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 184 185cpy z0.d, p0/z, #-129, lsl #8 186// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 187// CHECK-NEXT: cpy z0.d, p0/z, #-129, lsl #8 188// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 189 190cpy z0.d, p0/z, #32513 191// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 192// CHECK-NEXT: cpy z0.d, p0/z, #32513 193// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 194 195cpy z0.d, p0/z, #32768 196// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 197// CHECK-NEXT: cpy z0.d, p0/z, #32768 198// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 199 200cpy z0.d, p0/z, #128, lsl #8 201// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: immediate must be an integer in range [-128, 127] or a multiple of 256 in range [-32768, 32512] 202// CHECK-NEXT: cpy z0.d, p0/z, #128, lsl #8 203// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: 204