ETISS 0.8.0
Extendable Translating Instruction Set Simulator (version 0.8.0)
arm_fp16.h
Go to the documentation of this file.
1 /*===---- arm_fp16.h - ARM FP16 intrinsics ---------------------------------===
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining a copy
4  * of this software and associated documentation files (the "Software"), to deal
5  * in the Software without restriction, including without limitation the rights
6  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7  * copies of the Software, and to permit persons to whom the Software is
8  * furnished to do so, subject to the following conditions:
9  *
10  * The above copyright notice and this permission notice shall be included in
11  * all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19  * THE SOFTWARE.
20  *
21  *===-----------------------------------------------------------------------===
22  */
23 
24 #ifndef __ARM_FP16_H
25 #define __ARM_FP16_H
26 
27 #include <stdint.h>
28 
29 typedef __fp16 float16_t;
30 #define __ai static __inline__ __attribute__((__always_inline__, __nodebug__))
31 
32 #if defined(__ARM_FEATURE_FP16_SCALAR_ARITHMETIC) && defined(__aarch64__)
33 #define vabdh_f16(__p0, __p1) __extension__ ({ \
34  float16_t __s0 = __p0; \
35  float16_t __s1 = __p1; \
36  float16_t __ret; \
37  __ret = (float16_t) __builtin_neon_vabdh_f16(__s0, __s1); \
38  __ret; \
39 })
40 #define vabsh_f16(__p0) __extension__ ({ \
41  float16_t __s0 = __p0; \
42  float16_t __ret; \
43  __ret = (float16_t) __builtin_neon_vabsh_f16(__s0); \
44  __ret; \
45 })
46 #define vaddh_f16(__p0, __p1) __extension__ ({ \
47  float16_t __s0 = __p0; \
48  float16_t __s1 = __p1; \
49  float16_t __ret; \
50  __ret = (float16_t) __builtin_neon_vaddh_f16(__s0, __s1); \
51  __ret; \
52 })
53 #define vcageh_f16(__p0, __p1) __extension__ ({ \
54  float16_t __s0 = __p0; \
55  float16_t __s1 = __p1; \
56  uint16_t __ret; \
57  __ret = (uint16_t) __builtin_neon_vcageh_f16(__s0, __s1); \
58  __ret; \
59 })
60 #define vcagth_f16(__p0, __p1) __extension__ ({ \
61  float16_t __s0 = __p0; \
62  float16_t __s1 = __p1; \
63  uint16_t __ret; \
64  __ret = (uint16_t) __builtin_neon_vcagth_f16(__s0, __s1); \
65  __ret; \
66 })
67 #define vcaleh_f16(__p0, __p1) __extension__ ({ \
68  float16_t __s0 = __p0; \
69  float16_t __s1 = __p1; \
70  uint16_t __ret; \
71  __ret = (uint16_t) __builtin_neon_vcaleh_f16(__s0, __s1); \
72  __ret; \
73 })
74 #define vcalth_f16(__p0, __p1) __extension__ ({ \
75  float16_t __s0 = __p0; \
76  float16_t __s1 = __p1; \
77  uint16_t __ret; \
78  __ret = (uint16_t) __builtin_neon_vcalth_f16(__s0, __s1); \
79  __ret; \
80 })
81 #define vceqh_f16(__p0, __p1) __extension__ ({ \
82  float16_t __s0 = __p0; \
83  float16_t __s1 = __p1; \
84  uint16_t __ret; \
85  __ret = (uint16_t) __builtin_neon_vceqh_f16(__s0, __s1); \
86  __ret; \
87 })
88 #define vceqzh_f16(__p0) __extension__ ({ \
89  float16_t __s0 = __p0; \
90  uint16_t __ret; \
91  __ret = (uint16_t) __builtin_neon_vceqzh_f16(__s0); \
92  __ret; \
93 })
94 #define vcgeh_f16(__p0, __p1) __extension__ ({ \
95  float16_t __s0 = __p0; \
96  float16_t __s1 = __p1; \
97  uint16_t __ret; \
98  __ret = (uint16_t) __builtin_neon_vcgeh_f16(__s0, __s1); \
99  __ret; \
100 })
101 #define vcgezh_f16(__p0) __extension__ ({ \
102  float16_t __s0 = __p0; \
103  uint16_t __ret; \
104  __ret = (uint16_t) __builtin_neon_vcgezh_f16(__s0); \
105  __ret; \
106 })
107 #define vcgth_f16(__p0, __p1) __extension__ ({ \
108  float16_t __s0 = __p0; \
109  float16_t __s1 = __p1; \
110  uint16_t __ret; \
111  __ret = (uint16_t) __builtin_neon_vcgth_f16(__s0, __s1); \
112  __ret; \
113 })
114 #define vcgtzh_f16(__p0) __extension__ ({ \
115  float16_t __s0 = __p0; \
116  uint16_t __ret; \
117  __ret = (uint16_t) __builtin_neon_vcgtzh_f16(__s0); \
118  __ret; \
119 })
120 #define vcleh_f16(__p0, __p1) __extension__ ({ \
121  float16_t __s0 = __p0; \
122  float16_t __s1 = __p1; \
123  uint16_t __ret; \
124  __ret = (uint16_t) __builtin_neon_vcleh_f16(__s0, __s1); \
125  __ret; \
126 })
127 #define vclezh_f16(__p0) __extension__ ({ \
128  float16_t __s0 = __p0; \
129  uint16_t __ret; \
130  __ret = (uint16_t) __builtin_neon_vclezh_f16(__s0); \
131  __ret; \
132 })
133 #define vclth_f16(__p0, __p1) __extension__ ({ \
134  float16_t __s0 = __p0; \
135  float16_t __s1 = __p1; \
136  uint16_t __ret; \
137  __ret = (uint16_t) __builtin_neon_vclth_f16(__s0, __s1); \
138  __ret; \
139 })
140 #define vcltzh_f16(__p0) __extension__ ({ \
141  float16_t __s0 = __p0; \
142  uint16_t __ret; \
143  __ret = (uint16_t) __builtin_neon_vcltzh_f16(__s0); \
144  __ret; \
145 })
146 #define vcvth_n_s16_f16(__p0, __p1) __extension__ ({ \
147  float16_t __s0 = __p0; \
148  int16_t __ret; \
149  __ret = (int16_t) __builtin_neon_vcvth_n_s16_f16(__s0, __p1); \
150  __ret; \
151 })
152 #define vcvth_n_s32_f16(__p0, __p1) __extension__ ({ \
153  float16_t __s0 = __p0; \
154  int32_t __ret; \
155  __ret = (int32_t) __builtin_neon_vcvth_n_s32_f16(__s0, __p1); \
156  __ret; \
157 })
158 #define vcvth_n_s64_f16(__p0, __p1) __extension__ ({ \
159  float16_t __s0 = __p0; \
160  int64_t __ret; \
161  __ret = (int64_t) __builtin_neon_vcvth_n_s64_f16(__s0, __p1); \
162  __ret; \
163 })
164 #define vcvth_n_u16_f16(__p0, __p1) __extension__ ({ \
165  float16_t __s0 = __p0; \
166  uint16_t __ret; \
167  __ret = (uint16_t) __builtin_neon_vcvth_n_u16_f16(__s0, __p1); \
168  __ret; \
169 })
170 #define vcvth_n_u32_f16(__p0, __p1) __extension__ ({ \
171  float16_t __s0 = __p0; \
172  uint32_t __ret; \
173  __ret = (uint32_t) __builtin_neon_vcvth_n_u32_f16(__s0, __p1); \
174  __ret; \
175 })
176 #define vcvth_n_u64_f16(__p0, __p1) __extension__ ({ \
177  float16_t __s0 = __p0; \
178  uint64_t __ret; \
179  __ret = (uint64_t) __builtin_neon_vcvth_n_u64_f16(__s0, __p1); \
180  __ret; \
181 })
182 #define vcvth_s16_f16(__p0) __extension__ ({ \
183  float16_t __s0 = __p0; \
184  int16_t __ret; \
185  __ret = (int16_t) __builtin_neon_vcvth_s16_f16(__s0); \
186  __ret; \
187 })
188 #define vcvth_s32_f16(__p0) __extension__ ({ \
189  float16_t __s0 = __p0; \
190  int32_t __ret; \
191  __ret = (int32_t) __builtin_neon_vcvth_s32_f16(__s0); \
192  __ret; \
193 })
194 #define vcvth_s64_f16(__p0) __extension__ ({ \
195  float16_t __s0 = __p0; \
196  int64_t __ret; \
197  __ret = (int64_t) __builtin_neon_vcvth_s64_f16(__s0); \
198  __ret; \
199 })
200 #define vcvth_u16_f16(__p0) __extension__ ({ \
201  float16_t __s0 = __p0; \
202  uint16_t __ret; \
203  __ret = (uint16_t) __builtin_neon_vcvth_u16_f16(__s0); \
204  __ret; \
205 })
206 #define vcvth_u32_f16(__p0) __extension__ ({ \
207  float16_t __s0 = __p0; \
208  uint32_t __ret; \
209  __ret = (uint32_t) __builtin_neon_vcvth_u32_f16(__s0); \
210  __ret; \
211 })
212 #define vcvth_u64_f16(__p0) __extension__ ({ \
213  float16_t __s0 = __p0; \
214  uint64_t __ret; \
215  __ret = (uint64_t) __builtin_neon_vcvth_u64_f16(__s0); \
216  __ret; \
217 })
218 #define vcvtah_s16_f16(__p0) __extension__ ({ \
219  float16_t __s0 = __p0; \
220  int16_t __ret; \
221  __ret = (int16_t) __builtin_neon_vcvtah_s16_f16(__s0); \
222  __ret; \
223 })
224 #define vcvtah_s32_f16(__p0) __extension__ ({ \
225  float16_t __s0 = __p0; \
226  int32_t __ret; \
227  __ret = (int32_t) __builtin_neon_vcvtah_s32_f16(__s0); \
228  __ret; \
229 })
230 #define vcvtah_s64_f16(__p0) __extension__ ({ \
231  float16_t __s0 = __p0; \
232  int64_t __ret; \
233  __ret = (int64_t) __builtin_neon_vcvtah_s64_f16(__s0); \
234  __ret; \
235 })
236 #define vcvtah_u16_f16(__p0) __extension__ ({ \
237  float16_t __s0 = __p0; \
238  uint16_t __ret; \
239  __ret = (uint16_t) __builtin_neon_vcvtah_u16_f16(__s0); \
240  __ret; \
241 })
242 #define vcvtah_u32_f16(__p0) __extension__ ({ \
243  float16_t __s0 = __p0; \
244  uint32_t __ret; \
245  __ret = (uint32_t) __builtin_neon_vcvtah_u32_f16(__s0); \
246  __ret; \
247 })
248 #define vcvtah_u64_f16(__p0) __extension__ ({ \
249  float16_t __s0 = __p0; \
250  uint64_t __ret; \
251  __ret = (uint64_t) __builtin_neon_vcvtah_u64_f16(__s0); \
252  __ret; \
253 })
254 #define vcvth_f16_u16(__p0) __extension__ ({ \
255  uint16_t __s0 = __p0; \
256  float16_t __ret; \
257  __ret = (float16_t) __builtin_neon_vcvth_f16_u16(__s0); \
258  __ret; \
259 })
260 #define vcvth_f16_s16(__p0) __extension__ ({ \
261  int16_t __s0 = __p0; \
262  float16_t __ret; \
263  __ret = (float16_t) __builtin_neon_vcvth_f16_s16(__s0); \
264  __ret; \
265 })
266 #define vcvth_f16_u32(__p0) __extension__ ({ \
267  uint32_t __s0 = __p0; \
268  float16_t __ret; \
269  __ret = (float16_t) __builtin_neon_vcvth_f16_u32(__s0); \
270  __ret; \
271 })
272 #define vcvth_f16_s32(__p0) __extension__ ({ \
273  int32_t __s0 = __p0; \
274  float16_t __ret; \
275  __ret = (float16_t) __builtin_neon_vcvth_f16_s32(__s0); \
276  __ret; \
277 })
278 #define vcvth_f16_u64(__p0) __extension__ ({ \
279  uint64_t __s0 = __p0; \
280  float16_t __ret; \
281  __ret = (float16_t) __builtin_neon_vcvth_f16_u64(__s0); \
282  __ret; \
283 })
284 #define vcvth_f16_s64(__p0) __extension__ ({ \
285  int64_t __s0 = __p0; \
286  float16_t __ret; \
287  __ret = (float16_t) __builtin_neon_vcvth_f16_s64(__s0); \
288  __ret; \
289 })
290 #define vcvth_n_f16_u32(__p0, __p1) __extension__ ({ \
291  uint32_t __s0 = __p0; \
292  float16_t __ret; \
293  __ret = (float16_t) __builtin_neon_vcvth_n_f16_u32(__s0, __p1); \
294  __ret; \
295 })
296 #define vcvth_n_f16_s32(__p0, __p1) __extension__ ({ \
297  int32_t __s0 = __p0; \
298  float16_t __ret; \
299  __ret = (float16_t) __builtin_neon_vcvth_n_f16_s32(__s0, __p1); \
300  __ret; \
301 })
302 #define vcvth_n_f16_u64(__p0, __p1) __extension__ ({ \
303  uint64_t __s0 = __p0; \
304  float16_t __ret; \
305  __ret = (float16_t) __builtin_neon_vcvth_n_f16_u64(__s0, __p1); \
306  __ret; \
307 })
308 #define vcvth_n_f16_s64(__p0, __p1) __extension__ ({ \
309  int64_t __s0 = __p0; \
310  float16_t __ret; \
311  __ret = (float16_t) __builtin_neon_vcvth_n_f16_s64(__s0, __p1); \
312  __ret; \
313 })
314 #define vcvth_n_f16_u16(__p0, __p1) __extension__ ({ \
315  uint16_t __s0 = __p0; \
316  float16_t __ret; \
317  __ret = (float16_t) __builtin_neon_vcvth_n_f16_u16(__s0, __p1); \
318  __ret; \
319 })
320 #define vcvth_n_f16_s16(__p0, __p1) __extension__ ({ \
321  int16_t __s0 = __p0; \
322  float16_t __ret; \
323  __ret = (float16_t) __builtin_neon_vcvth_n_f16_s16(__s0, __p1); \
324  __ret; \
325 })
326 #define vcvtmh_s16_f16(__p0) __extension__ ({ \
327  float16_t __s0 = __p0; \
328  int16_t __ret; \
329  __ret = (int16_t) __builtin_neon_vcvtmh_s16_f16(__s0); \
330  __ret; \
331 })
332 #define vcvtmh_s32_f16(__p0) __extension__ ({ \
333  float16_t __s0 = __p0; \
334  int32_t __ret; \
335  __ret = (int32_t) __builtin_neon_vcvtmh_s32_f16(__s0); \
336  __ret; \
337 })
338 #define vcvtmh_s64_f16(__p0) __extension__ ({ \
339  float16_t __s0 = __p0; \
340  int64_t __ret; \
341  __ret = (int64_t) __builtin_neon_vcvtmh_s64_f16(__s0); \
342  __ret; \
343 })
344 #define vcvtmh_u16_f16(__p0) __extension__ ({ \
345  float16_t __s0 = __p0; \
346  uint16_t __ret; \
347  __ret = (uint16_t) __builtin_neon_vcvtmh_u16_f16(__s0); \
348  __ret; \
349 })
350 #define vcvtmh_u32_f16(__p0) __extension__ ({ \
351  float16_t __s0 = __p0; \
352  uint32_t __ret; \
353  __ret = (uint32_t) __builtin_neon_vcvtmh_u32_f16(__s0); \
354  __ret; \
355 })
356 #define vcvtmh_u64_f16(__p0) __extension__ ({ \
357  float16_t __s0 = __p0; \
358  uint64_t __ret; \
359  __ret = (uint64_t) __builtin_neon_vcvtmh_u64_f16(__s0); \
360  __ret; \
361 })
362 #define vcvtnh_s16_f16(__p0) __extension__ ({ \
363  float16_t __s0 = __p0; \
364  int16_t __ret; \
365  __ret = (int16_t) __builtin_neon_vcvtnh_s16_f16(__s0); \
366  __ret; \
367 })
368 #define vcvtnh_s32_f16(__p0) __extension__ ({ \
369  float16_t __s0 = __p0; \
370  int32_t __ret; \
371  __ret = (int32_t) __builtin_neon_vcvtnh_s32_f16(__s0); \
372  __ret; \
373 })
374 #define vcvtnh_s64_f16(__p0) __extension__ ({ \
375  float16_t __s0 = __p0; \
376  int64_t __ret; \
377  __ret = (int64_t) __builtin_neon_vcvtnh_s64_f16(__s0); \
378  __ret; \
379 })
380 #define vcvtnh_u16_f16(__p0) __extension__ ({ \
381  float16_t __s0 = __p0; \
382  uint16_t __ret; \
383  __ret = (uint16_t) __builtin_neon_vcvtnh_u16_f16(__s0); \
384  __ret; \
385 })
386 #define vcvtnh_u32_f16(__p0) __extension__ ({ \
387  float16_t __s0 = __p0; \
388  uint32_t __ret; \
389  __ret = (uint32_t) __builtin_neon_vcvtnh_u32_f16(__s0); \
390  __ret; \
391 })
392 #define vcvtnh_u64_f16(__p0) __extension__ ({ \
393  float16_t __s0 = __p0; \
394  uint64_t __ret; \
395  __ret = (uint64_t) __builtin_neon_vcvtnh_u64_f16(__s0); \
396  __ret; \
397 })
398 #define vcvtph_s16_f16(__p0) __extension__ ({ \
399  float16_t __s0 = __p0; \
400  int16_t __ret; \
401  __ret = (int16_t) __builtin_neon_vcvtph_s16_f16(__s0); \
402  __ret; \
403 })
404 #define vcvtph_s32_f16(__p0) __extension__ ({ \
405  float16_t __s0 = __p0; \
406  int32_t __ret; \
407  __ret = (int32_t) __builtin_neon_vcvtph_s32_f16(__s0); \
408  __ret; \
409 })
410 #define vcvtph_s64_f16(__p0) __extension__ ({ \
411  float16_t __s0 = __p0; \
412  int64_t __ret; \
413  __ret = (int64_t) __builtin_neon_vcvtph_s64_f16(__s0); \
414  __ret; \
415 })
416 #define vcvtph_u16_f16(__p0) __extension__ ({ \
417  float16_t __s0 = __p0; \
418  uint16_t __ret; \
419  __ret = (uint16_t) __builtin_neon_vcvtph_u16_f16(__s0); \
420  __ret; \
421 })
422 #define vcvtph_u32_f16(__p0) __extension__ ({ \
423  float16_t __s0 = __p0; \
424  uint32_t __ret; \
425  __ret = (uint32_t) __builtin_neon_vcvtph_u32_f16(__s0); \
426  __ret; \
427 })
428 #define vcvtph_u64_f16(__p0) __extension__ ({ \
429  float16_t __s0 = __p0; \
430  uint64_t __ret; \
431  __ret = (uint64_t) __builtin_neon_vcvtph_u64_f16(__s0); \
432  __ret; \
433 })
434 #define vdivh_f16(__p0, __p1) __extension__ ({ \
435  float16_t __s0 = __p0; \
436  float16_t __s1 = __p1; \
437  float16_t __ret; \
438  __ret = (float16_t) __builtin_neon_vdivh_f16(__s0, __s1); \
439  __ret; \
440 })
441 #define vfmah_f16(__p0, __p1, __p2) __extension__ ({ \
442  float16_t __s0 = __p0; \
443  float16_t __s1 = __p1; \
444  float16_t __s2 = __p2; \
445  float16_t __ret; \
446  __ret = (float16_t) __builtin_neon_vfmah_f16(__s0, __s1, __s2); \
447  __ret; \
448 })
449 #define vfmsh_f16(__p0, __p1, __p2) __extension__ ({ \
450  float16_t __s0 = __p0; \
451  float16_t __s1 = __p1; \
452  float16_t __s2 = __p2; \
453  float16_t __ret; \
454  __ret = (float16_t) __builtin_neon_vfmsh_f16(__s0, __s1, __s2); \
455  __ret; \
456 })
457 #define vmaxh_f16(__p0, __p1) __extension__ ({ \
458  float16_t __s0 = __p0; \
459  float16_t __s1 = __p1; \
460  float16_t __ret; \
461  __ret = (float16_t) __builtin_neon_vmaxh_f16(__s0, __s1); \
462  __ret; \
463 })
464 #define vmaxnmh_f16(__p0, __p1) __extension__ ({ \
465  float16_t __s0 = __p0; \
466  float16_t __s1 = __p1; \
467  float16_t __ret; \
468  __ret = (float16_t) __builtin_neon_vmaxnmh_f16(__s0, __s1); \
469  __ret; \
470 })
471 #define vminh_f16(__p0, __p1) __extension__ ({ \
472  float16_t __s0 = __p0; \
473  float16_t __s1 = __p1; \
474  float16_t __ret; \
475  __ret = (float16_t) __builtin_neon_vminh_f16(__s0, __s1); \
476  __ret; \
477 })
478 #define vminnmh_f16(__p0, __p1) __extension__ ({ \
479  float16_t __s0 = __p0; \
480  float16_t __s1 = __p1; \
481  float16_t __ret; \
482  __ret = (float16_t) __builtin_neon_vminnmh_f16(__s0, __s1); \
483  __ret; \
484 })
485 #define vmulh_f16(__p0, __p1) __extension__ ({ \
486  float16_t __s0 = __p0; \
487  float16_t __s1 = __p1; \
488  float16_t __ret; \
489  __ret = (float16_t) __builtin_neon_vmulh_f16(__s0, __s1); \
490  __ret; \
491 })
492 #define vmulxh_f16(__p0, __p1) __extension__ ({ \
493  float16_t __s0 = __p0; \
494  float16_t __s1 = __p1; \
495  float16_t __ret; \
496  __ret = (float16_t) __builtin_neon_vmulxh_f16(__s0, __s1); \
497  __ret; \
498 })
499 #define vnegh_f16(__p0) __extension__ ({ \
500  float16_t __s0 = __p0; \
501  float16_t __ret; \
502  __ret = (float16_t) __builtin_neon_vnegh_f16(__s0); \
503  __ret; \
504 })
505 #define vrecpeh_f16(__p0) __extension__ ({ \
506  float16_t __s0 = __p0; \
507  float16_t __ret; \
508  __ret = (float16_t) __builtin_neon_vrecpeh_f16(__s0); \
509  __ret; \
510 })
511 #define vrecpsh_f16(__p0, __p1) __extension__ ({ \
512  float16_t __s0 = __p0; \
513  float16_t __s1 = __p1; \
514  float16_t __ret; \
515  __ret = (float16_t) __builtin_neon_vrecpsh_f16(__s0, __s1); \
516  __ret; \
517 })
518 #define vrecpxh_f16(__p0) __extension__ ({ \
519  float16_t __s0 = __p0; \
520  float16_t __ret; \
521  __ret = (float16_t) __builtin_neon_vrecpxh_f16(__s0); \
522  __ret; \
523 })
524 #define vrndh_f16(__p0) __extension__ ({ \
525  float16_t __s0 = __p0; \
526  float16_t __ret; \
527  __ret = (float16_t) __builtin_neon_vrndh_f16(__s0); \
528  __ret; \
529 })
530 #define vrndah_f16(__p0) __extension__ ({ \
531  float16_t __s0 = __p0; \
532  float16_t __ret; \
533  __ret = (float16_t) __builtin_neon_vrndah_f16(__s0); \
534  __ret; \
535 })
536 #define vrndih_f16(__p0) __extension__ ({ \
537  float16_t __s0 = __p0; \
538  float16_t __ret; \
539  __ret = (float16_t) __builtin_neon_vrndih_f16(__s0); \
540  __ret; \
541 })
542 #define vrndmh_f16(__p0) __extension__ ({ \
543  float16_t __s0 = __p0; \
544  float16_t __ret; \
545  __ret = (float16_t) __builtin_neon_vrndmh_f16(__s0); \
546  __ret; \
547 })
548 #define vrndnh_f16(__p0) __extension__ ({ \
549  float16_t __s0 = __p0; \
550  float16_t __ret; \
551  __ret = (float16_t) __builtin_neon_vrndnh_f16(__s0); \
552  __ret; \
553 })
554 #define vrndph_f16(__p0) __extension__ ({ \
555  float16_t __s0 = __p0; \
556  float16_t __ret; \
557  __ret = (float16_t) __builtin_neon_vrndph_f16(__s0); \
558  __ret; \
559 })
560 #define vrndxh_f16(__p0) __extension__ ({ \
561  float16_t __s0 = __p0; \
562  float16_t __ret; \
563  __ret = (float16_t) __builtin_neon_vrndxh_f16(__s0); \
564  __ret; \
565 })
566 #define vrsqrteh_f16(__p0) __extension__ ({ \
567  float16_t __s0 = __p0; \
568  float16_t __ret; \
569  __ret = (float16_t) __builtin_neon_vrsqrteh_f16(__s0); \
570  __ret; \
571 })
572 #define vrsqrtsh_f16(__p0, __p1) __extension__ ({ \
573  float16_t __s0 = __p0; \
574  float16_t __s1 = __p1; \
575  float16_t __ret; \
576  __ret = (float16_t) __builtin_neon_vrsqrtsh_f16(__s0, __s1); \
577  __ret; \
578 })
579 #define vsqrth_f16(__p0) __extension__ ({ \
580  float16_t __s0 = __p0; \
581  float16_t __ret; \
582  __ret = (float16_t) __builtin_neon_vsqrth_f16(__s0); \
583  __ret; \
584 })
585 #define vsubh_f16(__p0, __p1) __extension__ ({ \
586  float16_t __s0 = __p0; \
587  float16_t __s1 = __p1; \
588  float16_t __ret; \
589  __ret = (float16_t) __builtin_neon_vsubh_f16(__s0, __s1); \
590  __ret; \
591 })
592 #endif
593 
594 #undef __ai
595 
596 #endif /* __ARM_FP16_H */
__fp16 float16_t
Definition: arm_fp16.h:29