1 @ RUN
: llvm-mc
-triple armv8a-none-eabi
-mattr
=+fullfp16
-show-encoding
< %s | FileCheck
%s
--check-prefix
=ARM
2 @ RUN
: llvm-mc
-triple armv8a-none-eabi
-mattr
=+fullfp16
,+thumb-mode
-show-encoding
< %s | FileCheck
%s
--check-prefix
=THUMB
3 @ RUN
: llvm-mc
-triple thumbv8.1m.main
-mattr
=+mve.fp
,+fullfp16
-show-encoding
< %s | FileCheck
%s
--check-prefix
=THUMB
4 @ RUN
: llvm-mc
-triple thumbv8.1m.main
-mattr
=+fullfp16
-show-encoding
< %s | FileCheck
%s
--check-prefix
=THUMB
7 @ ARM
: vadd.
f16 s0
, s1
, s0 @ encoding
: [0x80,0x09,0x30,0xee]
8 @ THUMB
: vadd.
f16 s0
, s1
, s0 @ encoding
: [0x30,0xee,0x80,0x09]
11 @ ARM
: vsub.
f16 s0
, s1
, s0 @ encoding
: [0xc0,0x09,0x30,0xee]
12 @ THUMB
: vsub.
f16 s0
, s1
, s0 @ encoding
: [0x30,0xee,0xc0,0x09]
15 @ ARM
: vdiv.
f16 s0
, s1
, s0 @ encoding
: [0x80,0x09,0x80,0xee]
16 @ THUMB
: vdiv.
f16 s0
, s1
, s0 @ encoding
: [0x80,0xee,0x80,0x09]
19 @ ARM
: vmul.
f16 s0
, s1
, s0 @ encoding
: [0x80,0x09,0x20,0xee]
20 @ THUMB
: vmul.
f16 s0
, s1
, s0 @ encoding
: [0x20,0xee,0x80,0x09]
23 @ ARM
: vnmul.
f16 s0
, s1
, s0 @ encoding
: [0xc0,0x09,0x20,0xee]
24 @ THUMB
: vnmul.
f16 s0
, s1
, s0 @ encoding
: [0x20,0xee,0xc0,0x09]
27 @ ARM
: vnmul.
f16 s0
, s0
, s1 @ encoding
: [0x60,0x09,0x20,0xee]
28 @ THUMB
: vnmul.
f16 s0
, s0
, s1 @ encoding
: [0x20,0xee,0x60,0x09]
31 @ ARM
: vmla.
f16 s1
, s2
, s0 @ encoding
: [0x00,0x09,0x41,0xee]
32 @ THUMB
: vmla.
f16 s1
, s2
, s0 @ encoding
: [0x41,0xee,0x00,0x09]
35 @ ARM
: vmls.
f16 s1
, s2
, s0 @ encoding
: [0x40,0x09,0x41,0xee]
36 @ THUMB
: vmls.
f16 s1
, s2
, s0 @ encoding
: [0x41,0xee,0x40,0x09]
39 @ ARM
: vnmla.
f16 s1
, s2
, s0 @ encoding
: [0x40,0x09,0x51,0xee]
40 @ THUMB
: vnmla.
f16 s1
, s2
, s0 @ encoding
: [0x51,0xee,0x40,0x09]
43 @ ARM
: vnmls.
f16 s1
, s2
, s0 @ encoding
: [0x00,0x09,0x51,0xee]
44 @ THUMB
: vnmls.
f16 s1
, s2
, s0 @ encoding
: [0x51,0xee,0x00,0x09]
47 @ ARM
: vcmp.
f16 s0
, s1 @ encoding
: [0x60,0x09,0xb4,0xee]
48 @ THUMB
: vcmp.
f16 s0
, s1 @ encoding
: [0xb4,0xee,0x60,0x09]
51 @ ARM
: vcmp.
f16 s2
, #0 @ encoding: [0x40,0x19,0xb5,0xee]
52 @ THUMB
: vcmp.
f16 s2
, #0 @ encoding: [0xb5,0xee,0x40,0x19]
55 @ ARM
: vcmpe.
f16 s1
, s0 @ encoding
: [0xc0,0x09,0xf4,0xee]
56 @ THUMB
: vcmpe.
f16 s1
, s0 @ encoding
: [0xf4,0xee,0xc0,0x09]
59 @ ARM
: vcmpe.
f16 s0
, #0 @ encoding: [0xc0,0x09,0xb5,0xee]
60 @ THUMB
: vcmpe.
f16 s0
, #0 @ encoding: [0xb5,0xee,0xc0,0x09]
63 @ ARM
: vabs.
f16 s0
, s0 @ encoding
: [0xc0,0x09,0xb0,0xee]
64 @ THUMB
: vabs.
f16 s0
, s0 @ encoding
: [0xb0,0xee,0xc0,0x09]
67 @ ARM
: vneg.
f16 s0
, s0 @ encoding
: [0x40,0x09,0xb1,0xee]
68 @ THUMB
: vneg.
f16 s0
, s0 @ encoding
: [0xb1,0xee,0x40,0x09]
71 @ ARM
: vsqrt.
f16 s0
, s0 @ encoding
: [0xc0,0x09,0xb1,0xee]
72 @ THUMB
: vsqrt.
f16 s0
, s0 @ encoding
: [0xb1,0xee,0xc0,0x09]
78 @ ARM
: vcvt.f16.s32 s0
, s0 @ encoding
: [0xc0,0x09,0xb8,0xee]
79 @ ARM
: vcvt.f16.u32 s0
, s0 @ encoding
: [0x40,0x09,0xb8,0xee]
80 @ ARM
: vcvt.s32.
f16 s0
, s0 @ encoding
: [0xc0,0x09,0xbd,0xee]
81 @ ARM
: vcvt.u32.
f16 s0
, s0 @ encoding
: [0xc0,0x09,0xbc,0xee]
82 @ THUMB
: vcvt.f16.s32 s0
, s0 @ encoding
: [0xb8,0xee,0xc0,0x09]
83 @ THUMB
: vcvt.f16.u32 s0
, s0 @ encoding
: [0xb8,0xee,0x40,0x09]
84 @ THUMB
: vcvt.s32.
f16 s0
, s0 @ encoding
: [0xbd,0xee,0xc0,0x09]
85 @ THUMB
: vcvt.u32.
f16 s0
, s0 @ encoding
: [0xbc,0xee,0xc0,0x09]
89 @ ARM
: vcvtr.s32.
f16 s0
, s1 @ encoding
: [0x60,0x09,0xbd,0xee]
90 @ ARM
: vcvtr.u32.
f16 s0
, s1 @ encoding
: [0x60,0x09,0xbc,0xee]
91 @ THUMB
: vcvtr.s32.
f16 s0
, s1 @ encoding
: [0xbd,0xee,0x60,0x09]
92 @ THUMB
: vcvtr.u32.
f16 s0
, s1 @ encoding
: [0xbc,0xee,0x60,0x09]
94 vcvt.f16.u32 s0
, s0
, #20
95 vcvt.f16.u16 s0
, s0
, #1
96 vcvt.f16.s32 s1
, s1
, #20
97 vcvt.f16.s16 s17
, s17
, #1
98 vcvt.u32.
f16 s12
, s12
, #20
99 vcvt.u16.
f16 s28
, s28
, #1
100 vcvt.s32.
f16 s1
, s1
, #20
101 vcvt.s16.
f16 s17
, s17
, #1
102 @ ARM
: vcvt.f16.u32 s0
, s0
, #20 @ encoding: [0xc6,0x09,0xbb,0xee]
103 @ ARM
: vcvt.f16.u16 s0
, s0
, #1 @ encoding: [0x67,0x09,0xbb,0xee]
104 @ ARM
: vcvt.f16.s32 s1
, s1
, #20 @ encoding: [0xc6,0x09,0xfa,0xee]
105 @ ARM
: vcvt.f16.s16 s17
, s17
, #1 @ encoding: [0x67,0x89,0xfa,0xee]
106 @ ARM
: vcvt.u32.
f16 s12
, s12
, #20 @ encoding: [0xc6,0x69,0xbf,0xee]
107 @ ARM
: vcvt.u16.
f16 s28
, s28
, #1 @ encoding: [0x67,0xe9,0xbf,0xee]
108 @ ARM
: vcvt.s32.
f16 s1
, s1
, #20 @ encoding: [0xc6,0x09,0xfe,0xee]
109 @ ARM
: vcvt.s16.
f16 s17
, s17
, #1 @ encoding: [0x67,0x89,0xfe,0xee]
110 @ THUMB
: vcvt.f16.u32 s0
, s0
, #20 @ encoding: [0xbb,0xee,0xc6,0x09]
111 @ THUMB
: vcvt.f16.u16 s0
, s0
, #1 @ encoding: [0xbb,0xee,0x67,0x09]
112 @ THUMB
: vcvt.f16.s32 s1
, s1
, #20 @ encoding: [0xfa,0xee,0xc6,0x09]
113 @ THUMB
: vcvt.f16.s16 s17
, s17
, #1 @ encoding: [0xfa,0xee,0x67,0x89]
114 @ THUMB
: vcvt.u32.
f16 s12
, s12
, #20 @ encoding: [0xbf,0xee,0xc6,0x69]
115 @ THUMB
: vcvt.u16.
f16 s28
, s28
, #1 @ encoding: [0xbf,0xee,0x67,0xe9]
116 @ THUMB
: vcvt.s32.
f16 s1
, s1
, #20 @ encoding: [0xfe,0xee,0xc6,0x09]
117 @ THUMB
: vcvt.s16.
f16 s17
, s17
, #1 @ encoding: [0xfe,0xee,0x67,0x89]
120 @ ARM
: vcvta.s32.
f16 s2
, s3 @ encoding
: [0xe1,0x19,0xbc,0xfe]
121 @ THUMB
: vcvta.s32.
f16 s2
, s3 @ encoding
: [0xbc,0xfe,0xe1,0x19]
123 vcvtn.s32.
f16 s6
, s23
124 @ ARM
: vcvtn.s32.
f16 s6
, s23 @ encoding
: [0xeb,0x39,0xbd,0xfe]
125 @ THUMB
: vcvtn.s32.
f16 s6
, s23 @ encoding
: [0xbd,0xfe,0xeb,0x39]
128 @ ARM
: vcvtp.s32.
f16 s0
, s4 @ encoding
: [0xc2,0x09,0xbe,0xfe]
129 @ THUMB
: vcvtp.s32.
f16 s0
, s4 @ encoding
: [0xbe,0xfe,0xc2,0x09]
131 vcvtm.s32.
f16 s17
, s8
132 @ ARM
: vcvtm.s32.
f16 s17
, s8 @ encoding
: [0xc4,0x89,0xff,0xfe]
133 @ THUMB
: vcvtm.s32.
f16 s17
, s8 @ encoding
: [0xff,0xfe,0xc4,0x89]
136 @ ARM
: vcvta.u32.
f16 s2
, s3 @ encoding
: [0x61,0x19,0xbc,0xfe]
137 @ THUMB
: vcvta.u32.
f16 s2
, s3 @ encoding
: [0xbc,0xfe,0x61,0x19]
139 vcvtn.u32.
f16 s6
, s23
140 @ ARM
: vcvtn.u32.
f16 s6
, s23 @ encoding
: [0x6b,0x39,0xbd,0xfe]
141 @ THUMB
: vcvtn.u32.
f16 s6
, s23 @ encoding
: [0xbd,0xfe,0x6b,0x39]
144 @ ARM
: vcvtp.u32.
f16 s0
, s4 @ encoding
: [0x42,0x09,0xbe,0xfe]
145 @ THUMB
: vcvtp.u32.
f16 s0
, s4 @ encoding
: [0xbe,0xfe,0x42,0x09]
147 vcvtm.u32.
f16 s17
, s8
148 @ ARM
: vcvtm.u32.
f16 s17
, s8 @ encoding
: [0x44,0x89,0xff,0xfe]
149 @ THUMB
: vcvtm.u32.
f16 s17
, s8 @ encoding
: [0xff,0xfe,0x44,0x89]
151 vselge.
f16 s4
, s1
, s23
152 @ ARM
: vselge.
f16 s4
, s1
, s23 @ encoding
: [0xab,0x29,0x20,0xfe]
153 @ THUMB
: vselge.
f16 s4
, s1
, s23 @ encoding
: [0x20,0xfe,0xab,0x29]
155 vselgt.
f16 s0
, s1
, s0
156 @ ARM
: vselgt.
f16 s0
, s1
, s0 @ encoding
: [0x80,0x09,0x30,0xfe]
157 @ THUMB
: vselgt.
f16 s0
, s1
, s0 @ encoding
: [0x30,0xfe,0x80,0x09]
159 vseleq.
f16 s30
, s28
, s23
160 @ ARM
: vseleq.
f16 s30
, s28
, s23 @ encoding
: [0x2b,0xf9,0x0e,0xfe]
161 @ THUMB
: vseleq.
f16 s30
, s28
, s23 @ encoding
: [0x0e,0xfe,0x2b,0xf9]
163 vselvs.
f16 s21
, s16
, s14
164 @ ARM
: vselvs.
f16 s21
, s16
, s14 @ encoding
: [0x07,0xa9,0x58,0xfe]
165 @ THUMB
: vselvs.
f16 s21
, s16
, s14 @ encoding
: [0x58,0xfe,0x07,0xa9]
167 vmaxnm.
f16 s5
, s12
, s0
168 @ ARM
: vmaxnm.
f16 s5
, s12
, s0 @ encoding
: [0x00,0x29,0xc6,0xfe]
169 @ THUMB
: vmaxnm.
f16 s5
, s12
, s0 @ encoding
: [0xc6,0xfe,0x00,0x29]
171 vminnm.
f16 s0
, s0
, s12
172 @ ARM
: vminnm.
f16 s0
, s0
, s12 @ encoding
: [0x46,0x09,0x80,0xfe]
173 @ THUMB
: vminnm.
f16 s0
, s0
, s12 @ encoding
: [0x80,0xfe,0x46,0x09]
176 vrintz.f16.
f16 s3
, s24
177 @ ARM
: vrintz.
f16 s3
, s24 @ encoding
: [0xcc,0x19,0xf6,0xee]
178 @ ARM
: vrintz.
f16 s3
, s24 @ encoding
: [0xcc,0x19,0xf6,0xee]
179 @ THUMB
: vrintz.
f16 s3
, s24 @ encoding
: [0xf6,0xee,0xcc,0x19]
180 @ THUMB
: vrintz.
f16 s3
, s24 @ encoding
: [0xf6,0xee,0xcc,0x19]
183 vrintr.f16.
f16 s0
, s9
184 @ ARM
: vrintr.
f16 s0
, s9 @ encoding
: [0x64,0x09,0xb6,0xee]
185 @ ARM
: vrintr.
f16 s0
, s9 @ encoding
: [0x64,0x09,0xb6,0xee]
186 @ THUMB
: vrintr.
f16 s0
, s9 @ encoding
: [0xb6,0xee,0x64,0x09]
187 @ THUMB
: vrintr.
f16 s0
, s9 @ encoding
: [0xb6,0xee,0x64,0x09]
190 vrintx.f16.
f16 s10
, s14
191 @ ARM
: vrintx.
f16 s10
, s14 @ encoding
: [0x47,0x59,0xb7,0xee]
192 @ ARM
: vrintx.
f16 s10
, s14 @ encoding
: [0x47,0x59,0xb7,0xee]
193 @ THUMB
: vrintx.
f16 s10
, s14 @ encoding
: [0xb7,0xee,0x47,0x59]
194 @ THUMB
: vrintx.
f16 s10
, s14 @ encoding
: [0xb7,0xee,0x47,0x59]
197 vrinta.f16.
f16 s12
, s1
198 @ ARM
: vrinta.
f16 s12
, s1 @ encoding
: [0x60,0x69,0xb8,0xfe]
199 @ ARM
: vrinta.
f16 s12
, s1 @ encoding
: [0x60,0x69,0xb8,0xfe]
200 @ THUMB
: vrinta.
f16 s12
, s1 @ encoding
: [0xb8,0xfe,0x60,0x69]
201 @ THUMB
: vrinta.
f16 s12
, s1 @ encoding
: [0xb8,0xfe,0x60,0x69]
204 vrintn.f16.
f16 s12
, s1
205 @ ARM
: vrintn.
f16 s12
, s1 @ encoding
: [0x60,0x69,0xb9,0xfe]
206 @ ARM
: vrintn.
f16 s12
, s1 @ encoding
: [0x60,0x69,0xb9,0xfe]
207 @ THUMB
: vrintn.
f16 s12
, s1 @ encoding
: [0xb9,0xfe,0x60,0x69]
208 @ THUMB
: vrintn.
f16 s12
, s1 @ encoding
: [0xb9,0xfe,0x60,0x69]
211 vrintp.f16.
f16 s12
, s1
212 @ ARM
: vrintp.
f16 s12
, s1 @ encoding
: [0x60,0x69,0xba,0xfe]
213 @ ARM
: vrintp.
f16 s12
, s1 @ encoding
: [0x60,0x69,0xba,0xfe]
214 @ THUMB
: vrintp.
f16 s12
, s1 @ encoding
: [0xba,0xfe,0x60,0x69]
215 @ THUMB
: vrintp.
f16 s12
, s1 @ encoding
: [0xba,0xfe,0x60,0x69]
218 vrintm.f16.
f16 s12
, s1
219 @ ARM
: vrintm.
f16 s12
, s1 @ encoding
: [0x60,0x69,0xbb,0xfe]
220 @ ARM
: vrintm.
f16 s12
, s1 @ encoding
: [0x60,0x69,0xbb,0xfe]
221 @ THUMB
: vrintm.
f16 s12
, s1 @ encoding
: [0xbb,0xfe,0x60,0x69]
222 @ THUMB
: vrintm.
f16 s12
, s1 @ encoding
: [0xbb,0xfe,0x60,0x69]
225 @ ARM
: vfma.
f16 s2
, s7
, s4 @ encoding
: [0x82,0x19,0xa3,0xee]
226 @ THUMB
: vfma.
f16 s2
, s7
, s4 @ encoding
: [0xa3,0xee,0x82,0x19]
229 @ ARM
: vfms.
f16 s2
, s7
, s4 @ encoding
: [0xc2,0x19,0xa3,0xee]
230 @ THUMB
: vfms.
f16 s2
, s7
, s4 @ encoding
: [0xa3,0xee,0xc2,0x19]
233 @ ARM
: vfnma.
f16 s2
, s7
, s4 @ encoding
: [0xc2,0x19,0x93,0xee]
234 @ THUMB
: vfnma.
f16 s2
, s7
, s4 @ encoding
: [0x93,0xee,0xc2,0x19]
237 @ ARM
: vfnms.
f16 s2
, s7
, s4 @ encoding
: [0x82,0x19,0x93,0xee]
238 @ THUMB
: vfnms.
f16 s2
, s7
, s4 @ encoding
: [0x93,0xee,0x82,0x19]
242 @ ARM
: vmovx.
f16 s2
, s5 @ encoding
: [0x62,0x1a,0xb0,0xfe]
243 @ ARM
: vins.
f16 s2
, s5 @ encoding
: [0xe2,0x1a,0xb0,0xfe]
244 @ THUMB
: vmovx.
f16 s2
, s5 @ encoding
: [0xb0,0xfe,0x62,0x1a]
245 @ THUMB
: vins.
f16 s2
, s5 @ encoding
: [0xb0,0xfe,0xe2,0x1a]
249 vldr.16 s2
, [pc
, #510]
250 vldr.16 s3
, [pc
, #-510]
251 vldr.16 s4
, [r4, #-18]
252 @ ARM
: vldr.16 s1
, [pc
, #6] @ encoding: [0x03,0x09,0xdf,0xed]
253 @ ARM
: vldr.16 s2
, [pc
, #510] @ encoding: [0xff,0x19,0x9f,0xed]
254 @ ARM
: vldr.16 s3
, [pc
, #-510] @ encoding: [0xff,0x19,0x5f,0xed]
255 @ ARM
: vldr.16 s4
, [r4, #-18] @ encoding: [0x09,0x29,0x14,0xed]
256 @ THUMB
: vldr.16 s1
, [pc
, #6] @ encoding: [0xdf,0xed,0x03,0x09]
257 @ THUMB
: vldr.16 s2
, [pc
, #510] @ encoding: [0x9f,0xed,0xff,0x19]
258 @ THUMB
: vldr.16 s3
, [pc
, #-510] @ encoding: [0x5f,0xed,0xff,0x19]
259 @ THUMB
: vldr.16 s4
, [r4, #-18] @ encoding: [0x14,0xed,0x09,0x29]
263 vstr.16 s2
, [pc
, #510]
264 vstr.16 s3
, [pc
, #-510]
265 vstr.16 s4
, [r4, #-18]
266 @ ARM
: vstr.16 s1
, [pc
, #6] @ encoding: [0x03,0x09,0xcf,0xed]
267 @ ARM
: vstr.16 s2
, [pc
, #510] @ encoding: [0xff,0x19,0x8f,0xed]
268 @ ARM
: vstr.16 s3
, [pc
, #-510] @ encoding: [0xff,0x19,0x4f,0xed]
269 @ ARM
: vstr.16 s4
, [r4, #-18] @ encoding: [0x09,0x29,0x04,0xed]
270 @ THUMB
: vstr.16 s1
, [pc
, #6] @ encoding: [0xcf,0xed,0x03,0x09]
271 @ THUMB
: vstr.16 s2
, [pc
, #510] @ encoding: [0x8f,0xed,0xff,0x19]
272 @ THUMB
: vstr.16 s3
, [pc
, #-510] @ encoding: [0x4f,0xed,0xff,0x19]
273 @ THUMB
: vstr.16 s4
, [r4, #-18] @ encoding: [0x04,0xed,0x09,0x29]
276 @ ARM
: vmov.
f16 s0
, #1.000000e+00 @ encoding: [0x00,0x09,0xb7,0xee]
277 @ THUMB
: vmov.
f16 s0
, #1.000000e+00 @ encoding: [0xb7,0xee,0x00,0x09]
281 @ ARM
: vmov.
f16 s1
, r2 @ encoding
: [0x90,0x29,0x00,0xee]
282 @ ARM
: vmov.
f16 r3, s4 @ encoding
: [0x10,0x39,0x12,0xee]
283 @ THUMB
: vmov.
f16 s1
, r2 @ encoding
: [0x00,0xee,0x90,0x29]
284 @ THUMB
: vmov.
f16 r3, s4 @ encoding
: [0x12,0xee,0x10,0x39]