]> granicus.if.org Git - llvm/commitdiff
[AArch64][AsmParser] error on unexpected SVE predicate type suffix
authorCullen Rhodes <cullen.rhodes@arm.com>
Fri, 7 Jun 2019 08:46:56 +0000 (08:46 +0000)
committerCullen Rhodes <cullen.rhodes@arm.com>
Fri, 7 Jun 2019 08:46:56 +0000 (08:46 +0000)
Summary:
This patch fixes a bug in the assembler that permitted a type suffix on
predicate registers when not expected. For instance, the following was
previously valid:

    faddv h0, p0.q, z1.h

This bug was present in all SVE instructions containing predicates with
no type suffix and no predication form qualifier, i.e. /z or /m. The
latter instructions are already caught with an appropiate error message
by the assembler, e.g.:

            .text
    <stdin>:1:13: error: not expecting size suffix
    cmpne p1.s, p0.b/z, z2.s, 0
                ^

A similar issue for SVE vector registers was fixed in:

  https://reviews.llvm.org/D59636

Reviewed By: SjoerdMeijer

Differential Revision: https://reviews.llvm.org/D62942

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@362780 91177308-0d34-0410-b5e6-96231b3b80d8

57 files changed:
lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
test/MC/AArch64/SVE/andv-diagnostics.s
test/MC/AArch64/SVE/clasta-diagnostics.s
test/MC/AArch64/SVE/clastb-diagnostics.s
test/MC/AArch64/SVE/cntp-diagnostics.s
test/MC/AArch64/SVE/compact-diagnostics.s
test/MC/AArch64/SVE/decp-diagnostics.s
test/MC/AArch64/SVE/eorv-diagnostics.s
test/MC/AArch64/SVE/fadda-diagnostics.s
test/MC/AArch64/SVE/faddv-diagnostics.s
test/MC/AArch64/SVE/fmaxnmv-diagnostics.s
test/MC/AArch64/SVE/fmaxv-diagnostics.s
test/MC/AArch64/SVE/fminnmv-diagnostics.s
test/MC/AArch64/SVE/fminv-diagnostics.s
test/MC/AArch64/SVE/incp-diagnostics.s
test/MC/AArch64/SVE/lasta-diagnostics.s
test/MC/AArch64/SVE/lastb-diagnostics.s
test/MC/AArch64/SVE/orv-diagnostics.s
test/MC/AArch64/SVE/pfirst-diagnostics.s
test/MC/AArch64/SVE/pnext-diagnostics.s
test/MC/AArch64/SVE/prfb-diagnostics.s
test/MC/AArch64/SVE/prfd-diagnostics.s
test/MC/AArch64/SVE/prfh-diagnostics.s
test/MC/AArch64/SVE/prfw-diagnostics.s
test/MC/AArch64/SVE/ptest-diagnostics.s
test/MC/AArch64/SVE/saddv-diagnostics.s
test/MC/AArch64/SVE/sel-diagnostics.s
test/MC/AArch64/SVE/smaxv-diagnostics.s
test/MC/AArch64/SVE/sminv-diagnostics.s
test/MC/AArch64/SVE/splice-diagnostics.s
test/MC/AArch64/SVE/sqdecp-diagnostics.s
test/MC/AArch64/SVE/sqincp-diagnostics.s
test/MC/AArch64/SVE/st1b-diagnostics.s
test/MC/AArch64/SVE/st1d-diagnostics.s
test/MC/AArch64/SVE/st1h-diagnostics.s
test/MC/AArch64/SVE/st1w-diagnostics.s
test/MC/AArch64/SVE/st2b-diagnostics.s
test/MC/AArch64/SVE/st2d-diagnostics.s
test/MC/AArch64/SVE/st2h-diagnostics.s
test/MC/AArch64/SVE/st2w-diagnostics.s
test/MC/AArch64/SVE/st3b-diagnostics.s
test/MC/AArch64/SVE/st3d-diagnostics.s
test/MC/AArch64/SVE/st3h-diagnostics.s
test/MC/AArch64/SVE/st3w-diagnostics.s
test/MC/AArch64/SVE/st4b-diagnostics.s
test/MC/AArch64/SVE/st4d-diagnostics.s
test/MC/AArch64/SVE/st4h-diagnostics.s
test/MC/AArch64/SVE/st4w-diagnostics.s
test/MC/AArch64/SVE/stnt1b-diagnostics.s
test/MC/AArch64/SVE/stnt1d-diagnostics.s
test/MC/AArch64/SVE/stnt1h-diagnostics.s
test/MC/AArch64/SVE/stnt1w-diagnostics.s
test/MC/AArch64/SVE/uaddv-diagnostics.s
test/MC/AArch64/SVE/umaxv-diagnostics.s
test/MC/AArch64/SVE/uminv-diagnostics.s
test/MC/AArch64/SVE/uqdecp-diagnostics.s
test/MC/AArch64/SVE/uqincp-diagnostics.s

index a51eb24cbb5de27da36471f2fcc5556c1f26838e..0973d2bd9607458f1c652f6b05df3080f334832b 100644 (file)
@@ -1081,8 +1081,7 @@ public:
     if (Kind != k_Register || Reg.Kind != RegKind::SVEPredicateVector)
       return DiagnosticPredicateTy::NoMatch;
 
-    if (isSVEVectorReg<Class>() &&
-           (ElementWidth == 0 || Reg.ElementWidth == ElementWidth))
+    if (isSVEVectorReg<Class>() && (Reg.ElementWidth == ElementWidth))
       return DiagnosticPredicateTy::Match;
 
     return DiagnosticPredicateTy::NearMatch;
index 32f7f9bba2fb7358b23207f5fcbeb70132aa665d..c114882ff9ae2a21564d61f0c3b562b63fa4efb6 100644 (file)
@@ -33,6 +33,17 @@ andv h0, p8, z31.h
 // CHECK-NEXT: andv h0, p8, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+andv h0, p7.b, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: andv h0, p7.b, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+andv h0, p7.q, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: andv h0, p7.q, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
 
index 593771d51361dd400d9ee69c48d340db2348816f..cd784871360f8b5364c3c453c053e7d726f3f792 100644 (file)
@@ -9,6 +9,16 @@ clasta   w0, p8, w0, z31.b
 // CHECK-NEXT: clasta   w0, p8, w0, z31.b
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+clasta   w0, p7.b, w0, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: clasta   w0, p7.b, w0, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+clasta   w0, p7.q, w0, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: clasta   w0, p7.q, w0, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // ------------------------------------------------------------------------- //
 // Invalid element width
index 82bf379542b68eb4fa106e22b0ece142c21c420d..3603cd4f9bce2b0c976df36ab0a8f88dc977beb2 100644 (file)
@@ -9,6 +9,16 @@ clastb   w0, p8, w0, z31.b
 // CHECK-NEXT: clastb   w0, p8, w0, z31.b
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+clastb   w0, p7.b, w0, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: clastb   w0, p7.b, w0, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+clastb   w0, p7.q, w0, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: clastb   w0, p7.q, w0, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // ------------------------------------------------------------------------- //
 // Invalid element width
index 95466d25150d5dad61fdb29cc8bc2291319bb575..9c4173f50dee0193eff34676d313edc4d9578c0f 100644 (file)
@@ -5,7 +5,21 @@ cntp  sp
 // CHECK-NEXT: cntp  sp
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate operand
+
 cntp  x0, p15, p0
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
 // CHECK-NEXT: cntp  x0, p15, p0
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+cntp  x0, p15.b, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: cntp  x0, p15.b, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+cntp  x0, p15.q, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: cntp  x0, p15.q, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
index e2e5d8cd1fe6baa9cc1f887d3ac1fef29d3f186f..a3d86267d917b53623707b72bd17935f9098fcfc 100644 (file)
@@ -8,6 +8,16 @@ compact z23.d, p8, z13.d
 // CHECK-NEXT: compact z23.d, p8, z13.d
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+compact z23.d, p7.b, z13.d
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: compact z23.d, p7.b, z13.d
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+compact z23.d, p7.q, z13.d
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: compact z23.d, p7.q, z13.d
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid element widths
index b1e4c9144ccaa795300a7eb7b91cb37e3c6540c3..947970e3fb866267f4a80c8b731ac612ce204d9d 100644 (file)
@@ -37,6 +37,16 @@ decp x0, p0.q
 // CHECK-NEXT: decp x0, p0.q
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+decp z0.d, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: decp z0.d, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+decp z0.d, p0.q
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: decp z0.d, p0.q
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
index 7db206dcaef18f5d579e74cc2007079ea94631c7..fe39069e0820aab75929b6efbb38709584747269 100644 (file)
@@ -33,6 +33,17 @@ eorv h0, p8, z31.h
 // CHECK-NEXT: eorv h0, p8, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+eorv h0, p7.b, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: eorv h0, p7.b, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+eorv h0, p7.q, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: eorv h0, p7.q, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
 
index ed2a6e182a2789f1bbbc2dac2654a177f9196697..2b54beada2d4446fa0c4f9f8bacf1d038918d3d4 100644 (file)
@@ -10,16 +10,31 @@ fadda h0, p7, h1, z31.h
 // CHECK-NEXT: fadda h0, p7, h1, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+fadda v0.8h, p7, v0.8h, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: fadda v0.8h, p7, v0.8h, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate operand
+
 fadda h0, p8, h0, z31.h
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: fadda h0, p8, h0, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
-fadda v0.8h, p7, v0.8h, z31.h
-// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
-// CHECK-NEXT: fadda v0.8h, p7, v0.8h, z31.h
+fadda h0, p7.b, h0, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: fadda h0, p7.b, h0, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+fadda h0, p7.q, h0, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: fadda h0, p7.q, h0, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
 
index 8c28cbdc190e7504a858dc476ec33c5275eb62fa..c140f0ec3119e57b6c7e48fe88e508707e204195 100644 (file)
@@ -5,11 +5,25 @@ faddv b0, p7, z31.b
 // CHECK-NEXT: faddv b0, p7, z31.b
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate operand
+
 faddv h0, p8, z31.h
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: faddv h0, p8, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+faddv h0, p7.b, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: faddv h0, p7.b, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+faddv h0, p7.q, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: faddv h0, p7.q, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // ------------------------------------------------------------------------- //
 // Result must be a valid FP register.
index 035e0da69f8c37b92439bb9bdc0ab8306cd8a4aa..33f3aa64beefa1091a85b20dcab3187f9a0477c1 100644 (file)
@@ -5,11 +5,25 @@ fmaxnmv b0, p7, z31.b
 // CHECK-NEXT: fmaxnmv b0, p7, z31.b
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate operand
+
 fmaxnmv h0, p8, z31.h
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: fmaxnmv h0, p8, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+fmaxnmv h0, p7.b, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: fmaxnmv h0, p7.b, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+fmaxnmv h0, p7.q, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: fmaxnmv h0, p7.q, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // ------------------------------------------------------------------------- //
 // Result must be a valid FP register.
index 552904483f9efd6b1af46afaa88cc9cd17a663b6..f689e7caaa1c76a50fcc24aa859a4142fae9e06e 100644 (file)
@@ -5,11 +5,25 @@ fmaxv b0, p7, z31.b
 // CHECK-NEXT: fmaxv b0, p7, z31.b
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate operand
+
 fmaxv h0, p8, z31.h
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: fmaxv h0, p8, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+fmaxv h0, p7.b, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: fmaxv h0, p7.b, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+fmaxv h0, p7.q, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: fmaxv h0, p7.q, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // ------------------------------------------------------------------------- //
 // Result must be a valid FP register.
index 605f4594da133af0ba8b725fd26a68d677ebdcd9..2f4ad3b63407a5b811fba55503f556b2d6314e10 100644 (file)
@@ -5,11 +5,25 @@ fminnmv b0, p7, z31.b
 // CHECK-NEXT: fminnmv b0, p7, z31.b
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate operand
+
 fminnmv h0, p8, z31.h
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: fminnmv h0, p8, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+fminnmv h0, p7.b, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: fminnmv h0, p7.b, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+fminnmv h0, p7.q, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: fminnmv h0, p7.q, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // ------------------------------------------------------------------------- //
 // Result must be a valid FP register.
index 2d3bfd7a45cd214ade1a60ef554267822b61b205..96eedff61e206c53523fd18facd0c84c32fda543 100644 (file)
@@ -5,11 +5,26 @@ fminv b0, p7, z31.b
 // CHECK-NEXT: fminv b0, p7, z31.b
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+
+// ------------------------------------------------------------------------- //
+// Invalid predicate operand
+
+
 fminv h0, p8, z31.h
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: fminv h0, p8, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+fminv h0, p7.b, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: fminv h0, p7.b, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+fminv h0, p7.q, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: fminv h0, p7.q, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // ------------------------------------------------------------------------- //
 // Result must be a valid FP register.
index 1cc766fcd8b2db3dfaf86a9bfcde3fc1dfdf4e40..2af89bdba9fb484c1a8f01771c58ee24f864633b 100644 (file)
@@ -37,6 +37,16 @@ incp x0, p0.q
 // CHECK-NEXT: incp x0, p0.q
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+incp z0.d, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: incp z0.d, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+incp z0.d, p0.q
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: incp z0.d, p0.q
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
index 00041e15f3b8554d47bd14a43ff28067594e8ff3..37fb59a4d04bfc19c05374fa9a700d7a8850814f 100644 (file)
@@ -9,6 +9,16 @@ lasta   w0, p8, z31.b
 // CHECK-NEXT: lasta   w0, p8, z31.b
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+lasta   w0, p7.b, w0, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: lasta   w0, p7.b, w0, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+lasta   w0, p7.q, w0, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: lasta   w0, p7.q, w0, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // ------------------------------------------------------------------------- //
 // Invalid element width
index a8da795ed6fc8748490dfa6161f1c3435bbd56d4..f106afce6a6d6fcd5e3968e098f267634c016156 100644 (file)
@@ -9,6 +9,16 @@ lastb   w0, p8, z31.b
 // CHECK-NEXT: lastb   w0, p8, z31.b
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+lastb   w0, p7.b, w0, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: lastb   w0, p7.b, w0, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+lastb   w0, p7.q, w0, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: lastb   w0, p7.q, w0, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // ------------------------------------------------------------------------- //
 // Invalid element width
index 04e498e1e28d03b5bfe83d26f42dd10b633b566e..432d83e985bad2a5256def03884f0465848a3510 100644 (file)
@@ -33,6 +33,17 @@ orv h0, p8, z31.h
 // CHECK-NEXT: orv h0, p8, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+orv h0, p7.b, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: orv h0, p7.b, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+orv h0, p7.q, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: orv h0, p7.q, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
 
index 6ed891a59f2402dc92f23886b7b823590cbc2139..4d88274968f99b79bf476acc07002e08d5e33b38 100644 (file)
@@ -2,13 +2,33 @@
 
 
 // ------------------------------------------------------------------------- //
-// Only .b is supported
+// Invalid predicate
 
 pfirst p0.h, p15, p0.h
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
 // CHECK-NEXT: pfirst p0.h, p15, p0.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+pfirst p0.b, p15/z, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: pfirst p0.b, p15/z, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+pfirst p0.b, p15/m, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: pfirst p0.b, p15/m, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+pfirst p0.b, p15.b, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: pfirst p0.b, p15.b, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+pfirst p0.b, p15.q, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: pfirst p0.b, p15.q, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // ------------------------------------------------------------------------- //
 // Tied operands must match
index e8ee5669dfea557058545767ad793dbf879896db..6e1b2317f501f7c514a808ecacfe5c2d4fa13216 100644 (file)
@@ -1,6 +1,20 @@
 // RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve  2>&1 < %s| FileCheck %s
 
 
+// ------------------------------------------------------------------------- //
+// Unexpected type suffix
+
+pnext p0.b, p15.b, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register.
+// CHECK-NEXT: pnext p0.b, p15.b, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+pnext p0.b, p15.q, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register.
+// CHECK-NEXT: pnext p0.b, p15.q, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
 // ------------------------------------------------------------------------- //
 // Tied operands must match
 
index d6451c76357aeedb761a93e8aff81232358c2b86..eddd975d8060aa323f06cc67da6e962ee4925831 100644 (file)
@@ -122,13 +122,23 @@ prfb #0, p0, [z0.d, #32]
 
 
 // --------------------------------------------------------------------------//
-// invalid predicate
+// Invalid predicate
 
 prfb #0, p8, [x0]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: prfb #0, p8, [x0]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+prfb #0, p7.b, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: prfb #0, p7.b, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+prfb #0, p7.q, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: prfb #0, p7.q, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
index 538ce06e4506caa8db78d5c3205c4d48cdf0e17f..62247fc6009d11a07ce9d1b31b7f5d1138bda8f8 100644 (file)
@@ -108,13 +108,23 @@ prfd #0, p0, [z0.d, #3]
 
 
 // --------------------------------------------------------------------------//
-// invalid predicate
+// Invalid predicate
 
 prfd #0, p8, [x0]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: prfd #0, p8, [x0]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+prfd #0, p7.b, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: prfd #0, p7.b, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+prfd #0, p7.q, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: prfd #0, p7.q, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
index 5396be54709bddfaa007c165939345d9f46cc760..16be69066ac4055d0549c81107818d5e6c79ab28 100644 (file)
@@ -147,13 +147,23 @@ prfh #0, p0, [z0.d, #3]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
 // --------------------------------------------------------------------------//
-// invalid predicate
+// Invalid predicate
 
 prfh #0, p8, [x0]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: prfh #0, p8, [x0]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+prfh #0, p7.b, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: prfh #0, p7.b, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+prfh #0, p7.q, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: prfh #0, p7.q, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
index 891004e0558ae7b72d452eb3994fbf636f6d862f..fcace08e17b97eaae5ec65104fab1ff8919c6d30 100644 (file)
@@ -148,13 +148,23 @@ prfw #0, p0, [z0.d, #3]
 
 
 // --------------------------------------------------------------------------//
-// invalid predicate
+// Invalid predicate
 
 prfw #0, p8, [x0]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: prfw #0, p8, [x0]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+prfw #0, p7.b, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: prfw #0, p7.b, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+prfw #0, p7.q, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: prfw #0, p7.q, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
index f03bf4c60f884bd647d5cf605dc61bc67df52769..5d9cc80efbd20cc29f1b9c4ef8aac88f46d8123a 100644 (file)
@@ -2,9 +2,19 @@
 
 
 // ------------------------------------------------------------------------- //
-// Only .b is supported
+// Invalid predicate
 
 ptest p15, p15.h
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
 // CHECK-NEXT: ptest p15, p15.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+ptest p15.b, p15.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: ptest p15.b, p15.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+ptest p15.q, p15.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: ptest p15.q, p15.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
index fbb9f78ac6ce8c329d026f82e6f44c0da03e355a..4de116e4a9336379e33d56d27e1a47290cce3f12 100644 (file)
@@ -33,6 +33,17 @@ saddv d0, p8, z31.b
 // CHECK-NEXT: saddv d0, p8, z31.b
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+saddv d0, p7.b, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: saddv d0, p7.b, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+saddv d0, p7.q, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: saddv d0, p7.q, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
 
index 760f2327f85ab4f435e56ac8467b7476ad0b1052..2fe4bbb1b0263d7eefa6842543a00a40a2ecd8ba 100644 (file)
@@ -1,5 +1,28 @@
 // RUN: not llvm-mc -triple=aarch64-none-linux-gnu -show-encoding -mattr=+sve  2>&1 < %s | FileCheck %s
 
+// ------------------------------------------------------------------------- //
+// Invalid predicate operand
+
+sel z0.b, p0.b, z0.b, z0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: sel z0.b, p0.b, z0.b, z0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+sel z0.b, p0.q, z0.b, z0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: sel z0.b, p0.q, z0.b, z0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+sel p0.b, p0.b, p0.b, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: sel p0.b, p0.b, p0.b, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+sel p0.b, p0.q, p0.b, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: sel p0.b, p0.q, p0.b, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
index b686df51ff806f4a0a6a0624fe71755b9f9901d1..2e0251a33b943240c5a289d3171d90caf69d8e07 100644 (file)
@@ -33,6 +33,17 @@ smaxv h0, p8, z31.h
 // CHECK-NEXT: smaxv h0, p8, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+smaxv h0, p7.b, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: smaxv h0, p7.b, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+smaxv h0, p7.q, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: smaxv h0, p7.q, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
 
index cfb897ce239eacceea1af6514076ec5c3cef9a91..7791e132e41b4e350f16b2271e641926de22dc23 100644 (file)
@@ -33,6 +33,17 @@ sminv h0, p8, z31.h
 // CHECK-NEXT: sminv h0, p8, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+sminv h0, p7.b, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: sminv h0, p7.b, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+sminv h0, p7.q, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: sminv h0, p7.q, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
 
index 717e889ae8fa9a9174eac62fc1bae5d5d40e2682..89ab6e03e683d5b6b0476a879ba33ec785d9c5eb 100644 (file)
@@ -26,6 +26,16 @@ splice  z0.b, p8, z0.b, z1.b
 // CHECK-NEXT: splice  z0.b, p8, z0.b, z1.b
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+splice  z0.b, p7.b, z0.b, z1.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: splice  z0.b, p7.b, z0.b, z1.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+splice  z0.b, p7.q, z0.b, z1.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: splice  z0.b, p7.q, z0.b, z1.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
index 80579b824210841a6ac53324048d0dd047185b39..27fcd2286bfb2e5519e82809a99132ab805ef8db 100644 (file)
@@ -52,6 +52,16 @@ sqdecp x0, p0.q
 // CHECK-NEXT: sqdecp x0, p0.q
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+sqdecp z0.d, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: sqdecp z0.d, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+sqdecp z0.d, p0.q
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: sqdecp z0.d, p0.q
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
index 9bd8587edb040dcace37eafb63385cd6919dcbe2..2dfd495849084c557d7181d55a5ca02d1d2a559d 100644 (file)
@@ -47,6 +47,16 @@ uqdecp x0, p0.q
 // CHECK-NEXT: uqdecp x0, p0.q
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+sqincp z0.d, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: sqincp z0.d, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+sqincp z0.d, p0.q
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: sqincp z0.d, p0.q
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
index 084df54bf1f58e58424a320af66d6136351fc181..957550c6d6cf288436730fc312a8ded280ce4689 100644 (file)
@@ -44,7 +44,7 @@ st1b z27.d, p1, [x12, #8, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
 // --------------------------------------------------------------------------//
-// Restricted predicate has range [0, 7].
+// Invalid predicate
 
 st1b z12.b, p8, [x27, #6, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
@@ -66,6 +66,16 @@ st1b z14.d, p8, [x6, #5, MUL VL]
 // CHECK-NEXT: st1b z14.d, p8, [x6, #5, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st1b z14.d, p7.b, [x6, #5, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st1b z14.d, p7.b, [x6, #5, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st1b z14.d, p7.q, [x6, #5, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st1b z14.d, p7.q, [x6, #5, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 // --------------------------------------------------------------------------//
 // Invalid vector list
 
index 79a47e7bccdd3bd0ca06fc8cfeb9e8350403d7ae..237daa04aa36210f6ae46df88c8a767d98f5fa3b 100644 (file)
@@ -15,13 +15,23 @@ st1d z16.d, p4, [x2, #8, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
 // --------------------------------------------------------------------------//
-// Restricted predicate has range [0, 7].
+// Invalid predicate
 
 st1d z12.d, p8, [x4, #14, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st1d z12.d, p8, [x4, #14, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st1d z12.d, p7.b, [x4, #14, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st1d z12.d, p7.b, [x4, #14, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st1d z12.d, p7.q, [x4, #14, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st1d z12.d, p7.q, [x4, #14, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 // --------------------------------------------------------------------------//
 // Invalid vector list
 
index 138ca47a44e120ed2d0a3319c4dd12ac8ff1e454..89964b85f90840e14a32686edb2aba35bcbf2839 100644 (file)
@@ -34,7 +34,7 @@ st1h z24.d, p3, [x16, #8, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
 // --------------------------------------------------------------------------//
-// Restricted predicate has range [0, 7].
+// Invalid predicate
 
 st1h z15.h, p8, [x0, #8, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
@@ -51,6 +51,16 @@ st1h z15.d, p8, [x0, #8, MUL VL]
 // CHECK-NEXT: st1h z15.d, p8, [x0, #8, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st1h z15.d, p7.b, [x0, #8, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st1h z15.d, p7.b, [x0, #8, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st1h z15.d, p7.b, [x0, #8, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st1h z15.d, p7.b, [x0, #8, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 // --------------------------------------------------------------------------//
 // Invalid vector list
 
index 7632922fb602b5344dc1d91882c1387733a9e6df..c2e8edd59194b5c0c947093a4d7acd85d12e0df2 100644 (file)
@@ -27,7 +27,7 @@ st1w z10.d, p5, [x26, #8, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
 // --------------------------------------------------------------------------//
-// Restricted predicate has range [0, 7].
+// Invalid predicate
 
 st1w z1.s, p8, [x3, #1, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
@@ -39,6 +39,16 @@ st1w z12.d, p8, [x26, #3, MUL VL]
 // CHECK-NEXT: st1w z12.d, p8, [x26, #3, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st1w z12.d, p7.b, [x26, #3, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st1w z12.d, p7.b, [x26, #3, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st1w z12.d, p7.q, [x26, #3, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st1w z12.d, p7.q, [x26, #3, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 // --------------------------------------------------------------------------//
 // Invalid vector list
 
index 6e609514c410a522e56a89a42f8272880373b76e..5118a37835df92e81967f6043a1fc1f0db24cf17 100644 (file)
@@ -54,13 +54,23 @@ st2b { z0.b, z1.b }, p0, [x0, w0, uxtw]
 
 
 // --------------------------------------------------------------------------//
-// error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// Invalid predicate
 
 st2b {z2.b, z3.b}, p8, [x15, #10, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st2b {z2.b, z3.b}, p8, [x15, #10, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st2b {z2.b, z3.b}, p7.b, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st2b {z2.b, z3.b}, p7.b, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st2b {z2.b, z3.b}, p7.q, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st2b {z2.b, z3.b}, p7.q, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index 019e0ca8fc26712bc26b44e8267b4f7dc3e278e6..78b4b39b1f1618116ac3f00463de130e5f8d0518 100644 (file)
@@ -59,13 +59,23 @@ st2d { z0.d, z1.d }, p0, [x0, w0, uxtw]
 
 
 // --------------------------------------------------------------------------//
-// error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// Invalid predicate
 
 st2d {z2.d, z3.d}, p8, [x15, #10, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st2d {z2.d, z3.d}, p8, [x15, #10, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st2d {z2.d, z3.d}, p7.b, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st2d {z2.d, z3.d}, p7.b, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st2d {z2.d, z3.d}, p7.q, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st2d {z2.d, z3.d}, p7.q, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index ff5c23ea2142496608d41f45c1e9101f5844f695..2b8cd1c6cfa047c4af0bb5147762c716961b8be8 100644 (file)
@@ -59,13 +59,23 @@ st2h { z0.h, z1.h }, p0, [x0, w0, uxtw]
 
 
 // --------------------------------------------------------------------------//
-// error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// Invalid predicate
 
 st2h {z2.h, z3.h}, p8, [x15, #10, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st2h {z2.h, z3.h}, p8, [x15, #10, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st2h {z2.h, z3.h}, p7.b, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st2h {z2.h, z3.h}, p7.b, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st2h {z2.h, z3.h}, p7.q, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st2h {z2.h, z3.h}, p7.q, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index 96d3942189a355b8a71a2932fb6899376c56c433..3d7234c674e221605fdea27a4b968b7ece565c68 100644 (file)
@@ -59,13 +59,23 @@ st2w { z0.s, z1.s }, p0, [x0, w0, uxtw]
 
 
 // --------------------------------------------------------------------------//
-// error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// Invalid predicate
 
 st2w {z2.s, z3.s}, p8, [x15, #10, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st2w {z2.s, z3.s}, p8, [x15, #10, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st2w {z2.s, z3.s}, p7.b, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st2w {z2.s, z3.s}, p7.b, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st2w {z2.s, z3.s}, p7.q, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st2w {z2.s, z3.s}, p7.q, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index 8d1d2541614e3824dbac2a678ddc03b38fb640ef..ce1931ee41066511ab2531aba6ad7b5e5aac3eff 100644 (file)
@@ -54,13 +54,23 @@ st3b { z0.b, z1.b, z2.b }, p0, [x0, w0, uxtw]
 
 
 // --------------------------------------------------------------------------//
-// error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// Invalid predicate
 
 st3b {z2.b, z3.b, z4.b}, p8, [x15, #10, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st3b {z2.b, z3.b, z4.b}, p8, [x15, #10, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st3b {z2.b, z3.b, z4.b}, p7.b, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st3b {z2.b, z3.b, z4.b}, p7.b, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st3b {z2.b, z3.b, z4.b}, p7.q, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st3b {z2.b, z3.b, z4.b}, p7.q, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index a129cf647771dccd59578c0a0a7a6e35179fc995..8f1e4bf805ce420fe173d97eb773707f43e5c5bf 100644 (file)
@@ -59,13 +59,23 @@ st3d { z0.d, z1.d, z2.d }, p0, [x0, w0, uxtw]
 
 
 // --------------------------------------------------------------------------//
-// error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// Invalid predicate
 
 st3d {z2.d, z3.d, z4.d}, p8, [x15, #10, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st3d {z2.d, z3.d, z4.d}, p8, [x15, #10, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st3d {z2.d, z3.d, z4.d}, p7.b, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st3d {z2.d, z3.d, z4.d}, p7.b, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st3d {z2.d, z3.d, z4.d}, p7.q, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st3d {z2.d, z3.d, z4.d}, p7.q, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index 81ad8e582e6fe0adf44c06d5bfab65ec87b7f2eb..d12c5466d62578f8a51567a28e5af58080504f21 100644 (file)
@@ -59,13 +59,23 @@ st3h { z0.h, z1.h, z2.h }, p0, [x0, w0, uxtw]
 
 
 // --------------------------------------------------------------------------//
-// error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// Invalid predicate
 
 st3h {z2.h, z3.h, z4.h}, p8, [x15, #10, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st3h {z2.h, z3.h, z4.h}, p8, [x15, #10, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st3h {z2.h, z3.h, z4.h}, p7.b, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st3h {z2.h, z3.h, z4.h}, p7.b, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st3h {z2.h, z3.h, z4.h}, p7.q, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st3h {z2.h, z3.h, z4.h}, p7.q, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index 5b21f224f363a170749616b2c389f499c08b7b59..12b92ac8fa067922e3989031b7e5e6d2f129916c 100644 (file)
@@ -59,13 +59,23 @@ st3w { z0.s, z1.s, z2.s }, p0, [x0, w0, uxtw]
 
 
 // --------------------------------------------------------------------------//
-// error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// Invalid predicate
 
 st3w {z2.s, z3.s, z4.s}, p8, [x15, #10, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st3w {z2.s, z3.s, z4.s}, p8, [x15, #10, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st3w {z2.s, z3.s, z4.s}, p7.b, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st3w {z2.s, z3.s, z4.s}, p7.b, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st3w {z2.s, z3.s, z4.s}, p7.q, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st3w {z2.s, z3.s, z4.s}, p7.q, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index b5c8ce53b920cdbfed4914d41ed15e2453e19bac..02f6ec437d0a288612e1f2fbc3ef7460e57f1d5d 100644 (file)
@@ -54,13 +54,23 @@ st4b { z0.b, z1.b, z2.b, z3.b }, p0, [x0, w0, uxtw]
 
 
 // --------------------------------------------------------------------------//
-// error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// Invalid predicate
 
 st4b {z2.b, z3.b, z4.b, z5.b}, p8, [x15, #10, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st4b {z2.b, z3.b, z4.b, z5.b}, p8, [x15, #10, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st4b {z2.b, z3.b, z4.b, z5.b}, p7.b, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st4b {z2.b, z3.b, z4.b, z5.b}, p7.b, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st4b {z2.b, z3.b, z4.b, z5.b}, p7.q, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st4b {z2.b, z3.b, z4.b, z5.b}, p7.q, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index 0073444778d2f70adc01e8170ea84fd1aafa7be4..508886f7f7c665c18e967e9b2396eaa4b1f11c29 100644 (file)
@@ -58,15 +58,24 @@ st4d { z0.d, z1.d, z2.d, z3.d }, p0, [x0, w0, uxtw]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
 
-
 // --------------------------------------------------------------------------//
-// error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// Invalid predicate
 
 st4d {z2.d, z3.d, z4.d, z5.d}, p8, [x15, #10, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st4d {z2.d, z3.d, z4.d, z5.d}, p8, [x15, #10, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st4d {z2.d, z3.d, z4.d, z5.d}, p7.b, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st4d {z2.d, z3.d, z4.d, z5.d}, p7.b, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st4d {z2.d, z3.d, z4.d, z5.d}, p7.q, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st4d {z2.d, z3.d, z4.d, z5.d}, p7.q, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index 2b012d0f9a76d1a63bf56adedfb0eb7d7a61c5d0..a7976bde644ffd9fb7e12ec69bf87d768c7b160e 100644 (file)
@@ -59,13 +59,23 @@ st4h { z0.h, z1.h, z2.h, z3.h }, p0, [x0, w0, uxtw]
 
 
 // --------------------------------------------------------------------------//
-// error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// Invalid predicate
 
 st4h {z2.h, z3.h, z4.h, z5.h}, p8, [x15, #10, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st4h {z2.h, z3.h, z4.h, z5.h}, p8, [x15, #10, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st4h {z2.h, z3.h, z4.h, z5.h}, p7.b, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st4h {z2.h, z3.h, z4.h, z5.h}, p7.b, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st4h {z2.h, z3.h, z4.h, z5.h}, p7.q, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st4h {z2.h, z3.h, z4.h, z5.h}, p7.q, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index f3dba76302492806d03397648c8670ba71ac210e..86a16f8784ddcaf99a7cf5355fd2db6ed83dd6c5 100644 (file)
@@ -59,13 +59,23 @@ st4w { z0.s, z1.s, z2.s, z3.s }, p0, [x0, w0, uxtw]
 
 
 // --------------------------------------------------------------------------//
-// error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// Invalid predicate
 
 st4w {z2.s, z3.s, z4.s, z5.s}, p8, [x15, #10, MUL VL]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: st4w {z2.s, z3.s, z4.s, z5.s}, p8, [x15, #10, MUL VL]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+st4w {z2.s, z3.s, z4.s, z5.s}, p7.b, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st4w {z2.s, z3.s, z4.s, z5.s}, p7.b, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+st4w {z2.s, z3.s, z4.s, z5.s}, p7.q, [x15, #10, MUL VL]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: st4w {z2.s, z3.s, z4.s, z5.s}, p7.q, [x15, #10, MUL VL]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index fa67f299e449c696e9a52a7a45bf6f2ad65d66ad..e07a9bf65c1129919ccb6ac683f8fa0c7fb9498a 100644 (file)
@@ -34,16 +34,31 @@ stnt1b z0.d, p0, [x0]
 
 
 // --------------------------------------------------------------------------//
-// invalid predicate
+// Invalid predicate
 
 stnt1b z27.b, p8, [x0]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
 // CHECK-NEXT: stnt1b z27.b, p8, [x0]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
-stnt1b z0.h, p0/z, [x0]
-// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid element width
-// CHECK-NEXT: stnt1b z0.h, p0/z, [x0]
+stnt1b z0.b, p0/z, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: stnt1b z0.b, p0/z, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+stnt1b z0.b, p0/m, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: stnt1b z0.b, p0/m, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+stnt1b z27.b, p7.b, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: stnt1b z27.b, p7.b, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+stnt1b z27.b, p7.q, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: stnt1b z27.b, p7.q, [x0]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
 
index 2e0f21643238e5cf4f3e0d38a2641180d4220917..7026659c66f71df3371c2164d2745b48e54e243c 100644 (file)
@@ -34,7 +34,7 @@ stnt1d z0.s, p0, [x0]
 
 
 // --------------------------------------------------------------------------//
-// invalid predicate
+// Invalid predicate
 
 stnt1d z27.d, p8, [x0]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
@@ -46,6 +46,21 @@ stnt1d z0.d, p0/z, [x0]
 // CHECK-NEXT: stnt1d z0.d, p0/z, [x0]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+stnt1d z0.d, p0/m, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: stnt1d z0.d, p0/m, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+stnt1d z0.d, p7.b, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: stnt1d z0.d, p7.b, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+stnt1d z0.d, p7.q, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: stnt1d z0.d, p7.q, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index 9999916f653ddb2cb20d5f752aa0080966cbccc2..153fc15043112a4d2c8250f37574949ca1775c99 100644 (file)
@@ -34,7 +34,7 @@ stnt1h z0.d, p0, [x0]
 
 
 // --------------------------------------------------------------------------//
-// invalid predicate
+// Invalid predicate
 
 stnt1h z27.h, p8, [x0]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
@@ -46,6 +46,21 @@ stnt1h z0.h, p0/z, [x0]
 // CHECK-NEXT: stnt1h z0.h, p0/z, [x0]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+stnt1h z0.h, p0/m, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: stnt1h z0.h, p0/m, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+stnt1h z0.h, p7.b, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: stnt1h z0.h, p7.b, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+stnt1h z0.h, p7.q, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: stnt1h z0.h, p7.q, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index 8d2173cd9839cdb108f458b216d4ec55dedd8296..3c5d5406587f83084e624e140e08b59fbc43d4a8 100644 (file)
@@ -34,7 +34,7 @@ stnt1w z0.d, p0, [x0]
 
 
 // --------------------------------------------------------------------------//
-// invalid predicate
+// Invalid predicate
 
 stnt1w z27.s, p8, [x0]
 // CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
@@ -46,6 +46,21 @@ stnt1w z0.s, p0/z, [x0]
 // CHECK-NEXT: stnt1w z0.s, p0/z, [x0]
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+stnt1w z0.s, p0/m, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand for instruction
+// CHECK-NEXT: stnt1w z0.s, p0/m, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+stnt1w z0.s, p7.b, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: stnt1w z0.s, p7.b, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+stnt1w z0.s, p7.q, [x0]
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: stnt1w z0.s, p7.q, [x0]
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Invalid vector list.
index adcf7e108ebf9ff1d5dd59f0381d0ae0c71efcd7..fb501c3d9706abfb633e87e2c3db674b9874c89f 100644 (file)
@@ -28,6 +28,17 @@ uaddv d0, p8, z31.b
 // CHECK-NEXT: uaddv d0, p8, z31.b
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+uaddv d0, p7.b, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: uaddv d0, p7.b, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+uaddv d0, p7.q, z31.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: uaddv d0, p7.q, z31.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
 
index c8f82f29f355526e5744f28861e874eebe009a5e..81c973a87c15a8580d935afd5f6c750f39720c3e 100644 (file)
@@ -33,6 +33,17 @@ umaxv h0, p8, z31.h
 // CHECK-NEXT: umaxv h0, p8, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+umaxv h0, p7.b, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: umaxv h0, p7.b, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+umaxv h0, p7.q, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: umaxv h0, p7.q, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
 
index 22298b0cb69a228b22d1c1b3781512e9f4278348..6e9c0f7a04a54b67636eebee37b8b091ff2c7fe1 100644 (file)
@@ -33,6 +33,17 @@ uminv h0, p8, z31.h
 // CHECK-NEXT: uminv h0, p8, z31.h
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+uminv h0, p7.b, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: uminv h0, p7.b, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+uminv h0, p7.q, z31.h
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid restricted predicate register, expected p0..p7 (without element suffix)
+// CHECK-NEXT: uminv h0, p7.q, z31.h
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
 
index 8fd345b46ee5ca13ffecc2ec616436cd0ba5a0a8..7ee47a5efa789af039c566acd22c314091aaec78 100644 (file)
@@ -1,5 +1,15 @@
 // RUN: not llvm-mc -triple=aarch64-none-linux-gnu -show-encoding -mattr=+sve  2>&1 < %s | FileCheck %s
 
+uqdecp z0.d, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: uqdecp z0.d, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+uqdecp z0.d, p0.q
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: uqdecp z0.d, p0.q
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx
index d5cf76014df5715ad5e3f495c4e71a8bd252ab06..7c5491424038904d41c51fdafebc0d16981658c9 100644 (file)
@@ -47,6 +47,16 @@ uqincp x0, p0.q
 // CHECK-NEXT: uqincp x0, p0.q
 // CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
 
+uqincp z0.d, p0.b
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: uqincp z0.d, p0.b
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
+uqincp z0.d, p0.q
+// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid predicate register
+// CHECK-NEXT: uqincp z0.d, p0.q
+// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
+
 
 // --------------------------------------------------------------------------//
 // Negative tests for instructions that are incompatible with movprfx