Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 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(__aarch64__)
33
#define vabdh_f16(__p0, __p1) __extension__ ({ \
34
  float16_t __ret; \
35
  float16_t __s0 = __p0; \
36
  float16_t __s1 = __p1; \
37
  __ret = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (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 = (float16_t) __builtin_neon_vsubh_f16(__s0, __s1); \
590
  __ret; \
591
})
592
#endif
593
 
594
#undef __ai
595
 
596
#endif /* __ARM_FP16_H */