]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/config/sparc/visintrin.h
Update copyright years.
[thirdparty/gcc.git] / gcc / config / sparc / visintrin.h
CommitLineData
a945c346 1/* Copyright (C) 2011-2024 Free Software Foundation, Inc.
e7f799ce
DM
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
eab47093
DM
27#ifdef __VIS__
28
e7f799ce 29typedef int __v2si __attribute__ ((__vector_size__ (8)));
f14e0262 30typedef int __v1si __attribute__ ((__vector_size__ (4)));
e7f799ce
DM
31typedef short __v4hi __attribute__ ((__vector_size__ (8)));
32typedef short __v2hi __attribute__ ((__vector_size__ (4)));
b1e4f4dd
DM
33typedef unsigned char __v8qi __attribute__ ((__vector_size__ (8)));
34typedef unsigned char __v4qi __attribute__ ((__vector_size__ (4)));
e7f799ce
DM
35typedef int __i64 __attribute__ ((__mode__ (DI)));
36
eab47093
DM
37#if __VIS__ >= 0x200
38
10b859c0
DM
39extern __inline void
40__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
41__vis_write_gsr (__i64 __A)
42{
43 __builtin_vis_write_gsr (__A);
44}
45
46extern __inline __i64
47__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
48__vis_read_gsr (void)
49{
50 return __builtin_vis_read_gsr ();
51}
52
eab47093
DM
53#endif /* __VIS__ >= 0x200 */
54
e7f799ce
DM
55extern __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
47640f40
DM
62extern __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
e7f799ce
DM
69extern __inline __i64
70__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
b1e4f4dd 71__vis_faligndatadi (__i64 __A, __i64 __B)
e7f799ce 72{
b1e4f4dd 73 return __builtin_vis_faligndatadi (__A, __B);
e7f799ce
DM
74}
75
76extern __inline __v2si
77__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
b1e4f4dd 78__vis_faligndatav2si (__v2si __A, __v2si __B)
e7f799ce 79{
b1e4f4dd 80 return __builtin_vis_faligndatav2si (__A, __B);
e7f799ce
DM
81}
82
83extern __inline __v4hi
84__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
b1e4f4dd 85__vis_faligndatav4hi (__v4hi __A, __v4hi __B)
e7f799ce 86{
b1e4f4dd 87 return __builtin_vis_faligndatav4hi (__A, __B);
e7f799ce
DM
88}
89
90extern __inline __v8qi
91__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
b1e4f4dd 92__vis_faligndatav8qi (__v8qi __A, __v8qi __B)
e7f799ce 93{
b1e4f4dd 94 return __builtin_vis_faligndatav8qi (__A, __B);
e7f799ce
DM
95}
96
97extern __inline __v4hi
98__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
99__vis_fexpand (__v4qi __A)
100{
101 return __builtin_vis_fexpand (__A);
102}
103
104extern __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
111extern __inline __v4hi
112__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
b1e4f4dd 113__vis_fmul8x16au (__v4qi __A, __v2hi __B)
e7f799ce
DM
114{
115 return __builtin_vis_fmul8x16au (__A, __B);
116}
117
118extern __inline __v4hi
119__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
b1e4f4dd 120__vis_fmul8x16al (__v4qi __A, __v2hi __B)
e7f799ce
DM
121{
122 return __builtin_vis_fmul8x16al (__A, __B);
123}
124
125extern __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
132extern __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
139extern __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
146extern __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
153extern __inline __v4qi
154__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
155__vis_fpack16 (__v4hi __A)
156{
157 return __builtin_vis_fpack16 (__A);
158}
159
160extern __inline __v8qi
161__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
b1e4f4dd 162__vis_fpack32 (__v2si __A, __v8qi __B)
e7f799ce
DM
163{
164 return __builtin_vis_fpack32 (__A, __B);
165}
166
167extern __inline __v2hi
168__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
169__vis_fpackfix (__v2si __A)
170{
171 return __builtin_vis_fpackfix (__A);
172}
173
174extern __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
181extern __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
cb8bbba8 188extern __inline long
b1e4f4dd 189__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
47640f40 190__vis_edge8 (void *__A, void *__B)
b1e4f4dd
DM
191{
192 return __builtin_vis_edge8 (__A, __B);
193}
194
cb8bbba8 195extern __inline long
b1e4f4dd 196__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
47640f40 197__vis_edge8l (void *__A, void *__B)
b1e4f4dd
DM
198{
199 return __builtin_vis_edge8l (__A, __B);
200}
201
cb8bbba8 202extern __inline long
b1e4f4dd 203__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
47640f40 204__vis_edge16 (void *__A, void *__B)
b1e4f4dd
DM
205{
206 return __builtin_vis_edge16 (__A, __B);
207}
208
cb8bbba8 209extern __inline long
b1e4f4dd 210__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
47640f40 211__vis_edge16l (void *__A, void *__B)
b1e4f4dd
DM
212{
213 return __builtin_vis_edge16l (__A, __B);
214}
215
cb8bbba8 216extern __inline long
b1e4f4dd 217__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
47640f40 218__vis_edge32 (void *__A, void *__B)
b1e4f4dd
DM
219{
220 return __builtin_vis_edge32 (__A, __B);
221}
222
cb8bbba8 223extern __inline long
b1e4f4dd 224__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
47640f40 225__vis_edge32l (void *__A, void *__B)
b1e4f4dd
DM
226{
227 return __builtin_vis_edge32l (__A, __B);
228}
229
cb8bbba8 230extern __inline long
f4d7f828
DM
231__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
232__vis_fcmple16 (__v4hi __A, __v4hi __B)
233{
234 return __builtin_vis_fcmple16 (__A, __B);
235}
236
cb8bbba8 237extern __inline long
f4d7f828
DM
238__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
239__vis_fcmple32 (__v2si __A, __v2si __B)
240{
241 return __builtin_vis_fcmple32 (__A, __B);
242}
243
cb8bbba8 244extern __inline long
f4d7f828
DM
245__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
246__vis_fcmpne16 (__v4hi __A, __v4hi __B)
247{
248 return __builtin_vis_fcmpne16 (__A, __B);
249}
250
cb8bbba8 251extern __inline long
f4d7f828
DM
252__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
253__vis_fcmpne32 (__v2si __A, __v2si __B)
254{
255 return __builtin_vis_fcmpne32 (__A, __B);
256}
257
cb8bbba8 258extern __inline long
f4d7f828
DM
259__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
260__vis_fcmpgt16 (__v4hi __A, __v4hi __B)
261{
262 return __builtin_vis_fcmpgt16 (__A, __B);
263}
264
cb8bbba8 265extern __inline long
f4d7f828
DM
266__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
267__vis_fcmpgt32 (__v2si __A, __v2si __B)
268{
269 return __builtin_vis_fcmpgt32 (__A, __B);
270}
271
cb8bbba8 272extern __inline long
f4d7f828
DM
273__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
274__vis_fcmpeq16 (__v4hi __A, __v4hi __B)
275{
276 return __builtin_vis_fcmpeq16 (__A, __B);
277}
278
cb8bbba8 279extern __inline long
f4d7f828
DM
280__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
281__vis_fcmpeq32 (__v2si __A, __v2si __B)
282{
283 return __builtin_vis_fcmpeq32 (__A, __B);
284}
285
f14e0262
DM
286extern __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
293extern __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
300extern __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
307extern __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
314extern __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
321extern __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
328extern __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
335extern __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
1ec01ab2
DM
342extern __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
349extern __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
356extern __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
eab47093
DM
363#if __VIS__ >= 0x200
364
c4728c6b
DM
365extern __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
372extern __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
379extern __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
386extern __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
393extern __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
400extern __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
407extern __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
414extern __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
421extern __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
428extern __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
435extern __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
eab47093
DM
442#endif /* __VIS__ >= 0x200 */
443
444#if __VIS__ >= 0x300
445
96d7b15f
DM
446extern __inline void
447__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
448__vis_cmask8 (long __A)
449{
450 return __builtin_vis_cmask8 (__A);
451}
452
453extern __inline void
454__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
455__vis_cmask16 (long __A)
456{
457 return __builtin_vis_cmask16 (__A);
458}
459
460extern __inline void
461__attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
462__vis_cmask32 (long __A)
463{
464 return __builtin_vis_cmask32 (__A);
465}
466
467extern __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
474extern __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
481extern __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
488extern __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
495extern __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
502extern __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
509extern __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
516extern __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
523extern __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
530extern __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
537extern __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
544extern __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
551extern __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
558extern __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
565extern __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
572extern __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
579extern __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
586extern __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
593extern __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
600extern __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
607extern __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
614extern __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
621extern __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
628extern __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
635extern __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
facb3fd7
DM
642extern __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
649extern __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
656extern __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
663extern __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
670extern __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
677extern __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
684extern __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
691extern __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
698extern __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
eab47093
DM
705#endif /* __VIS__ >= 0x300 */
706
690f24b7
JM
707#if __VIS__ >= 0x400
708
709extern __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
716extern __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
723extern __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
730extern __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
737extern __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
744extern __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
751extern __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
758extern __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
765extern __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
772extern __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
779extern __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
786extern __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
793extern __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
800extern __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
807extern __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
814extern __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
821extern __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
828extern __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
835extern __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
842extern __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
849extern __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
856extern __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
863extern __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
870extern __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
877extern __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
884extern __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
eab47093
DM
893#endif /* __VIS__ */
894
e7f799ce 895#endif /* _VISINTRIN_H_INCLUDED */