Index: test/MC/AArch64/SVE/add-diagnostics.s =================================================================== --- test/MC/AArch64/SVE/add-diagnostics.s +++ test/MC/AArch64/SVE/add-diagnostics.s @@ -18,38 +18,60 @@ // CHECK-NEXT: add z27.h, z11.h, z27.b // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: +// Invalid predicate suffix '/a' +add z29.d, p7/a, z29.d, z8.d +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expecting 'm' or 'z' predication +// CHECK-NEXT: add z29.d, p7/a, z29.d, z8.d +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +// Missing predicate suffix +add z29.d, p7, z29.d, z8.d +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand +// CHECK-NEXT: add z29.d, p7, z29.d, z8.d +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +// --------------------------------------------------------------------------// // error: restricted predicate has range [0, 7]. + add z22.b, p8/m, z22.b, z11.b // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7]. // CHECK-NEXT: add z22.b, p8/m, z22.b, z11.b // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: -// error: restricted predicate has range [0, 7]. add z22.h, p8/m, z22.h, z6.h // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7]. // CHECK-NEXT: add z22.h, p8/m, z22.h, z6.h // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: -// error: restricted predicate has range [0, 7]. add z30.s, p8/m, z30.s, z13.s // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7]. // CHECK-NEXT: add z30.s, p8/m, z30.s, z13.s // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: -// error: restricted predicate has range [0, 7]. add z29.d, p8/m, z29.d, z8.d // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7]. // CHECK-NEXT: add z29.d, p8/m, z29.d, z8.d // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: -// Invalid predicate suffix '/a' -add z29.d, p7/a, z29.d, z8.d -// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expecting 'm' or 'z' predication -// CHECK-NEXT: add z29.d, p7/a, z29.d, z8.d +// --------------------------------------------------------------------------// +// Source and Destination Registers must match + +add z19.b, p4/m, z20.b, z13.b +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register +// CHECK-NEXT: add z19.b, p4/m, z20.b, z13.b // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: -// Missing predicate suffix -add z29.d, p7, z29.d, z8.d -// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand -// CHECK-NEXT: add z29.d, p7, z29.d, z8.d +add z9.h, p3/m, z10.h, z28.h +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register +// CHECK-NEXT: add z9.h, p3/m, z10.h, z28.h +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +add z5.s, p3/m, z6.s, z18.s +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register +// CHECK-NEXT: add z5.s, p3/m, z6.s, z18.s +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +add z9.d, p4/m, z10.d, z7.d +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register +// CHECK-NEXT: add z9.d, p4/m, z10.d, z7.d // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: Index: test/MC/AArch64/SVE/sub-diagnostics.s =================================================================== --- test/MC/AArch64/SVE/sub-diagnostics.s +++ test/MC/AArch64/SVE/sub-diagnostics.s @@ -18,38 +18,60 @@ // CHECK-NEXT: sub z0.h, z8.h, z8.b // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: +// Invalid predicate suffix '/a' +sub z29.d, p7/a, z29.d, z8.d +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expecting 'm' or 'z' predication +// CHECK-NEXT: sub z29.d, p7/a, z29.d, z8.d +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +// Missing predicate suffix +sub z29.d, p7, z29.d, z8.d +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand +// CHECK-NEXT: sub z29.d, p7, z29.d, z8.d +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +// --------------------------------------------------------------------------// // error: restricted predicate has range [0, 7]. + sub z26.b, p8/m, z26.b, z27.b // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7]. // CHECK-NEXT: sub z26.b, p8/m, z26.b, z27.b // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: -// error: restricted predicate has range [0, 7]. sub z14.h, p8/m, z14.h, z18.h // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7]. // CHECK-NEXT: sub z14.h, p8/m, z14.h, z18.h // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: -// error: restricted predicate has range [0, 7]. sub z30.s, p8/m, z30.s, z23.s // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7]. // CHECK-NEXT: sub z30.s, p8/m, z30.s, z23.s // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: -// error: restricted predicate has range [0, 7]. sub z29.d, p8/m, z29.d, z3.d // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: restricted predicate has range [0, 7]. // CHECK-NEXT: sub z29.d, p8/m, z29.d, z3.d // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: -// Invalid predicate suffix '/a' -sub z29.d, p7/a, z29.d, z8.d -// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: expecting 'm' or 'z' predication -// CHECK-NEXT: sub z29.d, p7/a, z29.d, z8.d +// --------------------------------------------------------------------------// +// Source and Destination Registers must match + +sub z25.b, p4/m, z26.b, z2.b +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register +// CHECK-NEXT: sub z25.b, p4/m, z26.b, z2.b // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: -// Missing predicate suffix -sub z29.d, p7, z29.d, z8.d -// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand -// CHECK-NEXT: sub z29.d, p7, z29.d, z8.d +sub z29.h, p6/m, z30.h, z20.h +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register +// CHECK-NEXT: sub z29.h, p6/m, z30.h, z20.h +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +sub z14.s, p2/m, z15.s, z21.s +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register +// CHECK-NEXT: sub z14.s, p2/m, z15.s, z21.s +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +sub z2.d, p5/m, z3.d, z11.d +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: operand must match destination register +// CHECK-NEXT: sub z2.d, p5/m, z3.d, z11.d // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: