xref: /llvm-project/llvm/test/MC/AArch64/FP8_SVE2/fcvt.s (revision 78941e1eedb121344e0d969458ea85598cd749df)
1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2,+fp8 < %s \
2// RUN:        | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme2,+fp8 < %s \
4// RUN:        | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
5// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \
6// RUN:        | FileCheck %s --check-prefix=CHECK-ERROR
7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve2,+fp8 < %s \
8// RUN:        | llvm-objdump -d --mattr=+sve2,+fp8 - | FileCheck %s --check-prefix=CHECK-INST
9// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sve2,+fp8 < %s \
10// RUN:        | llvm-objdump -d --mattr=-sme2 - | FileCheck %s --check-prefix=CHECK-UNKNOWN
11// Disassemble encoding and check the re-encoding (-show-encoding) matches.
12// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2,+fp8 < %s \
13// RUN:        | sed '/.text/d' | sed 's/.*encoding: //g' \
14// RUN:        | llvm-mc -triple=aarch64 -mattr=+sve2,+fp8 -disassemble -show-encoding \
15// RUN:        | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
16
17//
18// F1CVT instructions
19//
20f1cvt   z0.h, z0.b  // 01100101-00001000-00110000-00000000
21// CHECK-INST: f1cvt   z0.h, z0.b
22// CHECK-ENCODING: [0x00,0x30,0x08,0x65]
23// CHECK-ERROR: instruction requires: fp8 sve2
24// CHECK-UNKNOWN: 65083000 <unknown>
25
26f1cvt   z0.h, z31.b  // 01100101-00001000-00110011-11100000
27// CHECK-INST: f1cvt   z0.h, z31.b
28// CHECK-ENCODING: [0xe0,0x33,0x08,0x65]
29// CHECK-ERROR: instruction requires: fp8 sve2
30// CHECK-UNKNOWN: 650833e0 <unknown>
31
32f1cvt   z31.h, z0.b  // 01100101-00001000-00110000-00011111
33// CHECK-INST: f1cvt   z31.h, z0.b
34// CHECK-ENCODING: [0x1f,0x30,0x08,0x65]
35// CHECK-ERROR: instruction requires: fp8 sve2
36// CHECK-UNKNOWN: 6508301f <unknown>
37
38f1cvt   z31.h, z31.b  // 01100101-00001000-00110011-11111111
39// CHECK-INST: f1cvt   z31.h, z31.b
40// CHECK-ENCODING: [0xff,0x33,0x08,0x65]
41// CHECK-ERROR: instruction requires: fp8 sve2
42// CHECK-UNKNOWN: 650833ff <unknown>
43
44//
45// F2CVT instructions
46//
47f2cvt   z0.h, z0.b  // 01100101-00001000-00110100-00000000
48// CHECK-INST: f2cvt   z0.h, z0.b
49// CHECK-ENCODING: [0x00,0x34,0x08,0x65]
50// CHECK-ERROR: instruction requires: fp8 sve2
51// CHECK-UNKNOWN: 65083400 <unknown>
52
53f2cvt   z0.h, z31.b  // 01100101-00001000-00110111-11100000
54// CHECK-INST: f2cvt   z0.h, z31.b
55// CHECK-ENCODING: [0xe0,0x37,0x08,0x65]
56// CHECK-ERROR: instruction requires: fp8 sve2
57// CHECK-UNKNOWN: 650837e0 <unknown>
58
59f2cvt   z31.h, z0.b  // 01100101-00001000-00110100-00011111
60// CHECK-INST: f2cvt   z31.h, z0.b
61// CHECK-ENCODING: [0x1f,0x34,0x08,0x65]
62// CHECK-ERROR: instruction requires: fp8 sve2
63// CHECK-UNKNOWN: 6508341f <unknown>
64
65f2cvt   z31.h, z31.b  // 01100101-00001000-00110111-11111111
66// CHECK-INST: f2cvt   z31.h, z31.b
67// CHECK-ENCODING: [0xff,0x37,0x08,0x65]
68// CHECK-ERROR: instruction requires: fp8 sve2
69// CHECK-UNKNOWN: 650837ff <unknown>
70
71
72//
73// BF1CVT instructions
74//
75bf1cvt  z0.h, z0.b  // 01100101-00001000-00111000-00000000
76// CHECK-INST: bf1cvt  z0.h, z0.b
77// CHECK-ENCODING: [0x00,0x38,0x08,0x65]
78// CHECK-ERROR: instruction requires: fp8 sve2
79// CHECK-UNKNOWN: 65083800 <unknown>
80
81bf1cvt  z0.h, z31.b  // 01100101-00001000-00111011-11100000
82// CHECK-INST: bf1cvt  z0.h, z31.b
83// CHECK-ENCODING: [0xe0,0x3b,0x08,0x65]
84// CHECK-ERROR: instruction requires: fp8 sve2
85// CHECK-UNKNOWN: 65083be0 <unknown>
86
87bf1cvt  z31.h, z0.b  // 01100101-00001000-00111000-00011111
88// CHECK-INST: bf1cvt  z31.h, z0.b
89// CHECK-ENCODING: [0x1f,0x38,0x08,0x65]
90// CHECK-ERROR: instruction requires: fp8 sve2
91// CHECK-UNKNOWN: 6508381f <unknown>
92
93bf1cvt  z31.h, z31.b  // 01100101-00001000-00111011-11111111
94// CHECK-INST: bf1cvt  z31.h, z31.b
95// CHECK-ENCODING: [0xff,0x3b,0x08,0x65]
96// CHECK-ERROR: instruction requires: fp8 sve2
97// CHECK-UNKNOWN: 65083bff <unknown>
98
99
100//
101// BF2CVT instructions
102//
103bf2cvt  z0.h, z0.b  // 01100101-00001000-00111100-00000000
104// CHECK-INST: bf2cvt  z0.h, z0.b
105// CHECK-ENCODING: [0x00,0x3c,0x08,0x65]
106// CHECK-ERROR: instruction requires: fp8 sve2
107// CHECK-UNKNOWN: 65083c00 <unknown>
108
109bf2cvt  z0.h, z31.b  // 01100101-00001000-00111111-11100000
110// CHECK-INST: bf2cvt  z0.h, z31.b
111// CHECK-ENCODING: [0xe0,0x3f,0x08,0x65]
112// CHECK-ERROR: instruction requires: fp8 sve2
113// CHECK-UNKNOWN: 65083fe0 <unknown>
114
115bf2cvt  z31.h, z0.b  // 01100101-00001000-00111100-00011111
116// CHECK-INST: bf2cvt  z31.h, z0.b
117// CHECK-ENCODING: [0x1f,0x3c,0x08,0x65]
118// CHECK-ERROR: instruction requires: fp8 sve2
119// CHECK-UNKNOWN: 65083c1f <unknown>
120
121bf2cvt  z31.h, z31.b  // 01100101-00001000-00111111-11111111
122// CHECK-INST: bf2cvt  z31.h, z31.b
123// CHECK-ENCODING: [0xff,0x3f,0x08,0x65]
124// CHECK-ERROR: instruction requires: fp8 sve2
125// CHECK-UNKNOWN: 65083fff <unknown>
126
127
128//
129// F1CVTLT instructions
130//
131f1cvtlt z0.h, z0.b  // 01100101-00001001-00110000-00000000
132// CHECK-INST: f1cvtlt z0.h, z0.b
133// CHECK-ENCODING: [0x00,0x30,0x09,0x65]
134// CHECK-ERROR: instruction requires: fp8 sve2
135// CHECK-UNKNOWN: 65093000 <unknown>
136
137f1cvtlt z0.h, z31.b  // 01100101-00001001-00110011-11100000
138// CHECK-INST: f1cvtlt z0.h, z31.b
139// CHECK-ENCODING: [0xe0,0x33,0x09,0x65]
140// CHECK-ERROR: instruction requires: fp8 sve2
141// CHECK-UNKNOWN: 650933e0 <unknown>
142
143f1cvtlt z31.h, z0.b  // 01100101-00001001-00110000-00011111
144// CHECK-INST: f1cvtlt z31.h, z0.b
145// CHECK-ENCODING: [0x1f,0x30,0x09,0x65]
146// CHECK-ERROR: instruction requires: fp8 sve2
147// CHECK-UNKNOWN: 6509301f <unknown>
148
149f1cvtlt z31.h, z31.b  // 01100101-00001001-00110011-11111111
150// CHECK-INST: f1cvtlt z31.h, z31.b
151// CHECK-ENCODING: [0xff,0x33,0x09,0x65]
152// CHECK-ERROR: instruction requires: fp8 sve2
153// CHECK-UNKNOWN: 650933ff <unknown>
154
155
156//
157// F2CVTLT instructions
158//
159f2cvtlt z0.h, z0.b  // 01100101-00001001-00110100-00000000
160// CHECK-INST: f2cvtlt z0.h, z0.b
161// CHECK-ENCODING: [0x00,0x34,0x09,0x65]
162// CHECK-ERROR: instruction requires: fp8 sve2
163// CHECK-UNKNOWN: 65093400 <unknown>
164
165f2cvtlt z0.h, z31.b  // 01100101-00001001-00110111-11100000
166// CHECK-INST: f2cvtlt z0.h, z31.b
167// CHECK-ENCODING: [0xe0,0x37,0x09,0x65]
168// CHECK-ERROR: instruction requires: fp8 sve2
169// CHECK-UNKNOWN: 650937e0 <unknown>
170
171f2cvtlt z31.h, z0.b  // 01100101-00001001-00110100-00011111
172// CHECK-INST: f2cvtlt z31.h, z0.b
173// CHECK-ENCODING: [0x1f,0x34,0x09,0x65]
174// CHECK-ERROR: instruction requires: fp8 sve2
175// CHECK-UNKNOWN: 6509341f <unknown>
176
177f2cvtlt z31.h, z31.b  // 01100101-00001001-00110111-11111111
178// CHECK-INST: f2cvtlt z31.h, z31.b
179// CHECK-ENCODING: [0xff,0x37,0x09,0x65]
180// CHECK-ERROR: instruction requires: fp8 sve2
181// CHECK-UNKNOWN: 650937ff <unknown>
182
183
184//
185// BF1CVTLT instructions
186//
187bf1cvtlt z0.h, z0.b  // 01100101-00001001-00111000-00000000
188// CHECK-INST: bf1cvtlt z0.h, z0.b
189// CHECK-ENCODING: [0x00,0x38,0x09,0x65]
190// CHECK-ERROR: instruction requires: fp8 sve2
191// CHECK-UNKNOWN: 65093800 <unknown>
192
193bf1cvtlt z0.h, z31.b  // 01100101-00001001-00111011-11100000
194// CHECK-INST: bf1cvtlt z0.h, z31.b
195// CHECK-ENCODING: [0xe0,0x3b,0x09,0x65]
196// CHECK-ERROR: instruction requires: fp8 sve2
197// CHECK-UNKNOWN: 65093be0 <unknown>
198
199bf1cvtlt z31.h, z0.b  // 01100101-00001001-00111000-00011111
200// CHECK-INST: bf1cvtlt z31.h, z0.b
201// CHECK-ENCODING: [0x1f,0x38,0x09,0x65]
202// CHECK-ERROR: instruction requires: fp8 sve2
203// CHECK-UNKNOWN: 6509381f <unknown>
204
205bf1cvtlt z31.h, z31.b  // 01100101-00001001-00111011-11111111
206// CHECK-INST: bf1cvtlt z31.h, z31.b
207// CHECK-ENCODING: [0xff,0x3b,0x09,0x65]
208// CHECK-ERROR: instruction requires: fp8 sve2
209// CHECK-UNKNOWN: 65093bff <unknown>
210
211
212//
213// BF2CVTLT instructions
214//
215bf2cvtlt z0.h, z0.b  // 01100101-00001001-00111100-00000000
216// CHECK-INST: bf2cvtlt z0.h, z0.b
217// CHECK-ENCODING: [0x00,0x3c,0x09,0x65]
218// CHECK-ERROR: instruction requires: fp8 sve2
219// CHECK-UNKNOWN: 65093c00 <unknown>
220
221bf2cvtlt z0.h, z31.b  // 01100101-00001001-00111111-11100000
222// CHECK-INST: bf2cvtlt z0.h, z31.b
223// CHECK-ENCODING: [0xe0,0x3f,0x09,0x65]
224// CHECK-ERROR: instruction requires: fp8 sve2
225// CHECK-UNKNOWN: 65093fe0 <unknown>
226
227bf2cvtlt z31.h, z0.b  // 01100101-00001001-00111100-00011111
228// CHECK-INST: bf2cvtlt z31.h, z0.b
229// CHECK-ENCODING: [0x1f,0x3c,0x09,0x65]
230// CHECK-ERROR: instruction requires: fp8 sve2
231// CHECK-UNKNOWN: 65093c1f <unknown>
232
233bf2cvtlt z31.h, z31.b  // 01100101-00001001-00111111-11111111
234// CHECK-INST: bf2cvtlt z31.h, z31.b
235// CHECK-ENCODING: [0xff,0x3f,0x09,0x65]
236// CHECK-ERROR: instruction requires: fp8 sve2
237// CHECK-UNKNOWN: 65093fff <unknown>
238