1 /* { dg-do run } */
2 /* { dg-require-effective-target arm_v8_2a_fp16_neon_hw } */
3 /* { dg-add-options arm_v8_2a_fp16_neon } */
4 /* { dg-skip-if "" { arm*-*-* } } */
5 
6 #include <arm_neon.h>
7 #include "arm-neon-ref.h"
8 #include "compute-ref-data.h"
9 
10 #define FP16_C(a) ((__fp16) a)
11 #define A0 FP16_C (123.4)
12 #define A1 FP16_C (-5.8)
13 #define A2 FP16_C (-0.0)
14 #define A3 FP16_C (10)
15 #define A4 FP16_C (123412.43)
16 #define A5 FP16_C (-5.8)
17 #define A6 FP16_C (90.8)
18 #define A7 FP16_C (24)
19 
20 #define B0 FP16_C (23.4)
21 #define B1 FP16_C (-5.8)
22 #define B2 FP16_C (8.9)
23 #define B3 FP16_C (4.0)
24 #define B4 FP16_C (3.4)
25 #define B5 FP16_C (-550.8)
26 #define B6 FP16_C (-31.8)
27 #define B7 FP16_C (20000.0)
28 
29 /* Expected results for vfma_lane.  */
30 VECT_VAR_DECL (expected0_static, hfloat, 16, 4) []
31   = { 0x613E /* A0 + B0 * B0.  */,
32       0xD86D /* A1 + B1 * B0.  */,
33       0x5A82 /* A2 + B2 * B0.  */,
34       0x567A /* A3 + B3 * B0.  */};
35 
36 VECT_VAR_DECL (expected1_static, hfloat, 16, 4) []
37   = { 0xCA33 /* A0 + B0 * B1.  */,
38       0x4EF6 /* A1 + B1 * B1.  */,
39       0xD274 /* A2 + B2 * B1.  */,
40       0xCA9A /* A3 + B3 * B1.  */ };
41 
42 VECT_VAR_DECL (expected2_static, hfloat, 16, 4) []
43   = { 0x5D2F /* A0 + B0 * B2.  */,
44       0xD32D /* A1 + B1 * B2.  */,
45       0x54F3 /* A2 + B2 * B2.  */,
46       0x51B3 /* A3 + B3 * B2.  */ };
47 
48 VECT_VAR_DECL (expected3_static, hfloat, 16, 4) []
49   = { 0x5AC8 /* A0 + B0 * B3.  */,
50       0xCF40 /* A1 + B1 * B3.  */,
51       0x5073 /* A2 + B2 * B3.  */,
52       0x4E80 /* A3 + B3 * B3.  */ };
53 
54 /* Expected results for vfmaq_lane.  */
55 VECT_VAR_DECL (expected0_static, hfloat, 16, 8) []
56   = { 0x613E /* A0 + B0 * B0.  */,
57       0xD86D /* A1 + B1 * B0.  */,
58       0x5A82 /* A2 + B2 * B0.  */,
59       0x567A /* A3 + B3 * B0.  */,
60       0x7C00 /* A4 + B4 * B0.  */,
61       0xF24D /* A5 + B5 * B0.  */,
62       0xE11B /* A6 + B6 * B0.  */,
63       0x7C00 /* A7 + B7 * B0.  */ };
64 
65 VECT_VAR_DECL (expected1_static, hfloat, 16, 8) []
66   = { 0xCA33 /* A0 + B0 * B1.  */,
67       0x4EF6 /* A1 + B1 * B1.  */,
68       0xD274 /* A2 + B2 * B1.  */,
69       0xCA9A /* A3 + B3 * B1.  */,
70       0x7C00 /* A4 + B4 * B1.  */,
71       0x6A3B /* A5 + B5 * B1.  */,
72       0x5C4D /* A6 + B6 * B1.  */,
73       0xFC00 /* A7 + B7 * B1.  */ };
74 
75 VECT_VAR_DECL (expected2_static, hfloat, 16, 8) []
76   = { 0x5D2F /* A0 + B0 * B2.  */,
77       0xD32D /* A1 + B1 * B2.  */,
78       0x54F3 /* A2 + B2 * B2.  */,
79       0x51B3 /* A3 + B3 * B2.  */,
80       0x7C00 /* A4 + B4 * B2.  */,
81       0xECCB /* A5 + B5 * B2.  */,
82       0xDA01 /* A6 + B6 * B2.  */,
83       0x7C00 /* A7 + B7 * B2.  */ };
84 
85 VECT_VAR_DECL (expected3_static, hfloat, 16, 8) []
86   = { 0x5AC8 /* A0 + B0 * B3.  */,
87       0xCF40 /* A1 + B1 * B3.  */,
88       0x5073 /* A2 + B2 * B3.  */,
89       0x4E80 /* A3 + B3 * B3.  */,
90       0x7C00 /* A4 + B4 * B3.  */,
91       0xE851 /* A5 + B5 * B3.  */,
92       0xD08C /* A6 + B6 * B3.  */,
93       0x7C00 /* A7 + B7 * B3.  */ };
94 
95 /* Expected results for vfma_laneq.  */
96 VECT_VAR_DECL (expected0_laneq_static, hfloat, 16, 4) []
97   = { 0x613E /* A0 + B0 * B0.  */,
98       0xD86D /* A1 + B1 * B0.  */,
99       0x5A82 /* A2 + B2 * B0.  */,
100       0x567A /* A3 + B3 * B0.  */ };
101 
102 VECT_VAR_DECL (expected1_laneq_static, hfloat, 16, 4) []
103   = { 0xCA33 /* A0 + B0 * B1.  */,
104       0x4EF6 /* A1 + B1 * B1.  */,
105       0xD274 /* A2 + B2 * B1.  */,
106       0xCA9A /* A3 + B3 * B1.  */ };
107 
108 VECT_VAR_DECL (expected2_laneq_static, hfloat, 16, 4) []
109   = { 0x5D2F /* A0 + B0 * B2.  */,
110       0xD32D /* A1 + B1 * B2.  */,
111       0x54F3 /* A2 + B2 * B2.  */,
112       0x51B3 /* A3 + B3 * B2.  */ };
113 
114 VECT_VAR_DECL (expected3_laneq_static, hfloat, 16, 4) []
115   = { 0x5AC8 /* A0 + B0 * B3.  */,
116       0xCF40 /* A1 + B1 * B3.  */,
117       0x5073 /* A2 + B2 * B3.  */,
118       0x4E80 /* A3 + B3 * B3.  */ };
119 
120 VECT_VAR_DECL (expected4_laneq_static, hfloat, 16, 4) []
121   = { 0x5A58 /* A0 + B0 * B4.  */,
122       0xCE62 /* A1 + B1 * B4.  */,
123       0x4F91 /* A2 + B2 * B4.  */,
124       0x4DE6 /* A3 + B3 * B4.  */ };
125 
126 VECT_VAR_DECL (expected5_laneq_static, hfloat, 16, 4) []
127   = { 0xF23D /* A0 + B0 * B5.  */,
128       0x6A3B /* A1 + B1 * B5.  */,
129       0xECCA /* A2 + B2 * B5.  */,
130       0xE849 /* A3 + B3 * B5.  */ };
131 
132 VECT_VAR_DECL (expected6_laneq_static, hfloat, 16, 4) []
133   = { 0xE0DA /* A0 + B0 * B6.  */,
134       0x5995 /* A1 + B1 * B6.  */,
135       0xDC6C /* A2 + B2 * B6.  */,
136       0xD753 /* A3 + B3 * B6.  */ };
137 
138 VECT_VAR_DECL (expected7_laneq_static, hfloat, 16, 4) []
139   = { 0x7C00 /* A0 + B0 * B7.  */,
140       0xFC00 /* A1 + B1 * B7.  */,
141       0x7C00 /* A2 + B2 * B7.  */,
142       0x7C00 /* A3 + B3 * B7.  */ };
143 
144 /* Expected results for vfmaq_laneq.  */
145 VECT_VAR_DECL (expected0_laneq_static, hfloat, 16, 8) []
146   = { 0x613E /* A0 + B0 * B0.  */,
147       0xD86D /* A1 + B1 * B0.  */,
148       0x5A82 /* A2 + B2 * B0.  */,
149       0x567A /* A3 + B3 * B0.  */,
150       0x7C00 /* A4 + B4 * B0.  */,
151       0xF24D /* A5 + B5 * B0.  */,
152       0xE11B /* A6 + B6 * B0.  */,
153       0x7C00 /* A7 + B7 * B0.  */ };
154 
155 VECT_VAR_DECL (expected1_laneq_static, hfloat, 16, 8) []
156   = { 0xCA33 /* A0 + B0 * B1.  */,
157       0x4EF6 /* A1 + B1 * B1.  */,
158       0xD274 /* A2 + B2 * B1.  */,
159       0xCA9A /* A3 + B3 * B1.  */,
160       0x7C00 /* A4 + B4 * B1.  */,
161       0x6A3B /* A5 + B5 * B1.  */,
162       0x5C4D /* A6 + B6 * B1.  */,
163       0xFC00 /* A7 + B7 * B1.  */ };
164 
165 VECT_VAR_DECL (expected2_laneq_static, hfloat, 16, 8) []
166   = { 0x5D2F /* A0 + B0 * B2.  */,
167       0xD32D /* A1 + B1 * B2.  */,
168       0x54F3 /* A2 + B2 * B2.  */,
169       0x51B3 /* A3 + B3 * B2.  */,
170       0x7C00 /* A4 + B4 * B2.  */,
171       0xECCB /* A5 + B5 * B2.  */,
172       0xDA01 /* A6 + B6 * B2.  */,
173       0x7C00 /* A7 + B7 * B2.  */ };
174 
175 VECT_VAR_DECL (expected3_laneq_static, hfloat, 16, 8) []
176   = { 0x5AC8 /* A0 + B0 * B3.  */,
177       0xCF40 /* A1 + B1 * B3.  */,
178       0x5073 /* A2 + B2 * B3.  */,
179       0x4E80 /* A3 + B3 * B3.  */,
180       0x7C00 /* A4 + B4 * B3.  */,
181       0xE851 /* A5 + B5 * B3.  */,
182       0xD08C /* A6 + B6 * B3.  */,
183       0x7C00 /* A7 + B7 * B3.  */ };
184 
185 VECT_VAR_DECL (expected4_laneq_static, hfloat, 16, 8) []
186   = { 0x5A58 /* A0 + B0 * B4.  */,
187       0xCE62 /* A1 + B1 * B4.  */,
188       0x4F91 /* A2 + B2 * B4.  */,
189       0x4DE6 /* A3 + B3 * B4.  */,
190       0x7C00 /* A4 + B4 * B4.  */,
191       0xE757 /* A5 + B5 * B4.  */,
192       0xCC54 /* A6 + B6 * B4.  */,
193       0x7C00 /* A7 + B7 * B4.  */ };
194 
195 VECT_VAR_DECL (expected5_laneq_static, hfloat, 16, 8) []
196   = { 0xF23D /* A0 + B0 * B5.  */,
197       0x6A3B /* A1 + B1 * B5.  */,
198       0xECCA /* A2 + B2 * B5.  */,
199       0xE849 /* A3 + B3 * B5.  */,
200       0x7C00 /* A4 + B4 * B5.  */,
201       0x7C00 /* A5 + B5 * B5.  */,
202       0x744D /* A6 + B6 * B5.  */,
203       0xFC00 /* A7 + B7 * B5.  */ };
204 
205 VECT_VAR_DECL (expected6_laneq_static, hfloat, 16, 8) []
206   = { 0xE0DA /* A0 + B0 * B6.  */,
207       0x5995 /* A1 + B1 * B6.  */,
208       0xDC6C /* A2 + B2 * B6.  */,
209       0xD753 /* A3 + B3 * B6.  */,
210       0x7C00 /* A4 + B4 * B6.  */,
211       0x7447 /* A5 + B5 * B6.  */,
212       0x644E /* A6 + B6 * B6.  */,
213       0xFC00 /* A7 + B7 * B6.  */ };
214 
215 VECT_VAR_DECL (expected7_laneq_static, hfloat, 16, 8) []
216   = { 0x7C00 /* A0 + B0 * B7.  */,
217       0xFC00 /* A1 + B1 * B7.  */,
218       0x7C00 /* A2 + B2 * B7.  */,
219       0x7C00 /* A3 + B3 * B7.  */,
220       0x7C00 /* A4 + B4 * B7.  */,
221       0xFC00 /* A5 + B5 * B7.  */,
222       0xFC00 /* A6 + B6 * B7.  */,
223       0x7C00 /* A7 + B7 * B7.  */ };
224 
225 /* Expected results for vfms_lane.  */
226 VECT_VAR_DECL (expected0_fms_static, hfloat, 16, 4) []
227   = { 0xDEA2 /* A0 + (-B0) * B0.  */,
228       0x5810 /* A1 + (-B1) * B0.  */,
229       0xDA82 /* A2 + (-B2) * B0.  */,
230       0xD53A /* A3 + (-B3) * B0.  */ };
231 
232 VECT_VAR_DECL (expected1_fms_static, hfloat, 16, 4) []
233   = { 0x5C0D /* A0 + (-B0) * B1.  */,
234       0xD0EE /* A1 + (-B1) * B1.  */,
235       0x5274 /* A2 + (-B2) * B1.  */,
236       0x5026 /* A3 + (-B3) * B1.  */ };
237 
238 VECT_VAR_DECL (expected2_fms_static, hfloat, 16, 4) []
239   = { 0xD54E /* A0 + (-B0) * B2.  */,
240       0x51BA /* A1 + (-B1) * B2.  */,
241       0xD4F3 /* A2 + (-B2) * B2.  */,
242       0xCE66 /* A3 + (-B3) * B2.  */ };
243 
244 VECT_VAR_DECL (expected3_fms_static, hfloat, 16, 4) []
245   = { 0x4F70 /* A0 + (-B0) * B3.  */,
246       0x4C5A /* A1 + (-B1) * B3.  */,
247       0xD073 /* A2 + (-B2) * B3.  */,
248       0xC600 /* A3 + (-B3) * B3.  */ };
249 
250 /* Expected results for vfmsq_lane.  */
251 VECT_VAR_DECL (expected0_fms_static, hfloat, 16, 8) []
252   = { 0xDEA2 /* A0 + (-B0) * B0.  */,
253       0x5810 /* A1 + (-B1) * B0.  */,
254       0xDA82 /* A2 + (-B2) * B0.  */,
255       0xD53A /* A3 + (-B3) * B0.  */,
256       0x7C00 /* A4 + (-B4) * B0.  */,
257       0x724B /* A5 + (-B5) * B0.  */,
258       0x6286 /* A6 + (-B6) * B0.  */,
259       0xFC00 /* A7 + (-B7) * B0.  */ };
260 
261 VECT_VAR_DECL (expected1_fms_static, hfloat, 16, 8) []
262   = { 0x5C0D /* A0 + (-B0) * B1.  */,
263       0xD0EE /* A1 + (-B1) * B1.  */,
264       0x5274 /* A2 + (-B2) * B1.  */,
265       0x5026 /* A3 + (-B3) * B1.  */,
266       0x7C00 /* A4 + (-B4) * B1.  */,
267       0xEA41 /* A5 + (-B5) * B1.  */,
268       0xD5DA /* A6 + (-B6) * B1.  */,
269       0x7C00 /* A7 + (-B7) * B1.  */ };
270 
271 VECT_VAR_DECL (expected2_fms_static, hfloat, 16, 8) []
272   = { 0xD54E /* A0 + (-B0) * B2.  */,
273       0x51BA /* A1 + (-B1) * B2.  */,
274       0xD4F3 /* A2 + (-B2) * B2.  */,
275       0xCE66 /* A3 + (-B3) * B2.  */,
276       0x7C00 /* A4 + (-B4) * B2.  */,
277       0x6CC8 /* A5 + (-B5) * B2.  */,
278       0x5DD7 /* A6 + (-B6) * B2.  */,
279       0xFC00 /* A7 + (-B7) * B2.  */ };
280 
281 VECT_VAR_DECL (expected3_fms_static, hfloat, 16, 8) []
282   = { 0x4F70 /* A0 + (-B0) * B3.  */,
283       0x4C5A /* A1 + (-B1) * B3.  */,
284       0xD073 /* A2 + (-B2) * B3.  */,
285       0xC600 /* A3 + (-B3) * B3.  */,
286       0x7C00 /* A4 + (-B4) * B3.  */,
287       0x684B /* A5 + (-B5) * B3.  */,
288       0x5AD0 /* A6 + (-B6) * B3.  */,
289       0xFC00 /* A7 + (-B7) * B3.  */ };
290 
291 /* Expected results for vfms_laneq.  */
292 VECT_VAR_DECL (expected0_fms_laneq_static, hfloat, 16, 4) []
293   = { 0xDEA2 /* A0 + (-B0) * B0.  */,
294       0x5810 /* A1 + (-B1) * B0.  */,
295       0xDA82 /* A2 + (-B2) * B0.  */,
296       0xD53A /* A3 + (-B3) * B0.  */ };
297 
298 VECT_VAR_DECL (expected1_fms_laneq_static, hfloat, 16, 4) []
299   = { 0x5C0D /* A0 + (-B0) * B1.  */,
300       0xD0EE /* A1 + (-B1) * B1.  */,
301       0x5274 /* A2 + (-B2) * B1.  */,
302       0x5026 /* A3 + (-B3) * B1.  */ };
303 
304 VECT_VAR_DECL (expected2_fms_laneq_static, hfloat, 16, 4) []
305   = { 0xD54E /* A0 + (-B0) * B2.  */,
306       0x51BA /* A1 + (-B1) * B2.  */,
307       0xD4F3 /* A2 + (-B2) * B2.  */,
308       0xCE66 /* A3 + (-B3) * B2.  */ };
309 
310 VECT_VAR_DECL (expected3_fms_laneq_static, hfloat, 16, 4) []
311   = { 0x4F70 /* A0 + (-B0) * B3.  */,
312       0x4C5A /* A1 + (-B1) * B3.  */,
313       0xD073 /* A2 + (-B2) * B3.  */,
314       0xC600 /* A3 + (-B3) * B3.  */ };
315 
316 VECT_VAR_DECL (expected4_fms_laneq_static, hfloat, 16, 4) []
317   = { 0x5179 /* A0 + (-B0) * B4.  */,
318       0x4AF6 /* A1 + (-B1) * B4.  */,
319       0xCF91 /* A2 + (-B2) * B4.  */,
320       0xC334 /* A3 + (-B3) * B4.  */ };
321 
322 VECT_VAR_DECL (expected5_fms_laneq_static, hfloat, 16, 4) []
323   = { 0x725C /* A0 + (-B0) * B5.  */,
324       0xEA41 /* A1 + (-B1) * B5.  */,
325       0x6CCA /* A2 + (-B2) * B5.  */,
326       0x6853 /* A3 + (-B3) * B5.  */ };
327 
328 VECT_VAR_DECL (expected6_fms_laneq_static, hfloat, 16, 4) []
329   = { 0x62C7 /* A0 + (-B0) * B6.  */,
330       0xD9F2 /* A1 + (-B1) * B6.  */,
331       0x5C6C /* A2 + (-B2) * B6.  */,
332       0x584A /* A3 + (-B3) * B6.  */ };
333 
334 VECT_VAR_DECL (expected7_fms_laneq_static, hfloat, 16, 4) []
335   = { 0xFC00 /* A0 + (-B0) * B7.  */,
336       0x7C00 /* A1 + (-B1) * B7.  */,
337       0xFC00 /* A2 + (-B2) * B7.  */,
338       0xFC00 /* A3 + (-B3) * B7.  */ };
339 
340 /* Expected results for vfmsq_laneq.  */
341 VECT_VAR_DECL (expected0_fms_laneq_static, hfloat, 16, 8) []
342   = { 0xDEA2 /* A0 + (-B0) * B0.  */,
343       0x5810 /* A1 + (-B1) * B0.  */,
344       0xDA82 /* A2 + (-B2) * B0.  */,
345       0xD53A /* A3 + (-B3) * B0.  */,
346       0x7C00 /* A4 + (-B4) * B0.  */,
347       0x724B /* A5 + (-B5) * B0.  */,
348       0x6286 /* A6 + (-B6) * B0.  */,
349       0xFC00 /* A7 + (-B7) * B0.  */ };
350 
351 VECT_VAR_DECL (expected1_fms_laneq_static, hfloat, 16, 8) []
352   = { 0x5C0D /* A0 + (-B0) * B1.  */,
353       0xD0EE /* A1 + (-B1) * B1.  */,
354       0x5274 /* A2 + (-B2) * B1.  */,
355       0x5026 /* A3 + (-B3) * B1.  */,
356       0x7C00 /* A4 + (-B4) * B1.  */,
357       0xEA41 /* A5 + (-B5) * B1.  */,
358       0xD5DA /* A6 + (-B6) * B1.  */,
359       0x7C00 /* A7 + (-B7) * B1.  */ };
360 
361 VECT_VAR_DECL (expected2_fms_laneq_static, hfloat, 16, 8) []
362   = { 0xD54E /* A0 + (-B0) * B2.  */,
363       0x51BA /* A1 + (-B1) * B2.  */,
364       0xD4F3 /* A2 + (-B2) * B2.  */,
365       0xCE66 /* A3 + (-B3) * B2.  */,
366       0x7C00 /* A4 + (-B4) * B2.  */,
367       0x6CC8 /* A5 + (-B5) * B2.  */,
368       0x5DD7 /* A6 + (-B6) * B2.  */,
369       0xFC00 /* A7 + (-B7) * B2.  */ };
370 
371 VECT_VAR_DECL (expected3_fms_laneq_static, hfloat, 16, 8) []
372   = { 0x4F70 /* A0 + (-B0) * B3.  */,
373       0x4C5A /* A1 + (-B1) * B3.  */,
374       0xD073 /* A2 + (-B2) * B3.  */,
375       0xC600 /* A3 + (-B3) * B3.  */,
376       0x7C00 /* A4 + (-B4) * B3.  */,
377       0x684B /* A5 + (-B5) * B3.  */,
378       0x5AD0 /* A6 + (-B6) * B3.  */,
379       0xFC00 /* A7 + (-B7) * B3.  */ };
380 
381 VECT_VAR_DECL (expected4_fms_laneq_static, hfloat, 16, 8) []
382   = { 0x5179 /* A0 + (-B0) * B4.  */,
383       0x4AF6 /* A1 + (-B1) * B4.  */,
384       0xCF91 /* A2 + (-B2) * B4.  */,
385       0xC334 /* A3 + (-B3) * B4.  */,
386       0x7C00 /* A4 + (-B4) * B4.  */,
387       0x674C /* A5 + (-B5) * B4.  */,
388       0x5A37 /* A6 + (-B6) * B4.  */,
389       0xFC00 /* A7 + (-B7) * B4.  */ };
390 
391 VECT_VAR_DECL (expected5_fms_laneq_static, hfloat, 16, 8) []
392   = { 0x725C /* A0 + (-B0) * B5.  */,
393       0xEA41 /* A1 + (-B1) * B5.  */,
394       0x6CCA /* A2 + (-B2) * B5.  */,
395       0x6853 /* A3 + (-B3) * B5.  */,
396       0x7C00 /* A4 + (-B4) * B5.  */,
397       0xFC00 /* A5 + (-B5) * B5.  */,
398       0xF441 /* A6 + (-B6) * B5.  */,
399       0x7C00 /* A7 + (-B7) * B5.  */ };
400 
401 VECT_VAR_DECL (expected6_fms_laneq_static, hfloat, 16, 8) []
402   = { 0x62C7 /* A0 + (-B0) * B6.  */,
403       0xD9F2 /* A1 + (-B1) * B6.  */,
404       0x5C6C /* A2 + (-B2) * B6.  */,
405       0x584A /* A3 + (-B3) * B6.  */,
406       0x7C00 /* A4 + (-B4) * B6.  */,
407       0xF447 /* A5 + (-B5) * B6.  */,
408       0xE330 /* A6 + (-B6) * B6.  */,
409       0x7C00 /* A7 + (-B7) * B6.  */ };
410 
411 VECT_VAR_DECL (expected7_fms_laneq_static, hfloat, 16, 8) []
412   = { 0xFC00 /* A0 + (-B0) * B7.  */,
413       0x7C00 /* A1 + (-B1) * B7.  */,
414       0xFC00 /* A2 + (-B2) * B7.  */,
415       0xFC00 /* A3 + (-B3) * B7.  */,
416       0x7C00 /* A4 + (-B4) * B7.  */,
417       0x7C00 /* A5 + (-B5) * B7.  */,
418       0x7C00 /* A6 + (-B6) * B7.  */,
419       0xFC00 /* A7 + (-B7) * B7.  */ };
420 
exec_vfmas_lane_f16(void)421 void exec_vfmas_lane_f16 (void)
422 {
423 #undef TEST_MSG
424 #define TEST_MSG "VFMA_LANE (FP16)"
425   clean_results ();
426 
427   DECL_VARIABLE(vsrc_1, float, 16, 4);
428   DECL_VARIABLE(vsrc_2, float, 16, 4);
429   VECT_VAR_DECL (buf_src_1, float, 16, 4) [] = {A0, A1, A2, A3};
430   VECT_VAR_DECL (buf_src_2, float, 16, 4) [] = {B0, B1, B2, B3};
431   VLOAD (vsrc_1, buf_src_1, , float, f, 16, 4);
432   VLOAD (vsrc_2, buf_src_2, , float, f, 16, 4);
433   DECL_VARIABLE (vector_res, float, 16, 4)
434     = vfma_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
435 		     VECT_VAR (vsrc_2, float, 16, 4),
436 		     VECT_VAR (vsrc_2, float, 16, 4), 0);
437   vst1_f16 (VECT_VAR (result, float, 16, 4),
438 	    VECT_VAR (vector_res, float, 16, 4));
439 
440   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected0_static, "");
441 
442   VECT_VAR (vector_res, float, 16, 4)
443     = vfma_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
444 		     VECT_VAR (vsrc_2, float, 16, 4),
445 		     VECT_VAR (vsrc_2, float, 16, 4), 1);
446   vst1_f16 (VECT_VAR (result, float, 16, 4),
447 	    VECT_VAR (vector_res, float, 16, 4));
448 
449   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected1_static, "");
450 
451   VECT_VAR (vector_res, float, 16, 4)
452     = vfma_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
453 		     VECT_VAR (vsrc_2, float, 16, 4),
454 		     VECT_VAR (vsrc_2, float, 16, 4), 2);
455   vst1_f16 (VECT_VAR (result, float, 16, 4),
456 	    VECT_VAR (vector_res, float, 16, 4));
457 
458   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected2_static, "");
459 
460   VECT_VAR (vector_res, float, 16, 4)
461     = vfma_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
462 		     VECT_VAR (vsrc_2, float, 16, 4),
463 		     VECT_VAR (vsrc_2, float, 16, 4), 3);
464   vst1_f16 (VECT_VAR (result, float, 16, 4),
465 	    VECT_VAR (vector_res, float, 16, 4));
466 
467   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected3_static, "");
468 
469 #undef TEST_MSG
470 #define TEST_MSG "VFMAQ_LANE (FP16)"
471   clean_results ();
472 
473   DECL_VARIABLE(vsrc_1, float, 16, 8);
474   DECL_VARIABLE(vsrc_2, float, 16, 8);
475   VECT_VAR_DECL (buf_src_1, float, 16, 8) [] = {A0, A1, A2, A3, A4, A5, A6, A7};
476   VECT_VAR_DECL (buf_src_2, float, 16, 8) [] = {B0, B1, B2, B3, B4, B5, B6, B7};
477   VLOAD (vsrc_1, buf_src_1, q, float, f, 16, 8);
478   VLOAD (vsrc_2, buf_src_2, q, float, f, 16, 8);
479   DECL_VARIABLE (vector_res, float, 16, 8)
480     = vfmaq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
481 		      VECT_VAR (vsrc_2, float, 16, 8),
482 		      VECT_VAR (vsrc_2, float, 16, 4), 0);
483   vst1q_f16 (VECT_VAR (result, float, 16, 8),
484 	     VECT_VAR (vector_res, float, 16, 8));
485 
486   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected0_static, "");
487 
488   VECT_VAR (vector_res, float, 16, 8)
489     = vfmaq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
490 		      VECT_VAR (vsrc_2, float, 16, 8),
491 		      VECT_VAR (vsrc_2, float, 16, 4), 1);
492   vst1q_f16 (VECT_VAR (result, float, 16, 8),
493 	     VECT_VAR (vector_res, float, 16, 8));
494 
495   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected1_static, "");
496 
497   VECT_VAR (vector_res, float, 16, 8)
498     = vfmaq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
499 		      VECT_VAR (vsrc_2, float, 16, 8),
500 		      VECT_VAR (vsrc_2, float, 16, 4), 2);
501   vst1q_f16 (VECT_VAR (result, float, 16, 8),
502 	     VECT_VAR (vector_res, float, 16, 8));
503 
504   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected2_static, "");
505 
506   VECT_VAR (vector_res, float, 16, 8)
507     = vfmaq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
508 		      VECT_VAR (vsrc_2, float, 16, 8),
509 		      VECT_VAR (vsrc_2, float, 16, 4), 3);
510   vst1q_f16 (VECT_VAR (result, float, 16, 8),
511 	     VECT_VAR (vector_res, float, 16, 8));
512 
513   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected3_static, "");
514 
515 #undef TEST_MSG
516 #define TEST_MSG "VFMA_LANEQ (FP16)"
517   clean_results ();
518 
519   DECL_VARIABLE(vsrc_3, float, 16, 8);
520   VECT_VAR_DECL (buf_src_3, float, 16, 8) [] = {B0, B1, B2, B3, B4, B5, B6, B7};
521   VLOAD (vsrc_3, buf_src_3, q, float, f, 16, 8);
522   VECT_VAR (vector_res, float, 16, 4)
523     = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
524 		      VECT_VAR (vsrc_2, float, 16, 4),
525 		      VECT_VAR (vsrc_3, float, 16, 8), 0);
526   vst1_f16 (VECT_VAR (result, float, 16, 4),
527 	    VECT_VAR (vector_res, float, 16, 4));
528 
529   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected0_laneq_static, "");
530 
531   VECT_VAR (vector_res, float, 16, 4)
532     = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
533 		      VECT_VAR (vsrc_2, float, 16, 4),
534 		      VECT_VAR (vsrc_3, float, 16, 8), 1);
535   vst1_f16 (VECT_VAR (result, float, 16, 4),
536 	    VECT_VAR (vector_res, float, 16, 4));
537 
538   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected1_laneq_static, "");
539 
540   VECT_VAR (vector_res, float, 16, 4)
541     = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
542 		      VECT_VAR (vsrc_2, float, 16, 4),
543 		      VECT_VAR (vsrc_3, float, 16, 8), 2);
544   vst1_f16 (VECT_VAR (result, float, 16, 4),
545 	    VECT_VAR (vector_res, float, 16, 4));
546 
547   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected2_laneq_static, "");
548 
549   VECT_VAR (vector_res, float, 16, 4)
550     = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
551 		      VECT_VAR (vsrc_2, float, 16, 4),
552 		      VECT_VAR (vsrc_3, float, 16, 8), 3);
553   vst1_f16 (VECT_VAR (result, float, 16, 4),
554 	    VECT_VAR (vector_res, float, 16, 4));
555 
556   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected3_laneq_static, "");
557 
558   VECT_VAR (vector_res, float, 16, 4)
559     = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
560 		      VECT_VAR (vsrc_2, float, 16, 4),
561 		      VECT_VAR (vsrc_3, float, 16, 8), 4);
562   vst1_f16 (VECT_VAR (result, float, 16, 4),
563 	    VECT_VAR (vector_res, float, 16, 4));
564 
565   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected4_laneq_static, "");
566 
567   VECT_VAR (vector_res, float, 16, 4)
568     = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
569 		      VECT_VAR (vsrc_2, float, 16, 4),
570 		      VECT_VAR (vsrc_3, float, 16, 8), 5);
571   vst1_f16 (VECT_VAR (result, float, 16, 4),
572 	    VECT_VAR (vector_res, float, 16, 4));
573 
574   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected5_laneq_static, "");
575 
576   VECT_VAR (vector_res, float, 16, 4)
577     = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
578 		      VECT_VAR (vsrc_2, float, 16, 4),
579 		      VECT_VAR (vsrc_3, float, 16, 8), 6);
580   vst1_f16 (VECT_VAR (result, float, 16, 4),
581 	    VECT_VAR (vector_res, float, 16, 4));
582 
583   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected6_laneq_static, "");
584 
585   VECT_VAR (vector_res, float, 16, 4)
586     = vfma_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
587 		      VECT_VAR (vsrc_2, float, 16, 4),
588 		      VECT_VAR (vsrc_3, float, 16, 8), 7);
589   vst1_f16 (VECT_VAR (result, float, 16, 4),
590 	    VECT_VAR (vector_res, float, 16, 4));
591 
592   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected7_laneq_static, "");
593 
594 #undef TEST_MSG
595 #define TEST_MSG "VFMAQ_LANEQ (FP16)"
596   clean_results ();
597 
598   VECT_VAR (vector_res, float, 16, 8)
599     = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
600 		       VECT_VAR (vsrc_2, float, 16, 8),
601 		       VECT_VAR (vsrc_3, float, 16, 8), 0);
602   vst1q_f16 (VECT_VAR (result, float, 16, 8),
603 	     VECT_VAR (vector_res, float, 16, 8));
604 
605   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected0_laneq_static, "");
606 
607   VECT_VAR (vector_res, float, 16, 8)
608     = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
609 		       VECT_VAR (vsrc_2, float, 16, 8),
610 		       VECT_VAR (vsrc_3, float, 16, 8), 1);
611   vst1q_f16 (VECT_VAR (result, float, 16, 8),
612 	     VECT_VAR (vector_res, float, 16, 8));
613 
614   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected1_laneq_static, "");
615 
616   VECT_VAR (vector_res, float, 16, 8)
617     = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
618 		       VECT_VAR (vsrc_2, float, 16, 8),
619 		       VECT_VAR (vsrc_3, float, 16, 8), 2);
620   vst1q_f16 (VECT_VAR (result, float, 16, 8),
621 	     VECT_VAR (vector_res, float, 16, 8));
622 
623   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected2_laneq_static, "");
624 
625   VECT_VAR (vector_res, float, 16, 8)
626     = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
627 		       VECT_VAR (vsrc_2, float, 16, 8),
628 		       VECT_VAR (vsrc_3, float, 16, 8), 3);
629   vst1q_f16 (VECT_VAR (result, float, 16, 8),
630 	     VECT_VAR (vector_res, float, 16, 8));
631 
632   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected3_laneq_static, "");
633 
634   VECT_VAR (vector_res, float, 16, 8)
635     = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
636 		       VECT_VAR (vsrc_2, float, 16, 8),
637 		       VECT_VAR (vsrc_3, float, 16, 8), 4);
638   vst1q_f16 (VECT_VAR (result, float, 16, 8),
639 	     VECT_VAR (vector_res, float, 16, 8));
640 
641   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected4_laneq_static, "");
642 
643   VECT_VAR (vector_res, float, 16, 8)
644     = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
645 		       VECT_VAR (vsrc_2, float, 16, 8),
646 		       VECT_VAR (vsrc_3, float, 16, 8), 5);
647   vst1q_f16 (VECT_VAR (result, float, 16, 8),
648 	     VECT_VAR (vector_res, float, 16, 8));
649 
650   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected5_laneq_static, "");
651 
652   VECT_VAR (vector_res, float, 16, 8)
653     = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
654 		       VECT_VAR (vsrc_2, float, 16, 8),
655 		       VECT_VAR (vsrc_3, float, 16, 8), 6);
656   vst1q_f16 (VECT_VAR (result, float, 16, 8),
657 	     VECT_VAR (vector_res, float, 16, 8));
658 
659   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected6_laneq_static, "");
660 
661   VECT_VAR (vector_res, float, 16, 8)
662     = vfmaq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
663 		       VECT_VAR (vsrc_2, float, 16, 8),
664 		       VECT_VAR (vsrc_3, float, 16, 8), 7);
665   vst1q_f16 (VECT_VAR (result, float, 16, 8),
666 	     VECT_VAR (vector_res, float, 16, 8));
667 
668   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected7_laneq_static, "");
669 
670 #undef TEST_MSG
671 #define TEST_MSG "VFMS_LANE (FP16)"
672   clean_results ();
673 
674   VECT_VAR (vector_res, float, 16, 4)
675     = vfms_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
676 		     VECT_VAR (vsrc_2, float, 16, 4),
677 		     VECT_VAR (vsrc_2, float, 16, 4), 0);
678   vst1_f16 (VECT_VAR (result, float, 16, 4),
679 	    VECT_VAR (vector_res, float, 16, 4));
680 
681   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected0_fms_static, "");
682 
683   VECT_VAR (vector_res, float, 16, 4)
684     = vfms_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
685 		     VECT_VAR (vsrc_2, float, 16, 4),
686 		     VECT_VAR (vsrc_2, float, 16, 4), 1);
687   vst1_f16 (VECT_VAR (result, float, 16, 4),
688 	    VECT_VAR (vector_res, float, 16, 4));
689 
690   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected1_fms_static, "");
691 
692   VECT_VAR (vector_res, float, 16, 4)
693     = vfms_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
694 		     VECT_VAR (vsrc_2, float, 16, 4),
695 		     VECT_VAR (vsrc_2, float, 16, 4), 2);
696   vst1_f16 (VECT_VAR (result, float, 16, 4),
697 	    VECT_VAR (vector_res, float, 16, 4));
698 
699   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected2_fms_static, "");
700 
701   VECT_VAR (vector_res, float, 16, 4)
702     = vfms_lane_f16 (VECT_VAR (vsrc_1, float, 16, 4),
703 		     VECT_VAR (vsrc_2, float, 16, 4),
704 		     VECT_VAR (vsrc_2, float, 16, 4), 3);
705   vst1_f16 (VECT_VAR (result, float, 16, 4),
706 	    VECT_VAR (vector_res, float, 16, 4));
707 
708   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected3_fms_static, "");
709 
710 #undef TEST_MSG
711 #define TEST_MSG "VFMSQ_LANE (FP16)"
712   clean_results ();
713 
714   VECT_VAR (vector_res, float, 16, 8)
715     = vfmsq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
716 		      VECT_VAR (vsrc_2, float, 16, 8),
717 		      VECT_VAR (vsrc_2, float, 16, 4), 0);
718   vst1q_f16 (VECT_VAR (result, float, 16, 8),
719 	     VECT_VAR (vector_res, float, 16, 8));
720 
721   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected0_fms_static, "");
722 
723   VECT_VAR (vector_res, float, 16, 8)
724     = vfmsq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
725 		      VECT_VAR (vsrc_2, float, 16, 8),
726 		      VECT_VAR (vsrc_2, float, 16, 4), 1);
727   vst1q_f16 (VECT_VAR (result, float, 16, 8),
728 	     VECT_VAR (vector_res, float, 16, 8));
729 
730   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected1_fms_static, "");
731 
732   VECT_VAR (vector_res, float, 16, 8)
733     = vfmsq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
734 		      VECT_VAR (vsrc_2, float, 16, 8),
735 		      VECT_VAR (vsrc_2, float, 16, 4), 2);
736   vst1q_f16 (VECT_VAR (result, float, 16, 8),
737 	     VECT_VAR (vector_res, float, 16, 8));
738 
739   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected2_fms_static, "");
740 
741   VECT_VAR (vector_res, float, 16, 8)
742     = vfmsq_lane_f16 (VECT_VAR (vsrc_1, float, 16, 8),
743 		      VECT_VAR (vsrc_2, float, 16, 8),
744 		      VECT_VAR (vsrc_2, float, 16, 4), 3);
745   vst1q_f16 (VECT_VAR (result, float, 16, 8),
746 	     VECT_VAR (vector_res, float, 16, 8));
747 
748   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected3_fms_static, "");
749 
750 #undef TEST_MSG
751 #define TEST_MSG "VFMS_LANEQ (FP16)"
752   clean_results ();
753 
754   VECT_VAR (vector_res, float, 16, 4)
755     = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
756 		      VECT_VAR (vsrc_2, float, 16, 4),
757 		      VECT_VAR (vsrc_3, float, 16, 8), 0);
758   vst1_f16 (VECT_VAR (result, float, 16, 4),
759 	    VECT_VAR (vector_res, float, 16, 4));
760 
761   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected0_fms_laneq_static, "");
762 
763   VECT_VAR (vector_res, float, 16, 4)
764     = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
765 		      VECT_VAR (vsrc_2, float, 16, 4),
766 		      VECT_VAR (vsrc_3, float, 16, 8), 1);
767   vst1_f16 (VECT_VAR (result, float, 16, 4),
768 	    VECT_VAR (vector_res, float, 16, 4));
769 
770   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected1_fms_laneq_static, "");
771 
772   VECT_VAR (vector_res, float, 16, 4)
773     = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
774 		      VECT_VAR (vsrc_2, float, 16, 4),
775 		      VECT_VAR (vsrc_3, float, 16, 8), 2);
776   vst1_f16 (VECT_VAR (result, float, 16, 4),
777 	    VECT_VAR (vector_res, float, 16, 4));
778 
779   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected2_fms_laneq_static, "");
780 
781   VECT_VAR (vector_res, float, 16, 4)
782     = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
783 		      VECT_VAR (vsrc_2, float, 16, 4),
784 		      VECT_VAR (vsrc_3, float, 16, 8), 3);
785   vst1_f16 (VECT_VAR (result, float, 16, 4),
786 	    VECT_VAR (vector_res, float, 16, 4));
787 
788   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected3_fms_laneq_static, "");
789 
790   VECT_VAR (vector_res, float, 16, 4)
791     = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
792 		      VECT_VAR (vsrc_2, float, 16, 4),
793 		      VECT_VAR (vsrc_3, float, 16, 8), 4);
794   vst1_f16 (VECT_VAR (result, float, 16, 4),
795 	    VECT_VAR (vector_res, float, 16, 4));
796 
797   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected4_fms_laneq_static, "");
798 
799   VECT_VAR (vector_res, float, 16, 4)
800     = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
801 		      VECT_VAR (vsrc_2, float, 16, 4),
802 		      VECT_VAR (vsrc_3, float, 16, 8), 5);
803   vst1_f16 (VECT_VAR (result, float, 16, 4),
804 	    VECT_VAR (vector_res, float, 16, 4));
805 
806   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected5_fms_laneq_static, "");
807 
808   VECT_VAR (vector_res, float, 16, 4)
809     = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
810 		      VECT_VAR (vsrc_2, float, 16, 4),
811 		      VECT_VAR (vsrc_3, float, 16, 8), 6);
812   vst1_f16 (VECT_VAR (result, float, 16, 4),
813 	    VECT_VAR (vector_res, float, 16, 4));
814 
815   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected6_fms_laneq_static, "");
816 
817   VECT_VAR (vector_res, float, 16, 4)
818     = vfms_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 4),
819 		      VECT_VAR (vsrc_2, float, 16, 4),
820 		      VECT_VAR (vsrc_3, float, 16, 8), 7);
821   vst1_f16 (VECT_VAR (result, float, 16, 4),
822 	    VECT_VAR (vector_res, float, 16, 4));
823 
824   CHECK_FP (TEST_MSG, float, 16, 4, PRIx16, expected7_fms_laneq_static, "");
825 
826 #undef TEST_MSG
827 #define TEST_MSG "VFMSQ_LANEQ (FP16)"
828   clean_results ();
829 
830   VECT_VAR (vector_res, float, 16, 8)
831     = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
832 		       VECT_VAR (vsrc_2, float, 16, 8),
833 		       VECT_VAR (vsrc_3, float, 16, 8), 0);
834   vst1q_f16 (VECT_VAR (result, float, 16, 8),
835 	     VECT_VAR (vector_res, float, 16, 8));
836 
837   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected0_fms_laneq_static, "");
838 
839   VECT_VAR (vector_res, float, 16, 8)
840     = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
841 		       VECT_VAR (vsrc_2, float, 16, 8),
842 		       VECT_VAR (vsrc_3, float, 16, 8), 1);
843   vst1q_f16 (VECT_VAR (result, float, 16, 8),
844 	     VECT_VAR (vector_res, float, 16, 8));
845 
846   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected1_fms_laneq_static, "");
847 
848   VECT_VAR (vector_res, float, 16, 8)
849     = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
850 		       VECT_VAR (vsrc_2, float, 16, 8),
851 		       VECT_VAR (vsrc_3, float, 16, 8), 2);
852   vst1q_f16 (VECT_VAR (result, float, 16, 8),
853 	     VECT_VAR (vector_res, float, 16, 8));
854 
855   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected2_fms_laneq_static, "");
856 
857   VECT_VAR (vector_res, float, 16, 8)
858     = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
859 		       VECT_VAR (vsrc_2, float, 16, 8),
860 		       VECT_VAR (vsrc_3, float, 16, 8), 3);
861   vst1q_f16 (VECT_VAR (result, float, 16, 8),
862 	     VECT_VAR (vector_res, float, 16, 8));
863 
864   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected3_fms_laneq_static, "");
865 
866   VECT_VAR (vector_res, float, 16, 8)
867     = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
868 		       VECT_VAR (vsrc_2, float, 16, 8),
869 		       VECT_VAR (vsrc_3, float, 16, 8), 4);
870   vst1q_f16 (VECT_VAR (result, float, 16, 8),
871 	     VECT_VAR (vector_res, float, 16, 8));
872 
873   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected4_fms_laneq_static, "");
874 
875   VECT_VAR (vector_res, float, 16, 8)
876     = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
877 		       VECT_VAR (vsrc_2, float, 16, 8),
878 		       VECT_VAR (vsrc_3, float, 16, 8), 5);
879   vst1q_f16 (VECT_VAR (result, float, 16, 8),
880 	     VECT_VAR (vector_res, float, 16, 8));
881 
882   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected5_fms_laneq_static, "");
883 
884   VECT_VAR (vector_res, float, 16, 8)
885     = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
886 		       VECT_VAR (vsrc_2, float, 16, 8),
887 		       VECT_VAR (vsrc_3, float, 16, 8), 6);
888   vst1q_f16 (VECT_VAR (result, float, 16, 8),
889 	     VECT_VAR (vector_res, float, 16, 8));
890 
891   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected6_fms_laneq_static, "");
892 
893   VECT_VAR (vector_res, float, 16, 8)
894     = vfmsq_laneq_f16 (VECT_VAR (vsrc_1, float, 16, 8),
895 		       VECT_VAR (vsrc_2, float, 16, 8),
896 		       VECT_VAR (vsrc_3, float, 16, 8), 7);
897   vst1q_f16 (VECT_VAR (result, float, 16, 8),
898 	     VECT_VAR (vector_res, float, 16, 8));
899 
900   CHECK_FP (TEST_MSG, float, 16, 8, PRIx16, expected7_fms_laneq_static, "");
901 }
902 
903 int
main(void)904 main (void)
905 {
906   exec_vfmas_lane_f16 ();
907   return 0;
908 }
909