Index: llvm/trunk/test/MC/AArch64/SVE/ld1b-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ld1b-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ld1b-diagnostics.s @@ -109,3 +109,47 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. // CHECK-NEXT: ld1b z0.b, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ld1b z0.d, p0/z, [x0, z0.b] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1b z0.d, p0/z, [x0, z0.b] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1b z0.d, p0/z, [x0, z0.h] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1b z0.d, p0/z, [x0, z0.h] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1b z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1b z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1b z0.s, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1b z0.s, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1b z0.s, p0/z, [x0, z0.s, uxtw #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1b z0.s, p0/z, [x0, z0.s, uxtw #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1b z0.s, p0/z, [x0, z0.s, lsl #0] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1b z0.s, p0/z, [x0, z0.s, lsl #0] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1b z0.d, p0/z, [x0, z0.d, lsl #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1b z0.d, p0/z, [x0, z0.d, lsl #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1b z0.d, p0/z, [x0, z0.d, sxtw #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1b z0.d, p0/z, [x0, z0.d, sxtw #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ld1d-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ld1d-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ld1d-diagnostics.s @@ -69,3 +69,27 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. // CHECK-NEXT: ld1d z0.d, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ld1d z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1d z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1d z0.d, p0/z, [x0, z0.d, uxtw #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1d z0.d, p0/z, [x0, z0.d, uxtw #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1d z0.d, p0/z, [x0, z0.d, lsl #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1d z0.d, p0/z, [x0, z0.d, lsl #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1d z0.d, p0/z, [x0, z0.d, lsl] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected #imm after shift specifier +// CHECK-NEXT: ld1d z0.d, p0/z, [x0, z0.d, lsl] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ld1h-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ld1h-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ld1h-diagnostics.s @@ -99,3 +99,42 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. // CHECK-NEXT: ld1h z0.h, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ld1h z0.d, p0/z, [x0, z0.h] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1h z0.d, p0/z, [x0, z0.h] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1h z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1h z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1h z0.s, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1h z0.s, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1h z0.s, p0/z, [x0, z0.s, uxtw #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1h z0.s, p0/z, [x0, z0.s, uxtw #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1h z0.s, p0/z, [x0, z0.s, lsl #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1h z0.s, p0/z, [x0, z0.s, lsl #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1h z0.d, p0/z, [x0, z0.d, lsl #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1h z0.d, p0/z, [x0, z0.d, lsl #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1h z0.d, p0/z, [x0, z0.d, sxtw #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1h z0.d, p0/z, [x0, z0.d, sxtw #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ld1sb-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ld1sb-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ld1sb-diagnostics.s @@ -108,3 +108,46 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. // CHECK-NEXT: ld1sb z0.h, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ld1sb z0.d, p0/z, [x0, z0.b] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sb z0.d, p0/z, [x0, z0.b] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sb z0.d, p0/z, [x0, z0.h] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sb z0.d, p0/z, [x0, z0.h] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sb z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sb z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sb z0.s, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sb z0.s, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sb z0.s, p0/z, [x0, z0.s, uxtw #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sb z0.s, p0/z, [x0, z0.s, uxtw #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sb z0.s, p0/z, [x0, z0.s, lsl #0] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sb z0.s, p0/z, [x0, z0.s, lsl #0] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sb z0.d, p0/z, [x0, z0.d, lsl #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sb z0.d, p0/z, [x0, z0.d, lsl #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sb z0.d, p0/z, [x0, z0.d, sxtw #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sb z0.d, p0/z, [x0, z0.d, sxtw #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ld1sh-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ld1sh-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ld1sh-diagnostics.s @@ -98,3 +98,42 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. // CHECK-NEXT: ld1sh z0.s, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ld1sh z0.d, p0/z, [x0, z0.h] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sh z0.d, p0/z, [x0, z0.h] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sh z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sh z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sh z0.s, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sh z0.s, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sh z0.s, p0/z, [x0, z0.s, uxtw #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sh z0.s, p0/z, [x0, z0.s, uxtw #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sh z0.s, p0/z, [x0, z0.s, lsl #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sh z0.s, p0/z, [x0, z0.s, lsl #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sh z0.d, p0/z, [x0, z0.d, lsl #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sh z0.d, p0/z, [x0, z0.d, lsl #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sh z0.d, p0/z, [x0, z0.d, sxtw #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sh z0.d, p0/z, [x0, z0.d, sxtw #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ld1sw-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ld1sw-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ld1sw-diagnostics.s @@ -83,3 +83,47 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. // CHECK-NEXT: ld1sw z0.d, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ld1sw z0.d, p0/z, [x0, z0.h] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sw z0.d, p0/z, [x0, z0.h] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sw z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sw z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sw z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sw z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sw z0.d, p0/z, [x0, z0.d, uxtw #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sw z0.d, p0/z, [x0, z0.d, uxtw #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sw z0.d, p0/z, [x0, z0.d, lsl #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sw z0.d, p0/z, [x0, z0.d, lsl #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sw z0.d, p0/z, [x0, z0.d, lsl] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected #imm after shift specifier +// CHECK-NEXT: ld1sw z0.d, p0/z, [x0, z0.d, lsl] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sw z0.d, p0/z, [x0, z0.d, lsl #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sw z0.d, p0/z, [x0, z0.d, lsl #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1sw z0.d, p0/z, [x0, z0.d, sxtw #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1sw z0.d, p0/z, [x0, z0.d, sxtw #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ld1w-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ld1w-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ld1w-diagnostics.s @@ -84,3 +84,42 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. // CHECK-NEXT: ld1w z0.s, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ld1w z0.d, p0/z, [x0, z0.h] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1w z0.d, p0/z, [x0, z0.h] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1w z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1w z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1w z0.s, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1w z0.s, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1w z0.s, p0/z, [x0, z0.s, uxtw #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1w z0.s, p0/z, [x0, z0.s, uxtw #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1w z0.s, p0/z, [x0, z0.s, lsl #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1w z0.s, p0/z, [x0, z0.s, lsl #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1w z0.d, p0/z, [x0, z0.d, lsl #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1w z0.d, p0/z, [x0, z0.d, lsl #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ld1w z0.d, p0/z, [x0, z0.d, sxtw #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: index must be an integer in range [-8, 7]. +// CHECK-NEXT: ld1w z0.d, p0/z, [x0, z0.d, sxtw #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ldff1b-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ldff1b-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ldff1b-diagnostics.s @@ -45,3 +45,46 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: register must be x0..x30 or xzr, without shift // CHECK-NEXT: ldff1b z0.b, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ldff1b z0.d, p0/z, [x0, z0.b] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1b z0.d, p0/z, [x0, z0.b] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1b z0.d, p0/z, [x0, z0.h] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1b z0.d, p0/z, [x0, z0.h] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1b z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1b z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1b z0.s, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1b z0.s, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1b z0.s, p0/z, [x0, z0.s, uxtw #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1b z0.s, p0/z, [x0, z0.s, uxtw #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1b z0.s, p0/z, [x0, z0.s, lsl #0] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1b z0.s, p0/z, [x0, z0.s, lsl #0] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1b z0.d, p0/z, [x0, z0.d, lsl #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1b z0.d, p0/z, [x0, z0.d, lsl #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1b z0.d, p0/z, [x0, z0.d, sxtw #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1b z0.d, p0/z, [x0, z0.d, sxtw #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ldff1d-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ldff1d-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ldff1d-diagnostics.s @@ -49,3 +49,26 @@ // CHECK-NEXT: ldff1d z0.d, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ldff1d z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1d z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1d z0.d, p0/z, [x0, z0.d, uxtw #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1d z0.d, p0/z, [x0, z0.d, uxtw #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1d z0.d, p0/z, [x0, z0.d, lsl #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1d z0.d, p0/z, [x0, z0.d, lsl #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1d z0.d, p0/z, [x0, z0.d, lsl] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected #imm after shift specifier +// CHECK-NEXT: ldff1d z0.d, p0/z, [x0, z0.d, lsl] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ldff1h-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ldff1h-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ldff1h-diagnostics.s @@ -48,3 +48,42 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: register must be x0..x30 or xzr, with required shift 'lsl #1' // CHECK-NEXT: ldff1h z0.h, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ldff1h z0.d, p0/z, [x0, z0.h] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1h z0.d, p0/z, [x0, z0.h] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1h z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1h z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1h z0.s, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1h z0.s, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1h z0.s, p0/z, [x0, z0.s, uxtw #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1h z0.s, p0/z, [x0, z0.s, uxtw #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1h z0.s, p0/z, [x0, z0.s, lsl #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1h z0.s, p0/z, [x0, z0.s, lsl #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1h z0.d, p0/z, [x0, z0.d, lsl #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1h z0.d, p0/z, [x0, z0.d, lsl #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1h z0.d, p0/z, [x0, z0.d, sxtw #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1h z0.d, p0/z, [x0, z0.d, sxtw #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ldff1sb-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ldff1sb-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ldff1sb-diagnostics.s @@ -48,3 +48,46 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: register must be x0..x30 or xzr, without shift // CHECK-NEXT: ldff1sb z0.h, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ldff1sb z0.d, p0/z, [x0, z0.b] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sb z0.d, p0/z, [x0, z0.b] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sb z0.d, p0/z, [x0, z0.h] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sb z0.d, p0/z, [x0, z0.h] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sb z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sb z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sb z0.s, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sb z0.s, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sb z0.s, p0/z, [x0, z0.s, uxtw #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sb z0.s, p0/z, [x0, z0.s, uxtw #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sb z0.s, p0/z, [x0, z0.s, lsl #0] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sb z0.s, p0/z, [x0, z0.s, lsl #0] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sb z0.d, p0/z, [x0, z0.d, lsl #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sb z0.d, p0/z, [x0, z0.d, lsl #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sb z0.d, p0/z, [x0, z0.d, sxtw #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sb z0.d, p0/z, [x0, z0.d, sxtw #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ldff1sh-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ldff1sh-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ldff1sh-diagnostics.s @@ -43,3 +43,41 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' // CHECK-NEXT: ldff1sh z0.s, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ldff1sh z0.d, p0/z, [x0, z0.h] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sh z0.d, p0/z, [x0, z0.h] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sh z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sh z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sh z0.s, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sh z0.s, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sh z0.s, p0/z, [x0, z0.s, uxtw #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sh z0.s, p0/z, [x0, z0.s, uxtw #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sh z0.s, p0/z, [x0, z0.s, lsl #1] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sh z0.s, p0/z, [x0, z0.s, lsl #1] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sh z0.d, p0/z, [x0, z0.d, lsl #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sh z0.d, p0/z, [x0, z0.d, lsl #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sh z0.d, p0/z, [x0, z0.d, sxtw #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sh z0.d, p0/z, [x0, z0.d, sxtw #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ldff1sw-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ldff1sw-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ldff1sw-diagnostics.s @@ -38,3 +38,47 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' // CHECK-NEXT: ldff1sw z0.d, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ldff1sw z0.d, p0/z, [x0, z0.h] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sw z0.d, p0/z, [x0, z0.h] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sw z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sw z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sw z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sw z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sw z0.d, p0/z, [x0, z0.d, uxtw #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sw z0.d, p0/z, [x0, z0.d, uxtw #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sw z0.d, p0/z, [x0, z0.d, lsl #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sw z0.d, p0/z, [x0, z0.d, lsl #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sw z0.d, p0/z, [x0, z0.d, lsl] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expected #imm after shift specifier +// CHECK-NEXT: ldff1sw z0.d, p0/z, [x0, z0.d, lsl] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sw z0.d, p0/z, [x0, z0.d, lsl #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sw z0.d, p0/z, [x0, z0.d, lsl #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1sw z0.d, p0/z, [x0, z0.d, sxtw #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1sw z0.d, p0/z, [x0, z0.d, sxtw #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: llvm/trunk/test/MC/AArch64/SVE/ldff1w-diagnostics.s =================================================================== --- llvm/trunk/test/MC/AArch64/SVE/ldff1w-diagnostics.s +++ llvm/trunk/test/MC/AArch64/SVE/ldff1w-diagnostics.s @@ -48,3 +48,42 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' // CHECK-NEXT: ldff1w z0.s, p0/z, [x0, w0, uxtw] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + + +// --------------------------------------------------------------------------// +// Invalid scalar + vector addressing modes + +ldff1w z0.d, p0/z, [x0, z0.h] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1w z0.d, p0/z, [x0, z0.h] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1w z0.d, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1w z0.d, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1w z0.s, p0/z, [x0, z0.s] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1w z0.s, p0/z, [x0, z0.s] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1w z0.s, p0/z, [x0, z0.s, uxtw #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1w z0.s, p0/z, [x0, z0.s, uxtw #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1w z0.s, p0/z, [x0, z0.s, lsl #2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].s, (uxtw|sxtw)' +// CHECK-NEXT: ldff1w z0.s, p0/z, [x0, z0.s, lsl #2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1w z0.d, p0/z, [x0, z0.d, lsl #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1w z0.d, p0/z, [x0, z0.d, lsl #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +ldff1w z0.d, p0/z, [x0, z0.d, sxtw #3] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid shift/extend specified, expected 'z[0..31].d, (uxtw|sxtw)' +// CHECK-NEXT: ldff1w z0.d, p0/z, [x0, z0.d, sxtw #3] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: