diff --git a/llvm/lib/Target/AArch64/SMEInstrFormats.td b/llvm/lib/Target/AArch64/SMEInstrFormats.td --- a/llvm/lib/Target/AArch64/SMEInstrFormats.td +++ b/llvm/lib/Target/AArch64/SMEInstrFormats.td @@ -2995,7 +2995,7 @@ string mnemonic> : I<(outs tile_ty:$ZAd), (ins tile_ty:$_ZAd, MatrixIndexGPR32Op12_15:$Rs, index_ty:$imm, vector_ty:$Zn), - mnemonic, "\t$ZAd[$Rs, $imm, vgx2], $Zn", + mnemonic, "\t$ZAd[$Rs, $imm], $Zn", "", []>, Sched<[]> { bits<2> Rs; bits<4> Zn; @@ -3156,7 +3156,7 @@ (ins tile_ty:$_ZAd, MatrixIndexGPR32Op12_15:$Rs, index_ty:$imm, vector_ty:$Zn), mnemonic, - "\t$ZAd[$Rs, $imm, vgx4], $Zn", + "\t$ZAd[$Rs, $imm], $Zn", "", []>, Sched<[]> { bits<2> Rs; bits<3> Zn; @@ -3477,7 +3477,7 @@ : I, Sched<[]> { bits<4> Zd; bits<2> Rs; @@ -3618,7 +3618,7 @@ : I, Sched<[]> { bits<3> Zd; bits<2> Rs; diff --git a/llvm/test/MC/AArch64/SME2/mova-diagnostics.s b/llvm/test/MC/AArch64/SME2/mova-diagnostics.s --- a/llvm/test/MC/AArch64/SME2/mova-diagnostics.s +++ b/llvm/test/MC/AArch64/SME2/mova-diagnostics.s @@ -71,3 +71,47 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected suffix .h // CHECK-NEXT: mov {z0.h-z3.h}, za.d[w8, 0] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + + +// --------------------------------------------------------------------------// +// Tile-to-vector and vector-to-tile should not accept the VG suffix + +mov za0h.b[w12, 0:1, vgx2], { z0.b, z1.b } +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction +// CHECK-NEXT: mov za0h.b[w12, 0:1, vgx2], { z0.b, z1.b } +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +mov { z0.b, z1.b }, za0h.b[w12, 0:1, vgx2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction +// CHECK-NEXT: mov { z0.b, z1.b }, za0h.b[w12, 0:1, vgx2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +mov za0h.b[w12, 0:3, vgx4], { z0.b - z3.b } +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction +// CHECK-NEXT: mov za0h.b[w12, 0:3, vgx4], { z0.b - z3.b } +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +mov { z0.b - z3.b }, za0h.b[w12, 0:3, vgx4] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction +// CHECK-NEXT: mov { z0.b - z3.b }, za0h.b[w12, 0:3, vgx4] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +mova za0h.b[w12, 0:1, vgx2], { z0.b, z1.b } +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction +// CHECK-NEXT: mova za0h.b[w12, 0:1, vgx2], { z0.b, z1.b } +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +mova { z0.b, z1.b }, za0h.b[w12, 0:1, vgx2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction +// CHECK-NEXT: mova { z0.b, z1.b }, za0h.b[w12, 0:1, vgx2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +mova za0h.b[w12, 0:3, vgx4], { z0.b - z3.b } +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction +// CHECK-NEXT: mova za0h.b[w12, 0:3, vgx4], { z0.b - z3.b } +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +mova { z0.b - z3.b }, za0h.b[w12, 0:3, vgx4] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction +// CHECK-NEXT: mova { z0.b - z3.b }, za0h.b[w12, 0:3, vgx4] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: diff --git a/llvm/test/MC/AArch64/SME2p1/movaz-diagnostics.s b/llvm/test/MC/AArch64/SME2p1/movaz-diagnostics.s --- a/llvm/test/MC/AArch64/SME2p1/movaz-diagnostics.s +++ b/llvm/test/MC/AArch64/SME2p1/movaz-diagnostics.s @@ -98,3 +98,16 @@ // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid matrix operand, expected za[0-3]h.s or za[0-3]v.s // CHECK-NEXT: movaz z31.s, za1h.d[w15, -1] // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +// --------------------------------------------------------------------------// +// Tile-to-vector should not accept the VG suffix + +movaz { z0.b, z1.b }, za0h.b[w12, 0:1, vgx2] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction +// CHECK-NEXT: movaz { z0.b, z1.b }, za0h.b[w12, 0:1, vgx2] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: + +movaz { z0.b - z3.b }, za0h.b[w12, 0:3, vgx4] +// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction +// CHECK-NEXT: movaz { z0.b - z3.b }, za0h.b[w12, 0:3, vgx4] +// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: