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