aboutsummaryrefslogtreecommitdiffstats
path: root/test/MC/AArch64/neon-diagnostics.s
diff options
context:
space:
mode:
Diffstat (limited to 'test/MC/AArch64/neon-diagnostics.s')
-rw-r--r--test/MC/AArch64/neon-diagnostics.s221
1 files changed, 221 insertions, 0 deletions
diff --git a/test/MC/AArch64/neon-diagnostics.s b/test/MC/AArch64/neon-diagnostics.s
index 9127ed8..086d487 100644
--- a/test/MC/AArch64/neon-diagnostics.s
+++ b/test/MC/AArch64/neon-diagnostics.s
@@ -3880,3 +3880,224 @@
// CHECK-ERROR: error: invalid operand for instruction
// CHECK-ERROR: frsqrts d8, s22, d18
// CHECK-ERROR: ^
+
+//----------------------------------------------------------------------
+// Vector load/store multiple N-element structure (class SIMD lselem)
+//----------------------------------------------------------------------
+ ld1 {x3}, [x2]
+ ld1 {v4}, [x0]
+ ld1 {v32.16b}, [x0]
+ ld1 {v15.8h}, [x32]
+// CHECK-ERROR: error: expected vector type register
+// CHECK-ERROR: ld1 {x3}, [x2]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected vector type register
+// CHECK-ERROR: ld1 {v4}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected vector type register
+// CHECK-ERROR: ld1 {v32.16b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid operand for instruction
+// CHECK-ERROR: ld1 {v15.8h}, [x32]
+// CHECK-ERROR: ^
+
+ ld1 {v0.16b, v2.16b}, [x0]
+ ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
+ ld1 v0.8b, v1.8b}, [x0]
+ ld1 {v0.8h-v4.8h}, [x0]
+ ld1 {v1.8h-v1.8h}, [x0]
+ ld1 {v15.8h-v17.4h}, [x15]
+ ld1 {v0.8b-v2.8b, [x0]
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: ld1 {v0.16b, v2.16b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid number of vectors
+// CHECK-ERROR: ld1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: '{' expected
+// CHECK-ERROR: ld1 v0.8b, v1.8b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid number of vectors
+// CHECK-ERROR: ld1 {v0.8h-v4.8h}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid number of vectors
+// CHECK-ERROR: ld1 {v1.8h-v1.8h}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected the same vector layout
+// CHECK-ERROR: ld1 {v15.8h-v17.4h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: '}' expected
+// CHECK-ERROR: ld1 {v0.8b-v2.8b, [x0]
+// CHECK-ERROR: ^
+
+ ld2 {v15.8h, v16.4h}, [x15]
+ ld2 {v0.8b, v2.8b}, [x0]
+ ld2 {v15.4h, v16.4h, v17.4h}, [x32]
+ ld2 {v15.8h-v16.4h}, [x15]
+ ld2 {v0.2d-v2.2d}, [x0]
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: ld2 {v15.8h, v16.4h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: ld2 {v0.8b, v2.8b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid operand for instruction
+// CHECK-ERROR: ld2 {v15.4h, v16.4h, v17.4h}, [x32]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected the same vector layout
+// CHECK-ERROR: ld2 {v15.8h-v16.4h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid operand for instruction
+// CHECK-ERROR: ld2 {v0.2d-v2.2d}, [x0]
+// CHECK-ERROR: ^
+
+ ld3 {v15.8h, v16.8h, v17.4h}, [x15]
+ ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
+ ld3 {v0.8b, v2.8b, v3.8b}, [x0]
+ ld3 {v15.8h-v17.4h}, [x15]
+ ld3 {v31.4s-v2.4s}, [sp]
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: ld3 {v15.8h, v16.8h, v17.4h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected vector type register
+// CHECK-ERROR: ld3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: ld3 {v0.8b, v2.8b, v3.8b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected the same vector layout
+// CHECK-ERROR: ld3 {v15.8h-v17.4h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid operand for instruction
+// CHECK-ERROR: ld3 {v31.4s-v2.4s}, [sp]
+// CHECK-ERROR: ^
+
+ ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
+ ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
+ ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
+ ld4 {v15.8h-v18.4h}, [x15]
+ ld4 {v31.2s-v1.2s}, [x31]
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: ld4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: ld4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid number of vectors
+// CHECK-ERROR: ld4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected the same vector layout
+// CHECK-ERROR: ld4 {v15.8h-v18.4h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid operand for instruction
+// CHECK-ERROR: ld4 {v31.2s-v1.2s}, [x31]
+// CHECK-ERROR: ^
+
+ st1 {x3}, [x2]
+ st1 {v4}, [x0]
+ st1 {v32.16b}, [x0]
+ st1 {v15.8h}, [x32]
+// CHECK-ERROR: error: expected vector type register
+// CHECK-ERROR: st1 {x3}, [x2]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected vector type register
+// CHECK-ERROR: st1 {v4}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected vector type register
+// CHECK-ERROR: st1 {v32.16b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid operand for instruction
+// CHECK-ERROR: st1 {v15.8h}, [x32]
+// CHECK-ERROR: ^
+
+ st1 {v0.16b, v2.16b}, [x0]
+ st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
+ st1 v0.8b, v1.8b}, [x0]
+ st1 {v0.8h-v4.8h}, [x0]
+ st1 {v1.8h-v1.8h}, [x0]
+ st1 {v15.8h-v17.4h}, [x15]
+ st1 {v0.8b-v2.8b, [x0]
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: st1 {v0.16b, v2.16b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid number of vectors
+// CHECK-ERROR: st1 {v0.8h, v1.8h, v2.8h, v3.8h, v4.8h}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: '{' expected
+// CHECK-ERROR: st1 v0.8b, v1.8b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid number of vectors
+// CHECK-ERROR: st1 {v0.8h-v4.8h}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid number of vectors
+// CHECK-ERROR: st1 {v1.8h-v1.8h}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected the same vector layout
+// CHECK-ERROR: st1 {v15.8h-v17.4h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: '}' expected
+// CHECK-ERROR: st1 {v0.8b-v2.8b, [x0]
+// CHECK-ERROR: ^
+
+ st2 {v15.8h, v16.4h}, [x15]
+ st2 {v0.8b, v2.8b}, [x0]
+ st2 {v15.4h, v16.4h, v17.4h}, [x30]
+ st2 {v15.8h-v16.4h}, [x15]
+ st2 {v0.2d-v2.2d}, [x0]
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: st2 {v15.8h, v16.4h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: st2 {v0.8b, v2.8b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid operand for instruction
+// CHECK-ERROR: st2 {v15.4h, v16.4h, v17.4h}, [x30]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected the same vector layout
+// CHECK-ERROR: st2 {v15.8h-v16.4h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid operand for instruction
+// CHECK-ERROR: st2 {v0.2d-v2.2d}, [x0]
+// CHECK-ERROR: ^
+
+ st3 {v15.8h, v16.8h, v17.4h}, [x15]
+ st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
+ st3 {v0.8b, v2.8b, v3.8b}, [x0]
+ st3 {v15.8h-v17.4h}, [x15]
+ st3 {v31.4s-v2.4s}, [sp]
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: st3 {v15.8h, v16.8h, v17.4h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected vector type register
+// CHECK-ERROR: st3 {v0.8b, v1,8b, v2.8b, v3.8b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: st3 {v0.8b, v2.8b, v3.8b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected the same vector layout
+// CHECK-ERROR: st3 {v15.8h-v17.4h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid operand for instruction
+// CHECK-ERROR: st3 {v31.4s-v2.4s}, [sp]
+// CHECK-ERROR: ^
+
+ st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
+ st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
+ st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
+ st4 {v15.8h-v18.4h}, [x15]
+ st4 {v31.2s-v1.2s}, [x31]
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: st4 {v15.8h, v16.8h, v17.4h, v18.8h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid space between two vectors
+// CHECK-ERROR: st4 {v0.8b, v2.8b, v3.8b, v4.8b}, [x0]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid number of vectors
+// CHECK-ERROR: st4 {v15.4h, v16.4h, v17.4h, v18.4h, v19.4h}, [x31]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: expected the same vector layout
+// CHECK-ERROR: st4 {v15.8h-v18.4h}, [x15]
+// CHECK-ERROR: ^
+// CHECK-ERROR: error: invalid operand for instruction
+// CHECK-ERROR: st4 {v31.2s-v1.2s}, [x31]
+// CHECK-ERROR: ^