@@ -163,3 +163,174 @@ fcvtzun z31.s, { z30.d, z31.d }
163163// CHECK-ENCODING: encoding: [0xdf,0x37,0xcd,0x65]
164164// CHECK-ERROR: instruction requires: sme2p3 or sve2p3
165165// CHECK-UNKNOWN: 65cd37df <unknown>
166+
167+ // -----------------------------------------------------------------------
168+ // Signed integer convert to floating-point (bottom, unpredicated)
169+
170+ scvtf z0.h, z0.b
171+ // CHECK-INST: scvtf z0.h, z0.b
172+ // CHECK-ENCODING: encoding: [0x00,0x30,0x4c,0x65]
173+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
174+ // CHECK-UNKNOWN: 654c3000 <unknown>
175+
176+ scvtf z31.h, z31.b
177+ // CHECK-INST: scvtf z31.h, z31.b
178+ // CHECK-ENCODING: encoding: [0xff,0x33,0x4c,0x65]
179+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
180+ // CHECK-UNKNOWN: 654c33ff <unknown>
181+
182+ scvtf z0.s, z0.h
183+ // CHECK-INST: scvtf z0.s, z0.h
184+ // CHECK-ENCODING: encoding: [0x00,0x30,0x8c,0x65]
185+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
186+ // CHECK-UNKNOWN: 658c3000 <unknown>
187+
188+ scvtf z31.s, z31.h
189+ // CHECK-INST: scvtf z31.s, z31.h
190+ // CHECK-ENCODING: encoding: [0xff,0x33,0x8c,0x65]
191+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
192+ // CHECK-UNKNOWN: 658c33ff <unknown>
193+
194+ scvtf z0.d, z0.s
195+ // CHECK-INST: scvtf z0.d, z0.s
196+ // CHECK-ENCODING: encoding: [0x00,0x30,0xcc,0x65]
197+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
198+ // CHECK-UNKNOWN: 65cc3000 <unknown>
199+
200+ scvtf z31.d, z31.s
201+ // CHECK-INST: scvtf z31.d, z31.s
202+ // CHECK-ENCODING: encoding: [0xff,0x33,0xcc,0x65]
203+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
204+ // CHECK-UNKNOWN: 65cc33ff <unknown>
205+
206+ // -----------------------------------------------------------------------
207+ // Signed integer convert to floating-point (top, unpredicated)
208+
209+ scvtflt z0.h, z0.b
210+ // CHECK-INST: scvtflt z0.h, z0.b
211+ // CHECK-ENCODING: encoding: [0x00,0x38,0x4c,0x65]
212+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
213+ // CHECK-UNKNOWN: 654c3800 <unknown>
214+
215+ scvtflt z31.h, z31.b
216+ // CHECK-INST: scvtflt z31.h, z31.b
217+ // CHECK-ENCODING: encoding: [0xff,0x3b,0x4c,0x65]
218+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
219+ // CHECK-UNKNOWN: 654c3bff <unknown>
220+
221+ scvtflt z0.s, z0.h
222+ // CHECK-INST: scvtflt z0.s, z0.h
223+ // CHECK-ENCODING: encoding: [0x00,0x38,0x8c,0x65]
224+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
225+ // CHECK-UNKNOWN: 658c3800 <unknown>
226+
227+ scvtflt z31.s, z31.h
228+ // CHECK-INST: scvtflt z31.s, z31.h
229+ // CHECK-ENCODING: encoding: [0xff,0x3b,0x8c,0x65]
230+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
231+ // CHECK-UNKNOWN: 658c3bff <unknown>
232+
233+ scvtflt z0.d, z0.s
234+ // CHECK-INST: scvtflt z0.d, z0.s
235+ // CHECK-ENCODING: encoding: [0x00,0x38,0xcc,0x65]
236+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
237+ // CHECK-UNKNOWN: 65cc3800 <unknown>
238+
239+ scvtflt z31.d, z31.s
240+ // CHECK-INST: scvtflt z31.d, z31.s
241+ // CHECK-ENCODING: encoding: [0xff,0x3b,0xcc,0x65]
242+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
243+ // CHECK-UNKNOWN: 65cc3bff <unknown>
244+ // RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2p3 < %s \
245+ // RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
246+ // RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme2p3 < %s \
247+ // RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
248+ // RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2 >&1 \
249+ // RUN: | FileCheck %s --check-prefix=CHECK-ERROR
250+ // RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve2p3 < %s \
251+ // RUN: | llvm-objdump -d --mattr=+sve2p3 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-INST
252+ // RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve2p3 < %s \
253+ // RUN: | llvm-objdump -d --mattr=-sve2p3 --no-print-imm-hex - | FileCheck %s --check-prefix=CHECK-UNKNOWN
254+ // Disassemble encoding and check the re-encoding (-show-encoding) matches.
255+ // RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2p3 < %s \
256+ // RUN: | sed '/.text /d' | sed 's/.*encoding: //g' \
257+ // RUN: | llvm-mc -triple=aarch64 -mattr=+sve2p3 -disassemble -show-encoding \
258+ // RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
259+
260+ // -----------------------------------------------------------------------
261+ // Unsigned integer convert to floating-point (bottom, unpredicated)
262+
263+ ucvtf z0.h, z0.b
264+ // CHECK-INST: ucvtf z0.h, z0.b
265+ // CHECK-ENCODING: encoding: [0x00,0x34,0x4c,0x65]
266+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
267+ // CHECK-UNKNOWN: 654c3400 <unknown>
268+
269+ ucvtf z31.h, z31.b
270+ // CHECK-INST: ucvtf z31.h, z31.b
271+ // CHECK-ENCODING: encoding: [0xff,0x37,0x4c,0x65]
272+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
273+ // CHECK-UNKNOWN: 654c37ff <unknown>
274+
275+ ucvtf z0.s, z0.h
276+ // CHECK-INST: ucvtf z0.s, z0.h
277+ // CHECK-ENCODING: encoding: [0x00,0x34,0x8c,0x65]
278+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
279+ // CHECK-UNKNOWN: 658c3400 <unknown>
280+
281+ ucvtf z31.s, z31.h
282+ // CHECK-INST: ucvtf z31.s, z31.h
283+ // CHECK-ENCODING: encoding: [0xff,0x37,0x8c,0x65]
284+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
285+ // CHECK-UNKNOWN: 658c37ff <unknown>
286+
287+ ucvtf z0.d, z0.s
288+ // CHECK-INST: ucvtf z0.d, z0.s
289+ // CHECK-ENCODING: encoding: [0x00,0x34,0xcc,0x65]
290+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
291+ // CHECK-UNKNOWN: 65cc3400 <unknown>
292+
293+ ucvtf z31.d, z31.s
294+ // CHECK-INST: ucvtf z31.d, z31.s
295+ // CHECK-ENCODING: encoding: [0xff,0x37,0xcc,0x65]
296+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
297+ // CHECK-UNKNOWN: 65cc37ff <unknown>
298+
299+ // -----------------------------------------------------------------------
300+ // Unsigned integer convert to floating-point (top, unpredicated)
301+
302+ ucvtflt z0.h, z0.b
303+ // CHECK-INST: ucvtflt z0.h, z0.b
304+ // CHECK-ENCODING: encoding: [0x00,0x3c,0x4c,0x65]
305+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
306+ // CHECK-UNKNOWN: 654c3c00 <unknown>
307+
308+ ucvtflt z31.h, z31.b
309+ // CHECK-INST: ucvtflt z31.h, z31.b
310+ // CHECK-ENCODING: encoding: [0xff,0x3f,0x4c,0x65]
311+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
312+ // CHECK-UNKNOWN: 654c3fff <unknown>
313+
314+ ucvtflt z0.s, z0.h
315+ // CHECK-INST: ucvtflt z0.s, z0.h
316+ // CHECK-ENCODING: encoding: [0x00,0x3c,0x8c,0x65]
317+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
318+ // CHECK-UNKNOWN: 658c3c00 <unknown>
319+
320+ ucvtflt z31.s, z31.h
321+ // CHECK-INST: ucvtflt z31.s, z31.h
322+ // CHECK-ENCODING: encoding: [0xff,0x3f,0x8c,0x65]
323+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
324+ // CHECK-UNKNOWN: 658c3fff <unknown>
325+
326+ ucvtflt z0.d, z0.s
327+ // CHECK-INST: ucvtflt z0.d, z0.s
328+ // CHECK-ENCODING: encoding: [0x00,0x3c,0xcc,0x65]
329+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
330+ // CHECK-UNKNOWN: 65cc3c00 <unknown>
331+
332+ ucvtflt z31.d, z31.s
333+ // CHECK-INST: ucvtflt z31.d, z31.s
334+ // CHECK-ENCODING: encoding: [0xff,0x3f,0xcc,0x65]
335+ // CHECK-ERROR: instruction requires: sme2p3 or sve2p3
336+ // CHECK-UNKNOWN: 65cc3fff <unknown>
0 commit comments