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