2004-04-30 Uros Bizjak <uros@kss-loka.si>
[gcc/gcc.git] / gcc / config / rs6000 / altivec.h
1 /* PowerPC AltiVec include file.
2    Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
3    Contributed by Aldy Hernandez (aldyh@redhat.com).
4
5    This file is part of GCC.
6
7    GCC is free software; you can redistribute it and/or modify it
8    under the terms of the GNU General Public License as published
9    by the Free Software Foundation; either version 2, or (at your
10    option) any later version.
11
12    GCC is distributed in the hope that it will be useful, but WITHOUT
13    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
15    License for more details.
16
17    You should have received a copy of the GNU General Public License
18    along with GCC; see the file COPYING.  If not, write to the
19    Free Software Foundation, 59 Temple Place - Suite 330, Boston,
20    MA 02111-1307, USA.  */
21
22 /* As a special exception, if you include this header file into source
23    files compiled by GCC, this header file does not by itself cause
24    the resulting executable to be covered by the GNU General Public
25    License.  This exception does not however invalidate any other
26    reasons why the executable file might be covered by the GNU General
27    Public License.  */
28
29 /* Implemented to conform to the specification included in the AltiVec
30    Technology Programming Interface Manual (ALTIVECPIM/D 6/1999 Rev 0).  */
31
32 #ifndef _ALTIVEC_H
33 #define _ALTIVEC_H 1
34
35 #if !defined(__VEC__) || !defined(__ALTIVEC__)
36 #error Use the "-maltivec" flag to enable PowerPC AltiVec support
37 #endif
38
39 /* You are allowed to undef these for C++ compatibility.  */
40 #define vector __vector
41 #define pixel __pixel
42 #define bool __bool
43
44 /* Condition register codes for AltiVec predicates. */
45
46 #define __CR6_EQ                0
47 #define __CR6_EQ_REV            1
48 #define __CR6_LT                2
49 #define __CR6_LT_REV            3
50
51 /* These are easy... Same exact arguments.  */
52
53 #define vec_vaddcuw vec_addc
54 #define vec_vand vec_and
55 #define vec_vandc vec_andc
56 #define vec_vrfip vec_ceil
57 #define vec_vcmpbfp vec_cmpb
58 #define vec_vcmpgefp vec_cmpge
59 #define vec_vctsxs vec_cts
60 #define vec_vctuxs vec_ctu
61 #define vec_vexptefp vec_expte
62 #define vec_vrfim vec_floor
63 #define vec_lvx vec_ld
64 #define vec_lvxl vec_ldl
65 #define vec_vlogefp vec_loge
66 #define vec_vmaddfp vec_madd
67 #define vec_vmhaddshs vec_madds
68 #define vec_vmladduhm vec_mladd
69 #define vec_vmhraddshs vec_mradds
70 #define vec_vnmsubfp vec_nmsub
71 #define vec_vnor vec_nor
72 #define vec_vor vec_or
73 #define vec_vpkpx vec_packpx
74 #define vec_vperm vec_perm
75 #define vec_vrefp vec_re
76 #define vec_vrfin vec_round
77 #define vec_vrsqrtefp vec_rsqrte
78 #define vec_vsel vec_sel
79 #define vec_vsldoi vec_sld
80 #define vec_vsl vec_sll
81 #define vec_vslo vec_slo
82 #define vec_vspltisb vec_splat_s8
83 #define vec_vspltish vec_splat_s16
84 #define vec_vspltisw vec_splat_s32
85 #define vec_vsr vec_srl
86 #define vec_vsro vec_sro
87 #define vec_stvx vec_st
88 #define vec_stvxl vec_stl
89 #define vec_vsubcuw vec_subc
90 #define vec_vsum2sws vec_sum2s
91 #define vec_vsumsws vec_sums
92 #define vec_vrfiz vec_trunc
93 #define vec_vxor vec_xor
94
95 #ifdef __cplusplus
96
97 extern "C++" {
98
99 /* Prototypes for builtins that take literals and must always be
100    inlined.  */
101 inline vector float vec_ctf (vector unsigned int, const int) __attribute__ ((always_inline));
102 inline vector float vec_ctf (vector signed int, const int) __attribute__ ((always_inline));
103 inline vector float vec_vcfsx (vector signed int a1, const int a2) __attribute__ ((always_inline));
104 inline vector float vec_vcfux (vector unsigned int a1, const int a2) __attribute__ ((always_inline));
105 inline vector signed int vec_cts (vector float, const int) __attribute__ ((always_inline));
106 inline vector unsigned int vec_ctu (vector float, const int) __attribute__ ((always_inline));
107 inline void vec_dss (const int) __attribute__ ((always_inline));
108
109 inline void vec_dst (const vector unsigned char *, int, const int) __attribute__ ((always_inline));
110 inline void vec_dst (const vector signed char *, int, const int) __attribute__ ((always_inline));
111 inline void vec_dst (const vector bool char *, int, const int) __attribute__ ((always_inline));
112 inline void vec_dst (const vector unsigned short *, int, const int) __attribute__ ((always_inline));
113 inline void vec_dst (const vector signed short *, int, const int) __attribute__ ((always_inline));
114 inline void vec_dst (const vector bool short *, int, const int) __attribute__ ((always_inline));
115 inline void vec_dst (const vector pixel *, int, const int) __attribute__ ((always_inline));
116 inline void vec_dst (const vector unsigned int *, int, const int) __attribute__ ((always_inline));
117 inline void vec_dst (const vector signed int *, int, const int) __attribute__ ((always_inline));
118 inline void vec_dst (const vector bool int *, int, const int) __attribute__ ((always_inline));
119 inline void vec_dst (const vector float *, int, const int) __attribute__ ((always_inline));
120 inline void vec_dst (const unsigned char *, int, const int) __attribute__ ((always_inline));
121 inline void vec_dst (const signed char *, int, const int) __attribute__ ((always_inline));
122 inline void vec_dst (const unsigned short *, int, const int) __attribute__ ((always_inline));
123 inline void vec_dst (const short *, int, const int) __attribute__ ((always_inline));
124 inline void vec_dst (const unsigned int *, int, const int) __attribute__ ((always_inline));
125 inline void vec_dst (const int *, int, const int) __attribute__ ((always_inline));
126 inline void vec_dst (const unsigned long *, int, const int) __attribute__ ((always_inline));
127 inline void vec_dst (const long *, int, const int) __attribute__ ((always_inline));
128 inline void vec_dst (const float *, int, const int) __attribute__ ((always_inline));
129
130 inline void vec_dstst (const vector unsigned char *, int, const int) __attribute__ ((always_inline));
131 inline void vec_dstst (const vector signed char *, int, const int) __attribute__ ((always_inline));
132 inline void vec_dstst (const vector bool char *, int, const int) __attribute__ ((always_inline));
133 inline void vec_dstst (const vector unsigned short *, int, const int) __attribute__ ((always_inline));
134 inline void vec_dstst (const vector signed short *, int, const int) __attribute__ ((always_inline));
135 inline void vec_dstst (const vector bool short *, int, const int) __attribute__ ((always_inline));
136 inline void vec_dstst (const vector pixel *, int, const int) __attribute__ ((always_inline));
137 inline void vec_dstst (const vector unsigned int *, int, const int) __attribute__ ((always_inline));
138 inline void vec_dstst (const vector signed int *, int, const int) __attribute__ ((always_inline));
139 inline void vec_dstst (const vector bool int *, int, const int) __attribute__ ((always_inline));
140 inline void vec_dstst (const vector float *, int, const int) __attribute__ ((always_inline));
141 inline void vec_dstst (const unsigned char *, int, const int) __attribute__ ((always_inline));
142 inline void vec_dstst (const signed char *, int, const int) __attribute__ ((always_inline));
143 inline void vec_dstst (const unsigned short *, int, const int) __attribute__ ((always_inline));
144 inline void vec_dstst (const short *, int, const int) __attribute__ ((always_inline));
145 inline void vec_dstst (const unsigned int *, int, const int) __attribute__ ((always_inline));
146 inline void vec_dstst (const int *, int, const int) __attribute__ ((always_inline));
147 inline void vec_dstst (const unsigned long *, int, const int) __attribute__ ((always_inline));
148 inline void vec_dstst (const long *, int, const int) __attribute__ ((always_inline));
149 inline void vec_dstst (const float *, int, const int) __attribute__ ((always_inline));
150
151 inline void vec_dststt (const vector unsigned char *, int, const int) __attribute__ ((always_inline));
152 inline void vec_dststt (const vector signed char *, int, const int) __attribute__ ((always_inline));
153 inline void vec_dststt (const vector bool char *, int, const int) __attribute__ ((always_inline));
154 inline void vec_dststt (const vector unsigned short *, int, const int) __attribute__ ((always_inline));
155 inline void vec_dststt (const vector signed short *, int, const int) __attribute__ ((always_inline));
156 inline void vec_dststt (const vector bool short *, int, const int) __attribute__ ((always_inline));
157 inline void vec_dststt (const vector pixel *, int, const int) __attribute__ ((always_inline));
158 inline void vec_dststt (const vector unsigned int *, int, const int) __attribute__ ((always_inline));
159 inline void vec_dststt (const vector signed int *, int, const int) __attribute__ ((always_inline));
160 inline void vec_dststt (const vector bool int *, int, const int) __attribute__ ((always_inline));
161 inline void vec_dststt (const vector float *, int, const int) __attribute__ ((always_inline));
162 inline void vec_dststt (const unsigned char *, int, const int) __attribute__ ((always_inline));
163 inline void vec_dststt (const signed char *, int, const int) __attribute__ ((always_inline));
164 inline void vec_dststt (const unsigned short *, int, const int) __attribute__ ((always_inline));
165 inline void vec_dststt (const short *, int, const int) __attribute__ ((always_inline));
166 inline void vec_dststt (const unsigned int *, int, const int) __attribute__ ((always_inline));
167 inline void vec_dststt (const int *, int, const int) __attribute__ ((always_inline));
168 inline void vec_dststt (const unsigned long *, int, const int) __attribute__ ((always_inline));
169 inline void vec_dststt (const long *, int, const int) __attribute__ ((always_inline));
170 inline void vec_dststt (const float *, int, const int) __attribute__ ((always_inline));
171
172 inline void vec_dstt (const vector unsigned char *, int, const int) __attribute__ ((always_inline));
173 inline void vec_dstt (const vector signed char *, int, const int) __attribute__ ((always_inline));
174 inline void vec_dstt (const vector bool char *, int, const int) __attribute__ ((always_inline));
175 inline void vec_dstt (const vector unsigned short *, int, const int) __attribute__ ((always_inline));
176 inline void vec_dstt (const vector signed short *, int, const int) __attribute__ ((always_inline));
177 inline void vec_dstt (const vector bool short *, int, const int) __attribute__ ((always_inline));
178 inline void vec_dstt (const vector pixel *, int, const int) __attribute__ ((always_inline));
179 inline void vec_dstt (const vector unsigned int *, int, const int) __attribute__ ((always_inline));
180 inline void vec_dstt (const vector signed int *, int, const int) __attribute__ ((always_inline));
181 inline void vec_dstt (const vector bool int *, int, const int) __attribute__ ((always_inline));
182 inline void vec_dstt (const vector float *, int, const int) __attribute__ ((always_inline));
183 inline void vec_dstt (const unsigned char *, int, const int) __attribute__ ((always_inline));
184 inline void vec_dstt (const signed char *, int, const int) __attribute__ ((always_inline));
185 inline void vec_dstt (const unsigned short *, int, const int) __attribute__ ((always_inline));
186 inline void vec_dstt (const short *, int, const int) __attribute__ ((always_inline));
187 inline void vec_dstt (const unsigned int *, int, const int) __attribute__ ((always_inline));
188 inline void vec_dstt (const int *, int, const int) __attribute__ ((always_inline));
189 inline void vec_dstt (const unsigned long *, int, const int) __attribute__ ((always_inline));
190 inline void vec_dstt (const long *, int, const int) __attribute__ ((always_inline));
191 inline void vec_dstt (const float *, int, const int) __attribute__ ((always_inline));
192
193 inline vector float vec_sld (vector float, vector float, const int) __attribute__ ((always_inline));
194 inline vector signed int vec_sld (vector signed int, vector signed int, const int) __attribute__ ((always_inline));
195 inline vector unsigned int vec_sld (vector unsigned int, vector unsigned int, const int) __attribute__ ((always_inline));
196 inline vector signed short vec_sld (vector signed short, vector signed short, const int) __attribute__ ((always_inline));
197 inline vector unsigned short vec_sld (vector unsigned short, vector unsigned short, const int) __attribute__ ((always_inline));
198 inline vector pixel vec_sld (vector pixel, vector pixel, const int) __attribute__ ((always_inline));
199 inline vector signed char vec_sld (vector signed char, vector signed char, const int) __attribute__ ((always_inline));
200 inline vector unsigned char vec_sld (vector unsigned char, vector unsigned char, const int) __attribute__ ((always_inline));
201 inline vector signed char vec_splat (vector signed char, const int) __attribute__ ((always_inline));
202 inline vector unsigned char vec_splat (vector unsigned char, const int) __attribute__ ((always_inline));
203 inline vector bool char vec_splat (vector bool char, const int) __attribute__ ((always_inline));
204 inline vector signed short vec_splat (vector signed short, const int) __attribute__ ((always_inline));
205 inline vector unsigned short vec_splat (vector unsigned short, const int) __attribute__ ((always_inline));
206 inline vector bool short vec_splat (vector bool short, const int) __attribute__ ((always_inline));
207 inline vector pixel vec_splat (vector pixel, const int) __attribute__ ((always_inline));
208 inline vector float vec_splat (vector float, const int) __attribute__ ((always_inline));
209 inline vector signed int vec_splat (vector signed int, const int) __attribute__ ((always_inline));
210 inline vector unsigned int vec_splat (vector unsigned int, const int) __attribute__ ((always_inline));
211 inline vector bool int vec_splat (vector bool int, const int) __attribute__ ((always_inline));
212 inline vector signed char vec_splat_s8 (const int) __attribute__ ((always_inline));
213 inline vector signed short vec_splat_s16 (const int) __attribute__ ((always_inline));
214 inline vector signed int vec_splat_s32 (const int) __attribute__ ((always_inline));
215 inline vector unsigned char vec_splat_u8 (const int) __attribute__ ((always_inline));
216 inline vector unsigned short vec_splat_u16 (const int) __attribute__ ((always_inline));
217 inline vector unsigned int vec_splat_u32 (const int) __attribute__ ((always_inline));
218 inline vector float vec_vspltw (vector float a1, const int a2) __attribute__ ((always_inline));
219 inline vector signed int vec_vspltw (vector signed int a1, const int a2) __attribute__ ((always_inline));
220 inline vector unsigned int vec_vspltw (vector unsigned int a1, const int a2) __attribute__ ((always_inline));
221 inline vector signed short vec_vsplth (vector signed short a1, const int a2) __attribute__ ((always_inline));
222 inline vector unsigned short vec_vsplth (vector unsigned short a1, const int a2) __attribute__ ((always_inline));
223 inline vector signed char vec_vspltb (vector signed char a1, const int a2) __attribute__ ((always_inline));
224 inline vector unsigned char vec_vspltb (vector unsigned char a1, const int a2) __attribute__ ((always_inline));
225
226 /* vec_step */
227
228 template<typename _Tp>
229 struct __vec_step_help
230 {
231   // All proper vector types will specialize _S_elem.
232 };
233
234 template<>
235 struct __vec_step_help<vector signed short>
236 {
237   static const int _S_elem = 8;
238 };
239
240 template<>
241 struct __vec_step_help<vector unsigned short>
242 {
243   static const int _S_elem = 8;
244 };
245
246 template<>
247 struct __vec_step_help<vector bool short>
248 {
249   static const int _S_elem = 8;
250 };
251
252 template<>
253 struct __vec_step_help<vector pixel>
254 {
255   static const int _S_elem = 8;
256 };
257
258 template<>
259 struct __vec_step_help<vector signed int>
260 {
261   static const int _S_elem = 4;
262 };
263
264 template<>
265 struct __vec_step_help<vector unsigned int>
266 {
267   static const int _S_elem = 4;
268 };
269
270 template<>
271 struct __vec_step_help<vector bool int>
272 {
273   static const int _S_elem = 4;
274 };
275
276 template<>
277 struct __vec_step_help<vector unsigned char>
278 {
279   static const int _S_elem = 16;
280 };
281
282 template<>
283 struct __vec_step_help<vector signed char>
284 {
285   static const int _S_elem = 16;
286 };
287
288 template<>
289 struct __vec_step_help<vector bool char>
290 {
291   static const int _S_elem = 16;
292 };
293
294 template<>
295 struct __vec_step_help<vector float>
296 {
297   static const int _S_elem = 4;
298 };
299
300 #define vec_step(t)  __vec_step_help<typeof(t)>::_S_elem
301
302 /* vec_abs */
303
304 inline vector signed char
305 vec_abs (vector signed char a1)
306 {
307   return __builtin_altivec_abs_v16qi (a1);
308 }
309
310 inline vector signed short
311 vec_abs (vector signed short a1)
312 {
313   return __builtin_altivec_abs_v8hi (a1);
314 }
315
316 inline vector signed int
317 vec_abs (vector signed int a1)
318 {
319   return __builtin_altivec_abs_v4si (a1);
320 }
321
322 inline vector float
323 vec_abs (vector float a1)
324 {
325   return __builtin_altivec_abs_v4sf (a1);
326 }
327
328 /* vec_abss */
329
330 inline vector signed char
331 vec_abss (vector signed char a1)
332 {
333   return __builtin_altivec_abss_v16qi (a1);
334 }
335
336 inline vector signed short
337 vec_abss (vector signed short a1)
338 {
339   return __builtin_altivec_abss_v8hi (a1);
340 }
341
342 inline vector signed int
343 vec_abss (vector signed int a1)
344 {
345   return __builtin_altivec_abss_v4si (a1);
346 }
347
348 /* vec_add */
349
350 inline vector signed char
351 vec_add (vector bool char a1, vector signed char a2)
352 {
353   return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
354 }
355
356 inline vector signed char
357 vec_add (vector signed char a1, vector bool char a2)
358 {
359   return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
360 }
361
362 inline vector signed char
363 vec_add (vector signed char a1, vector signed char a2)
364 {
365   return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
366 }
367
368 inline vector unsigned char
369 vec_add (vector bool char a1, vector unsigned char a2)
370 {
371   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
372 }
373
374 inline vector unsigned char
375 vec_add (vector unsigned char a1, vector bool char a2)
376 {
377   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
378 }
379
380 inline vector unsigned char
381 vec_add (vector unsigned char a1, vector unsigned char a2)
382 {
383   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
384 }
385
386 inline vector signed short
387 vec_add (vector bool short a1, vector signed short a2)
388 {
389   return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
390 }
391
392 inline vector signed short
393 vec_add (vector signed short a1, vector bool short a2)
394 {
395   return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
396 }
397
398 inline vector signed short
399 vec_add (vector signed short a1, vector signed short a2)
400 {
401   return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
402 }
403
404 inline vector unsigned short
405 vec_add (vector bool short a1, vector unsigned short a2)
406 {
407   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
408 }
409
410 inline vector unsigned short
411 vec_add (vector unsigned short a1, vector bool short a2)
412 {
413   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
414 }
415
416 inline vector unsigned short
417 vec_add (vector unsigned short a1, vector unsigned short a2)
418 {
419   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
420 }
421
422 inline vector signed int
423 vec_add (vector bool int a1, vector signed int a2)
424 {
425   return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
426 }
427
428 inline vector signed int
429 vec_add (vector signed int a1, vector bool int a2)
430 {
431   return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
432 }
433
434 inline vector signed int
435 vec_add (vector signed int a1, vector signed int a2)
436 {
437   return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
438 }
439
440 inline vector unsigned int
441 vec_add (vector bool int a1, vector unsigned int a2)
442 {
443   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
444 }
445
446 inline vector unsigned int
447 vec_add (vector unsigned int a1, vector bool int a2)
448 {
449   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
450 }
451
452 inline vector unsigned int
453 vec_add (vector unsigned int a1, vector unsigned int a2)
454 {
455   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
456 }
457
458 inline vector float
459 vec_add (vector float a1, vector float a2)
460 {
461   return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
462 }
463
464 /* vec_vaddfp */
465
466 inline vector float
467 vec_vaddfp (vector float a1, vector float a2)
468 {
469   return (vector float) __builtin_altivec_vaddfp ((vector float) a1, (vector float) a2);
470 }
471
472 /* vec_vadduwm */
473
474 inline vector signed int
475 vec_vadduwm (vector signed int a1, vector signed int a2)
476 {
477   return (vector signed int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
478 }
479
480 inline vector unsigned int
481 vec_vadduwm (vector signed int a1, vector unsigned int a2)
482 {
483   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
484 }
485
486 inline vector unsigned int
487 vec_vadduwm (vector unsigned int a1, vector signed int a2)
488 {
489   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
490 }
491
492 inline vector unsigned int
493 vec_vadduwm (vector unsigned int a1, vector unsigned int a2)
494 {
495   return (vector unsigned int) __builtin_altivec_vadduwm ((vector signed int) a1, (vector signed int) a2);
496 }
497
498 /* vec_vadduhm */
499
500 inline vector signed short
501 vec_vadduhm (vector signed short a1, vector signed short a2)
502 {
503   return (vector signed short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
504 }
505
506 inline vector unsigned short
507 vec_vadduhm (vector signed short a1, vector unsigned short a2)
508 {
509   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
510 }
511
512 inline vector unsigned short
513 vec_vadduhm (vector unsigned short a1, vector signed short a2)
514 {
515   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
516 }
517
518 inline vector unsigned short
519 vec_vadduhm (vector unsigned short a1, vector unsigned short a2)
520 {
521   return (vector unsigned short) __builtin_altivec_vadduhm ((vector signed short) a1, (vector signed short) a2);
522 }
523
524 /* vec_vaddubm */
525
526 inline vector signed char
527 vec_vaddubm (vector signed char a1, vector signed char a2)
528 {
529   return (vector signed char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
530 }
531
532 inline vector unsigned char
533 vec_vaddubm (vector signed char a1, vector unsigned char a2)
534 {
535   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
536 }
537
538 inline vector unsigned char
539 vec_vaddubm (vector unsigned char a1, vector signed char a2)
540 {
541   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
542 }
543
544 inline vector unsigned char
545 vec_vaddubm (vector unsigned char a1, vector unsigned char a2)
546 {
547   return (vector unsigned char) __builtin_altivec_vaddubm ((vector signed char) a1, (vector signed char) a2);
548 }
549
550 /* vec_addc */
551
552 inline vector unsigned int
553 vec_addc (vector unsigned int a1, vector unsigned int a2)
554 {
555   return (vector unsigned int) __builtin_altivec_vaddcuw ((vector signed int) a1, (vector signed int) a2);
556 }
557
558 /* vec_adds */
559
560 inline vector unsigned char
561 vec_adds (vector bool char a1, vector unsigned char a2)
562 {
563   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
564 }
565
566 inline vector unsigned char
567 vec_adds (vector unsigned char a1, vector bool char a2)
568 {
569   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
570 }
571
572 inline vector unsigned char
573 vec_adds (vector unsigned char a1, vector unsigned char a2)
574 {
575   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
576 }
577
578 inline vector signed char
579 vec_adds (vector bool char a1, vector signed char a2)
580 {
581   return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
582 }
583
584 inline vector signed char
585 vec_adds (vector signed char a1, vector bool char a2)
586 {
587   return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
588 }
589
590 inline vector signed char
591 vec_adds (vector signed char a1, vector signed char a2)
592 {
593   return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
594 }
595
596 inline vector unsigned short
597 vec_adds (vector bool short a1, vector unsigned short a2)
598 {
599   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
600 }
601
602 inline vector unsigned short
603 vec_adds (vector unsigned short a1, vector bool short a2)
604 {
605   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
606 }
607
608 inline vector unsigned short
609 vec_adds (vector unsigned short a1, vector unsigned short a2)
610 {
611   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
612 }
613
614 inline vector signed short
615 vec_adds (vector bool short a1, vector signed short a2)
616 {
617   return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
618 }
619
620 inline vector signed short
621 vec_adds (vector signed short a1, vector bool short a2)
622 {
623   return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
624 }
625
626 inline vector signed short
627 vec_adds (vector signed short a1, vector signed short a2)
628 {
629   return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
630 }
631
632 inline vector unsigned int
633 vec_adds (vector bool int a1, vector unsigned int a2)
634 {
635   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
636 }
637
638 inline vector unsigned int
639 vec_adds (vector unsigned int a1, vector bool int a2)
640 {
641   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
642 }
643
644 inline vector unsigned int
645 vec_adds (vector unsigned int a1, vector unsigned int a2)
646 {
647   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
648 }
649
650 inline vector signed int
651 vec_adds (vector bool int a1, vector signed int a2)
652 {
653   return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
654 }
655
656 inline vector signed int
657 vec_adds (vector signed int a1, vector bool int a2)
658 {
659   return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
660 }
661
662 inline vector signed int
663 vec_adds (vector signed int a1, vector signed int a2)
664 {
665   return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
666 }
667
668 /* vec_vaddsws */
669
670 inline vector signed int
671 vec_vaddsws (vector signed int a1, vector signed int a2)
672 {
673   return (vector signed int) __builtin_altivec_vaddsws ((vector signed int) a1, (vector signed int) a2);
674 }
675
676 /* vec_vadduws */
677
678 inline vector unsigned int
679 vec_vadduws (vector signed int a1, vector unsigned int a2)
680 {
681   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
682 }
683
684 inline vector unsigned int
685 vec_vadduws (vector unsigned int a1, vector signed int a2)
686 {
687   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
688 }
689
690 inline vector unsigned int
691 vec_vadduws (vector unsigned int a1, vector unsigned int a2)
692 {
693   return (vector unsigned int) __builtin_altivec_vadduws ((vector signed int) a1, (vector signed int) a2);
694 }
695
696 /* vec_vaddshs */
697 inline vector signed short
698 vec_vaddshs (vector signed short a1, vector signed short a2)
699 {
700   return (vector signed short) __builtin_altivec_vaddshs ((vector signed short) a1, (vector signed short) a2);
701 }
702
703 /* vec_vadduhs */
704
705 inline vector unsigned short
706 vec_vadduhs (vector signed short a1, vector unsigned short a2)
707 {
708   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
709 }
710
711 inline vector unsigned short
712 vec_vadduhs (vector unsigned short a1, vector signed short a2)
713 {
714   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
715 }
716
717 inline vector unsigned short
718 vec_vadduhs (vector unsigned short a1, vector unsigned short a2)
719 {
720   return (vector unsigned short) __builtin_altivec_vadduhs ((vector signed short) a1, (vector signed short) a2);
721 }
722
723 /* vec_vaddsbs */
724
725 inline vector signed char
726 vec_vaddsbs (vector signed char a1, vector signed char a2)
727 {
728   return (vector signed char) __builtin_altivec_vaddsbs ((vector signed char) a1, (vector signed char) a2);
729 }
730
731 /* vec_vaddubs */
732
733 inline vector unsigned char
734 vec_vaddubs (vector signed char a1, vector unsigned char a2)
735 {
736   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
737 }
738
739 inline vector unsigned char
740 vec_vaddubs (vector unsigned char a1, vector signed char a2)
741 {
742   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
743 }
744
745 inline vector unsigned char
746 vec_vaddubs (vector unsigned char a1, vector unsigned char a2)
747 {
748   return (vector unsigned char) __builtin_altivec_vaddubs ((vector signed char) a1, (vector signed char) a2);
749 }
750
751 /* vec_and */
752
753 inline vector float
754 vec_and (vector float a1, vector float a2)
755 {
756   return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
757 }
758
759 inline vector float
760 vec_and (vector float a1, vector bool int a2)
761 {
762   return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
763 }
764
765 inline vector float
766 vec_and (vector bool int a1, vector float a2)
767 {
768   return (vector float) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
769 }
770
771 inline vector bool int
772 vec_and (vector bool int a1, vector bool int a2)
773 {
774   return (vector bool int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
775 }
776
777 inline vector signed int
778 vec_and (vector bool int a1, vector signed int a2)
779 {
780   return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
781 }
782
783 inline vector signed int
784 vec_and (vector signed int a1, vector bool int a2)
785 {
786   return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
787 }
788
789 inline vector signed int
790 vec_and (vector signed int a1, vector signed int a2)
791 {
792   return (vector signed int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
793 }
794
795 inline vector unsigned int
796 vec_and (vector bool int a1, vector unsigned int a2)
797 {
798   return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
799 }
800
801 inline vector unsigned int
802 vec_and (vector unsigned int a1, vector bool int a2)
803 {
804   return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
805 }
806
807 inline vector unsigned int
808 vec_and (vector unsigned int a1, vector unsigned int a2)
809 {
810   return (vector unsigned int) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
811 }
812
813 inline vector bool short
814 vec_and (vector bool short a1, vector bool short a2)
815 {
816   return (vector bool short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
817 }
818
819 inline vector signed short
820 vec_and (vector bool short a1, vector signed short a2)
821 {
822   return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
823 }
824
825 inline vector signed short
826 vec_and (vector signed short a1, vector bool short a2)
827 {
828   return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
829 }
830
831 inline vector signed short
832 vec_and (vector signed short a1, vector signed short a2)
833 {
834   return (vector signed short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
835 }
836
837 inline vector unsigned short
838 vec_and (vector bool short a1, vector unsigned short a2)
839 {
840   return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
841 }
842
843 inline vector unsigned short
844 vec_and (vector unsigned short a1, vector bool short a2)
845 {
846   return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
847 }
848
849 inline vector unsigned short
850 vec_and (vector unsigned short a1, vector unsigned short a2)
851 {
852   return (vector unsigned short) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
853 }
854
855 inline vector signed char
856 vec_and (vector bool char a1, vector signed char a2)
857 {
858   return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
859 }
860
861 inline vector bool char
862 vec_and (vector bool char a1, vector bool char a2)
863 {
864   return (vector bool char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
865 }
866
867 inline vector signed char
868 vec_and (vector signed char a1, vector bool char a2)
869 {
870   return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
871 }
872
873 inline vector signed char
874 vec_and (vector signed char a1, vector signed char a2)
875 {
876   return (vector signed char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
877 }
878
879 inline vector unsigned char
880 vec_and (vector bool char a1, vector unsigned char a2)
881 {
882   return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
883 }
884
885 inline vector unsigned char
886 vec_and (vector unsigned char a1, vector bool char a2)
887 {
888   return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
889 }
890
891 inline vector unsigned char
892 vec_and (vector unsigned char a1, vector unsigned char a2)
893 {
894   return (vector unsigned char) __builtin_altivec_vand ((vector signed int) a1, (vector signed int) a2);
895 }
896
897 /* vec_andc */
898
899 inline vector float
900 vec_andc (vector float a1, vector float a2)
901 {
902   return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
903 }
904
905 inline vector float
906 vec_andc (vector float a1, vector bool int a2)
907 {
908   return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
909 }
910
911 inline vector float
912 vec_andc (vector bool int a1, vector float a2)
913 {
914   return (vector float) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
915 }
916
917 inline vector bool int
918 vec_andc (vector bool int a1, vector bool int a2)
919 {
920   return (vector bool int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
921 }
922
923 inline vector signed int
924 vec_andc (vector bool int a1, vector signed int a2)
925 {
926   return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
927 }
928
929 inline vector signed int
930 vec_andc (vector signed int a1, vector bool int a2)
931 {
932   return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
933 }
934
935 inline vector signed int
936 vec_andc (vector signed int a1, vector signed int a2)
937 {
938   return (vector signed int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
939 }
940
941 inline vector unsigned int
942 vec_andc (vector bool int a1, vector unsigned int a2)
943 {
944   return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
945 }
946
947 inline vector unsigned int
948 vec_andc (vector unsigned int a1, vector bool int a2)
949 {
950   return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
951 }
952
953 inline vector unsigned int
954 vec_andc (vector unsigned int a1, vector unsigned int a2)
955 {
956   return (vector unsigned int) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
957 }
958
959 inline vector bool short
960 vec_andc (vector bool short a1, vector bool short a2)
961 {
962   return (vector bool short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
963 }
964
965 inline vector signed short
966 vec_andc (vector bool short a1, vector signed short a2)
967 {
968   return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
969 }
970
971 inline vector signed short
972 vec_andc (vector signed short a1, vector bool short a2)
973 {
974   return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
975 }
976
977 inline vector signed short
978 vec_andc (vector signed short a1, vector signed short a2)
979 {
980   return (vector signed short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
981 }
982
983 inline vector unsigned short
984 vec_andc (vector bool short a1, vector unsigned short a2)
985 {
986   return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
987 }
988
989 inline vector unsigned short
990 vec_andc (vector unsigned short a1, vector bool short a2)
991 {
992   return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
993 }
994
995 inline vector unsigned short
996 vec_andc (vector unsigned short a1, vector unsigned short a2)
997 {
998   return (vector unsigned short) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
999 }
1000
1001 inline vector signed char
1002 vec_andc (vector bool char a1, vector signed char a2)
1003 {
1004   return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
1005 }
1006
1007 inline vector bool char
1008 vec_andc (vector bool char a1, vector bool char a2)
1009 {
1010   return (vector bool char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
1011 }
1012
1013 inline vector signed char
1014 vec_andc (vector signed char a1, vector bool char a2)
1015 {
1016   return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
1017 }
1018
1019 inline vector signed char
1020 vec_andc (vector signed char a1, vector signed char a2)
1021 {
1022   return (vector signed char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
1023 }
1024
1025 inline vector unsigned char
1026 vec_andc (vector bool char a1, vector unsigned char a2)
1027 {
1028   return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
1029 }
1030
1031 inline vector unsigned char
1032 vec_andc (vector unsigned char a1, vector bool char a2)
1033 {
1034   return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
1035 }
1036
1037 inline vector unsigned char
1038 vec_andc (vector unsigned char a1, vector unsigned char a2)
1039 {
1040   return (vector unsigned char) __builtin_altivec_vandc ((vector signed int) a1, (vector signed int) a2);
1041 }
1042
1043 /* vec_avg */
1044
1045 inline vector unsigned char
1046 vec_avg (vector unsigned char a1, vector unsigned char a2)
1047 {
1048   return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
1049 }
1050
1051 inline vector signed char
1052 vec_avg (vector signed char a1, vector signed char a2)
1053 {
1054   return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
1055 }
1056
1057 inline vector unsigned short
1058 vec_avg (vector unsigned short a1, vector unsigned short a2)
1059 {
1060   return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
1061 }
1062
1063 inline vector signed short
1064 vec_avg (vector signed short a1, vector signed short a2)
1065 {
1066   return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
1067 }
1068
1069 inline vector unsigned int
1070 vec_avg (vector unsigned int a1, vector unsigned int a2)
1071 {
1072   return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
1073 }
1074
1075 inline vector signed int
1076 vec_avg (vector signed int a1, vector signed int a2)
1077 {
1078   return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
1079 }
1080
1081 /* vec_vavgsw */
1082
1083 inline vector signed int
1084 vec_vavgsw (vector signed int a1, vector signed int a2)
1085 {
1086   return (vector signed int) __builtin_altivec_vavgsw ((vector signed int) a1, (vector signed int) a2);
1087 }
1088
1089 /* vec_vavguw */
1090
1091 inline vector unsigned int
1092 vec_vavguw (vector unsigned int a1, vector unsigned int a2)
1093 {
1094   return (vector unsigned int) __builtin_altivec_vavguw ((vector signed int) a1, (vector signed int) a2);
1095 }
1096
1097 /* vec_vavgsh */
1098
1099 inline vector signed short
1100 vec_vavgsh (vector signed short a1, vector signed short a2)
1101 {
1102   return (vector signed short) __builtin_altivec_vavgsh ((vector signed short) a1, (vector signed short) a2);
1103 }
1104
1105 /* vec_vavguh */
1106
1107 inline vector unsigned short
1108 vec_vavguh (vector unsigned short a1, vector unsigned short a2)
1109 {
1110   return (vector unsigned short) __builtin_altivec_vavguh ((vector signed short) a1, (vector signed short) a2);
1111 }
1112
1113 /* vec_vavgsb */
1114
1115 inline vector signed char
1116 vec_vavgsb (vector signed char a1, vector signed char a2)
1117 {
1118   return (vector signed char) __builtin_altivec_vavgsb ((vector signed char) a1, (vector signed char) a2);
1119 }
1120
1121 /* vec_vavgub */
1122
1123 inline vector unsigned char
1124 vec_vavgub (vector unsigned char a1, vector unsigned char a2)
1125 {
1126   return (vector unsigned char) __builtin_altivec_vavgub ((vector signed char) a1, (vector signed char) a2);
1127 }
1128
1129 /* vec_ceil */
1130
1131 inline vector float
1132 vec_ceil (vector float a1)
1133 {
1134   return (vector float) __builtin_altivec_vrfip ((vector float) a1);
1135 }
1136
1137 /* vec_cmpb */
1138
1139 inline vector signed int
1140 vec_cmpb (vector float a1, vector float a2)
1141 {
1142   return (vector signed int) __builtin_altivec_vcmpbfp ((vector float) a1, (vector float) a2);
1143 }
1144
1145 /* vec_cmpeq */
1146
1147 inline vector bool char
1148 vec_cmpeq (vector signed char a1, vector signed char a2)
1149 {
1150   return (vector bool char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
1151 }
1152
1153 inline vector bool char
1154 vec_cmpeq (vector unsigned char a1, vector unsigned char a2)
1155 {
1156   return (vector bool char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
1157 }
1158
1159 inline vector bool short
1160 vec_cmpeq (vector signed short a1, vector signed short a2)
1161 {
1162   return (vector bool short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
1163 }
1164
1165 inline vector bool short
1166 vec_cmpeq (vector unsigned short a1, vector unsigned short a2)
1167 {
1168   return (vector bool short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
1169 }
1170
1171 inline vector bool int
1172 vec_cmpeq (vector signed int a1, vector signed int a2)
1173 {
1174   return (vector bool int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
1175 }
1176
1177 inline vector bool int
1178 vec_cmpeq (vector unsigned int a1, vector unsigned int a2)
1179 {
1180   return (vector bool int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
1181 }
1182
1183 inline vector bool int
1184 vec_cmpeq (vector float a1, vector float a2)
1185 {
1186   return (vector bool int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
1187 }
1188
1189 /* vec_vcmpeqfp */
1190
1191 inline vector signed int
1192 vec_vcmpeqfp (vector float a1, vector float a2)
1193 {
1194   return (vector signed int) __builtin_altivec_vcmpeqfp ((vector float) a1, (vector float) a2);
1195 }
1196
1197 /* vec_vcmpequw */
1198
1199 inline vector signed int
1200 vec_vcmpequw (vector signed int a1, vector signed int a2)
1201 {
1202   return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
1203 }
1204
1205 inline vector signed int
1206 vec_vcmpequw (vector unsigned int a1, vector unsigned int a2)
1207 {
1208   return (vector signed int) __builtin_altivec_vcmpequw ((vector signed int) a1, (vector signed int) a2);
1209 }
1210
1211 /* vec_vcmpequh */
1212
1213 inline vector signed short
1214 vec_vcmpequh (vector signed short a1, vector signed short a2)
1215 {
1216   return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
1217 }
1218
1219 inline vector signed short
1220 vec_vcmpequh (vector unsigned short a1, vector unsigned short a2)
1221 {
1222   return (vector signed short) __builtin_altivec_vcmpequh ((vector signed short) a1, (vector signed short) a2);
1223 }
1224
1225 /* vec_vcmpequb */
1226
1227 inline vector signed char
1228 vec_vcmpequb (vector signed char a1, vector signed char a2)
1229 {
1230   return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
1231 }
1232
1233 inline vector signed char
1234 vec_vcmpequb (vector unsigned char a1, vector unsigned char a2)
1235 {
1236   return (vector signed char) __builtin_altivec_vcmpequb ((vector signed char) a1, (vector signed char) a2);
1237 }
1238
1239 /* vec_cmpge */
1240
1241 inline vector bool int
1242 vec_cmpge (vector float a1, vector float a2)
1243 {
1244   return (vector bool int) __builtin_altivec_vcmpgefp ((vector float) a1, (vector float) a2);
1245 }
1246
1247 /* vec_cmpgt */
1248
1249 inline vector bool char
1250 vec_cmpgt (vector unsigned char a1, vector unsigned char a2)
1251 {
1252   return (vector bool char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
1253 }
1254
1255 inline vector bool char
1256 vec_cmpgt (vector signed char a1, vector signed char a2)
1257 {
1258   return (vector bool char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
1259 }
1260
1261 inline vector bool short
1262 vec_cmpgt (vector unsigned short a1, vector unsigned short a2)
1263 {
1264   return (vector bool short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
1265 }
1266
1267 inline vector bool short
1268 vec_cmpgt (vector signed short a1, vector signed short a2)
1269 {
1270   return (vector bool short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
1271 }
1272
1273 inline vector bool int
1274 vec_cmpgt (vector unsigned int a1, vector unsigned int a2)
1275 {
1276   return (vector bool int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
1277 }
1278
1279 inline vector bool int
1280 vec_cmpgt (vector signed int a1, vector signed int a2)
1281 {
1282   return (vector bool int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
1283 }
1284
1285 inline vector bool int
1286 vec_cmpgt (vector float a1, vector float a2)
1287 {
1288   return (vector bool int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
1289 }
1290
1291 /* vec_vcmpgtfp */
1292
1293 inline vector signed int
1294 vec_vcmpgtfp (vector float a1, vector float a2)
1295 {
1296   return (vector signed int) __builtin_altivec_vcmpgtfp ((vector float) a1, (vector float) a2);
1297 }
1298
1299 /* vec_vcmpgtsw */
1300
1301 inline vector signed int
1302 vec_vcmpgtsw (vector signed int a1, vector signed int a2)
1303 {
1304   return (vector signed int) __builtin_altivec_vcmpgtsw ((vector signed int) a1, (vector signed int) a2);
1305 }
1306
1307 /* vec_vcmpgtuw */
1308
1309 inline vector signed int
1310 vec_vcmpgtuw (vector unsigned int a1, vector unsigned int a2)
1311 {
1312   return (vector signed int) __builtin_altivec_vcmpgtuw ((vector signed int) a1, (vector signed int) a2);
1313 }
1314
1315 /* vec_vcmpgtsh */
1316
1317 inline vector signed short
1318 vec_cmpgtsh (vector signed short a1, vector signed short a2)
1319 {
1320   return (vector signed short) __builtin_altivec_vcmpgtsh ((vector signed short) a1, (vector signed short) a2);
1321 }
1322
1323 /* vec_vcmpgtuh */
1324
1325 inline vector signed short
1326 vec_vcmpgtuh (vector unsigned short a1, vector unsigned short a2)
1327 {
1328   return (vector signed short) __builtin_altivec_vcmpgtuh ((vector signed short) a1, (vector signed short) a2);
1329 }
1330
1331 /* vec_vcmpgtsb */
1332
1333 inline vector signed char
1334 vec_vcmpgtsb (vector signed char a1, vector signed char a2)
1335 {
1336   return (vector signed char) __builtin_altivec_vcmpgtsb ((vector signed char) a1, (vector signed char) a2);
1337 }
1338
1339 /* vec_vcmpgtub */
1340
1341 inline vector signed char
1342 vec_vcmpgtub (vector unsigned char a1, vector unsigned char a2)
1343 {
1344   return (vector signed char) __builtin_altivec_vcmpgtub ((vector signed char) a1, (vector signed char) a2);
1345 }
1346
1347 /* vec_cmple */
1348
1349 inline vector bool int
1350 vec_cmple (vector float a1, vector float a2)
1351 {
1352   return (vector bool int) __builtin_altivec_vcmpgefp ((vector float) a2, (vector float) a1);
1353 }
1354
1355 /* vec_cmplt */
1356
1357 inline vector bool char
1358 vec_cmplt (vector unsigned char a1, vector unsigned char a2)
1359 {
1360   return (vector bool char) __builtin_altivec_vcmpgtub ((vector signed char) a2, (vector signed char) a1);
1361 }
1362
1363 inline vector bool char
1364 vec_cmplt (vector signed char a1, vector signed char a2)
1365 {
1366   return (vector bool char) __builtin_altivec_vcmpgtsb ((vector signed char) a2, (vector signed char) a1);
1367 }
1368
1369 inline vector bool short
1370 vec_cmplt (vector unsigned short a1, vector unsigned short a2)
1371 {
1372   return (vector bool short) __builtin_altivec_vcmpgtuh ((vector signed short) a2, (vector signed short) a1);
1373 }
1374
1375 inline vector bool short
1376 vec_cmplt (vector signed short a1, vector signed short a2)
1377 {
1378   return (vector bool short) __builtin_altivec_vcmpgtsh ((vector signed short) a2, (vector signed short) a1);
1379 }
1380
1381 inline vector bool int
1382 vec_cmplt (vector unsigned int a1, vector unsigned int a2)
1383 {
1384   return (vector bool int) __builtin_altivec_vcmpgtuw ((vector signed int) a2, (vector signed int) a1);
1385 }
1386
1387 inline vector bool int
1388 vec_cmplt (vector signed int a1, vector signed int a2)
1389 {
1390   return (vector bool int) __builtin_altivec_vcmpgtsw ((vector signed int) a2, (vector signed int) a1);
1391 }
1392
1393 inline vector bool int
1394 vec_cmplt (vector float a1, vector float a2)
1395 {
1396   return (vector bool int) __builtin_altivec_vcmpgtfp ((vector float) a2, (vector float) a1);
1397 }
1398
1399 /* vec_ctf */
1400
1401 inline vector float
1402 vec_ctf (vector unsigned int a1, const int a2)
1403 {
1404   return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
1405 }
1406
1407 inline vector float
1408 vec_ctf (vector signed int a1, const int a2)
1409 {
1410   return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
1411 }
1412
1413 /* vec_vcfsx */
1414
1415 inline vector float
1416 vec_vcfsx (vector signed int a1, const int a2)
1417 {
1418   return (vector float) __builtin_altivec_vcfsx ((vector signed int) a1, a2);
1419 }
1420
1421 /* vec_vcfux */
1422
1423 inline vector float
1424 vec_vcfux (vector unsigned int a1, const int a2)
1425 {
1426   return (vector float) __builtin_altivec_vcfux ((vector signed int) a1, a2);
1427 }
1428
1429 /* vec_cts */
1430
1431 inline vector signed int
1432 vec_cts (vector float a1, const int a2)
1433 {
1434   return (vector signed int) __builtin_altivec_vctsxs ((vector float) a1, a2);
1435 }
1436
1437 /* vec_ctu */
1438
1439 inline vector unsigned int
1440 vec_ctu (vector float a1, const int a2)
1441 {
1442   return (vector unsigned int) __builtin_altivec_vctuxs ((vector float) a1, a2);
1443 }
1444
1445 /* vec_dss */
1446
1447 inline void
1448 vec_dss (const int a1)
1449 {
1450   __builtin_altivec_dss (a1);
1451 }
1452
1453 /* vec_dssall */
1454
1455 inline void
1456 vec_dssall (void)
1457 {
1458   __builtin_altivec_dssall ();
1459 }
1460
1461 /* vec_dst */
1462
1463 inline void
1464 vec_dst (const vector unsigned char *a1, int a2, const int a3)
1465 {
1466   __builtin_altivec_dst ((void *) a1, a2, a3);
1467 }
1468
1469 inline void
1470 vec_dst (const vector signed char *a1, int a2, const int a3)
1471 {
1472   __builtin_altivec_dst ((void *) a1, a2, a3);
1473 }
1474
1475 inline void
1476 vec_dst (const vector bool char *a1, int a2, const int a3)
1477 {
1478   __builtin_altivec_dst ((void *) a1, a2, a3);
1479 }
1480
1481 inline void
1482 vec_dst (const vector unsigned short *a1, int a2, const int a3)
1483 {
1484   __builtin_altivec_dst ((void *) a1, a2, a3);
1485 }
1486
1487 inline void
1488 vec_dst (const vector signed short *a1, int a2, const int a3)
1489 {
1490   __builtin_altivec_dst ((void *) a1, a2, a3);
1491 }
1492
1493 inline void
1494 vec_dst (const vector bool short *a1, int a2, const int a3)
1495 {
1496   __builtin_altivec_dst ((void *) a1, a2, a3);
1497 }
1498
1499 inline void
1500 vec_dst (const vector pixel *a1, int a2, const int a3)
1501 {
1502   __builtin_altivec_dst ((void *) a1, a2, a3);
1503 }
1504
1505 inline void
1506 vec_dst (const vector unsigned int *a1, int a2, const int a3)
1507 {
1508   __builtin_altivec_dst ((void *) a1, a2, a3);
1509 }
1510
1511 inline void
1512 vec_dst (const vector signed int *a1, int a2, const int a3)
1513 {
1514   __builtin_altivec_dst ((void *) a1, a2, a3);
1515 }
1516
1517 inline void
1518 vec_dst (const vector bool int *a1, int a2, const int a3)
1519 {
1520   __builtin_altivec_dst ((void *) a1, a2, a3);
1521 }
1522
1523 inline void
1524 vec_dst (const vector float *a1, int a2, const int a3)
1525 {
1526   __builtin_altivec_dst ((void *) a1, a2, a3);
1527 }
1528
1529 inline void
1530 vec_dst (const unsigned char *a1, int a2, const int a3)
1531 {
1532   __builtin_altivec_dst ((void *) a1, a2, a3);
1533 }
1534
1535 inline void
1536 vec_dst (const signed char *a1, int a2, const int a3)
1537 {
1538   __builtin_altivec_dst ((void *) a1, a2, a3);
1539 }
1540
1541 inline void
1542 vec_dst (const unsigned short *a1, int a2, const int a3)
1543 {
1544   __builtin_altivec_dst ((void *) a1, a2, a3);
1545 }
1546
1547 inline void
1548 vec_dst (const short *a1, int a2, const int a3)
1549 {
1550   __builtin_altivec_dst ((void *) a1, a2, a3);
1551 }
1552
1553 inline void
1554 vec_dst (const unsigned int *a1, int a2, const int a3)
1555 {
1556   __builtin_altivec_dst ((void *) a1, a2, a3);
1557 }
1558
1559 inline void
1560 vec_dst (const int *a1, int a2, const int a3)
1561 {
1562   __builtin_altivec_dst ((void *) a1, a2, a3);
1563 }
1564
1565 inline void
1566 vec_dst (const unsigned long *a1, int a2, const int a3)
1567 {
1568   __builtin_altivec_dst ((void *) a1, a2, a3);
1569 }
1570
1571 inline void
1572 vec_dst (const long *a1, int a2, const int a3)
1573 {
1574   __builtin_altivec_dst ((void *) a1, a2, a3);
1575 }
1576
1577 inline void
1578 vec_dst (float *a1, int a2, const int a3)
1579 {
1580   __builtin_altivec_dst ((void *) a1, a2, a3);
1581 }
1582
1583 /* vec_dstst */
1584
1585 inline void
1586 vec_dstst (const vector unsigned char *a1, int a2, const int a3)
1587 {
1588   __builtin_altivec_dstst ((void *) a1, a2, a3);
1589 }
1590
1591 inline void
1592 vec_dstst (const vector signed char *a1, int a2, const int a3)
1593 {
1594   __builtin_altivec_dstst ((void *) a1, a2, a3);
1595 }
1596
1597 inline void
1598 vec_dstst (const vector bool char *a1, int a2, const int a3)
1599 {
1600   __builtin_altivec_dstst ((void *) a1, a2, a3);
1601 }
1602
1603 inline void
1604 vec_dstst (const vector unsigned short *a1, int a2, const int a3)
1605 {
1606   __builtin_altivec_dstst ((void *) a1, a2, a3);
1607 }
1608
1609 inline void
1610 vec_dstst (const vector signed short *a1, int a2, const int a3)
1611 {
1612   __builtin_altivec_dstst ((void *) a1, a2, a3);
1613 }
1614
1615 inline void
1616 vec_dstst (const vector bool short *a1, int a2, const int a3)
1617 {
1618   __builtin_altivec_dstst ((void *) a1, a2, a3);
1619 }
1620
1621 inline void
1622 vec_dstst (const vector pixel *a1, int a2, const int a3)
1623 {
1624   __builtin_altivec_dstst ((void *) a1, a2, a3);
1625 }
1626
1627 inline void
1628 vec_dstst (const vector unsigned int *a1, int a2, const int a3)
1629 {
1630   __builtin_altivec_dstst ((void *) a1, a2, a3);
1631 }
1632
1633 inline void
1634 vec_dstst (const vector signed int *a1, int a2, const int a3)
1635 {
1636   __builtin_altivec_dstst ((void *) a1, a2, a3);
1637 }
1638
1639 inline void
1640 vec_dstst (const vector bool int *a1, int a2, const int a3)
1641 {
1642   __builtin_altivec_dstst ((void *) a1, a2, a3);
1643 }
1644
1645 inline void
1646 vec_dstst (const vector float *a1, int a2, const int a3)
1647 {
1648   __builtin_altivec_dstst ((void *) a1, a2, a3);
1649 }
1650
1651 inline void
1652 vec_dstst (const unsigned char *a1, int a2, const int a3)
1653 {
1654   __builtin_altivec_dstst ((void *) a1, a2, a3);
1655 }
1656
1657 inline void
1658 vec_dstst (const signed char *a1, int a2, const int a3)
1659 {
1660   __builtin_altivec_dstst ((void *) a1, a2, a3);
1661 }
1662
1663 inline void
1664 vec_dstst (const unsigned short *a1, int a2, const int a3)
1665 {
1666   __builtin_altivec_dstst ((void *) a1, a2, a3);
1667 }
1668
1669 inline void
1670 vec_dstst (const short *a1, int a2, const int a3)
1671 {
1672   __builtin_altivec_dstst ((void *) a1, a2, a3);
1673 }
1674
1675 inline void
1676 vec_dstst (const unsigned int *a1, int a2, const int a3)
1677 {
1678   __builtin_altivec_dstst ((void *) a1, a2, a3);
1679 }
1680
1681 inline void
1682 vec_dstst (const int *a1, int a2, const int a3)
1683 {
1684   __builtin_altivec_dstst ((void *) a1, a2, a3);
1685 }
1686
1687 inline void
1688 vec_dstst (const unsigned long *a1, int a2, const int a3)
1689 {
1690   __builtin_altivec_dstst ((void *) a1, a2, a3);
1691 }
1692
1693 inline void
1694 vec_dstst (const long *a1, int a2, const int a3)
1695 {
1696   __builtin_altivec_dstst ((void *) a1, a2, a3);
1697 }
1698
1699 inline void
1700 vec_dstst (float *a1, int a2, const int a3)
1701 {
1702   __builtin_altivec_dstst ((void *) a1, a2, a3);
1703 }
1704
1705 /* vec_dststt */
1706
1707 inline void
1708 vec_dststt (const vector unsigned char *a1, int a2, const int a3)
1709 {
1710   __builtin_altivec_dststt ((void *) a1, a2, a3);
1711 }
1712
1713 inline void
1714 vec_dststt (const vector signed char *a1, int a2, const int a3)
1715 {
1716   __builtin_altivec_dststt ((void *) a1, a2, a3);
1717 }
1718
1719 inline void
1720 vec_dststt (const vector bool char *a1, int a2, const int a3)
1721 {
1722   __builtin_altivec_dststt ((void *) a1, a2, a3);
1723 }
1724
1725 inline void
1726 vec_dststt (const vector unsigned short *a1, int a2, const int a3)
1727 {
1728   __builtin_altivec_dststt ((void *) a1, a2, a3);
1729 }
1730
1731 inline void
1732 vec_dststt (const vector signed short *a1, int a2, const int a3)
1733 {
1734   __builtin_altivec_dststt ((void *) a1, a2, a3);
1735 }
1736
1737 inline void
1738 vec_dststt (const vector bool short *a1, int a2, const int a3)
1739 {
1740   __builtin_altivec_dststt ((void *) a1, a2, a3);
1741 }
1742
1743 inline void
1744 vec_dststt (const vector pixel *a1, int a2, const int a3)
1745 {
1746   __builtin_altivec_dststt ((void *) a1, a2, a3);
1747 }
1748
1749 inline void
1750 vec_dststt (const vector unsigned int *a1, int a2, const int a3)
1751 {
1752   __builtin_altivec_dststt ((void *) a1, a2, a3);
1753 }
1754
1755 inline void
1756 vec_dststt (const vector signed int *a1, int a2, const int a3)
1757 {
1758   __builtin_altivec_dststt ((void *) a1, a2, a3);
1759 }
1760
1761 inline void
1762 vec_dststt (const vector bool int *a1, int a2, const int a3)
1763 {
1764   __builtin_altivec_dststt ((void *) a1, a2, a3);
1765 }
1766
1767 inline void
1768 vec_dststt (const vector float *a1, int a2, const int a3)
1769 {
1770   __builtin_altivec_dststt ((void *) a1, a2, a3);
1771 }
1772
1773 inline void
1774 vec_dststt (const unsigned char *a1, int a2, const int a3)
1775 {
1776   __builtin_altivec_dststt ((void *) a1, a2, a3);
1777 }
1778
1779 inline void
1780 vec_dststt (const signed char *a1, int a2, const int a3)
1781 {
1782   __builtin_altivec_dststt ((void *) a1, a2, a3);
1783 }
1784
1785 inline void
1786 vec_dststt (const unsigned short *a1, int a2, const int a3)
1787 {
1788   __builtin_altivec_dststt ((void *) a1, a2, a3);
1789 }
1790
1791 inline void
1792 vec_dststt (const short *a1, int a2, const int a3)
1793 {
1794   __builtin_altivec_dststt ((void *) a1, a2, a3);
1795 }
1796
1797 inline void
1798 vec_dststt (const unsigned int *a1, int a2, const int a3)
1799 {
1800   __builtin_altivec_dststt ((void *) a1, a2, a3);
1801 }
1802
1803 inline void
1804 vec_dststt (const int *a1, int a2, const int a3)
1805 {
1806   __builtin_altivec_dststt ((void *) a1, a2, a3);
1807 }
1808
1809 inline void
1810 vec_dststt (const unsigned long *a1, int a2, const int a3)
1811 {
1812   __builtin_altivec_dststt ((void *) a1, a2, a3);
1813 }
1814
1815 inline void
1816 vec_dststt (const long *a1, int a2, const int a3)
1817 {
1818   __builtin_altivec_dststt ((void *) a1, a2, a3);
1819 }
1820
1821 inline void
1822 vec_dststt (float *a1, int a2, const int a3)
1823 {
1824   __builtin_altivec_dststt ((void *) a1, a2, a3);
1825 }
1826
1827 /* vec_dstt */
1828
1829 inline void
1830 vec_dstt (const vector unsigned char *a1, int a2, const int a3)
1831 {
1832   __builtin_altivec_dstt ((void *) a1, a2, a3);
1833 }
1834
1835 inline void
1836 vec_dstt (const vector signed char *a1, int a2, const int a3)
1837 {
1838   __builtin_altivec_dstt ((void *) a1, a2, a3);
1839 }
1840
1841 inline void
1842 vec_dstt (const vector bool char *a1, int a2, const int a3)
1843 {
1844   __builtin_altivec_dstt ((void *) a1, a2, a3);
1845 }
1846
1847 inline void
1848 vec_dstt (const vector unsigned short *a1, int a2, const int a3)
1849 {
1850   __builtin_altivec_dstt ((void *) a1, a2, a3);
1851 }
1852
1853 inline void
1854 vec_dstt (const vector signed short *a1, int a2, const int a3)
1855 {
1856   __builtin_altivec_dstt ((void *) a1, a2, a3);
1857 }
1858
1859 inline void
1860 vec_dstt (const vector bool short *a1, int a2, const int a3)
1861 {
1862   __builtin_altivec_dstt ((void *) a1, a2, a3);
1863 }
1864
1865 inline void
1866 vec_dstt (const vector pixel *a1, int a2, const int a3)
1867 {
1868   __builtin_altivec_dstt ((void *) a1, a2, a3);
1869 }
1870
1871 inline void
1872 vec_dstt (const vector unsigned int *a1, int a2, const int a3)
1873 {
1874   __builtin_altivec_dstt ((void *) a1, a2, a3);
1875 }
1876
1877 inline void
1878 vec_dstt (const vector signed int *a1, int a2, const int a3)
1879 {
1880   __builtin_altivec_dstt ((void *) a1, a2, a3);
1881 }
1882
1883 inline void
1884 vec_dstt (const vector bool int *a1, int a2, const int a3)
1885 {
1886   __builtin_altivec_dstt ((void *) a1, a2, a3);
1887 }
1888
1889 inline void
1890 vec_dstt (const vector float *a1, int a2, const int a3)
1891 {
1892   __builtin_altivec_dstt ((void *) a1, a2, a3);
1893 }
1894
1895 inline void
1896 vec_dstt (const unsigned char *a1, int a2, const int a3)
1897 {
1898   __builtin_altivec_dstt ((void *) a1, a2, a3);
1899 }
1900
1901 inline void
1902 vec_dstt (const signed char *a1, int a2, const int a3)
1903 {
1904   __builtin_altivec_dstt ((void *) a1, a2, a3);
1905 }
1906
1907 inline void
1908 vec_dstt (const unsigned short *a1, int a2, const int a3)
1909 {
1910   __builtin_altivec_dstt ((void *) a1, a2, a3);
1911 }
1912
1913 inline void
1914 vec_dstt (const short *a1, int a2, const int a3)
1915 {
1916   __builtin_altivec_dstt ((void *) a1, a2, a3);
1917 }
1918
1919 inline void
1920 vec_dstt (const unsigned int *a1, int a2, const int a3)
1921 {
1922   __builtin_altivec_dstt ((void *) a1, a2, a3);
1923 }
1924
1925 inline void
1926 vec_dstt (const int *a1, int a2, const int a3)
1927 {
1928   __builtin_altivec_dstt ((void *) a1, a2, a3);
1929 }
1930
1931 inline void
1932 vec_dstt (const unsigned long *a1, int a2, const int a3)
1933 {
1934   __builtin_altivec_dstt ((void *) a1, a2, a3);
1935 }
1936
1937 inline void
1938 vec_dstt (const long *a1, int a2, const int a3)
1939 {
1940   __builtin_altivec_dstt ((void *) a1, a2, a3);
1941 }
1942
1943 inline void
1944 vec_dstt (float *a1, int a2, const int a3)
1945 {
1946   __builtin_altivec_dstt ((void *) a1, a2, a3);
1947 }
1948
1949 /* vec_expte */
1950
1951 inline vector float
1952 vec_expte (vector float a1)
1953 {
1954   return (vector float) __builtin_altivec_vexptefp ((vector float) a1);
1955 }
1956
1957 /* vec_floor */
1958
1959 inline vector float
1960 vec_floor (vector float a1)
1961 {
1962   return (vector float) __builtin_altivec_vrfim ((vector float) a1);
1963 }
1964
1965 /* vec_ld */
1966
1967 inline vector float
1968 vec_ld (int a1, const vector float *a2)
1969 {
1970   return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
1971 }
1972
1973 inline vector float
1974 vec_ld (int a1, const float *a2)
1975 {
1976   return (vector float) __builtin_altivec_lvx (a1, (void *) a2);
1977 }
1978
1979 inline vector bool int
1980 vec_ld (int a1, const vector bool int *a2)
1981 {
1982   return (vector bool int) __builtin_altivec_lvx (a1, (void *) a2);
1983 }
1984
1985 inline vector signed int
1986 vec_ld (int a1, const vector signed int *a2)
1987 {
1988   return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
1989 }
1990
1991 inline vector signed int
1992 vec_ld (int a1, const int *a2)
1993 {
1994   return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
1995 }
1996
1997 inline vector signed int
1998 vec_ld (int a1, const long *a2)
1999 {
2000   return (vector signed int) __builtin_altivec_lvx (a1, (void *) a2);
2001 }
2002
2003 inline vector unsigned int
2004 vec_ld (int a1, const vector unsigned int *a2)
2005 {
2006   return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
2007 }
2008
2009 inline vector unsigned int
2010 vec_ld (int a1, const unsigned int *a2)
2011 {
2012   return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
2013 }
2014
2015 inline vector unsigned int
2016 vec_ld (int a1, const unsigned long *a2)
2017 {
2018   return (vector unsigned int) __builtin_altivec_lvx (a1, (void *) a2);
2019 }
2020
2021 inline vector bool short
2022 vec_ld (int a1, const vector bool short *a2)
2023 {
2024   return (vector bool short) __builtin_altivec_lvx (a1, (void *) a2);
2025 }
2026
2027 inline vector pixel
2028 vec_ld (int a1, const vector pixel *a2)
2029 {
2030   return (vector pixel) __builtin_altivec_lvx (a1, (void *) a2);
2031 }
2032
2033 inline vector signed short
2034 vec_ld (int a1, const vector signed short *a2)
2035 {
2036   return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
2037 }
2038
2039 inline vector signed short
2040 vec_ld (int a1, const short *a2)
2041 {
2042   return (vector signed short) __builtin_altivec_lvx (a1, (void *) a2);
2043 }
2044
2045 inline vector unsigned short
2046 vec_ld (int a1, const vector unsigned short *a2)
2047 {
2048   return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
2049 }
2050
2051 inline vector unsigned short
2052 vec_ld (int a1, const unsigned short *a2)
2053 {
2054   return (vector unsigned short) __builtin_altivec_lvx (a1, (void *) a2);
2055 }
2056
2057 inline vector bool char
2058 vec_ld (int a1, const vector bool char *a2)
2059 {
2060   return (vector bool char) __builtin_altivec_lvx (a1, (void *) a2);
2061 }
2062
2063 inline vector signed char
2064 vec_ld (int a1, const vector signed char *a2)
2065 {
2066   return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
2067 }
2068
2069 inline vector signed char
2070 vec_ld (int a1, const signed char *a2)
2071 {
2072   return (vector signed char) __builtin_altivec_lvx (a1, (void *) a2);
2073 }
2074
2075 inline vector unsigned char
2076 vec_ld (int a1, const vector unsigned char *a2)
2077 {
2078   return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
2079 }
2080
2081 inline vector unsigned char
2082 vec_ld (int a1, const unsigned char *a2)
2083 {
2084   return (vector unsigned char) __builtin_altivec_lvx (a1, (void *) a2);
2085 }
2086
2087 /* vec_lde */
2088
2089 inline vector signed char
2090 vec_lde (int a1, const signed char *a2)
2091 {
2092   return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
2093 }
2094
2095 inline vector unsigned char
2096 vec_lde (int a1, const unsigned char *a2)
2097 {
2098   return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
2099 }
2100
2101 inline vector signed short
2102 vec_lde (int a1, const short *a2)
2103 {
2104   return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
2105 }
2106
2107 inline vector unsigned short
2108 vec_lde (int a1, const unsigned short *a2)
2109 {
2110   return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
2111 }
2112
2113 inline vector float
2114 vec_lde (int a1, const float *a2)
2115 {
2116   return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
2117 }
2118
2119 inline vector signed int
2120 vec_lde (int a1, const int *a2)
2121 {
2122   return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
2123 }
2124
2125 inline vector unsigned int
2126 vec_lde (int a1, const unsigned int *a2)
2127 {
2128   return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
2129 }
2130
2131 inline vector signed int
2132 vec_lde (int a1, const long *a2)
2133 {
2134   return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
2135 }
2136
2137 inline vector unsigned int
2138 vec_lde (int a1, const unsigned long *a2)
2139 {
2140   return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
2141 }
2142
2143 /* vec_lvewx */
2144
2145 inline vector float
2146 vec_lvewx (int a1, const float *a2)
2147 {
2148   return (vector float) __builtin_altivec_lvewx (a1, (void *) a2);
2149 }
2150
2151 inline vector signed int
2152 vec_lvewx (int a1, const int *a2)
2153 {
2154   return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
2155 }
2156
2157 inline vector unsigned int
2158 vec_lvewx (int a1, const unsigned int *a2)
2159 {
2160   return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
2161 }
2162
2163 inline vector signed int
2164 vec_lvewx (int a1, const long *a2)
2165 {
2166   return (vector signed int) __builtin_altivec_lvewx (a1, (void *) a2);
2167 }
2168
2169 inline vector unsigned int
2170 vec_lvewx (int a1, const unsigned long *a2)
2171 {
2172   return (vector unsigned int) __builtin_altivec_lvewx (a1, (void *) a2);
2173 }
2174
2175 /* vec_lvehx */
2176
2177 inline vector signed short
2178 vec_lvehx (int a1, const short *a2)
2179 {
2180   return (vector signed short) __builtin_altivec_lvehx (a1, (void *) a2);
2181 }
2182
2183 inline vector unsigned short
2184 vec_lvehx (int a1, const unsigned short *a2)
2185 {
2186   return (vector unsigned short) __builtin_altivec_lvehx (a1, (void *) a2);
2187 }
2188
2189 /* vec_lvebx */
2190
2191 inline vector signed char
2192 vec_lvebx (int a1, const signed char *a2)
2193 {
2194   return (vector signed char) __builtin_altivec_lvebx (a1, (void *) a2);
2195 }
2196
2197 inline vector unsigned char
2198 vec_lvebx (int a1, const int *a2)
2199 {
2200   return (vector unsigned char) __builtin_altivec_lvebx (a1, (void *) a2);
2201 }
2202
2203 /* vec_ldl */
2204
2205 inline vector float
2206 vec_ldl (int a1, const vector float *a2)
2207 {
2208   return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
2209 }
2210
2211 inline vector float
2212 vec_ldl (int a1, const float *a2)
2213 {
2214   return (vector float) __builtin_altivec_lvxl (a1, (void *) a2);
2215 }
2216
2217 inline vector bool int
2218 vec_ldl (int a1, const vector bool int *a2)
2219 {
2220   return (vector bool int) __builtin_altivec_lvxl (a1, (void *) a2);
2221 }
2222
2223 inline vector signed int
2224 vec_ldl (int a1, const vector signed int *a2)
2225 {
2226   return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
2227 }
2228
2229 inline vector signed int
2230 vec_ldl (int a1, const int *a2)
2231 {
2232   return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
2233 }
2234
2235 inline vector signed int
2236 vec_ldl (int a1, const long *a2)
2237 {
2238   return (vector signed int) __builtin_altivec_lvxl (a1, (void *) a2);
2239 }
2240
2241 inline vector unsigned int
2242 vec_ldl (int a1, const vector unsigned int *a2)
2243 {
2244   return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
2245 }
2246
2247 inline vector unsigned int
2248 vec_ldl (int a1, const unsigned int *a2)
2249 {
2250   return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
2251 }
2252
2253 inline vector unsigned int
2254 vec_ldl (int a1, const unsigned long *a2)
2255 {
2256   return (vector unsigned int) __builtin_altivec_lvxl (a1, (void *) a2);
2257 }
2258
2259 inline vector bool short
2260 vec_ldl (int a1, const vector bool short *a2)
2261 {
2262   return (vector bool short) __builtin_altivec_lvxl (a1, (void *) a2);
2263 }
2264
2265 inline vector pixel
2266 vec_ldl (int a1, const vector pixel *a2)
2267 {
2268   return (vector pixel) __builtin_altivec_lvxl (a1, (void *) a2);
2269 }
2270
2271 inline vector signed short
2272 vec_ldl (int a1, const vector signed short *a2)
2273 {
2274   return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
2275 }
2276
2277 inline vector signed short
2278 vec_ldl (int a1, const short *a2)
2279 {
2280   return (vector signed short) __builtin_altivec_lvxl (a1, (void *) a2);
2281 }
2282
2283 inline vector unsigned short
2284 vec_ldl (int a1, const vector unsigned short *a2)
2285 {
2286   return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
2287 }
2288
2289 inline vector unsigned short
2290 vec_ldl (int a1, const unsigned short *a2)
2291 {
2292   return (vector unsigned short) __builtin_altivec_lvxl (a1, (void *) a2);
2293 }
2294
2295 inline vector bool char
2296 vec_ldl (int a1, const vector bool char *a2)
2297 {
2298   return (vector bool char) __builtin_altivec_lvxl (a1, (void *) a2);
2299 }
2300
2301 inline vector signed char
2302 vec_ldl (int a1, const vector signed char *a2)
2303 {
2304   return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
2305 }
2306
2307 inline vector signed char
2308 vec_ldl (int a1, const signed char *a2)
2309 {
2310   return (vector signed char) __builtin_altivec_lvxl (a1, (void *) a2);
2311 }
2312
2313 inline vector unsigned char
2314 vec_ldl (int a1, const vector unsigned char *a2)
2315 {
2316   return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
2317 }
2318
2319 inline vector unsigned char
2320 vec_ldl (int a1, const unsigned char *a2)
2321 {
2322   return (vector unsigned char) __builtin_altivec_lvxl (a1, (void *) a2);
2323 }
2324
2325 /* vec_loge */
2326
2327 inline vector float
2328 vec_loge (vector float a1)
2329 {
2330   return (vector float) __builtin_altivec_vlogefp ((vector float) a1);
2331 }
2332
2333 /* vec_lvsl */
2334
2335 inline vector unsigned char
2336 vec_lvsl (int a1, const volatile unsigned char *a2)
2337 {
2338   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
2339 }
2340
2341 inline vector unsigned char
2342 vec_lvsl (int a1, const volatile signed char *a2)
2343 {
2344   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
2345 }
2346
2347 inline vector unsigned char
2348 vec_lvsl (int a1, const volatile unsigned short *a2)
2349 {
2350   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
2351 }
2352
2353 inline vector unsigned char
2354 vec_lvsl (int a1, const volatile short *a2)
2355 {
2356   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
2357 }
2358
2359 inline vector unsigned char
2360 vec_lvsl (int a1, const volatile unsigned int *a2)
2361 {
2362   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
2363 }
2364
2365 inline vector unsigned char
2366 vec_lvsl (int a1, const volatile int *a2)
2367 {
2368   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
2369 }
2370
2371 inline vector unsigned char
2372 vec_lvsl (int a1, const volatile unsigned long *a2)
2373 {
2374   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
2375 }
2376
2377 inline vector unsigned char
2378 vec_lvsl (int a1, const volatile long *a2)
2379 {
2380   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
2381 }
2382
2383 inline vector unsigned char
2384 vec_lvsl (int a1, const volatile float *a2)
2385 {
2386   return (vector unsigned char) __builtin_altivec_lvsl (a1, (void *) a2);
2387 }
2388
2389 /* vec_lvsr */
2390
2391 inline vector unsigned char
2392 vec_lvsr (int a1, const volatile unsigned char *a2)
2393 {
2394   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2395 }
2396
2397 inline vector unsigned char
2398 vec_lvsr (int a1, const volatile signed char *a2)
2399 {
2400   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2401 }
2402
2403 inline vector unsigned char
2404 vec_lvsr (int a1, const volatile unsigned short *a2)
2405 {
2406   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2407 }
2408
2409 inline vector unsigned char
2410 vec_lvsr (int a1, const volatile short *a2)
2411 {
2412   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2413 }
2414
2415 inline vector unsigned char
2416 vec_lvsr (int a1, const volatile unsigned int *a2)
2417 {
2418   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2419 }
2420
2421 inline vector unsigned char
2422 vec_lvsr (int a1, const volatile int *a2)
2423 {
2424   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2425 }
2426
2427 inline vector unsigned char
2428 vec_lvsr (int a1, const volatile unsigned long *a2)
2429 {
2430   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2431 }
2432
2433 inline vector unsigned char
2434 vec_lvsr (int a1, const volatile long *a2)
2435 {
2436   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2437 }
2438
2439 inline vector unsigned char
2440 vec_lvsr (int a1, const volatile float *a2)
2441 {
2442   return (vector unsigned char) __builtin_altivec_lvsr (a1, (void *) a2);
2443 }
2444
2445 /* vec_madd */
2446
2447 inline vector float
2448 vec_madd (vector float a1, vector float a2, vector float a3)
2449 {
2450   return (vector float) __builtin_altivec_vmaddfp ((vector float) a1, (vector float) a2, (vector float) a3);
2451 }
2452
2453 /* vec_madds */
2454
2455 inline vector signed short
2456 vec_madds (vector signed short a1, vector signed short a2, vector signed short a3)
2457 {
2458   return (vector signed short) __builtin_altivec_vmhaddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
2459 }
2460
2461 /* vec_max */
2462
2463 inline vector unsigned char
2464 vec_max (vector bool char a1, vector unsigned char a2)
2465 {
2466   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2467 }
2468
2469 inline vector unsigned char
2470 vec_max (vector unsigned char a1, vector bool char a2)
2471 {
2472   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2473 }
2474
2475 inline vector unsigned char
2476 vec_max (vector unsigned char a1, vector unsigned char a2)
2477 {
2478   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2479 }
2480
2481 inline vector signed char
2482 vec_max (vector bool char a1, vector signed char a2)
2483 {
2484   return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
2485 }
2486
2487 inline vector signed char
2488 vec_max (vector signed char a1, vector bool char a2)
2489 {
2490   return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
2491 }
2492
2493 inline vector signed char
2494 vec_max (vector signed char a1, vector signed char a2)
2495 {
2496   return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
2497 }
2498
2499 inline vector unsigned short
2500 vec_max (vector bool short a1, vector unsigned short a2)
2501 {
2502   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2503 }
2504
2505 inline vector unsigned short
2506 vec_max (vector unsigned short a1, vector bool short a2)
2507 {
2508   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2509 }
2510
2511 inline vector unsigned short
2512 vec_max (vector unsigned short a1, vector unsigned short a2)
2513 {
2514   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2515 }
2516
2517 inline vector signed short
2518 vec_max (vector bool short a1, vector signed short a2)
2519 {
2520   return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
2521 }
2522
2523 inline vector signed short
2524 vec_max (vector signed short a1, vector bool short a2)
2525 {
2526   return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
2527 }
2528
2529 inline vector signed short
2530 vec_max (vector signed short a1, vector signed short a2)
2531 {
2532   return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
2533 }
2534
2535 inline vector unsigned int
2536 vec_max (vector bool int a1, vector unsigned int a2)
2537 {
2538   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2539 }
2540
2541 inline vector unsigned int
2542 vec_max (vector unsigned int a1, vector bool int a2)
2543 {
2544   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2545 }
2546
2547 inline vector unsigned int
2548 vec_max (vector unsigned int a1, vector unsigned int a2)
2549 {
2550   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2551 }
2552
2553 inline vector signed int
2554 vec_max (vector bool int a1, vector signed int a2)
2555 {
2556   return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
2557 }
2558
2559 inline vector signed int
2560 vec_max (vector signed int a1, vector bool int a2)
2561 {
2562   return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
2563 }
2564
2565 inline vector signed int
2566 vec_max (vector signed int a1, vector signed int a2)
2567 {
2568   return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
2569 }
2570
2571 inline vector float
2572 vec_max (vector float a1, vector float a2)
2573 {
2574   return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
2575 }
2576
2577 /* vec_vmaxfp */
2578
2579 inline vector float
2580 vec_vmaxfp (vector float a1, vector float a2)
2581 {
2582   return (vector float) __builtin_altivec_vmaxfp ((vector float) a1, (vector float) a2);
2583 }
2584
2585 /* vec_vmaxsw */
2586
2587 inline vector signed int
2588 vec_vmaxsw (vector signed int a1, vector signed int a2)
2589 {
2590   return (vector signed int) __builtin_altivec_vmaxsw ((vector signed int) a1, (vector signed int) a2);
2591 }
2592
2593 /* vec_vmaxuw */
2594
2595 inline vector unsigned int
2596 vec_vmaxuw (vector signed int a1, vector unsigned int a2)
2597 {
2598   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2599 }
2600
2601 inline vector unsigned int
2602 vec_vmaxuw (vector unsigned int a1, vector signed int a2)
2603 {
2604   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2605 }
2606
2607 inline vector unsigned int
2608 vec_vmaxuw (vector unsigned int a1, vector unsigned int a2)
2609 {
2610   return (vector unsigned int) __builtin_altivec_vmaxuw ((vector signed int) a1, (vector signed int) a2);
2611 }
2612
2613 /* vec_vmaxsh */
2614
2615 inline vector signed short
2616 vec_vmaxsh (vector signed short a1, vector signed short a2)
2617 {
2618   return (vector signed short) __builtin_altivec_vmaxsh ((vector signed short) a1, (vector signed short) a2);
2619 }
2620
2621 /* vec_vmaxuh */
2622
2623 inline vector unsigned short
2624 vec_vmaxuh (vector signed short a1, vector unsigned short a2)
2625 {
2626   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2627 }
2628
2629 inline vector unsigned short
2630 vec_vmaxuh (vector unsigned short a1, vector signed short a2)
2631 {
2632   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2633 }
2634
2635 inline vector unsigned short
2636 vec_vmaxuh (vector unsigned short a1, vector unsigned short a2)
2637 {
2638   return (vector unsigned short) __builtin_altivec_vmaxuh ((vector signed short) a1, (vector signed short) a2);
2639 }
2640
2641 /* vec_vmaxsb */
2642
2643 inline vector signed char
2644 vec_vmaxsb (vector signed char a1, vector signed char a2)
2645 {
2646   return (vector signed char) __builtin_altivec_vmaxsb ((vector signed char) a1, (vector signed char) a2);
2647 }
2648
2649 /* vec_vmaxub */
2650
2651 inline vector unsigned char
2652 vec_vmaxub (vector signed char a1, vector unsigned char a2)
2653 {
2654   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2655 }
2656
2657 inline vector unsigned char
2658 vec_vmaxub (vector unsigned char a1, vector signed char a2)
2659 {
2660   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2661 }
2662
2663 inline vector unsigned char
2664 vec_vmaxub (vector unsigned char a1, vector unsigned char a2)
2665 {
2666   return (vector unsigned char) __builtin_altivec_vmaxub ((vector signed char) a1, (vector signed char) a2);
2667 }
2668
2669 /* vec_mergeh */
2670
2671 inline vector bool char
2672 vec_mergeh (vector bool char a1, vector bool char a2)
2673 {
2674   return (vector bool char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2675 }
2676
2677 inline vector signed char
2678 vec_mergeh (vector signed char a1, vector signed char a2)
2679 {
2680   return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2681 }
2682
2683 inline vector unsigned char
2684 vec_mergeh (vector unsigned char a1, vector unsigned char a2)
2685 {
2686   return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2687 }
2688
2689 inline vector bool short
2690 vec_mergeh (vector bool short a1, vector bool short a2)
2691 {
2692   return (vector bool short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2693 }
2694
2695 inline vector pixel
2696 vec_mergeh (vector pixel a1, vector pixel a2)
2697 {
2698   return (vector pixel) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2699 }
2700
2701 inline vector signed short
2702 vec_mergeh (vector signed short a1, vector signed short a2)
2703 {
2704   return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2705 }
2706
2707 inline vector unsigned short
2708 vec_mergeh (vector unsigned short a1, vector unsigned short a2)
2709 {
2710   return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2711 }
2712
2713 inline vector float
2714 vec_mergeh (vector float a1, vector float a2)
2715 {
2716   return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2717 }
2718
2719 inline vector bool int
2720 vec_mergeh (vector bool int a1, vector bool int a2)
2721 {
2722   return (vector bool int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2723 }
2724
2725 inline vector signed int
2726 vec_mergeh (vector signed int a1, vector signed int a2)
2727 {
2728   return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2729 }
2730
2731 inline vector unsigned int
2732 vec_mergeh (vector unsigned int a1, vector unsigned int a2)
2733 {
2734   return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2735 }
2736
2737 /* vec_vmrghw */
2738
2739 inline vector float
2740 vec_vmrghw (vector float a1, vector float a2)
2741 {
2742   return (vector float) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2743 }
2744
2745 inline vector signed int
2746 vec_vmrghw (vector signed int a1, vector signed int a2)
2747 {
2748   return (vector signed int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2749 }
2750
2751 inline vector unsigned int
2752 vec_vmrghw (vector unsigned int a1, vector unsigned int a2)
2753 {
2754   return (vector unsigned int) __builtin_altivec_vmrghw ((vector signed int) a1, (vector signed int) a2);
2755 }
2756
2757 /* vec_vmrghh */
2758
2759 inline vector signed short
2760 vec_vmrghh (vector signed short a1, vector signed short a2)
2761 {
2762   return (vector signed short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2763 }
2764
2765 inline vector unsigned short
2766 vec_vmrghh (vector unsigned short a1, vector unsigned short a2)
2767 {
2768   return (vector unsigned short) __builtin_altivec_vmrghh ((vector signed short) a1, (vector signed short) a2);
2769 }
2770
2771 /* vec_vmrghb */
2772
2773 inline vector signed char
2774 vec_vmrghb (vector signed char a1, vector signed char a2)
2775 {
2776   return (vector signed char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2777 }
2778
2779 inline vector unsigned char
2780 vec_vmrghb (vector unsigned char a1, vector unsigned char a2)
2781 {
2782   return (vector unsigned char) __builtin_altivec_vmrghb ((vector signed char) a1, (vector signed char) a2);
2783 }
2784
2785 /* vec_mergel */
2786
2787 inline vector bool char
2788 vec_mergel (vector bool char a1, vector bool char a2)
2789 {
2790   return (vector bool char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2791 }
2792
2793 inline vector signed char
2794 vec_mergel (vector signed char a1, vector signed char a2)
2795 {
2796   return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2797 }
2798
2799 inline vector unsigned char
2800 vec_mergel (vector unsigned char a1, vector unsigned char a2)
2801 {
2802   return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2803 }
2804
2805 inline vector bool short
2806 vec_mergel (vector bool short a1, vector bool short a2)
2807 {
2808   return (vector bool short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2809 }
2810
2811 inline vector pixel
2812 vec_mergel (vector pixel a1, vector pixel a2)
2813 {
2814   return (vector pixel) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2815 }
2816
2817 inline vector signed short
2818 vec_mergel (vector signed short a1, vector signed short a2)
2819 {
2820   return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2821 }
2822
2823 inline vector unsigned short
2824 vec_mergel (vector unsigned short a1, vector unsigned short a2)
2825 {
2826   return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2827 }
2828
2829 inline vector float
2830 vec_mergel (vector float a1, vector float a2)
2831 {
2832   return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2833 }
2834
2835 inline vector bool int
2836 vec_mergel (vector bool int a1, vector bool int a2)
2837 {
2838   return (vector bool int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2839 }
2840
2841 inline vector signed int
2842 vec_mergel (vector signed int a1, vector signed int a2)
2843 {
2844   return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2845 }
2846
2847 inline vector unsigned int
2848 vec_mergel (vector unsigned int a1, vector unsigned int a2)
2849 {
2850   return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2851 }
2852
2853 /* vec_vmrglw */
2854
2855 inline vector float
2856 vec_vmrglw (vector float a1, vector float a2)
2857 {
2858   return (vector float) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2859 }
2860
2861 inline vector signed int
2862 vec_vmrglw (vector signed int a1, vector signed int a2)
2863 {
2864   return (vector signed int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2865 }
2866
2867 inline vector unsigned int
2868 vec_vmrglw (vector unsigned int a1, vector unsigned int a2)
2869 {
2870   return (vector unsigned int) __builtin_altivec_vmrglw ((vector signed int) a1, (vector signed int) a2);
2871 }
2872
2873 /* vec_vmrglh */
2874
2875 inline vector signed short
2876 vec_vmrglh (vector signed short a1, vector signed short a2)
2877 {
2878   return (vector signed short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2879 }
2880
2881 inline vector unsigned short
2882 vec_vmrglh (vector unsigned short a1, vector unsigned short a2)
2883 {
2884   return (vector unsigned short) __builtin_altivec_vmrglh ((vector signed short) a1, (vector signed short) a2);
2885 }
2886
2887 /* vec_vmrglb */
2888
2889 inline vector signed char
2890 vec_vmrglb (vector signed char a1, vector signed char a2)
2891 {
2892   return (vector signed char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2893 }
2894
2895 inline vector unsigned char
2896 vec_vmrglb (vector unsigned char a1, vector unsigned char a2)
2897 {
2898   return (vector unsigned char) __builtin_altivec_vmrglb ((vector signed char) a1, (vector signed char) a2);
2899 }
2900
2901 /* vec_mfvscr */
2902
2903 inline vector unsigned short
2904 vec_mfvscr (void)
2905 {
2906   return (vector unsigned short) __builtin_altivec_mfvscr ();
2907 }
2908
2909 /* vec_min */
2910
2911 inline vector unsigned char
2912 vec_min (vector bool char a1, vector unsigned char a2)
2913 {
2914   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2915 }
2916
2917 inline vector unsigned char
2918 vec_min (vector unsigned char a1, vector bool char a2)
2919 {
2920   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2921 }
2922
2923 inline vector unsigned char
2924 vec_min (vector unsigned char a1, vector unsigned char a2)
2925 {
2926   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
2927 }
2928
2929 inline vector signed char
2930 vec_min (vector bool char a1, vector signed char a2)
2931 {
2932   return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
2933 }
2934
2935 inline vector signed char
2936 vec_min (vector signed char a1, vector bool char a2)
2937 {
2938   return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
2939 }
2940
2941 inline vector signed char
2942 vec_min (vector signed char a1, vector signed char a2)
2943 {
2944   return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
2945 }
2946
2947 inline vector unsigned short
2948 vec_min (vector bool short a1, vector unsigned short a2)
2949 {
2950   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2951 }
2952
2953 inline vector unsigned short
2954 vec_min (vector unsigned short a1, vector bool short a2)
2955 {
2956   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2957 }
2958
2959 inline vector unsigned short
2960 vec_min (vector unsigned short a1, vector unsigned short a2)
2961 {
2962   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
2963 }
2964
2965 inline vector signed short
2966 vec_min (vector bool short a1, vector signed short a2)
2967 {
2968   return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
2969 }
2970
2971 inline vector signed short
2972 vec_min (vector signed short a1, vector bool short a2)
2973 {
2974   return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
2975 }
2976
2977 inline vector signed short
2978 vec_min (vector signed short a1, vector signed short a2)
2979 {
2980   return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
2981 }
2982
2983 inline vector unsigned int
2984 vec_min (vector bool int a1, vector unsigned int a2)
2985 {
2986   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2987 }
2988
2989 inline vector unsigned int
2990 vec_min (vector unsigned int a1, vector bool int a2)
2991 {
2992   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2993 }
2994
2995 inline vector unsigned int
2996 vec_min (vector unsigned int a1, vector unsigned int a2)
2997 {
2998   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
2999 }
3000
3001 inline vector signed int
3002 vec_min (vector bool int a1, vector signed int a2)
3003 {
3004   return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
3005 }
3006
3007 inline vector signed int
3008 vec_min (vector signed int a1, vector bool int a2)
3009 {
3010   return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
3011 }
3012
3013 inline vector signed int
3014 vec_min (vector signed int a1, vector signed int a2)
3015 {
3016   return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
3017 }
3018
3019 inline vector float
3020 vec_min (vector float a1, vector float a2)
3021 {
3022   return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
3023 }
3024
3025 /* vec_vminfp */
3026
3027 inline vector float
3028 vec_vminfp (vector float a1, vector float a2)
3029 {
3030   return (vector float) __builtin_altivec_vminfp ((vector float) a1, (vector float) a2);
3031 }
3032
3033 /* vec_vminsw */
3034
3035 inline vector signed int
3036 vec_vminsw (vector signed int a1, vector signed int a2)
3037 {
3038   return (vector signed int) __builtin_altivec_vminsw ((vector signed int) a1, (vector signed int) a2);
3039 }
3040
3041 /* vec_vminuw */
3042
3043 inline vector unsigned int
3044 vec_vminuw (vector signed int a1, vector unsigned int a2)
3045 {
3046   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
3047 }
3048
3049 inline vector unsigned int
3050 vec_vminuw (vector unsigned int a1, vector signed int a2)
3051 {
3052   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
3053 }
3054
3055 inline vector unsigned int
3056 vec_vminuw (vector unsigned int a1, vector unsigned int a2)
3057 {
3058   return (vector unsigned int) __builtin_altivec_vminuw ((vector signed int) a1, (vector signed int) a2);
3059 }
3060
3061 /* vec_vminsh */
3062
3063 inline vector signed short
3064 vec_vminsh (vector signed short a1, vector signed short a2)
3065 {
3066   return (vector signed short) __builtin_altivec_vminsh ((vector signed short) a1, (vector signed short) a2);
3067 }
3068
3069 /* vec_vminuh */
3070
3071 inline vector unsigned short
3072 vec_vminuh (vector signed short a1, vector unsigned short a2)
3073 {
3074   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
3075 }
3076
3077 inline vector unsigned short
3078 vec_vminuh (vector unsigned short a1, vector signed short a2)
3079 {
3080   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
3081 }
3082
3083 inline vector unsigned short
3084 vec_vminuh (vector unsigned short a1, vector unsigned short a2)
3085 {
3086   return (vector unsigned short) __builtin_altivec_vminuh ((vector signed short) a1, (vector signed short) a2);
3087 }
3088
3089 /* vec_vminsb */
3090
3091 inline vector signed char
3092 vec_vminsb (vector signed char a1, vector signed char a2)
3093 {
3094   return (vector signed char) __builtin_altivec_vminsb ((vector signed char) a1, (vector signed char) a2);
3095 }
3096
3097 /* vec_vminub */
3098
3099 inline vector unsigned char
3100 vec_vminub (vector signed char a1, vector unsigned char a2)
3101 {
3102   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
3103 }
3104
3105 inline vector unsigned char
3106 vec_vminub (vector unsigned char a1, vector signed char a2)
3107 {
3108   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
3109 }
3110
3111 inline vector unsigned char
3112 vec_vminub (vector unsigned char a1, vector unsigned char a2)
3113 {
3114   return (vector unsigned char) __builtin_altivec_vminub ((vector signed char) a1, (vector signed char) a2);
3115 }
3116
3117 /* vec_mladd */
3118
3119 inline vector signed short
3120 vec_mladd (vector signed short a1, vector signed short a2, vector signed short a3)
3121 {
3122   return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
3123 }
3124
3125 inline vector signed short
3126 vec_mladd (vector signed short a1, vector unsigned short a2, vector unsigned short a3)
3127 {
3128   return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
3129 }
3130
3131 inline vector signed short
3132 vec_mladd (vector unsigned short a1, vector signed short a2, vector signed short a3)
3133 {
3134   return (vector signed short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
3135 }
3136
3137 inline vector unsigned short
3138 vec_mladd (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
3139 {
3140   return (vector unsigned short) __builtin_altivec_vmladduhm ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
3141 }
3142
3143 /* vec_mradds */
3144
3145 inline vector signed short
3146 vec_mradds (vector signed short a1, vector signed short a2, vector signed short a3)
3147 {
3148   return (vector signed short) __builtin_altivec_vmhraddshs ((vector signed short) a1, (vector signed short) a2, (vector signed short) a3);
3149 }
3150
3151 /* vec_msum */
3152
3153 inline vector unsigned int
3154 vec_msum (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
3155 {
3156   return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
3157 }
3158
3159 inline vector signed int
3160 vec_msum (vector signed char a1, vector unsigned char a2, vector signed int a3)
3161 {
3162   return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
3163 }
3164
3165 inline vector unsigned int
3166 vec_msum (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
3167 {
3168   return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
3169 }
3170
3171 inline vector signed int
3172 vec_msum (vector signed short a1, vector signed short a2, vector signed int a3)
3173 {
3174   return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
3175 }
3176
3177 /* vec_vmsumshm */
3178
3179 inline vector signed int
3180 vec_vmsumshm (vector signed short a1, vector signed short a2, vector signed int a3)
3181 {
3182   return (vector signed int) __builtin_altivec_vmsumshm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
3183 }
3184
3185 /* vec_vmsumuhm */
3186
3187 inline vector unsigned int
3188 vec_vmsumuhm (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
3189 {
3190   return (vector unsigned int) __builtin_altivec_vmsumuhm ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
3191 }
3192
3193 /* vec_vmsummbm */
3194
3195 inline vector signed int
3196 vec_vmsummbm (vector signed char a1, vector unsigned char a2, vector signed int a3)
3197 {
3198   return (vector signed int) __builtin_altivec_vmsummbm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
3199 }
3200
3201 /* vec_vmsumubm */
3202
3203 inline vector unsigned int
3204 vec_vmsumubm (vector unsigned char a1, vector unsigned char a2, vector unsigned int a3)
3205 {
3206   return (vector unsigned int) __builtin_altivec_vmsumubm ((vector signed char) a1, (vector signed char) a2, (vector signed int) a3);
3207 }
3208
3209 /* vec_msums */
3210
3211 inline vector unsigned int
3212 vec_msums (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
3213 {
3214   return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
3215 }
3216
3217 inline vector signed int
3218 vec_msums (vector signed short a1, vector signed short a2, vector signed int a3)
3219 {
3220   return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
3221 }
3222
3223 /* vec_vmsumshs */
3224
3225 inline vector signed int
3226 vec_vmsumshs (vector signed short a1, vector signed short a2, vector signed int a3)
3227 {
3228   return (vector signed int) __builtin_altivec_vmsumshs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
3229 }
3230
3231 /* vec_vmsumuhs */
3232
3233 inline vector unsigned int
3234 vec_vmsumuhs (vector unsigned short a1, vector unsigned short a2, vector unsigned int a3)
3235 {
3236   return (vector unsigned int) __builtin_altivec_vmsumuhs ((vector signed short) a1, (vector signed short) a2, (vector signed int) a3);
3237 }
3238
3239 /* vec_mtvscr */
3240
3241 inline void
3242 vec_mtvscr (vector signed int a1)
3243 {
3244   __builtin_altivec_mtvscr ((vector signed int) a1);
3245 }
3246
3247 inline void
3248 vec_mtvscr (vector unsigned int a1)
3249 {
3250   __builtin_altivec_mtvscr ((vector signed int) a1);
3251 }
3252
3253 inline void
3254 vec_mtvscr (vector bool int a1)
3255 {
3256   __builtin_altivec_mtvscr ((vector signed int) a1);
3257 }
3258
3259 inline void
3260 vec_mtvscr (vector signed short a1)
3261 {
3262   __builtin_altivec_mtvscr ((vector signed int) a1);
3263 }
3264
3265 inline void
3266 vec_mtvscr (vector unsigned short a1)
3267 {
3268   __builtin_altivec_mtvscr ((vector signed int) a1);
3269 }
3270
3271 inline void
3272 vec_mtvscr (vector bool short a1)
3273 {
3274   __builtin_altivec_mtvscr ((vector signed int) a1);
3275 }
3276
3277 inline void
3278 vec_mtvscr (vector pixel a1)
3279 {
3280   __builtin_altivec_mtvscr ((vector signed int) a1);
3281 }
3282
3283 inline void
3284 vec_mtvscr (vector signed char a1)
3285 {
3286   __builtin_altivec_mtvscr ((vector signed int) a1);
3287 }
3288
3289 inline void
3290 vec_mtvscr (vector unsigned char a1)
3291 {
3292   __builtin_altivec_mtvscr ((vector signed int) a1);
3293 }
3294
3295 inline void
3296 vec_mtvscr (vector bool char a1)
3297 {
3298   __builtin_altivec_mtvscr ((vector signed int) a1);
3299 }
3300
3301 /* vec_mule */
3302
3303 inline vector unsigned short
3304 vec_mule (vector unsigned char a1, vector unsigned char a2)
3305 {
3306   return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
3307 }
3308
3309 inline vector signed short
3310 vec_mule (vector signed char a1, vector signed char a2)
3311 {
3312   return (vector signed short) __builtin_altivec_vmulesb ((vector signed char) a1, (vector signed char) a2);
3313 }
3314
3315 inline vector unsigned int
3316 vec_mule (vector unsigned short a1, vector unsigned short a2)
3317 {
3318   return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
3319 }
3320
3321 inline vector signed int
3322 vec_mule (vector signed short a1, vector signed short a2)
3323 {
3324   return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
3325 }
3326
3327 /* vec_vmulesh */
3328
3329 inline vector signed int
3330 vec_vmulesh (vector signed short a1, vector signed short a2)
3331 {
3332   return (vector signed int) __builtin_altivec_vmulesh ((vector signed short) a1, (vector signed short) a2);
3333 }
3334
3335 /* vec_vmuleuh */
3336
3337 inline vector unsigned int
3338 vec_vmuleuh (vector unsigned short a1, vector unsigned short a2)
3339 {
3340   return (vector unsigned int) __builtin_altivec_vmuleuh ((vector signed short) a1, (vector signed short) a2);
3341 }
3342
3343 /* vec_vmuleub */
3344 inline vector unsigned short
3345 vec_vmuleub (vector unsigned char a1, vector unsigned char a2)
3346 {
3347   return (vector unsigned short) __builtin_altivec_vmuleub ((vector signed char) a1, (vector signed char) a2);
3348 }
3349
3350 /* vec_mulo */
3351
3352 inline vector unsigned short
3353 vec_mulo (vector unsigned char a1, vector unsigned char a2)
3354 {
3355   return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
3356 }
3357
3358 inline vector signed short
3359 vec_mulo (vector signed char a1, vector signed char a2)
3360 {
3361   return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
3362 }
3363
3364 inline vector unsigned int
3365 vec_mulo (vector unsigned short a1, vector unsigned short a2)
3366 {
3367   return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
3368 }
3369
3370 inline vector signed int
3371 vec_mulo (vector signed short a1, vector signed short a2)
3372 {
3373   return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
3374 }
3375
3376 /* vec_vmulosh */
3377
3378 inline vector signed int
3379 vec_vmulosh (vector signed short a1, vector signed short a2)
3380 {
3381   return (vector signed int) __builtin_altivec_vmulosh ((vector signed short) a1, (vector signed short) a2);
3382 }
3383
3384 /* vec_vmulouh */
3385
3386 inline vector unsigned int
3387 vec_vmulouh (vector unsigned short a1, vector unsigned short a2)
3388 {
3389   return (vector unsigned int) __builtin_altivec_vmulouh ((vector signed short) a1, (vector signed short) a2);
3390 }
3391
3392 /* vec_vmulosb */
3393
3394 inline vector signed short
3395 vec_vmulosb (vector signed char a1, vector signed char a2)
3396 {
3397   return (vector signed short) __builtin_altivec_vmulosb ((vector signed char) a1, (vector signed char) a2);
3398 }
3399
3400 /* vec_vmuloub */
3401
3402 inline vector unsigned short
3403 vec_vmuloub (vector unsigned char a1, vector unsigned char a2)
3404 {
3405   return (vector unsigned short) __builtin_altivec_vmuloub ((vector signed char) a1, (vector signed char) a2);
3406 }
3407
3408 /* vec_nmsub */
3409
3410 inline vector float
3411 vec_nmsub (vector float a1, vector float a2, vector float a3)
3412 {
3413   return (vector float) __builtin_altivec_vnmsubfp ((vector float) a1, (vector float) a2, (vector float) a3);
3414 }
3415
3416 /* vec_nor */
3417
3418 inline vector float
3419 vec_nor (vector float a1, vector float a2)
3420 {
3421   return (vector float) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
3422 }
3423
3424 inline vector signed int
3425 vec_nor (vector signed int a1, vector signed int a2)
3426 {
3427   return (vector signed int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
3428 }
3429
3430 inline vector unsigned int
3431 vec_nor (vector unsigned int a1, vector unsigned int a2)
3432 {
3433   return (vector unsigned int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
3434 }
3435
3436 inline vector bool int
3437 vec_nor (vector bool int a1, vector bool int a2)
3438 {
3439   return (vector bool int) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
3440 }
3441
3442 inline vector signed short
3443 vec_nor (vector signed short a1, vector signed short a2)
3444 {
3445   return (vector signed short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
3446 }
3447
3448 inline vector unsigned short
3449 vec_nor (vector unsigned short a1, vector unsigned short a2)
3450 {
3451   return (vector unsigned short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
3452 }
3453
3454 inline vector bool short
3455 vec_nor (vector bool short a1, vector bool short a2)
3456 {
3457   return (vector bool short) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
3458 }
3459
3460 inline vector signed char
3461 vec_nor (vector signed char a1, vector signed char a2)
3462 {
3463   return (vector signed char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
3464 }
3465
3466 inline vector unsigned char
3467 vec_nor (vector unsigned char a1, vector unsigned char a2)
3468 {
3469   return (vector unsigned char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
3470 }
3471
3472 inline vector bool char
3473 vec_nor (vector bool char a1, vector bool char a2)
3474 {
3475   return (vector bool char) __builtin_altivec_vnor ((vector signed int) a1, (vector signed int) a2);
3476 }
3477
3478 /* vec_or */
3479
3480 inline vector float
3481 vec_or (vector float a1, vector float a2)
3482 {
3483   return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3484 }
3485
3486 inline vector float
3487 vec_or (vector float a1, vector bool int a2)
3488 {
3489   return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3490 }
3491
3492 inline vector float
3493 vec_or (vector bool int a1, vector float a2)
3494 {
3495   return (vector float) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3496 }
3497
3498 inline vector bool int
3499 vec_or (vector bool int a1, vector bool int a2)
3500 {
3501   return (vector bool int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3502 }
3503
3504 inline vector signed int
3505 vec_or (vector bool int a1, vector signed int a2)
3506 {
3507   return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3508 }
3509
3510 inline vector signed int
3511 vec_or (vector signed int a1, vector bool int a2)
3512 {
3513   return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3514 }
3515
3516 inline vector signed int
3517 vec_or (vector signed int a1, vector signed int a2)
3518 {
3519   return (vector signed int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3520 }
3521
3522 inline vector unsigned int
3523 vec_or (vector bool int a1, vector unsigned int a2)
3524 {
3525   return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3526 }
3527
3528 inline vector unsigned int
3529 vec_or (vector unsigned int a1, vector bool int a2)
3530 {
3531   return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3532 }
3533
3534 inline vector unsigned int
3535 vec_or (vector unsigned int a1, vector unsigned int a2)
3536 {
3537   return (vector unsigned int) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3538 }
3539
3540 inline vector bool short
3541 vec_or (vector bool short a1, vector bool short a2)
3542 {
3543   return (vector bool short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3544 }
3545
3546 inline vector signed short
3547 vec_or (vector bool short a1, vector signed short a2)
3548 {
3549   return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3550 }
3551
3552 inline vector signed short
3553 vec_or (vector signed short a1, vector bool short a2)
3554 {
3555   return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3556 }
3557
3558 inline vector signed short
3559 vec_or (vector signed short a1, vector signed short a2)
3560 {
3561   return (vector signed short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3562 }
3563
3564 inline vector unsigned short
3565 vec_or (vector bool short a1, vector unsigned short a2)
3566 {
3567   return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3568 }
3569
3570 inline vector unsigned short
3571 vec_or (vector unsigned short a1, vector bool short a2)
3572 {
3573   return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3574 }
3575
3576 inline vector unsigned short
3577 vec_or (vector unsigned short a1, vector unsigned short a2)
3578 {
3579   return (vector unsigned short) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3580 }
3581
3582 inline vector signed char
3583 vec_or (vector bool char a1, vector signed char a2)
3584 {
3585   return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3586 }
3587
3588 inline vector bool char
3589 vec_or (vector bool char a1, vector bool char a2)
3590 {
3591   return (vector bool char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3592 }
3593
3594 inline vector signed char
3595 vec_or (vector signed char a1, vector bool char a2)
3596 {
3597   return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3598 }
3599
3600 inline vector signed char
3601 vec_or (vector signed char a1, vector signed char a2)
3602 {
3603   return (vector signed char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3604 }
3605
3606 inline vector unsigned char
3607 vec_or (vector bool char a1, vector unsigned char a2)
3608 {
3609   return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3610 }
3611
3612 inline vector unsigned char
3613 vec_or (vector unsigned char a1, vector bool char a2)
3614 {
3615   return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3616 }
3617
3618 inline vector unsigned char
3619 vec_or (vector unsigned char a1, vector unsigned char a2)
3620 {
3621   return (vector unsigned char) __builtin_altivec_vor ((vector signed int) a1, (vector signed int) a2);
3622 }
3623
3624 /* vec_pack */
3625
3626 inline vector signed char
3627 vec_pack (vector signed short a1, vector signed short a2)
3628 {
3629   return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3630 }
3631
3632 inline vector unsigned char
3633 vec_pack (vector unsigned short a1, vector unsigned short a2)
3634 {
3635   return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3636 }
3637
3638 inline vector bool char
3639 vec_pack (vector bool short a1, vector bool short a2)
3640 {
3641   return (vector bool char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3642 }
3643
3644 inline vector signed short
3645 vec_pack (vector signed int a1, vector signed int a2)
3646 {
3647   return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3648 }
3649
3650 inline vector unsigned short
3651 vec_pack (vector unsigned int a1, vector unsigned int a2)
3652 {
3653   return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3654 }
3655
3656 inline vector bool short
3657 vec_pack (vector bool int a1, vector bool int a2)
3658 {
3659   return (vector bool short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3660 }
3661
3662 /* vec_vpkuwum */
3663
3664 inline vector signed short
3665 vec_vpkuwum (vector signed int a1, vector signed int a2)
3666 {
3667   return (vector signed short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3668 }
3669
3670 inline vector unsigned short
3671 vec_vpkuwum (vector unsigned int a1, vector unsigned int a2)
3672 {
3673   return (vector unsigned short) __builtin_altivec_vpkuwum ((vector signed int) a1, (vector signed int) a2);
3674 }
3675
3676 /* vec_vpkuhum */
3677
3678 inline vector signed char
3679 vec_vpkuhum (vector signed short a1, vector signed short a2)
3680 {
3681   return (vector signed char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3682 }
3683
3684 inline vector unsigned char
3685 vec_vpkuhum (vector unsigned short a1, vector unsigned short a2)
3686 {
3687   return (vector unsigned char) __builtin_altivec_vpkuhum ((vector signed short) a1, (vector signed short) a2);
3688 }
3689
3690 /* vec_packpx */
3691
3692 inline vector pixel
3693 vec_packpx (vector unsigned int a1, vector unsigned int a2)
3694 {
3695   return (vector pixel) __builtin_altivec_vpkpx ((vector signed int) a1, (vector signed int) a2);
3696 }
3697
3698 /* vec_packs */
3699
3700 inline vector unsigned char
3701 vec_packs (vector unsigned short a1, vector unsigned short a2)
3702 {
3703   return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
3704 }
3705
3706 inline vector signed char
3707 vec_packs (vector signed short a1, vector signed short a2)
3708 {
3709   return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
3710 }
3711
3712 inline vector unsigned short
3713 vec_packs (vector unsigned int a1, vector unsigned int a2)
3714 {
3715   return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
3716 }
3717
3718 inline vector signed short
3719 vec_packs (vector signed int a1, vector signed int a2)
3720 {
3721   return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
3722 }
3723
3724 /* vec_vpkswss */
3725
3726 inline vector signed short
3727 vec_vpkswss (vector signed int a1, vector signed int a2)
3728 {
3729   return (vector signed short) __builtin_altivec_vpkswss ((vector signed int) a1, (vector signed int) a2);
3730 }
3731
3732 /* vec_vpkuwus */
3733
3734 inline vector unsigned short
3735 vec_vpkuwus (vector unsigned int a1, vector unsigned int a2)
3736 {
3737   return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
3738 }
3739
3740 /* vec_vpkshss */
3741
3742 inline vector signed char
3743 vec_vpkshss (vector signed short a1, vector signed short a2)
3744 {
3745   return (vector signed char) __builtin_altivec_vpkshss ((vector signed short) a1, (vector signed short) a2);
3746 }
3747
3748 /* vec_vpkuhus */
3749
3750 inline vector unsigned char
3751 vec_vpkuhus (vector unsigned short a1, vector unsigned short a2)
3752 {
3753   return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
3754 }
3755
3756 /* vec_packsu */
3757
3758 inline vector unsigned char
3759 vec_packsu (vector unsigned short a1, vector unsigned short a2)
3760 {
3761   return (vector unsigned char) __builtin_altivec_vpkuhus ((vector signed short) a1, (vector signed short) a2);
3762 }
3763
3764 inline vector unsigned char
3765 vec_packsu (vector signed short a1, vector signed short a2)
3766 {
3767   return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
3768 }
3769
3770 inline vector unsigned short
3771 vec_packsu (vector unsigned int a1, vector unsigned int a2)
3772 {
3773   return (vector unsigned short) __builtin_altivec_vpkuwus ((vector signed int) a1, (vector signed int) a2);
3774 }
3775
3776 inline vector unsigned short
3777 vec_packsu (vector signed int a1, vector signed int a2)
3778 {
3779   return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
3780 }
3781
3782 /* vec_vpkswus */
3783
3784 inline vector unsigned short
3785 vec_vpkswus (vector signed int a1, vector signed int a2)
3786 {
3787   return (vector unsigned short) __builtin_altivec_vpkswus ((vector signed int) a1, (vector signed int) a2);
3788 }
3789
3790 /* vec_vpkshus */
3791
3792 inline vector unsigned char
3793 vec_vpkshus (vector signed short a1, vector signed short a2)
3794 {
3795   return (vector unsigned char) __builtin_altivec_vpkshus ((vector signed short) a1, (vector signed short) a2);
3796 }
3797
3798 /* vec_perm */
3799
3800 inline vector float
3801 vec_perm (vector float a1, vector float a2, vector unsigned char a3)
3802 {
3803   return (vector float) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3804 }
3805
3806 inline vector signed int
3807 vec_perm (vector signed int a1, vector signed int a2, vector unsigned char a3)
3808 {
3809   return (vector signed int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3810 }
3811
3812 inline vector unsigned int
3813 vec_perm (vector unsigned int a1, vector unsigned int a2, vector unsigned char a3)
3814 {
3815   return (vector unsigned int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3816 }
3817
3818 inline vector bool int
3819 vec_perm (vector bool int a1, vector bool int a2, vector unsigned char a3)
3820 {
3821   return (vector bool int) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3822 }
3823
3824 inline vector signed short
3825 vec_perm (vector signed short a1, vector signed short a2, vector unsigned char a3)
3826 {
3827   return (vector signed short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3828 }
3829
3830 inline vector unsigned short
3831 vec_perm (vector unsigned short a1, vector unsigned short a2, vector unsigned char a3)
3832 {
3833   return (vector unsigned short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3834 }
3835
3836 inline vector bool short
3837 vec_perm (vector bool short a1, vector bool short a2, vector unsigned char a3)
3838 {
3839   return (vector bool short) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3840 }
3841
3842 inline vector pixel
3843 vec_perm (vector pixel a1, vector pixel a2, vector unsigned char a3)
3844 {
3845   return (vector pixel) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3846 }
3847
3848 inline vector signed char
3849 vec_perm (vector signed char a1, vector signed char a2, vector unsigned char a3)
3850 {
3851   return (vector signed char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3852 }
3853
3854 inline vector unsigned char
3855 vec_perm (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
3856 {
3857   return (vector unsigned char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3858 }
3859
3860 inline vector bool char
3861 vec_perm (vector bool char a1, vector bool char a2, vector bool char a3)
3862 {
3863   return (vector bool char) __builtin_altivec_vperm_4si ((vector signed int) a1, (vector signed int) a2, (vector signed char) a3);
3864 }
3865
3866 /* vec_re */
3867
3868 inline vector float
3869 vec_re (vector float a1)
3870 {
3871   return (vector float) __builtin_altivec_vrefp ((vector float) a1);
3872 }
3873
3874 /* vec_rl */
3875
3876 inline vector signed char
3877 vec_rl (vector signed char a1, vector unsigned char a2)
3878 {
3879   return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3880 }
3881
3882 inline vector unsigned char
3883 vec_rl (vector unsigned char a1, vector unsigned char a2)
3884 {
3885   return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3886 }
3887
3888 inline vector signed short
3889 vec_rl (vector signed short a1, vector unsigned short a2)
3890 {
3891   return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3892 }
3893
3894 inline vector unsigned short
3895 vec_rl (vector unsigned short a1, vector unsigned short a2)
3896 {
3897   return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3898 }
3899
3900 inline vector signed int
3901 vec_rl (vector signed int a1, vector unsigned int a2)
3902 {
3903   return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3904 }
3905
3906 inline vector unsigned int
3907 vec_rl (vector unsigned int a1, vector unsigned int a2)
3908 {
3909   return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3910 }
3911
3912 /* vec_vrlw */
3913
3914 inline vector signed int
3915 vec_vrlw (vector signed int a1, vector unsigned int a2)
3916 {
3917   return (vector signed int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3918 }
3919
3920 inline vector unsigned int
3921 vec_vrlw (vector unsigned int a1, vector unsigned int a2)
3922 {
3923   return (vector unsigned int) __builtin_altivec_vrlw ((vector signed int) a1, (vector signed int) a2);
3924 }
3925
3926 /* vec_vrlh */
3927
3928 inline vector signed short
3929 vec_vrlh (vector signed short a1, vector unsigned short a2)
3930 {
3931   return (vector signed short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3932 }
3933
3934 inline vector unsigned short
3935 vec_vrlh (vector unsigned short a1, vector unsigned short a2)
3936 {
3937   return (vector unsigned short) __builtin_altivec_vrlh ((vector signed short) a1, (vector signed short) a2);
3938 }
3939
3940 /* vec_vrlb */
3941
3942 inline vector signed char
3943 vec_vrlb (vector signed char a1, vector unsigned char a2)
3944 {
3945   return (vector signed char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3946 }
3947
3948 inline vector unsigned char
3949 vec_vrlb (vector unsigned char a1, vector unsigned char a2)
3950 {
3951   return (vector unsigned char) __builtin_altivec_vrlb ((vector signed char) a1, (vector signed char) a2);
3952 }
3953
3954 /* vec_round */
3955
3956 inline vector float
3957 vec_round (vector float a1)
3958 {
3959   return (vector float) __builtin_altivec_vrfin ((vector float) a1);
3960 }
3961
3962 /* vec_rsqrte */
3963
3964 inline vector float
3965 vec_rsqrte (vector float a1)
3966 {
3967   return (vector float) __builtin_altivec_vrsqrtefp ((vector float) a1);
3968 }
3969
3970 /* vec_sel */
3971
3972 inline vector float
3973 vec_sel (vector float a1, vector float a2, vector bool int a3)
3974 {
3975   return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3976 }
3977
3978 inline vector float
3979 vec_sel (vector float a1, vector float a2, vector unsigned int a3)
3980 {
3981   return (vector float) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3982 }
3983
3984 inline vector signed int
3985 vec_sel (vector signed int a1, vector signed int a2, vector bool int a3)
3986 {
3987   return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3988 }
3989
3990 inline vector signed int
3991 vec_sel (vector signed int a1, vector signed int a2, vector unsigned int a3)
3992 {
3993   return (vector signed int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
3994 }
3995
3996 inline vector unsigned int
3997 vec_sel (vector unsigned int a1, vector unsigned int a2, vector bool int a3)
3998 {
3999   return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4000 }
4001
4002 inline vector unsigned int
4003 vec_sel (vector unsigned int a1, vector unsigned int a2, vector unsigned int a3)
4004 {
4005   return (vector unsigned int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4006 }
4007
4008 inline vector bool int
4009 vec_sel (vector bool int a1, vector bool int a2, vector bool int a3)
4010 {
4011   return (vector bool int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4012 }
4013
4014 inline vector bool int
4015 vec_sel (vector bool int a1, vector bool int a2, vector unsigned int a3)
4016 {
4017   return (vector bool int) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4018 }
4019
4020 inline vector signed short
4021 vec_sel (vector signed short a1, vector signed short a2, vector bool short a3)
4022 {
4023   return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4024 }
4025
4026 inline vector signed short
4027 vec_sel (vector signed short a1, vector signed short a2, vector unsigned short a3)
4028 {
4029   return (vector signed short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4030 }
4031
4032 inline vector unsigned short
4033 vec_sel (vector unsigned short a1, vector unsigned short a2, vector bool short a3)
4034 {
4035   return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4036 }
4037
4038 inline vector unsigned short
4039 vec_sel (vector unsigned short a1, vector unsigned short a2, vector unsigned short a3)
4040 {
4041   return (vector unsigned short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4042 }
4043
4044 inline vector bool short
4045 vec_sel (vector bool short a1, vector bool short a2, vector bool short a3)
4046 {
4047   return (vector bool short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4048 }
4049
4050 inline vector bool short
4051 vec_sel (vector bool short a1, vector bool short a2, vector unsigned short a3)
4052 {
4053   return (vector bool short) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4054 }
4055
4056 inline vector signed char
4057 vec_sel (vector signed char a1, vector signed char a2, vector bool char a3)
4058 {
4059   return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4060 }
4061
4062 inline vector signed char
4063 vec_sel (vector signed char a1, vector signed char a2, vector unsigned char a3)
4064 {
4065   return (vector signed char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4066 }
4067
4068 inline vector unsigned char
4069 vec_sel (vector unsigned char a1, vector unsigned char a2, vector bool char a3)
4070 {
4071   return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4072 }
4073
4074 inline vector unsigned char
4075 vec_sel (vector unsigned char a1, vector unsigned char a2, vector unsigned char a3)
4076 {
4077   return (vector unsigned char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4078 }
4079
4080 inline vector bool char
4081 vec_sel (vector bool char a1, vector bool char a2, vector bool char a3)
4082 {
4083   return (vector bool char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4084 }
4085
4086 inline vector bool char
4087 vec_sel (vector bool char a1, vector bool char a2, vector unsigned char a3)
4088 {
4089   return (vector bool char) __builtin_altivec_vsel_4si ((vector signed int) a1, (vector signed int) a2, (vector signed int) a3);
4090 }
4091
4092 /* vec_sl */
4093
4094 inline vector signed char
4095 vec_sl (vector signed char a1, vector unsigned char a2)
4096 {
4097   return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
4098 }
4099
4100 inline vector unsigned char
4101 vec_sl (vector unsigned char a1, vector unsigned char a2)
4102 {
4103   return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
4104 }
4105
4106 inline vector signed short
4107 vec_sl (vector signed short a1, vector unsigned short a2)
4108 {
4109   return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
4110 }
4111
4112 inline vector unsigned short
4113 vec_sl (vector unsigned short a1, vector unsigned short a2)
4114 {
4115   return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
4116 }
4117
4118 inline vector signed int
4119 vec_sl (vector signed int a1, vector unsigned int a2)
4120 {
4121   return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
4122 }
4123
4124 inline vector unsigned int
4125 vec_sl (vector unsigned int a1, vector unsigned int a2)
4126 {
4127   return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
4128 }
4129
4130 /* vec_vslw */
4131
4132 inline vector signed int
4133 vec_vslw (vector signed int a1, vector unsigned int a2)
4134 {
4135   return (vector signed int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
4136 }
4137
4138 inline vector unsigned int
4139 vec_vslw (vector unsigned int a1, vector unsigned int a2)
4140 {
4141   return (vector unsigned int) __builtin_altivec_vslw ((vector signed int) a1, (vector signed int) a2);
4142 }
4143
4144 /* vec_vslh */
4145
4146 inline vector signed short
4147 vec_vslh (vector signed short a1, vector unsigned short a2)
4148 {
4149   return (vector signed short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
4150 }
4151
4152 inline vector unsigned short
4153 vec_vslh (vector unsigned short a1, vector unsigned short a2)
4154 {
4155   return (vector unsigned short) __builtin_altivec_vslh ((vector signed short) a1, (vector signed short) a2);
4156 }
4157
4158 /* vec_vslb */
4159
4160 inline vector signed char
4161 vec_vslb (vector signed char a1, vector unsigned char a2)
4162 {
4163   return (vector signed char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
4164 }
4165
4166 inline vector unsigned char
4167 vec_vslb (vector unsigned char a1, vector unsigned char a2)
4168 {
4169   return (vector unsigned char) __builtin_altivec_vslb ((vector signed char) a1, (vector signed char) a2);
4170 }
4171
4172 /* vec_sld */
4173
4174 inline vector float
4175 vec_sld (vector float a1, vector float a2, const int a3)
4176 {
4177   return (vector float) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
4178 }
4179
4180 inline vector signed int
4181 vec_sld (vector signed int a1, vector signed int a2, const int a3)
4182 {
4183   return (vector signed int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
4184 }
4185
4186 inline vector unsigned int
4187 vec_sld (vector unsigned int a1, vector unsigned int a2, const int a3)
4188 {
4189   return (vector unsigned int) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
4190 }
4191
4192 inline vector signed short
4193 vec_sld (vector signed short a1, vector signed short a2, const int a3)
4194 {
4195   return (vector signed short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
4196 }
4197
4198 inline vector unsigned short
4199 vec_sld (vector unsigned short a1, vector unsigned short a2, const int a3)
4200 {
4201   return (vector unsigned short) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
4202 }
4203
4204 inline vector pixel
4205 vec_sld (vector pixel a1, vector pixel a2, const int a3)
4206 {
4207   return (vector pixel) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
4208 }
4209
4210 inline vector signed char
4211 vec_sld (vector signed char a1, vector signed char a2, const int a3)
4212 {
4213   return (vector signed char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
4214 }
4215
4216 inline vector unsigned char
4217 vec_sld (vector unsigned char a1, vector unsigned char a2, const int a3)
4218 {
4219   return (vector unsigned char) __builtin_altivec_vsldoi_4si ((vector signed int) a1, (vector signed int) a2, a3);
4220 }
4221
4222 /* vec_sll */
4223
4224 inline vector signed int
4225 vec_sll (vector signed int a1, vector unsigned int a2)
4226 {
4227   return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4228 }
4229
4230 inline vector signed int
4231 vec_sll (vector signed int a1, vector unsigned short a2)
4232 {
4233   return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4234 }
4235
4236 inline vector signed int
4237 vec_sll (vector signed int a1, vector unsigned char a2)
4238 {
4239   return (vector signed int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4240 }
4241
4242 inline vector unsigned int
4243 vec_sll (vector unsigned int a1, vector unsigned int a2)
4244 {
4245   return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4246 }
4247
4248 inline vector unsigned int
4249 vec_sll (vector unsigned int a1, vector unsigned short a2)
4250 {
4251   return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4252 }
4253
4254 inline vector unsigned int
4255 vec_sll (vector unsigned int a1, vector unsigned char a2)
4256 {
4257   return (vector unsigned int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4258 }
4259
4260 inline vector bool int
4261 vec_sll (vector bool int a1, vector unsigned int a2)
4262 {
4263   return (vector bool int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4264 }
4265
4266 inline vector bool int
4267 vec_sll (vector bool int a1, vector unsigned short a2)
4268 {
4269   return (vector bool int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4270 }
4271
4272 inline vector bool int
4273 vec_sll (vector bool int a1, vector unsigned char a2)
4274 {
4275   return (vector bool int) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4276 }
4277
4278 inline vector signed short
4279 vec_sll (vector signed short a1, vector unsigned int a2)
4280 {
4281   return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4282 }
4283
4284 inline vector signed short
4285 vec_sll (vector signed short a1, vector unsigned short a2)
4286 {
4287   return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4288 }
4289
4290 inline vector signed short
4291 vec_sll (vector signed short a1, vector unsigned char a2)
4292 {
4293   return (vector signed short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4294 }
4295
4296 inline vector unsigned short
4297 vec_sll (vector unsigned short a1, vector unsigned int a2)
4298 {
4299   return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4300 }
4301
4302 inline vector unsigned short
4303 vec_sll (vector unsigned short a1, vector unsigned short a2)
4304 {
4305   return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4306 }
4307
4308 inline vector unsigned short
4309 vec_sll (vector unsigned short a1, vector unsigned char a2)
4310 {
4311   return (vector unsigned short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4312 }
4313
4314 inline vector bool short
4315 vec_sll (vector bool short a1, vector unsigned int a2)
4316 {
4317   return (vector bool short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4318 }
4319
4320 inline vector bool short
4321 vec_sll (vector bool short a1, vector unsigned short a2)
4322 {
4323   return (vector bool short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4324 }
4325
4326 inline vector bool short
4327 vec_sll (vector bool short a1, vector unsigned char a2)
4328 {
4329   return (vector bool short) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4330 }
4331
4332 inline vector pixel
4333 vec_sll (vector pixel a1, vector unsigned int a2)
4334 {
4335   return (vector pixel) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4336 }
4337
4338 inline vector pixel
4339 vec_sll (vector pixel a1, vector unsigned short a2)
4340 {
4341   return (vector pixel) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4342 }
4343
4344 inline vector pixel
4345 vec_sll (vector pixel a1, vector unsigned char a2)
4346 {
4347   return (vector pixel) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4348 }
4349
4350 inline vector signed char
4351 vec_sll (vector signed char a1, vector unsigned int a2)
4352 {
4353   return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4354 }
4355
4356 inline vector signed char
4357 vec_sll (vector signed char a1, vector unsigned short a2)
4358 {
4359   return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4360 }
4361
4362 inline vector signed char
4363 vec_sll (vector signed char a1, vector unsigned char a2)
4364 {
4365   return (vector signed char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4366 }
4367
4368 inline vector unsigned char
4369 vec_sll (vector unsigned char a1, vector unsigned int a2)
4370 {
4371   return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4372 }
4373
4374 inline vector unsigned char
4375 vec_sll (vector unsigned char a1, vector unsigned short a2)
4376 {
4377   return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4378 }
4379
4380 inline vector unsigned char
4381 vec_sll (vector unsigned char a1, vector unsigned char a2)
4382 {
4383   return (vector unsigned char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4384 }
4385
4386 inline vector bool char
4387 vec_sll (vector bool char a1, vector unsigned int a2)
4388 {
4389   return (vector bool char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4390 }
4391
4392 inline vector bool char
4393 vec_sll (vector bool char a1, vector unsigned short a2)
4394 {
4395   return (vector bool char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4396 }
4397
4398 inline vector bool char
4399 vec_sll (vector bool char a1, vector unsigned char a2)
4400 {
4401   return (vector bool char) __builtin_altivec_vsl ((vector signed int) a1, (vector signed int) a2);
4402 }
4403
4404 /* vec_slo */
4405
4406 inline vector float
4407 vec_slo (vector float a1, vector signed char a2)
4408 {
4409   return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
4410 }
4411
4412 inline vector float
4413 vec_slo (vector float a1, vector unsigned char a2)
4414 {
4415   return (vector float) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
4416 }
4417
4418 inline vector signed int
4419 vec_slo (vector signed int a1, vector signed char a2)
4420 {
4421   return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
4422 }
4423
4424 inline vector signed int
4425 vec_slo (vector signed int a1, vector unsigned char a2)
4426 {
4427   return (vector signed int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
4428 }
4429
4430 inline vector unsigned int
4431 vec_slo (vector unsigned int a1, vector signed char a2)
4432 {
4433   return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
4434 }
4435
4436 inline vector unsigned int
4437 vec_slo (vector unsigned int a1, vector unsigned char a2)
4438 {
4439   return (vector unsigned int) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);
4440 }
4441
4442 inline vector signed short
4443 vec_slo (vector signed short a1, vector signed char a2)
4444 {
4445   return (vector signed short) __builtin_altivec_vslo ((vector signed int) a1, (vector signed int) a2);