comparison gcc/config/sparc/visintrin.h @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 84e7813d76e9
comparison
equal deleted inserted replaced
68:561a7518be6b 111:04ced10e8804
1 /* Copyright (C) 2011-2017 Free Software Foundation, Inc.
2
3 This file is part of GCC.
4
5 GCC is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3, or (at your option)
8 any later version.
9
10 GCC is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 Under Section 7 of GPL version 3, you are granted additional
16 permissions described in the GCC Runtime Library Exception, version
17 3.1, as published by the Free Software Foundation.
18
19 You should have received a copy of the GNU General Public License and
20 a copy of the GCC Runtime Library Exception along with this program;
21 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22 <http://www.gnu.org/licenses/>. */
23
24 #ifndef _VISINTRIN_H_INCLUDED
25 #define _VISINTRIN_H_INCLUDED
26
27 #ifdef __VIS__
28
29 typedef int __v2si __attribute__ ((__vector_size__ (8)));
30 typedef int __v1si __attribute__ ((__vector_size__ (4)));
31 typedef short __v4hi __attribute__ ((__vector_size__ (8)));
32 typedef short __v2hi __attribute__ ((__vector_size__ (4)));
33 typedef unsigned char __v8qi __attribute__ ((__vector_size__ (8)));
34 typedef unsigned char __v4qi __attribute__ ((__vector_size__ (4)));
35 typedef int __i64 __attribute__ ((__mode__ (DI)));
36
37 #if __VIS__ >= 0x200
38
39 extern __inline void
40 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
41 __vis_write_gsr (__i64 __A)
42 {
43 __builtin_vis_write_gsr (__A);
44 }
45
46 extern __inline __i64
47 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
48 __vis_read_gsr (void)
49 {
50 return __builtin_vis_read_gsr ();
51 }
52
53 #endif /* __VIS__ >= 0x200 */
54
55 extern __inline void *
56 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
57 __vis_alignaddr (void *__A, long __B)
58 {
59 return __builtin_vis_alignaddr (__A, __B);
60 }
61
62 extern __inline void *
63 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
64 __vis_alignaddrl (void *__A, long __B)
65 {
66 return __builtin_vis_alignaddrl (__A, __B);
67 }
68
69 extern __inline __i64
70 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
71 __vis_faligndatadi (__i64 __A, __i64 __B)
72 {
73 return __builtin_vis_faligndatadi (__A, __B);
74 }
75
76 extern __inline __v2si
77 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
78 __vis_faligndatav2si (__v2si __A, __v2si __B)
79 {
80 return __builtin_vis_faligndatav2si (__A, __B);
81 }
82
83 extern __inline __v4hi
84 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
85 __vis_faligndatav4hi (__v4hi __A, __v4hi __B)
86 {
87 return __builtin_vis_faligndatav4hi (__A, __B);
88 }
89
90 extern __inline __v8qi
91 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
92 __vis_faligndatav8qi (__v8qi __A, __v8qi __B)
93 {
94 return __builtin_vis_faligndatav8qi (__A, __B);
95 }
96
97 extern __inline __v4hi
98 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
99 __vis_fexpand (__v4qi __A)
100 {
101 return __builtin_vis_fexpand (__A);
102 }
103
104 extern __inline __v4hi
105 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
106 __vis_fmul8x16 (__v4qi __A, __v4hi __B)
107 {
108 return __builtin_vis_fmul8x16 (__A, __B);
109 }
110
111 extern __inline __v4hi
112 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
113 __vis_fmul8x16au (__v4qi __A, __v2hi __B)
114 {
115 return __builtin_vis_fmul8x16au (__A, __B);
116 }
117
118 extern __inline __v4hi
119 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
120 __vis_fmul8x16al (__v4qi __A, __v2hi __B)
121 {
122 return __builtin_vis_fmul8x16al (__A, __B);
123 }
124
125 extern __inline __v4hi
126 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
127 __vis_fmul8sux16 (__v8qi __A, __v4hi __B)
128 {
129 return __builtin_vis_fmul8sux16 (__A, __B);
130 }
131
132 extern __inline __v4hi
133 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
134 __vis_fmul8ulx16 (__v8qi __A, __v4hi __B)
135 {
136 return __builtin_vis_fmul8ulx16 (__A, __B);
137 }
138
139 extern __inline __v2si
140 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
141 __vis_fmuld8sux16 (__v4qi __A, __v2hi __B)
142 {
143 return __builtin_vis_fmuld8sux16 (__A, __B);
144 }
145
146 extern __inline __v2si
147 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
148 __vis_fmuld8ulx16 (__v4qi __A, __v2hi __B)
149 {
150 return __builtin_vis_fmuld8ulx16 (__A, __B);
151 }
152
153 extern __inline __v4qi
154 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
155 __vis_fpack16 (__v4hi __A)
156 {
157 return __builtin_vis_fpack16 (__A);
158 }
159
160 extern __inline __v8qi
161 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
162 __vis_fpack32 (__v2si __A, __v8qi __B)
163 {
164 return __builtin_vis_fpack32 (__A, __B);
165 }
166
167 extern __inline __v2hi
168 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
169 __vis_fpackfix (__v2si __A)
170 {
171 return __builtin_vis_fpackfix (__A);
172 }
173
174 extern __inline __v8qi
175 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
176 __vis_fpmerge (__v4qi __A, __v4qi __B)
177 {
178 return __builtin_vis_fpmerge (__A, __B);
179 }
180
181 extern __inline __i64
182 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
183 __vis_pdist (__v8qi __A, __v8qi __B, __i64 __C)
184 {
185 return __builtin_vis_pdist (__A, __B, __C);
186 }
187
188 extern __inline long
189 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
190 __vis_edge8 (void *__A, void *__B)
191 {
192 return __builtin_vis_edge8 (__A, __B);
193 }
194
195 extern __inline long
196 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
197 __vis_edge8l (void *__A, void *__B)
198 {
199 return __builtin_vis_edge8l (__A, __B);
200 }
201
202 extern __inline long
203 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
204 __vis_edge16 (void *__A, void *__B)
205 {
206 return __builtin_vis_edge16 (__A, __B);
207 }
208
209 extern __inline long
210 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
211 __vis_edge16l (void *__A, void *__B)
212 {
213 return __builtin_vis_edge16l (__A, __B);
214 }
215
216 extern __inline long
217 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
218 __vis_edge32 (void *__A, void *__B)
219 {
220 return __builtin_vis_edge32 (__A, __B);
221 }
222
223 extern __inline long
224 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
225 __vis_edge32l (void *__A, void *__B)
226 {
227 return __builtin_vis_edge32l (__A, __B);
228 }
229
230 extern __inline long
231 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
232 __vis_fcmple16 (__v4hi __A, __v4hi __B)
233 {
234 return __builtin_vis_fcmple16 (__A, __B);
235 }
236
237 extern __inline long
238 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
239 __vis_fcmple32 (__v2si __A, __v2si __B)
240 {
241 return __builtin_vis_fcmple32 (__A, __B);
242 }
243
244 extern __inline long
245 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
246 __vis_fcmpne16 (__v4hi __A, __v4hi __B)
247 {
248 return __builtin_vis_fcmpne16 (__A, __B);
249 }
250
251 extern __inline long
252 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
253 __vis_fcmpne32 (__v2si __A, __v2si __B)
254 {
255 return __builtin_vis_fcmpne32 (__A, __B);
256 }
257
258 extern __inline long
259 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
260 __vis_fcmpgt16 (__v4hi __A, __v4hi __B)
261 {
262 return __builtin_vis_fcmpgt16 (__A, __B);
263 }
264
265 extern __inline long
266 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
267 __vis_fcmpgt32 (__v2si __A, __v2si __B)
268 {
269 return __builtin_vis_fcmpgt32 (__A, __B);
270 }
271
272 extern __inline long
273 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
274 __vis_fcmpeq16 (__v4hi __A, __v4hi __B)
275 {
276 return __builtin_vis_fcmpeq16 (__A, __B);
277 }
278
279 extern __inline long
280 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
281 __vis_fcmpeq32 (__v2si __A, __v2si __B)
282 {
283 return __builtin_vis_fcmpeq32 (__A, __B);
284 }
285
286 extern __inline __v4hi
287 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
288 __vis_fpadd16 (__v4hi __A, __v4hi __B)
289 {
290 return __builtin_vis_fpadd16 (__A, __B);
291 }
292
293 extern __inline __v2hi
294 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
295 __vis_fpadd16s (__v2hi __A, __v2hi __B)
296 {
297 return __builtin_vis_fpadd16s (__A, __B);
298 }
299
300 extern __inline __v2si
301 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
302 __vis_fpadd32 (__v2si __A, __v2si __B)
303 {
304 return __builtin_vis_fpadd32 (__A, __B);
305 }
306
307 extern __inline __v1si
308 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
309 __vis_fpadd32s (__v1si __A, __v1si __B)
310 {
311 return __builtin_vis_fpadd32s (__A, __B);
312 }
313
314 extern __inline __v4hi
315 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
316 __vis_fpsub16 (__v4hi __A, __v4hi __B)
317 {
318 return __builtin_vis_fpsub16 (__A, __B);
319 }
320
321 extern __inline __v2hi
322 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
323 __vis_fpsub16s (__v2hi __A, __v2hi __B)
324 {
325 return __builtin_vis_fpsub16s (__A, __B);
326 }
327
328 extern __inline __v2si
329 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
330 __vis_fpsub32 (__v2si __A, __v2si __B)
331 {
332 return __builtin_vis_fpsub32 (__A, __B);
333 }
334
335 extern __inline __v1si
336 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
337 __vis_fpsub32s (__v1si __A, __v1si __B)
338 {
339 return __builtin_vis_fpsub32s (__A, __B);
340 }
341
342 extern __inline long
343 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
344 __vis_array8 (long __A, long __B)
345 {
346 return __builtin_vis_array8 (__A, __B);
347 }
348
349 extern __inline long
350 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
351 __vis_array16 (long __A, long __B)
352 {
353 return __builtin_vis_array16 (__A, __B);
354 }
355
356 extern __inline long
357 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
358 __vis_array32 (long __A, long __B)
359 {
360 return __builtin_vis_array32 (__A, __B);
361 }
362
363 #if __VIS__ >= 0x200
364
365 extern __inline long
366 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
367 __vis_bmask (long __A, long __B)
368 {
369 return __builtin_vis_bmask (__A, __B);
370 }
371
372 extern __inline __i64
373 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
374 __vis_bshuffledi (__i64 __A, __i64 __B)
375 {
376 return __builtin_vis_bshuffledi (__A, __B);
377 }
378
379 extern __inline __v2si
380 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
381 __vis_bshufflev2si (__v2si __A, __v2si __B)
382 {
383 return __builtin_vis_bshufflev2si (__A, __B);
384 }
385
386 extern __inline __v4hi
387 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
388 __vis_bshufflev4hi (__v4hi __A, __v4hi __B)
389 {
390 return __builtin_vis_bshufflev4hi (__A, __B);
391 }
392
393 extern __inline __v8qi
394 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
395 __vis_bshufflev8qi (__v8qi __A, __v8qi __B)
396 {
397 return __builtin_vis_bshufflev8qi (__A, __B);
398 }
399
400 extern __inline long
401 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
402 __vis_edge8n (void *__A, void *__B)
403 {
404 return __builtin_vis_edge8n (__A, __B);
405 }
406
407 extern __inline long
408 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
409 __vis_edge8ln (void *__A, void *__B)
410 {
411 return __builtin_vis_edge8ln (__A, __B);
412 }
413
414 extern __inline long
415 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
416 __vis_edge16n (void *__A, void *__B)
417 {
418 return __builtin_vis_edge16n (__A, __B);
419 }
420
421 extern __inline long
422 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
423 __vis_edge16ln (void *__A, void *__B)
424 {
425 return __builtin_vis_edge16ln (__A, __B);
426 }
427
428 extern __inline long
429 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
430 __vis_edge32n (void *__A, void *__B)
431 {
432 return __builtin_vis_edge32n (__A, __B);
433 }
434
435 extern __inline long
436 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
437 __vis_edge32ln (void *__A, void *__B)
438 {
439 return __builtin_vis_edge32ln (__A, __B);
440 }
441
442 #endif /* __VIS__ >= 0x200 */
443
444 #if __VIS__ >= 0x300
445
446 extern __inline void
447 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
448 __vis_cmask8 (long __A)
449 {
450 return __builtin_vis_cmask8 (__A);
451 }
452
453 extern __inline void
454 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
455 __vis_cmask16 (long __A)
456 {
457 return __builtin_vis_cmask16 (__A);
458 }
459
460 extern __inline void
461 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
462 __vis_cmask32 (long __A)
463 {
464 return __builtin_vis_cmask32 (__A);
465 }
466
467 extern __inline __v4hi
468 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
469 __vis_fchksm16 (__v4hi __A, __v4hi __B)
470 {
471 return __builtin_vis_fchksm16 (__A, __B);
472 }
473
474 extern __inline __v4hi
475 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
476 __vis_fsll16 (__v4hi __A, __v4hi __B)
477 {
478 return __builtin_vis_fsll16 (__A, __B);
479 }
480
481 extern __inline __v4hi
482 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
483 __vis_fslas16 (__v4hi __A, __v4hi __B)
484 {
485 return __builtin_vis_fslas16 (__A, __B);
486 }
487
488 extern __inline __v4hi
489 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
490 __vis_fsrl16 (__v4hi __A, __v4hi __B)
491 {
492 return __builtin_vis_fsrl16 (__A, __B);
493 }
494
495 extern __inline __v4hi
496 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
497 __vis_fsra16 (__v4hi __A, __v4hi __B)
498 {
499 return __builtin_vis_fsra16 (__A, __B);
500 }
501
502 extern __inline __v2si
503 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
504 __vis_fsll32 (__v2si __A, __v2si __B)
505 {
506 return __builtin_vis_fsll32 (__A, __B);
507 }
508
509 extern __inline __v2si
510 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
511 __vis_fslas32 (__v2si __A, __v2si __B)
512 {
513 return __builtin_vis_fslas32 (__A, __B);
514 }
515
516 extern __inline __v2si
517 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
518 __vis_fsrl32 (__v2si __A, __v2si __B)
519 {
520 return __builtin_vis_fsrl32 (__A, __B);
521 }
522
523 extern __inline __v2si
524 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
525 __vis_fsra32 (__v2si __A, __v2si __B)
526 {
527 return __builtin_vis_fsra32 (__A, __B);
528 }
529
530 extern __inline long
531 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
532 __vis_pdistn (__v8qi __A, __v8qi __B)
533 {
534 return __builtin_vis_pdistn (__A, __B);
535 }
536
537 extern __inline __v4hi
538 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
539 __vis_fmean16 (__v4hi __A, __v4hi __B)
540 {
541 return __builtin_vis_fmean16 (__A, __B);
542 }
543
544 extern __inline __i64
545 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
546 __vis_fpadd64 (__i64 __A, __i64 __B)
547 {
548 return __builtin_vis_fpadd64 (__A, __B);
549 }
550
551 extern __inline __i64
552 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
553 __vis_fpsub64 (__i64 __A, __i64 __B)
554 {
555 return __builtin_vis_fpsub64 (__A, __B);
556 }
557
558 extern __inline __v4hi
559 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
560 __vis_fpadds16 (__v4hi __A, __v4hi __B)
561 {
562 return __builtin_vis_fpadds16 (__A, __B);
563 }
564
565 extern __inline __v2hi
566 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
567 __vis_fpadds16s (__v2hi __A, __v2hi __B)
568 {
569 return __builtin_vis_fpadds16s (__A, __B);
570 }
571
572 extern __inline __v4hi
573 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
574 __vis_fpsubs16 (__v4hi __A, __v4hi __B)
575 {
576 return __builtin_vis_fpsubs16 (__A, __B);
577 }
578
579 extern __inline __v2hi
580 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
581 __vis_fpsubs16s (__v2hi __A, __v2hi __B)
582 {
583 return __builtin_vis_fpsubs16s (__A, __B);
584 }
585
586 extern __inline __v2si
587 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
588 __vis_fpadds32 (__v2si __A, __v2si __B)
589 {
590 return __builtin_vis_fpadds32 (__A, __B);
591 }
592
593 extern __inline __v1si
594 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
595 __vis_fpadds32s (__v1si __A, __v1si __B)
596 {
597 return __builtin_vis_fpadds32s (__A, __B);
598 }
599
600 extern __inline __v2si
601 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
602 __vis_fpsubs32 (__v2si __A, __v2si __B)
603 {
604 return __builtin_vis_fpsubs32 (__A, __B);
605 }
606
607 extern __inline __v1si
608 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
609 __vis_fpsubs32s (__v1si __A, __v1si __B)
610 {
611 return __builtin_vis_fpsubs32s (__A, __B);
612 }
613
614 extern __inline long
615 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
616 __vis_fucmple8 (__v8qi __A, __v8qi __B)
617 {
618 return __builtin_vis_fucmple8 (__A, __B);
619 }
620
621 extern __inline long
622 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
623 __vis_fucmpne8 (__v8qi __A, __v8qi __B)
624 {
625 return __builtin_vis_fucmpne8 (__A, __B);
626 }
627
628 extern __inline long
629 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
630 __vis_fucmpgt8 (__v8qi __A, __v8qi __B)
631 {
632 return __builtin_vis_fucmpgt8 (__A, __B);
633 }
634
635 extern __inline long
636 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
637 __vis_fucmpeq8 (__v8qi __A, __v8qi __B)
638 {
639 return __builtin_vis_fucmpeq8 (__A, __B);
640 }
641
642 extern __inline float
643 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
644 __vis_fhadds (float __A, float __B)
645 {
646 return __builtin_vis_fhadds (__A, __B);
647 }
648
649 extern __inline double
650 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
651 __vis_fhaddd (double __A, double __B)
652 {
653 return __builtin_vis_fhaddd (__A, __B);
654 }
655
656 extern __inline float
657 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
658 __vis_fhsubs (float __A, float __B)
659 {
660 return __builtin_vis_fhsubs (__A, __B);
661 }
662
663 extern __inline double
664 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
665 __vis_fhsubd (double __A, double __B)
666 {
667 return __builtin_vis_fhsubd (__A, __B);
668 }
669
670 extern __inline float
671 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
672 __vis_fnhadds (float __A, float __B)
673 {
674 return __builtin_vis_fnhadds (__A, __B);
675 }
676
677 extern __inline double
678 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
679 __vis_fnhaddd (double __A, double __B)
680 {
681 return __builtin_vis_fnhaddd (__A, __B);
682 }
683
684 extern __inline __i64
685 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
686 __vis_umulxhi (__i64 __A, __i64 __B)
687 {
688 return __builtin_vis_umulxhi (__A, __B);
689 }
690
691 extern __inline __i64
692 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
693 __vis_xmulx (__i64 __A, __i64 __B)
694 {
695 return __builtin_vis_xmulx (__A, __B);
696 }
697
698 extern __inline __i64
699 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
700 __vis_xmulxhi (__i64 __A, __i64 __B)
701 {
702 return __builtin_vis_xmulxhi (__A, __B);
703 }
704
705 #endif /* __VIS__ >= 0x300 */
706
707 #if __VIS__ >= 0x400
708
709 extern __inline __v8qi
710 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
711 __vis_fpadd8 (__v8qi __A, __v8qi __B)
712 {
713 return __builtin_vis_fpadd8 (__A, __B);
714 }
715
716 extern __inline __v8qi
717 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
718 __vis_fpadds8 (__v8qi __A, __v8qi __B)
719 {
720 return __builtin_vis_fpadds8 (__A, __B);
721 }
722
723 extern __inline __v8qi
724 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
725 __vis_fpaddus8 (__v8qi __A, __v8qi __B)
726 {
727 return __builtin_vis_fpaddus8 (__A, __B);
728 }
729
730 extern __inline __v4hi
731 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
732 __vis_fpaddus16 (__v4hi __A, __v4hi __B)
733 {
734 return __builtin_vis_fpaddus16 (__A, __B);
735 }
736
737 extern __inline long
738 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
739 __vis_fpcmple8 (__v8qi __A, __v8qi __B)
740 {
741 return __builtin_vis_fpcmple8 (__A, __B);
742 }
743
744 extern __inline long
745 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
746 __vis_fpcmpgt8 (__v8qi __A, __v8qi __B)
747 {
748 return __builtin_vis_fpcmpgt8 (__A, __B);
749 }
750
751 extern __inline long
752 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
753 __vis_fpcmpule16 (__v4hi __A, __v4hi __B)
754 {
755 return __builtin_vis_fpcmpule16 (__A, __B);
756 }
757
758 extern __inline long
759 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
760 __vis_fpcmpugt16 (__v4hi __A, __v4hi __B)
761 {
762 return __builtin_vis_fpcmpugt16 (__A, __B);
763 }
764
765 extern __inline long
766 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
767 __vis_fpcmpule32 (__v2si __A, __v2si __B)
768 {
769 return __builtin_vis_fpcmpule32 (__A, __B);
770 }
771
772 extern __inline long
773 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
774 __vis_fpcmpugt32 (__v2si __A, __v2si __B)
775 {
776 return __builtin_vis_fpcmpugt32 (__A, __B);
777 }
778
779 extern __inline __v8qi
780 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
781 __vis_fpmax8 (__v8qi __A, __v8qi __B)
782 {
783 return __builtin_vis_fpmax8 (__A, __B);
784 }
785
786 extern __inline __v4hi
787 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
788 __vis_fpmax16 (__v4hi __A, __v4hi __B)
789 {
790 return __builtin_vis_fpmax16 (__A, __B);
791 }
792
793 extern __inline __v2si
794 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
795 __vis_fpmax32 (__v2si __A, __v2si __B)
796 {
797 return __builtin_vis_fpmax32 (__A, __B);
798 }
799
800 extern __inline __v8qi
801 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
802 __vis_fpmaxu8 (__v8qi __A, __v8qi __B)
803 {
804 return __builtin_vis_fpmaxu8 (__A, __B);
805 }
806
807 extern __inline __v4hi
808 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
809 __vis_fpmaxu16 (__v4hi __A, __v4hi __B)
810 {
811 return __builtin_vis_fpmaxu16 (__A, __B);
812 }
813
814 extern __inline __v2si
815 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
816 __vis_fpmaxu32 (__v2si __A, __v2si __B)
817 {
818 return __builtin_vis_fpmaxu32 (__A, __B);
819 }
820
821 extern __inline __v8qi
822 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
823 __vis_fpmin8 (__v8qi __A, __v8qi __B)
824 {
825 return __builtin_vis_fpmin8 (__A, __B);
826 }
827
828 extern __inline __v4hi
829 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
830 __vis_fpmin16 (__v4hi __A, __v4hi __B)
831 {
832 return __builtin_vis_fpmin16 (__A, __B);
833 }
834
835 extern __inline __v2si
836 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
837 __vis_fpmin32 (__v2si __A, __v2si __B)
838 {
839 return __builtin_vis_fpmin32 (__A, __B);
840 }
841
842 extern __inline __v8qi
843 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
844 __vis_fpminu8 (__v8qi __A, __v8qi __B)
845 {
846 return __builtin_vis_fpminu8 (__A, __B);
847 }
848
849 extern __inline __v4hi
850 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
851 __vis_fpminu16 (__v4hi __A, __v4hi __B)
852 {
853 return __builtin_vis_fpminu16 (__A, __B);
854 }
855
856 extern __inline __v2si
857 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
858 __vis_fpminu32 (__v2si __A, __v2si __B)
859 {
860 return __builtin_vis_fpminu32 (__A, __B);
861 }
862
863 extern __inline __v8qi
864 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
865 __vis_fpsub8 (__v8qi __A, __v8qi __B)
866 {
867 return __builtin_vis_fpsub8 (__A, __B);
868 }
869
870 extern __inline __v8qi
871 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
872 __vis_fpsubs8 (__v8qi __A, __v8qi __B)
873 {
874 return __builtin_vis_fpsubs8 (__A, __B);
875 }
876
877 extern __inline __v8qi
878 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
879 __vis_fpsubus8 (__v8qi __A, __v8qi __B)
880 {
881 return __builtin_vis_fpsubus8 (__A, __B);
882 }
883
884 extern __inline __v4hi
885 __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
886 __vis_fpsubus16 (__v4hi __A, __v4hi __B)
887 {
888 return __builtin_vis_fpsubus16 (__A, __B);
889 }
890
891 #endif /* __VIS__ >= 0x400 */
892
893 #endif /* __VIS__ */
894
895 #endif /* _VISINTRIN_H_INCLUDED */