1// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+streaming-sve,+bf16 2>&1 < %s| FileCheck %s
2
3// ------------------------------------------------------------------------- //
4// Check FABD is illegal in streaming mode
5
6fabd s0, s1, s2
7// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
8// CHECK-NEXT: fabd s0, s1, s2
9// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
10
11// ------------------------------------------------------------------------- //
12// Check non-scalar v8.6a BFloat16 instructions are illegal in streaming mode
13
14bfcvtn v5.4h, v5.4s
15// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
16// CHECK-NEXT: bfcvtn v5.4h, v5.4s
17// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
18
19// ------------------------------------------------------------------------- //
20// Check non-zero index is illegal in streaming mode
21// ------------------------------------------------------------------------- //
22// SMOV 8-bit to 32-bit
23
24smov w0, v0.b[1]
25// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
26// CHECK-NEXT: smov w0, v0.b[1]
27// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
28
29smov w0, v0.b[7]
30// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
31// CHECK-NEXT: smov w0, v0.b[7]
32// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
33
34smov w0, v0.b[15]
35// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
36// CHECK-NEXT: smov w0, v0.b[15]
37// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
38
39// ------------------------------------------------------------------------- //
40// SMOV 8-bit to 64-bit
41
42smov x0, v0.b[2]
43// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
44// CHECK-NEXT: smov x0, v0.b[2]
45// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
46
47smov x0, v0.b[6]
48// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
49// CHECK-NEXT: smov x0, v0.b[6]
50// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
51
52smov x0, v0.b[12]
53// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
54// CHECK-NEXT: smov x0, v0.b[12]
55// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
56
57// ------------------------------------------------------------------------- //
58// SMOV 16-bit to 32-bit
59
60smov w0, v0.h[1]
61// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
62// CHECK-NEXT: smov w0, v0.h[1]
63// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
64
65smov w0, v0.h[3]
66// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
67// CHECK-NEXT: smov w0, v0.h[3]
68// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
69
70smov w0, v0.h[7]
71// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
72// CHECK-NEXT: smov w0, v0.h[7]
73// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
74
75// ------------------------------------------------------------------------- //
76// SMOV 16-bit to 64-bit
77
78smov x0, v0.h[2]
79// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
80// CHECK-NEXT: smov x0, v0.h[2]
81// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
82
83smov x0, v0.h[4]
84// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
85// CHECK-NEXT: smov x0, v0.h[4]
86// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
87
88smov x0, v0.h[6]
89// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
90// CHECK-NEXT: smov x0, v0.h[6]
91// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
92
93// ------------------------------------------------------------------------- //
94// SMOV 32-bit to 64-bit
95
96smov x0, v0.s[1]
97// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
98// CHECK-NEXT: smov x0, v0.s[1]
99// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
100
101smov x0, v0.s[2]
102// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
103// CHECK-NEXT: smov x0, v0.s[2]
104// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
105
106smov x0, v0.s[3]
107// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
108// CHECK-NEXT: smov x0, v0.s[3]
109// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
110
111// ------------------------------------------------------------------------- //
112// UMOV 8-bit to 32-bit
113
114umov w0, v0.b[1]
115// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
116// CHECK-NEXT: umov w0, v0.b[1]
117// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
118
119umov w0, v0.b[7]
120// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
121// CHECK-NEXT: umov w0, v0.b[7]
122// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
123
124umov w0, v0.b[15]
125// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
126// CHECK-NEXT: umov w0, v0.b[15]
127// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
128
129// ------------------------------------------------------------------------- //
130// UMOV 16-bit to 32-bit
131
132umov w0, v0.h[1]
133// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
134// CHECK-NEXT: umov w0, v0.h[1]
135// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
136
137umov w0, v0.h[3]
138// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
139// CHECK-NEXT: umov w0, v0.h[3]
140// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
141
142umov w0, v0.h[7]
143// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
144// CHECK-NEXT: umov w0, v0.h[7]
145// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
146
147
148// ------------------------------------------------------------------------- //
149// UMOV 32-bit to 32-bit
150
151umov w0, v0.s[1]
152// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
153// CHECK-NEXT: umov w0, v0.s[1]
154// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
155
156umov w0, v0.s[2]
157// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
158// CHECK-NEXT: umov w0, v0.s[2]
159// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
160
161umov w0, v0.s[3]
162// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
163// CHECK-NEXT: umov w0, v0.s[3]
164// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
165
166// ------------------------------------------------------------------------- //
167// UMOV 64-bit to 64-bit
168
169umov x0, v0.d[1]
170// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: instruction requires: neon
171// CHECK-NEXT: umov x0, v0.d[1]
172// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}:
173