1 # RUN: llvm-mc -disassemble -triple=thumbv8.1m.main-none-eabi -mattr=+mve -show-encoding %s | FileCheck %s
2 # RUN: not llvm-mc -disassemble -triple=thumbv8.1m.main-none-eabi -show-encoding %s &> %t
3 # RUN: FileCheck --check-prefix=CHECK-NOMVE < %t %s
5 # CHECK: vld20.8 {q0, q1}, [r0] @ encoding: [0x90,0xfc,0x00,0x1e]
6 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
9 # CHECK: vld20.8 {q0, q1}, [r0]! @ encoding: [0xb0,0xfc,0x00,0x1e]
10 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
13 # CHECK: vld20.8 {q0, q1}, [r11] @ encoding: [0x9b,0xfc,0x00,0x1e]
14 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
17 # CHECK: vld20.8 {q5, q6}, [r0]! @ encoding: [0xb0,0xfc,0x00,0xbe]
18 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
21 # CHECK: vld21.8 {q0, q1}, [r0] @ encoding: [0x90,0xfc,0x20,0x1e]
22 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
25 # CHECK: vld21.8 {q3, q4}, [r0]! @ encoding: [0xb0,0xfc,0x20,0x7e]
26 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
29 # CHECK: vld20.16 {q0, q1}, [r0] @ encoding: [0x90,0xfc,0x80,0x1e]
30 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
33 # CHECK: vld20.16 {q0, q1}, [r0]! @ encoding: [0xb0,0xfc,0x80,0x1e]
34 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
37 # CHECK: vld20.16 {q0, q1}, [r11] @ encoding: [0x9b,0xfc,0x80,0x1e]
38 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
41 # CHECK: vld20.16 {q5, q6}, [r0]! @ encoding: [0xb0,0xfc,0x80,0xbe]
42 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
45 # CHECK: vld21.16 {q0, q1}, [r0] @ encoding: [0x90,0xfc,0xa0,0x1e]
46 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
49 # CHECK: vld21.16 {q3, q4}, [r0]! @ encoding: [0xb0,0xfc,0xa0,0x7e]
50 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
53 # CHECK: vld20.32 {q0, q1}, [r0] @ encoding: [0x90,0xfc,0x00,0x1f]
54 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
57 # CHECK: vld20.32 {q0, q1}, [r0]! @ encoding: [0xb0,0xfc,0x00,0x1f]
58 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
61 # CHECK: vld20.32 {q0, q1}, [r11] @ encoding: [0x9b,0xfc,0x00,0x1f]
62 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
65 # CHECK: vld20.32 {q5, q6}, [r0]! @ encoding: [0xb0,0xfc,0x00,0xbf]
66 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
69 # CHECK: vld21.32 {q0, q1}, [r0] @ encoding: [0x90,0xfc,0x20,0x1f]
70 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
73 # CHECK: vld21.32 {q3, q4}, [r0]! @ encoding: [0xb0,0xfc,0x20,0x7f]
74 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
77 # CHECK: vst20.8 {q0, q1}, [r0] @ encoding: [0x80,0xfc,0x00,0x1e]
78 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
81 # CHECK: vst20.8 {q0, q1}, [r0]! @ encoding: [0xa0,0xfc,0x00,0x1e]
82 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
85 # CHECK: vst20.8 {q0, q1}, [r11] @ encoding: [0x8b,0xfc,0x00,0x1e]
86 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
89 # CHECK: vst20.8 {q5, q6}, [r0]! @ encoding: [0xa0,0xfc,0x00,0xbe]
90 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
93 # CHECK: vst21.8 {q0, q1}, [r0] @ encoding: [0x80,0xfc,0x20,0x1e]
94 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
97 # CHECK: vst21.8 {q3, q4}, [r0]! @ encoding: [0xa0,0xfc,0x20,0x7e]
98 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
101 # CHECK: vst20.16 {q0, q1}, [r0] @ encoding: [0x80,0xfc,0x80,0x1e]
102 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
103 [0x80,0xfc,0x80,0x1e]
105 # CHECK: vst20.16 {q0, q1}, [r0]! @ encoding: [0xa0,0xfc,0x80,0x1e]
106 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
107 [0xa0,0xfc,0x80,0x1e]
109 # CHECK: vst20.16 {q0, q1}, [r11] @ encoding: [0x8b,0xfc,0x80,0x1e]
110 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
111 [0x8b,0xfc,0x80,0x1e]
113 # CHECK: vst20.16 {q5, q6}, [r0]! @ encoding: [0xa0,0xfc,0x80,0xbe]
114 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
115 [0xa0,0xfc,0x80,0xbe]
117 # CHECK: vst21.16 {q0, q1}, [r0] @ encoding: [0x80,0xfc,0xa0,0x1e]
118 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
119 [0x80,0xfc,0xa0,0x1e]
121 # CHECK: vst21.16 {q3, q4}, [r0]! @ encoding: [0xa0,0xfc,0xa0,0x7e]
122 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
123 [0xa0,0xfc,0xa0,0x7e]
125 # CHECK: vst20.32 {q0, q1}, [r0] @ encoding: [0x80,0xfc,0x00,0x1f]
126 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
127 [0x80,0xfc,0x00,0x1f]
129 # CHECK: vst20.32 {q0, q1}, [r0]! @ encoding: [0xa0,0xfc,0x00,0x1f]
130 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
131 [0xa0,0xfc,0x00,0x1f]
133 # CHECK: vst20.32 {q0, q1}, [r11] @ encoding: [0x8b,0xfc,0x00,0x1f]
134 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
135 [0x8b,0xfc,0x00,0x1f]
137 # CHECK: vst20.32 {q5, q6}, [r0]! @ encoding: [0xa0,0xfc,0x00,0xbf]
138 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
139 [0xa0,0xfc,0x00,0xbf]
141 # CHECK: vst21.32 {q0, q1}, [r0] @ encoding: [0x80,0xfc,0x20,0x1f]
142 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
143 [0x80,0xfc,0x20,0x1f]
145 # CHECK: vst21.32 {q3, q4}, [r0]! @ encoding: [0xa0,0xfc,0x20,0x7f]
146 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
147 [0xa0,0xfc,0x20,0x7f]
149 # CHECK: vld40.8 {q0, q1, q2, q3}, [r0] @ encoding: [0x90,0xfc,0x01,0x1e]
150 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
151 [0x90,0xfc,0x01,0x1e]
153 # CHECK: vld40.8 {q0, q1, q2, q3}, [r0]! @ encoding: [0xb0,0xfc,0x01,0x1e]
154 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
155 [0xb0,0xfc,0x01,0x1e]
157 # CHECK: vld40.8 {q0, q1, q2, q3}, [r11] @ encoding: [0x9b,0xfc,0x01,0x1e]
158 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
159 [0x9b,0xfc,0x01,0x1e]
161 # CHECK: vld40.8 {q3, q4, q5, q6}, [r0]! @ encoding: [0xb0,0xfc,0x01,0x7e]
162 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
163 [0xb0,0xfc,0x01,0x7e]
165 # CHECK: vld41.8 {q0, q1, q2, q3}, [r0] @ encoding: [0x90,0xfc,0x21,0x1e]
166 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
167 [0x90,0xfc,0x21,0x1e]
169 # CHECK: vld41.8 {q4, q5, q6, q7}, [r0]! @ encoding: [0xb0,0xfc,0x21,0x9e]
170 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
171 [0xb0,0xfc,0x21,0x9e]
173 # CHECK: vld42.8 {q0, q1, q2, q3}, [r0] @ encoding: [0x90,0xfc,0x41,0x1e]
174 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
175 [0x90,0xfc,0x41,0x1e]
177 # CHECK: vld42.8 {q0, q1, q2, q3}, [r0]! @ encoding: [0xb0,0xfc,0x41,0x1e]
178 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
179 [0xb0,0xfc,0x41,0x1e]
181 # CHECK: vld43.8 {q0, q1, q2, q3}, [r0] @ encoding: [0x90,0xfc,0x61,0x1e]
182 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
183 [0x90,0xfc,0x61,0x1e]
185 # CHECK: vld43.8 {q4, q5, q6, q7}, [r0]! @ encoding: [0xb0,0xfc,0x61,0x9e]
186 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
187 [0xb0,0xfc,0x61,0x9e]
189 # CHECK: vld40.16 {q0, q1, q2, q3}, [r0] @ encoding: [0x90,0xfc,0x81,0x1e]
190 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
191 [0x90,0xfc,0x81,0x1e]
193 # CHECK: vld40.16 {q0, q1, q2, q3}, [r0]! @ encoding: [0xb0,0xfc,0x81,0x1e]
194 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
195 [0xb0,0xfc,0x81,0x1e]
197 # CHECK: vld40.16 {q0, q1, q2, q3}, [r11] @ encoding: [0x9b,0xfc,0x81,0x1e]
198 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
199 [0x9b,0xfc,0x81,0x1e]
201 # CHECK: vld40.16 {q3, q4, q5, q6}, [r0]! @ encoding: [0xb0,0xfc,0x81,0x7e]
202 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
203 [0xb0,0xfc,0x81,0x7e]
205 # CHECK: vld41.16 {q0, q1, q2, q3}, [r0] @ encoding: [0x90,0xfc,0xa1,0x1e]
206 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
207 [0x90,0xfc,0xa1,0x1e]
209 # CHECK: vld41.16 {q4, q5, q6, q7}, [r0]! @ encoding: [0xb0,0xfc,0xa1,0x9e]
210 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
211 [0xb0,0xfc,0xa1,0x9e]
213 # CHECK: vld42.16 {q0, q1, q2, q3}, [r0] @ encoding: [0x90,0xfc,0xc1,0x1e]
214 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
215 [0x90,0xfc,0xc1,0x1e]
217 # CHECK: vld42.16 {q0, q1, q2, q3}, [r0]! @ encoding: [0xb0,0xfc,0xc1,0x1e]
218 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
219 [0xb0,0xfc,0xc1,0x1e]
221 # CHECK: vld43.16 {q0, q1, q2, q3}, [r0] @ encoding: [0x90,0xfc,0xe1,0x1e]
222 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
223 [0x90,0xfc,0xe1,0x1e]
225 # CHECK: vld43.16 {q4, q5, q6, q7}, [r0]! @ encoding: [0xb0,0xfc,0xe1,0x9e]
226 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
227 [0xb0,0xfc,0xe1,0x9e]
229 # CHECK: vld40.32 {q0, q1, q2, q3}, [r0] @ encoding: [0x90,0xfc,0x01,0x1f]
230 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
231 [0x90,0xfc,0x01,0x1f]
233 # CHECK: vld40.32 {q0, q1, q2, q3}, [r0]! @ encoding: [0xb0,0xfc,0x01,0x1f]
234 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
235 [0xb0,0xfc,0x01,0x1f]
237 # CHECK: vld40.32 {q0, q1, q2, q3}, [r11] @ encoding: [0x9b,0xfc,0x01,0x1f]
238 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
239 [0x9b,0xfc,0x01,0x1f]
241 # CHECK: vld40.32 {q3, q4, q5, q6}, [r0]! @ encoding: [0xb0,0xfc,0x01,0x7f]
242 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
243 [0xb0,0xfc,0x01,0x7f]
245 # CHECK: vld41.32 {q0, q1, q2, q3}, [r0] @ encoding: [0x90,0xfc,0x21,0x1f]
246 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
247 [0x90,0xfc,0x21,0x1f]
249 # CHECK: vld41.32 {q4, q5, q6, q7}, [r0]! @ encoding: [0xb0,0xfc,0x21,0x9f]
250 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
251 [0xb0,0xfc,0x21,0x9f]
253 # CHECK: vld42.32 {q0, q1, q2, q3}, [r0] @ encoding: [0x90,0xfc,0x41,0x1f]
254 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
255 [0x90,0xfc,0x41,0x1f]
257 # CHECK: vld42.32 {q0, q1, q2, q3}, [r0]! @ encoding: [0xb0,0xfc,0x41,0x1f]
258 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
259 [0xb0,0xfc,0x41,0x1f]
261 # CHECK: vld43.32 {q0, q1, q2, q3}, [r0] @ encoding: [0x90,0xfc,0x61,0x1f]
262 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
263 [0x90,0xfc,0x61,0x1f]
265 # CHECK: vld43.32 {q4, q5, q6, q7}, [r0]! @ encoding: [0xb0,0xfc,0x61,0x9f]
266 # CHECK-NOMVE: [[@LINE+1]]:2: warning: invalid instruction encoding
267 [0xb0,0xfc,0x61,0x9f]