blob: c243676a2ff7e503dd4ff5992c3a562cfef517dd [file] [log] [blame]
Chris Lattnerdd173942010-04-14 03:54:58 +00001/*===---- altivec.h - Standard header for type generic math ---------------===*\
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21\*===----------------------------------------------------------------------===*/
22
23#ifndef __ALTIVEC_H
24#define __ALTIVEC_H
25
26#ifndef __ALTIVEC__
27#error "AltiVec support not enabled"
28#endif
29
30/* constants for mapping CR6 bits to predicate result. */
31
32#define __CR6_EQ 0
33#define __CR6_EQ_REV 1
34#define __CR6_LT 2
35#define __CR6_LT_REV 3
36
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000037#define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__))
38
39static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000040vec_perm(vector signed char __a, vector signed char __b, vector unsigned char __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000041
42static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000043vec_perm(vector unsigned char __a,
44 vector unsigned char __b,
45 vector unsigned char __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000046
Anton Yartsevf54dbfd2010-08-19 03:00:09 +000047static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000048vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c);
Anton Yartsevf54dbfd2010-08-19 03:00:09 +000049
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000050static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000051vec_perm(vector short __a, vector short __b, vector unsigned char __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000052
53static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000054vec_perm(vector unsigned short __a,
55 vector unsigned short __b,
56 vector unsigned char __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000057
Anton Yartsevf54dbfd2010-08-19 03:00:09 +000058static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000059vec_perm(vector bool short __a, vector bool short __b, vector unsigned char __c);
Anton Yartsevf54dbfd2010-08-19 03:00:09 +000060
61static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000062vec_perm(vector pixel __a, vector pixel __b, vector unsigned char __c);
Anton Yartsevf54dbfd2010-08-19 03:00:09 +000063
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000064static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000065vec_perm(vector int __a, vector int __b, vector unsigned char __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000066
67static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000068vec_perm(vector unsigned int __a, vector unsigned int __b, vector unsigned char __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000069
Anton Yartsevf54dbfd2010-08-19 03:00:09 +000070static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000071vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c);
Anton Yartsevf54dbfd2010-08-19 03:00:09 +000072
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000073static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000074vec_perm(vector float __a, vector float __b, vector unsigned char __c);
Chris Lattnerdd173942010-04-14 03:54:58 +000075
76/* vec_abs */
77
Chris Lattnerdd173942010-04-14 03:54:58 +000078#define __builtin_altivec_abs_v16qi vec_abs
79#define __builtin_altivec_abs_v8hi vec_abs
80#define __builtin_altivec_abs_v4si vec_abs
81
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000082static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000083vec_abs(vector signed char __a)
Chris Lattnerdd173942010-04-14 03:54:58 +000084{
David Blaikie4f918ae2013-01-16 23:08:36 +000085 return __builtin_altivec_vmaxsb(__a, -__a);
Chris Lattnerdd173942010-04-14 03:54:58 +000086}
87
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000088static vector signed short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000089vec_abs(vector signed short __a)
Chris Lattnerdd173942010-04-14 03:54:58 +000090{
David Blaikie4f918ae2013-01-16 23:08:36 +000091 return __builtin_altivec_vmaxsh(__a, -__a);
Chris Lattnerdd173942010-04-14 03:54:58 +000092}
93
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000094static vector signed int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000095vec_abs(vector signed int __a)
Chris Lattnerdd173942010-04-14 03:54:58 +000096{
David Blaikie4f918ae2013-01-16 23:08:36 +000097 return __builtin_altivec_vmaxsw(__a, -__a);
Chris Lattnerdd173942010-04-14 03:54:58 +000098}
99
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000100static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000101vec_abs(vector float __a)
Chris Lattnerdd173942010-04-14 03:54:58 +0000102{
David Blaikie4f918ae2013-01-16 23:08:36 +0000103 vector unsigned int __res = (vector unsigned int)__a
Anton Yartsev3ed32722010-09-18 00:39:16 +0000104 & (vector unsigned int)(0x7FFFFFFF);
David Blaikie4f918ae2013-01-16 23:08:36 +0000105 return (vector float)__res;
Chris Lattnerdd173942010-04-14 03:54:58 +0000106}
107
108/* vec_abss */
109
Chris Lattnerdd173942010-04-14 03:54:58 +0000110#define __builtin_altivec_abss_v16qi vec_abss
111#define __builtin_altivec_abss_v8hi vec_abss
112#define __builtin_altivec_abss_v4si vec_abss
113
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000114static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000115vec_abss(vector signed char __a)
Chris Lattnerdd173942010-04-14 03:54:58 +0000116{
Anton Yartsev3ed32722010-09-18 00:39:16 +0000117 return __builtin_altivec_vmaxsb
David Blaikie4f918ae2013-01-16 23:08:36 +0000118 (__a, __builtin_altivec_vsubsbs((vector signed char)(0), __a));
Chris Lattnerdd173942010-04-14 03:54:58 +0000119}
120
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000121static vector signed short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000122vec_abss(vector signed short __a)
Chris Lattnerdd173942010-04-14 03:54:58 +0000123{
Anton Yartsev3ed32722010-09-18 00:39:16 +0000124 return __builtin_altivec_vmaxsh
David Blaikie4f918ae2013-01-16 23:08:36 +0000125 (__a, __builtin_altivec_vsubshs((vector signed short)(0), __a));
Chris Lattnerdd173942010-04-14 03:54:58 +0000126}
127
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000128static vector signed int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000129vec_abss(vector signed int __a)
Chris Lattnerdd173942010-04-14 03:54:58 +0000130{
Anton Yartsev3ed32722010-09-18 00:39:16 +0000131 return __builtin_altivec_vmaxsw
David Blaikie4f918ae2013-01-16 23:08:36 +0000132 (__a, __builtin_altivec_vsubsws((vector signed int)(0), __a));
Chris Lattnerdd173942010-04-14 03:54:58 +0000133}
134
135/* vec_add */
136
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000137static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000138vec_add(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000139{
David Blaikie4f918ae2013-01-16 23:08:36 +0000140 return __a + __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000141}
142
Anton Yartsev05e35552010-08-16 16:22:12 +0000143static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000144vec_add(vector bool char __a, vector signed char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000145{
David Blaikie4f918ae2013-01-16 23:08:36 +0000146 return (vector signed char)__a + __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000147}
148
149static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000150vec_add(vector signed char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000151{
David Blaikie4f918ae2013-01-16 23:08:36 +0000152 return __a + (vector signed char)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000153}
154
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000155static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000156vec_add(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000157{
David Blaikie4f918ae2013-01-16 23:08:36 +0000158 return __a + __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000159}
160
Anton Yartsev05e35552010-08-16 16:22:12 +0000161static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000162vec_add(vector bool char __a, vector unsigned char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000163{
David Blaikie4f918ae2013-01-16 23:08:36 +0000164 return (vector unsigned char)__a + __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000165}
166
167static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000168vec_add(vector unsigned char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000169{
David Blaikie4f918ae2013-01-16 23:08:36 +0000170 return __a + (vector unsigned char)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000171}
172
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000173static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000174vec_add(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000175{
David Blaikie4f918ae2013-01-16 23:08:36 +0000176 return __a + __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000177}
178
Anton Yartsev05e35552010-08-16 16:22:12 +0000179static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000180vec_add(vector bool short __a, vector short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000181{
David Blaikie4f918ae2013-01-16 23:08:36 +0000182 return (vector short)__a + __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000183}
184
185static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000186vec_add(vector short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000187{
David Blaikie4f918ae2013-01-16 23:08:36 +0000188 return __a + (vector short)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000189}
190
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000191static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000192vec_add(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000193{
David Blaikie4f918ae2013-01-16 23:08:36 +0000194 return __a + __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000195}
196
Anton Yartsev05e35552010-08-16 16:22:12 +0000197static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000198vec_add(vector bool short __a, vector unsigned short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000199{
David Blaikie4f918ae2013-01-16 23:08:36 +0000200 return (vector unsigned short)__a + __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000201}
202
203static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000204vec_add(vector unsigned short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000205{
David Blaikie4f918ae2013-01-16 23:08:36 +0000206 return __a + (vector unsigned short)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000207}
208
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000209static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000210vec_add(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000211{
David Blaikie4f918ae2013-01-16 23:08:36 +0000212 return __a + __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000213}
214
Anton Yartsev05e35552010-08-16 16:22:12 +0000215static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000216vec_add(vector bool int __a, vector int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000217{
David Blaikie4f918ae2013-01-16 23:08:36 +0000218 return (vector int)__a + __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000219}
220
221static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000222vec_add(vector int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000223{
David Blaikie4f918ae2013-01-16 23:08:36 +0000224 return __a + (vector int)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000225}
226
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000227static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000228vec_add(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000229{
David Blaikie4f918ae2013-01-16 23:08:36 +0000230 return __a + __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000231}
232
Anton Yartsev05e35552010-08-16 16:22:12 +0000233static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000234vec_add(vector bool int __a, vector unsigned int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000235{
David Blaikie4f918ae2013-01-16 23:08:36 +0000236 return (vector unsigned int)__a + __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000237}
238
239static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000240vec_add(vector unsigned int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000241{
David Blaikie4f918ae2013-01-16 23:08:36 +0000242 return __a + (vector unsigned int)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000243}
244
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000245static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000246vec_add(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000247{
David Blaikie4f918ae2013-01-16 23:08:36 +0000248 return __a + __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000249}
250
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000251/* vec_vaddubm */
252
253#define __builtin_altivec_vaddubm vec_vaddubm
254
255static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000256vec_vaddubm(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000257{
David Blaikie4f918ae2013-01-16 23:08:36 +0000258 return __a + __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000259}
260
Anton Yartsev05e35552010-08-16 16:22:12 +0000261static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000262vec_vaddubm(vector bool char __a, vector signed char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000263{
David Blaikie4f918ae2013-01-16 23:08:36 +0000264 return (vector signed char)__a + __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000265}
266
267static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000268vec_vaddubm(vector signed char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000269{
David Blaikie4f918ae2013-01-16 23:08:36 +0000270 return __a + (vector signed char)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000271}
272
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000273static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000274vec_vaddubm(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000275{
David Blaikie4f918ae2013-01-16 23:08:36 +0000276 return __a + __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000277}
278
Anton Yartsev05e35552010-08-16 16:22:12 +0000279static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000280vec_vaddubm(vector bool char __a, vector unsigned char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000281{
David Blaikie4f918ae2013-01-16 23:08:36 +0000282 return (vector unsigned char)__a + __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000283}
284
285static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000286vec_vaddubm(vector unsigned char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000287{
David Blaikie4f918ae2013-01-16 23:08:36 +0000288 return __a + (vector unsigned char)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000289}
290
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000291/* vec_vadduhm */
292
293#define __builtin_altivec_vadduhm vec_vadduhm
294
295static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000296vec_vadduhm(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000297{
David Blaikie4f918ae2013-01-16 23:08:36 +0000298 return __a + __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000299}
300
Anton Yartsev05e35552010-08-16 16:22:12 +0000301static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000302vec_vadduhm(vector bool short __a, vector short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000303{
David Blaikie4f918ae2013-01-16 23:08:36 +0000304 return (vector short)__a + __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000305}
306
307static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000308vec_vadduhm(vector short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000309{
David Blaikie4f918ae2013-01-16 23:08:36 +0000310 return __a + (vector short)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000311}
312
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000313static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000314vec_vadduhm(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000315{
David Blaikie4f918ae2013-01-16 23:08:36 +0000316 return __a + __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000317}
318
Anton Yartsev05e35552010-08-16 16:22:12 +0000319static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000320vec_vadduhm(vector bool short __a, vector unsigned short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000321{
David Blaikie4f918ae2013-01-16 23:08:36 +0000322 return (vector unsigned short)__a + __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000323}
324
325static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000326vec_vadduhm(vector unsigned short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000327{
David Blaikie4f918ae2013-01-16 23:08:36 +0000328 return __a + (vector unsigned short)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000329}
330
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000331/* vec_vadduwm */
332
333#define __builtin_altivec_vadduwm vec_vadduwm
334
335static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000336vec_vadduwm(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000337{
David Blaikie4f918ae2013-01-16 23:08:36 +0000338 return __a + __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000339}
340
Anton Yartsev05e35552010-08-16 16:22:12 +0000341static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000342vec_vadduwm(vector bool int __a, vector int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000343{
David Blaikie4f918ae2013-01-16 23:08:36 +0000344 return (vector int)__a + __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000345}
346
347static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000348vec_vadduwm(vector int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000349{
David Blaikie4f918ae2013-01-16 23:08:36 +0000350 return __a + (vector int)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000351}
352
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000353static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000354vec_vadduwm(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000355{
David Blaikie4f918ae2013-01-16 23:08:36 +0000356 return __a + __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000357}
358
Anton Yartsev05e35552010-08-16 16:22:12 +0000359static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000360vec_vadduwm(vector bool int __a, vector unsigned int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000361{
David Blaikie4f918ae2013-01-16 23:08:36 +0000362 return (vector unsigned int)__a + __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000363}
364
365static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000366vec_vadduwm(vector unsigned int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000367{
David Blaikie4f918ae2013-01-16 23:08:36 +0000368 return __a + (vector unsigned int)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000369}
370
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000371/* vec_vaddfp */
372
373#define __builtin_altivec_vaddfp vec_vaddfp
374
375static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +0000376vec_vaddfp(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000377{
David Blaikie4f918ae2013-01-16 23:08:36 +0000378 return __a + __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000379}
380
Chris Lattnerdd173942010-04-14 03:54:58 +0000381/* vec_addc */
382
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000383static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +0000384vec_addc(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000385{
David Blaikie4f918ae2013-01-16 23:08:36 +0000386 return __builtin_altivec_vaddcuw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000387}
388
389/* vec_vaddcuw */
390
391static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +0000392vec_vaddcuw(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000393{
David Blaikie4f918ae2013-01-16 23:08:36 +0000394 return __builtin_altivec_vaddcuw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000395}
Chris Lattnerdd173942010-04-14 03:54:58 +0000396
397/* vec_adds */
398
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000399static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000400vec_adds(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000401{
David Blaikie4f918ae2013-01-16 23:08:36 +0000402 return __builtin_altivec_vaddsbs(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +0000403}
404
Anton Yartsev05e35552010-08-16 16:22:12 +0000405static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000406vec_adds(vector bool char __a, vector signed char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000407{
David Blaikie4f918ae2013-01-16 23:08:36 +0000408 return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000409}
410
411static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000412vec_adds(vector signed char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000413{
David Blaikie4f918ae2013-01-16 23:08:36 +0000414 return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000415}
416
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000417static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000418vec_adds(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000419{
David Blaikie4f918ae2013-01-16 23:08:36 +0000420 return __builtin_altivec_vaddubs(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +0000421}
422
Anton Yartsev05e35552010-08-16 16:22:12 +0000423static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000424vec_adds(vector bool char __a, vector unsigned char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000425{
David Blaikie4f918ae2013-01-16 23:08:36 +0000426 return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000427}
428
429static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000430vec_adds(vector unsigned char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000431{
David Blaikie4f918ae2013-01-16 23:08:36 +0000432 return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000433}
434
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000435static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000436vec_adds(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000437{
David Blaikie4f918ae2013-01-16 23:08:36 +0000438 return __builtin_altivec_vaddshs(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +0000439}
440
Anton Yartsev05e35552010-08-16 16:22:12 +0000441static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000442vec_adds(vector bool short __a, vector short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000443{
David Blaikie4f918ae2013-01-16 23:08:36 +0000444 return __builtin_altivec_vaddshs((vector short)__a, __b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000445}
446
447static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000448vec_adds(vector short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000449{
David Blaikie4f918ae2013-01-16 23:08:36 +0000450 return __builtin_altivec_vaddshs(__a, (vector short)__b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000451}
452
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000453static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000454vec_adds(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000455{
David Blaikie4f918ae2013-01-16 23:08:36 +0000456 return __builtin_altivec_vadduhs(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +0000457}
458
Anton Yartsev05e35552010-08-16 16:22:12 +0000459static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000460vec_adds(vector bool short __a, vector unsigned short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000461{
David Blaikie4f918ae2013-01-16 23:08:36 +0000462 return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000463}
464
465static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000466vec_adds(vector unsigned short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000467{
David Blaikie4f918ae2013-01-16 23:08:36 +0000468 return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000469}
470
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000471static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000472vec_adds(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000473{
David Blaikie4f918ae2013-01-16 23:08:36 +0000474 return __builtin_altivec_vaddsws(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +0000475}
476
Anton Yartsev05e35552010-08-16 16:22:12 +0000477static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000478vec_adds(vector bool int __a, vector int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000479{
David Blaikie4f918ae2013-01-16 23:08:36 +0000480 return __builtin_altivec_vaddsws((vector int)__a, __b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000481}
482
483static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000484vec_adds(vector int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000485{
David Blaikie4f918ae2013-01-16 23:08:36 +0000486 return __builtin_altivec_vaddsws(__a, (vector int)__b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000487}
488
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000489static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000490vec_adds(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000491{
David Blaikie4f918ae2013-01-16 23:08:36 +0000492 return __builtin_altivec_vadduws(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +0000493}
494
Anton Yartsev05e35552010-08-16 16:22:12 +0000495static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000496vec_adds(vector bool int __a, vector unsigned int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000497{
David Blaikie4f918ae2013-01-16 23:08:36 +0000498 return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000499}
500
501static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000502vec_adds(vector unsigned int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000503{
David Blaikie4f918ae2013-01-16 23:08:36 +0000504 return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000505}
506
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000507/* vec_vaddsbs */
Chris Lattnerdd173942010-04-14 03:54:58 +0000508
Anton Yartsev05e35552010-08-16 16:22:12 +0000509static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000510vec_vaddsbs(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000511{
David Blaikie4f918ae2013-01-16 23:08:36 +0000512 return __builtin_altivec_vaddsbs(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +0000513}
514
Anton Yartsev05e35552010-08-16 16:22:12 +0000515static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000516vec_vaddsbs(vector bool char __a, vector signed char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000517{
David Blaikie4f918ae2013-01-16 23:08:36 +0000518 return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000519}
520
521static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000522vec_vaddsbs(vector signed char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000523{
David Blaikie4f918ae2013-01-16 23:08:36 +0000524 return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000525}
526
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000527/* vec_vaddubs */
528
Anton Yartsev05e35552010-08-16 16:22:12 +0000529static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000530vec_vaddubs(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000531{
David Blaikie4f918ae2013-01-16 23:08:36 +0000532 return __builtin_altivec_vaddubs(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +0000533}
534
Anton Yartsev05e35552010-08-16 16:22:12 +0000535static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000536vec_vaddubs(vector bool char __a, vector unsigned char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000537{
David Blaikie4f918ae2013-01-16 23:08:36 +0000538 return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000539}
540
541static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000542vec_vaddubs(vector unsigned char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000543{
David Blaikie4f918ae2013-01-16 23:08:36 +0000544 return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000545}
546
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000547/* vec_vaddshs */
548
Anton Yartsev05e35552010-08-16 16:22:12 +0000549static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000550vec_vaddshs(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000551{
David Blaikie4f918ae2013-01-16 23:08:36 +0000552 return __builtin_altivec_vaddshs(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +0000553}
554
Anton Yartsev05e35552010-08-16 16:22:12 +0000555static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000556vec_vaddshs(vector bool short __a, vector short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000557{
David Blaikie4f918ae2013-01-16 23:08:36 +0000558 return __builtin_altivec_vaddshs((vector short)__a, __b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000559}
560
561static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000562vec_vaddshs(vector short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000563{
David Blaikie4f918ae2013-01-16 23:08:36 +0000564 return __builtin_altivec_vaddshs(__a, (vector short)__b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000565}
566
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000567/* vec_vadduhs */
568
Anton Yartsev05e35552010-08-16 16:22:12 +0000569static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000570vec_vadduhs(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000571{
David Blaikie4f918ae2013-01-16 23:08:36 +0000572 return __builtin_altivec_vadduhs(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +0000573}
574
Anton Yartsev05e35552010-08-16 16:22:12 +0000575static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000576vec_vadduhs(vector bool short __a, vector unsigned short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000577{
David Blaikie4f918ae2013-01-16 23:08:36 +0000578 return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000579}
580
581static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000582vec_vadduhs(vector unsigned short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000583{
David Blaikie4f918ae2013-01-16 23:08:36 +0000584 return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000585}
586
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000587/* vec_vaddsws */
588
Anton Yartsev05e35552010-08-16 16:22:12 +0000589static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000590vec_vaddsws(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000591{
David Blaikie4f918ae2013-01-16 23:08:36 +0000592 return __builtin_altivec_vaddsws(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +0000593}
594
Anton Yartsev05e35552010-08-16 16:22:12 +0000595static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000596vec_vaddsws(vector bool int __a, vector int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000597{
David Blaikie4f918ae2013-01-16 23:08:36 +0000598 return __builtin_altivec_vaddsws((vector int)__a, __b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000599}
600
601static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000602vec_vaddsws(vector int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000603{
David Blaikie4f918ae2013-01-16 23:08:36 +0000604 return __builtin_altivec_vaddsws(__a, (vector int)__b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000605}
606
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000607/* vec_vadduws */
608
Anton Yartsev05e35552010-08-16 16:22:12 +0000609static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000610vec_vadduws(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000611{
David Blaikie4f918ae2013-01-16 23:08:36 +0000612 return __builtin_altivec_vadduws(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +0000613}
614
Anton Yartsev05e35552010-08-16 16:22:12 +0000615static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000616vec_vadduws(vector bool int __a, vector unsigned int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000617{
David Blaikie4f918ae2013-01-16 23:08:36 +0000618 return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000619}
620
621static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000622vec_vadduws(vector unsigned int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000623{
David Blaikie4f918ae2013-01-16 23:08:36 +0000624 return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
Anton Yartsev05e35552010-08-16 16:22:12 +0000625}
626
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000627/* vec_and */
628
629#define __builtin_altivec_vand vec_and
630
631static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000632vec_and(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000633{
David Blaikie4f918ae2013-01-16 23:08:36 +0000634 return __a & __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000635}
636
Anton Yartsev05e35552010-08-16 16:22:12 +0000637static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000638vec_and(vector bool char __a, vector signed char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000639{
David Blaikie4f918ae2013-01-16 23:08:36 +0000640 return (vector signed char)__a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000641}
642
643static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000644vec_and(vector signed char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000645{
David Blaikie4f918ae2013-01-16 23:08:36 +0000646 return __a & (vector signed char)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000647}
648
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000649static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000650vec_and(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000651{
David Blaikie4f918ae2013-01-16 23:08:36 +0000652 return __a & __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000653}
654
Anton Yartsev05e35552010-08-16 16:22:12 +0000655static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000656vec_and(vector bool char __a, vector unsigned char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000657{
David Blaikie4f918ae2013-01-16 23:08:36 +0000658 return (vector unsigned char)__a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000659}
660
661static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000662vec_and(vector unsigned char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000663{
David Blaikie4f918ae2013-01-16 23:08:36 +0000664 return __a & (vector unsigned char)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000665}
666
667static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000668vec_and(vector bool char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000669{
David Blaikie4f918ae2013-01-16 23:08:36 +0000670 return __a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000671}
672
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000673static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000674vec_and(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000675{
David Blaikie4f918ae2013-01-16 23:08:36 +0000676 return __a & __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000677}
678
Anton Yartsev05e35552010-08-16 16:22:12 +0000679static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000680vec_and(vector bool short __a, vector short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000681{
David Blaikie4f918ae2013-01-16 23:08:36 +0000682 return (vector short)__a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000683}
684
685static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000686vec_and(vector short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000687{
David Blaikie4f918ae2013-01-16 23:08:36 +0000688 return __a & (vector short)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000689}
690
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000691static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000692vec_and(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000693{
David Blaikie4f918ae2013-01-16 23:08:36 +0000694 return __a & __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000695}
696
Anton Yartsev05e35552010-08-16 16:22:12 +0000697static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000698vec_and(vector bool short __a, vector unsigned short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000699{
David Blaikie4f918ae2013-01-16 23:08:36 +0000700 return (vector unsigned short)__a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000701}
702
703static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000704vec_and(vector unsigned short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000705{
David Blaikie4f918ae2013-01-16 23:08:36 +0000706 return __a & (vector unsigned short)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000707}
708
709static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000710vec_and(vector bool short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000711{
David Blaikie4f918ae2013-01-16 23:08:36 +0000712 return __a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000713}
714
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000715static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000716vec_and(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000717{
David Blaikie4f918ae2013-01-16 23:08:36 +0000718 return __a & __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000719}
720
Anton Yartsev05e35552010-08-16 16:22:12 +0000721static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000722vec_and(vector bool int __a, vector int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000723{
David Blaikie4f918ae2013-01-16 23:08:36 +0000724 return (vector int)__a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000725}
726
727static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000728vec_and(vector int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000729{
David Blaikie4f918ae2013-01-16 23:08:36 +0000730 return __a & (vector int)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000731}
732
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000733static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000734vec_and(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000735{
David Blaikie4f918ae2013-01-16 23:08:36 +0000736 return __a & __b;
Chris Lattnerdd173942010-04-14 03:54:58 +0000737}
738
Anton Yartsev05e35552010-08-16 16:22:12 +0000739static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000740vec_and(vector bool int __a, vector unsigned int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000741{
David Blaikie4f918ae2013-01-16 23:08:36 +0000742 return (vector unsigned int)__a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000743}
744
745static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000746vec_and(vector unsigned int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000747{
David Blaikie4f918ae2013-01-16 23:08:36 +0000748 return __a & (vector unsigned int)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000749}
750
751static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000752vec_and(vector bool int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000753{
David Blaikie4f918ae2013-01-16 23:08:36 +0000754 return __a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000755}
756
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000757static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000758vec_and(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +0000759{
David Blaikie4f918ae2013-01-16 23:08:36 +0000760 vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b;
761 return (vector float)__res;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000762}
763
Anton Yartsev05e35552010-08-16 16:22:12 +0000764static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000765vec_and(vector bool int __a, vector float __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000766{
David Blaikie4f918ae2013-01-16 23:08:36 +0000767 vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b;
768 return (vector float)__res;
Anton Yartsev05e35552010-08-16 16:22:12 +0000769}
770
771static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000772vec_and(vector float __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000773{
David Blaikie4f918ae2013-01-16 23:08:36 +0000774 vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b;
775 return (vector float)__res;
Anton Yartsev05e35552010-08-16 16:22:12 +0000776}
777
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000778/* vec_vand */
779
780static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000781vec_vand(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000782{
David Blaikie4f918ae2013-01-16 23:08:36 +0000783 return __a & __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000784}
785
Anton Yartsev05e35552010-08-16 16:22:12 +0000786static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000787vec_vand(vector bool char __a, vector signed char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000788{
David Blaikie4f918ae2013-01-16 23:08:36 +0000789 return (vector signed char)__a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000790}
791
792static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000793vec_vand(vector signed char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000794{
David Blaikie4f918ae2013-01-16 23:08:36 +0000795 return __a & (vector signed char)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000796}
797
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000798static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000799vec_vand(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000800{
David Blaikie4f918ae2013-01-16 23:08:36 +0000801 return __a & __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000802}
803
Anton Yartsev05e35552010-08-16 16:22:12 +0000804static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000805vec_vand(vector bool char __a, vector unsigned char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000806{
David Blaikie4f918ae2013-01-16 23:08:36 +0000807 return (vector unsigned char)__a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000808}
809
810static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000811vec_vand(vector unsigned char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000812{
David Blaikie4f918ae2013-01-16 23:08:36 +0000813 return __a & (vector unsigned char)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000814}
815
816static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000817vec_vand(vector bool char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000818{
David Blaikie4f918ae2013-01-16 23:08:36 +0000819 return __a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000820}
821
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000822static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000823vec_vand(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000824{
David Blaikie4f918ae2013-01-16 23:08:36 +0000825 return __a & __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000826}
827
Anton Yartsev05e35552010-08-16 16:22:12 +0000828static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000829vec_vand(vector bool short __a, vector short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000830{
David Blaikie4f918ae2013-01-16 23:08:36 +0000831 return (vector short)__a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000832}
833
834static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000835vec_vand(vector short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000836{
David Blaikie4f918ae2013-01-16 23:08:36 +0000837 return __a & (vector short)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000838}
839
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000840static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000841vec_vand(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000842{
David Blaikie4f918ae2013-01-16 23:08:36 +0000843 return __a & __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000844}
845
Anton Yartsev05e35552010-08-16 16:22:12 +0000846static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000847vec_vand(vector bool short __a, vector unsigned short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000848{
David Blaikie4f918ae2013-01-16 23:08:36 +0000849 return (vector unsigned short)__a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000850}
851
852static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000853vec_vand(vector unsigned short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000854{
David Blaikie4f918ae2013-01-16 23:08:36 +0000855 return __a & (vector unsigned short)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000856}
857
858static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000859vec_vand(vector bool short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000860{
David Blaikie4f918ae2013-01-16 23:08:36 +0000861 return __a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000862}
863
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000864static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000865vec_vand(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000866{
David Blaikie4f918ae2013-01-16 23:08:36 +0000867 return __a & __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000868}
869
Anton Yartsev05e35552010-08-16 16:22:12 +0000870static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000871vec_vand(vector bool int __a, vector int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000872{
David Blaikie4f918ae2013-01-16 23:08:36 +0000873 return (vector int)__a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000874}
875
876static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000877vec_vand(vector int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000878{
David Blaikie4f918ae2013-01-16 23:08:36 +0000879 return __a & (vector int)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000880}
881
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000882static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000883vec_vand(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000884{
David Blaikie4f918ae2013-01-16 23:08:36 +0000885 return __a & __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000886}
887
Anton Yartsev05e35552010-08-16 16:22:12 +0000888static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000889vec_vand(vector bool int __a, vector unsigned int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000890{
David Blaikie4f918ae2013-01-16 23:08:36 +0000891 return (vector unsigned int)__a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000892}
893
894static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000895vec_vand(vector unsigned int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000896{
David Blaikie4f918ae2013-01-16 23:08:36 +0000897 return __a & (vector unsigned int)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000898}
899
900static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000901vec_vand(vector bool int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000902{
David Blaikie4f918ae2013-01-16 23:08:36 +0000903 return __a & __b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000904}
905
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000906static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000907vec_vand(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000908{
David Blaikie4f918ae2013-01-16 23:08:36 +0000909 vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b;
910 return (vector float)__res;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000911}
912
Anton Yartsev05e35552010-08-16 16:22:12 +0000913static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000914vec_vand(vector bool int __a, vector float __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000915{
David Blaikie4f918ae2013-01-16 23:08:36 +0000916 vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b;
917 return (vector float)__res;
Anton Yartsev05e35552010-08-16 16:22:12 +0000918}
919
920static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000921vec_vand(vector float __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000922{
David Blaikie4f918ae2013-01-16 23:08:36 +0000923 vector unsigned int __res = (vector unsigned int)__a & (vector unsigned int)__b;
924 return (vector float)__res;
Anton Yartsev05e35552010-08-16 16:22:12 +0000925}
926
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000927/* vec_andc */
928
929#define __builtin_altivec_vandc vec_andc
930
931static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000932vec_andc(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000933{
David Blaikie4f918ae2013-01-16 23:08:36 +0000934 return __a & ~__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000935}
936
Anton Yartsev05e35552010-08-16 16:22:12 +0000937static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000938vec_andc(vector bool char __a, vector signed char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000939{
David Blaikie4f918ae2013-01-16 23:08:36 +0000940 return (vector signed char)__a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000941}
942
943static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000944vec_andc(vector signed char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000945{
David Blaikie4f918ae2013-01-16 23:08:36 +0000946 return __a & ~(vector signed char)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000947}
948
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000949static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000950vec_andc(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000951{
David Blaikie4f918ae2013-01-16 23:08:36 +0000952 return __a & ~__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000953}
954
Anton Yartsev05e35552010-08-16 16:22:12 +0000955static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000956vec_andc(vector bool char __a, vector unsigned char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000957{
David Blaikie4f918ae2013-01-16 23:08:36 +0000958 return (vector unsigned char)__a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000959}
960
961static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000962vec_andc(vector unsigned char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000963{
David Blaikie4f918ae2013-01-16 23:08:36 +0000964 return __a & ~(vector unsigned char)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000965}
966
967static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000968vec_andc(vector bool char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000969{
David Blaikie4f918ae2013-01-16 23:08:36 +0000970 return __a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000971}
972
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000973static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000974vec_andc(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000975{
David Blaikie4f918ae2013-01-16 23:08:36 +0000976 return __a & ~__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000977}
978
Anton Yartsev05e35552010-08-16 16:22:12 +0000979static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000980vec_andc(vector bool short __a, vector short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000981{
David Blaikie4f918ae2013-01-16 23:08:36 +0000982 return (vector short)__a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000983}
984
985static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000986vec_andc(vector short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000987{
David Blaikie4f918ae2013-01-16 23:08:36 +0000988 return __a & ~(vector short)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +0000989}
990
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000991static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000992vec_andc(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000993{
David Blaikie4f918ae2013-01-16 23:08:36 +0000994 return __a & ~__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +0000995}
996
Anton Yartsev05e35552010-08-16 16:22:12 +0000997static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +0000998vec_andc(vector bool short __a, vector unsigned short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +0000999{
David Blaikie4f918ae2013-01-16 23:08:36 +00001000 return (vector unsigned short)__a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001001}
1002
1003static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001004vec_andc(vector unsigned short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001005{
David Blaikie4f918ae2013-01-16 23:08:36 +00001006 return __a & ~(vector unsigned short)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001007}
1008
1009static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001010vec_andc(vector bool short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001011{
David Blaikie4f918ae2013-01-16 23:08:36 +00001012 return __a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001013}
1014
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001015static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001016vec_andc(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001017{
David Blaikie4f918ae2013-01-16 23:08:36 +00001018 return __a & ~__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001019}
1020
Anton Yartsev05e35552010-08-16 16:22:12 +00001021static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001022vec_andc(vector bool int __a, vector int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001023{
David Blaikie4f918ae2013-01-16 23:08:36 +00001024 return (vector int)__a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001025}
1026
1027static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001028vec_andc(vector int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001029{
David Blaikie4f918ae2013-01-16 23:08:36 +00001030 return __a & ~(vector int)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001031}
1032
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001033static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001034vec_andc(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001035{
David Blaikie4f918ae2013-01-16 23:08:36 +00001036 return __a & ~__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001037}
1038
Anton Yartsev05e35552010-08-16 16:22:12 +00001039static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001040vec_andc(vector bool int __a, vector unsigned int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001041{
David Blaikie4f918ae2013-01-16 23:08:36 +00001042 return (vector unsigned int)__a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001043}
1044
1045static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001046vec_andc(vector unsigned int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001047{
David Blaikie4f918ae2013-01-16 23:08:36 +00001048 return __a & ~(vector unsigned int)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001049}
1050
1051static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001052vec_andc(vector bool int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001053{
David Blaikie4f918ae2013-01-16 23:08:36 +00001054 return __a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001055}
1056
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001057static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001058vec_andc(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001059{
David Blaikie4f918ae2013-01-16 23:08:36 +00001060 vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b;
1061 return (vector float)__res;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001062}
1063
Anton Yartsev05e35552010-08-16 16:22:12 +00001064static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001065vec_andc(vector bool int __a, vector float __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001066{
David Blaikie4f918ae2013-01-16 23:08:36 +00001067 vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b;
1068 return (vector float)__res;
Anton Yartsev05e35552010-08-16 16:22:12 +00001069}
1070
1071static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001072vec_andc(vector float __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001073{
David Blaikie4f918ae2013-01-16 23:08:36 +00001074 vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b;
1075 return (vector float)__res;
Anton Yartsev05e35552010-08-16 16:22:12 +00001076}
1077
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001078/* vec_vandc */
1079
1080static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001081vec_vandc(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001082{
David Blaikie4f918ae2013-01-16 23:08:36 +00001083 return __a & ~__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001084}
1085
Anton Yartsev05e35552010-08-16 16:22:12 +00001086static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001087vec_vandc(vector bool char __a, vector signed char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001088{
David Blaikie4f918ae2013-01-16 23:08:36 +00001089 return (vector signed char)__a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001090}
1091
1092static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001093vec_vandc(vector signed char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001094{
David Blaikie4f918ae2013-01-16 23:08:36 +00001095 return __a & ~(vector signed char)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001096}
1097
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001098static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001099vec_vandc(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001100{
David Blaikie4f918ae2013-01-16 23:08:36 +00001101 return __a & ~__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001102}
1103
Anton Yartsev05e35552010-08-16 16:22:12 +00001104static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001105vec_vandc(vector bool char __a, vector unsigned char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001106{
David Blaikie4f918ae2013-01-16 23:08:36 +00001107 return (vector unsigned char)__a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001108}
1109
1110static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001111vec_vandc(vector unsigned char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001112{
David Blaikie4f918ae2013-01-16 23:08:36 +00001113 return __a & ~(vector unsigned char)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001114}
1115
1116static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001117vec_vandc(vector bool char __a, vector bool char __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001118{
David Blaikie4f918ae2013-01-16 23:08:36 +00001119 return __a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001120}
1121
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001122static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001123vec_vandc(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001124{
David Blaikie4f918ae2013-01-16 23:08:36 +00001125 return __a & ~__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001126}
1127
Anton Yartsev05e35552010-08-16 16:22:12 +00001128static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001129vec_vandc(vector bool short __a, vector short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001130{
David Blaikie4f918ae2013-01-16 23:08:36 +00001131 return (vector short)__a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001132}
1133
1134static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001135vec_vandc(vector short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001136{
David Blaikie4f918ae2013-01-16 23:08:36 +00001137 return __a & ~(vector short)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001138}
1139
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001140static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001141vec_vandc(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001142{
David Blaikie4f918ae2013-01-16 23:08:36 +00001143 return __a & ~__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001144}
1145
Anton Yartsev05e35552010-08-16 16:22:12 +00001146static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001147vec_vandc(vector bool short __a, vector unsigned short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001148{
David Blaikie4f918ae2013-01-16 23:08:36 +00001149 return (vector unsigned short)__a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001150}
1151
1152static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001153vec_vandc(vector unsigned short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001154{
David Blaikie4f918ae2013-01-16 23:08:36 +00001155 return __a & ~(vector unsigned short)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001156}
1157
1158static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001159vec_vandc(vector bool short __a, vector bool short __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001160{
David Blaikie4f918ae2013-01-16 23:08:36 +00001161 return __a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001162}
1163
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001164static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001165vec_vandc(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001166{
David Blaikie4f918ae2013-01-16 23:08:36 +00001167 return __a & ~__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001168}
1169
Anton Yartsev05e35552010-08-16 16:22:12 +00001170static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001171vec_vandc(vector bool int __a, vector int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001172{
David Blaikie4f918ae2013-01-16 23:08:36 +00001173 return (vector int)__a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001174}
1175
1176static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001177vec_vandc(vector int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001178{
David Blaikie4f918ae2013-01-16 23:08:36 +00001179 return __a & ~(vector int)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001180}
1181
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001182static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001183vec_vandc(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001184{
David Blaikie4f918ae2013-01-16 23:08:36 +00001185 return __a & ~__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001186}
1187
Anton Yartsev05e35552010-08-16 16:22:12 +00001188static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001189vec_vandc(vector bool int __a, vector unsigned int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001190{
David Blaikie4f918ae2013-01-16 23:08:36 +00001191 return (vector unsigned int)__a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001192}
1193
1194static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001195vec_vandc(vector unsigned int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001196{
David Blaikie4f918ae2013-01-16 23:08:36 +00001197 return __a & ~(vector unsigned int)__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001198}
1199
1200static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001201vec_vandc(vector bool int __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001202{
David Blaikie4f918ae2013-01-16 23:08:36 +00001203 return __a & ~__b;
Anton Yartsev05e35552010-08-16 16:22:12 +00001204}
1205
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001206static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001207vec_vandc(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001208{
David Blaikie4f918ae2013-01-16 23:08:36 +00001209 vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b;
1210 return (vector float)__res;
Chris Lattnerdd173942010-04-14 03:54:58 +00001211}
1212
Anton Yartsev05e35552010-08-16 16:22:12 +00001213static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001214vec_vandc(vector bool int __a, vector float __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001215{
David Blaikie4f918ae2013-01-16 23:08:36 +00001216 vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b;
1217 return (vector float)__res;
Anton Yartsev05e35552010-08-16 16:22:12 +00001218}
1219
1220static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001221vec_vandc(vector float __a, vector bool int __b)
Anton Yartsev05e35552010-08-16 16:22:12 +00001222{
David Blaikie4f918ae2013-01-16 23:08:36 +00001223 vector unsigned int __res = (vector unsigned int)__a & ~(vector unsigned int)__b;
1224 return (vector float)__res;
Anton Yartsev05e35552010-08-16 16:22:12 +00001225}
1226
Chris Lattnerdd173942010-04-14 03:54:58 +00001227/* vec_avg */
1228
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001229static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001230vec_avg(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001231{
David Blaikie4f918ae2013-01-16 23:08:36 +00001232 return __builtin_altivec_vavgsb(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001233}
1234
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001235static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001236vec_avg(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001237{
David Blaikie4f918ae2013-01-16 23:08:36 +00001238 return __builtin_altivec_vavgub(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001239}
1240
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001241static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001242vec_avg(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001243{
David Blaikie4f918ae2013-01-16 23:08:36 +00001244 return __builtin_altivec_vavgsh(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001245}
1246
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001247static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001248vec_avg(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001249{
David Blaikie4f918ae2013-01-16 23:08:36 +00001250 return __builtin_altivec_vavguh(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001251}
1252
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001253static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001254vec_avg(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001255{
David Blaikie4f918ae2013-01-16 23:08:36 +00001256 return __builtin_altivec_vavgsw(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001257}
1258
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001259static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001260vec_avg(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001261{
David Blaikie4f918ae2013-01-16 23:08:36 +00001262 return __builtin_altivec_vavguw(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001263}
1264
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001265/* vec_vavgsb */
Chris Lattnerdd173942010-04-14 03:54:58 +00001266
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001267static vector signed char __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001268vec_vavgsb(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001269{
David Blaikie4f918ae2013-01-16 23:08:36 +00001270 return __builtin_altivec_vavgsb(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001271}
1272
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001273/* vec_vavgub */
1274
1275static vector unsigned char __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001276vec_vavgub(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001277{
David Blaikie4f918ae2013-01-16 23:08:36 +00001278 return __builtin_altivec_vavgub(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001279}
1280
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001281/* vec_vavgsh */
1282
1283static vector short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001284vec_vavgsh(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001285{
David Blaikie4f918ae2013-01-16 23:08:36 +00001286 return __builtin_altivec_vavgsh(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001287}
1288
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001289/* vec_vavguh */
1290
1291static vector unsigned short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001292vec_vavguh(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001293{
David Blaikie4f918ae2013-01-16 23:08:36 +00001294 return __builtin_altivec_vavguh(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001295}
1296
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001297/* vec_vavgsw */
1298
1299static vector int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001300vec_vavgsw(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001301{
David Blaikie4f918ae2013-01-16 23:08:36 +00001302 return __builtin_altivec_vavgsw(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001303}
1304
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001305/* vec_vavguw */
1306
1307static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001308vec_vavguw(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001309{
David Blaikie4f918ae2013-01-16 23:08:36 +00001310 return __builtin_altivec_vavguw(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001311}
1312
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001313/* vec_ceil */
1314
1315static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001316vec_ceil(vector float __a)
Chris Lattnerdd173942010-04-14 03:54:58 +00001317{
David Blaikie4f918ae2013-01-16 23:08:36 +00001318 return __builtin_altivec_vrfip(__a);
Chris Lattnerdd173942010-04-14 03:54:58 +00001319}
1320
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001321/* vec_vrfip */
Chris Lattnerdd173942010-04-14 03:54:58 +00001322
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001323static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001324vec_vrfip(vector float __a)
Chris Lattnerdd173942010-04-14 03:54:58 +00001325{
David Blaikie4f918ae2013-01-16 23:08:36 +00001326 return __builtin_altivec_vrfip(__a);
Chris Lattnerdd173942010-04-14 03:54:58 +00001327}
1328
1329/* vec_cmpb */
1330
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001331static vector int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001332vec_cmpb(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001333{
David Blaikie4f918ae2013-01-16 23:08:36 +00001334 return __builtin_altivec_vcmpbfp(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001335}
1336
1337/* vec_vcmpbfp */
1338
1339static vector int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001340vec_vcmpbfp(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001341{
David Blaikie4f918ae2013-01-16 23:08:36 +00001342 return __builtin_altivec_vcmpbfp(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001343}
Chris Lattnerdd173942010-04-14 03:54:58 +00001344
1345/* vec_cmpeq */
1346
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001347static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001348vec_cmpeq(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001349{
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001350 return (vector bool char)
David Blaikie4f918ae2013-01-16 23:08:36 +00001351 __builtin_altivec_vcmpequb((vector char)__a, (vector char)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001352}
1353
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001354static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001355vec_cmpeq(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001356{
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001357 return (vector bool char)
David Blaikie4f918ae2013-01-16 23:08:36 +00001358 __builtin_altivec_vcmpequb((vector char)__a, (vector char)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001359}
1360
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001361static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001362vec_cmpeq(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001363{
David Blaikie4f918ae2013-01-16 23:08:36 +00001364 return (vector bool short)__builtin_altivec_vcmpequh(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001365}
1366
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001367static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001368vec_cmpeq(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001369{
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001370 return (vector bool short)
David Blaikie4f918ae2013-01-16 23:08:36 +00001371 __builtin_altivec_vcmpequh((vector short)__a, (vector short)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001372}
1373
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001374static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001375vec_cmpeq(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001376{
David Blaikie4f918ae2013-01-16 23:08:36 +00001377 return (vector bool int)__builtin_altivec_vcmpequw(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001378}
1379
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001380static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001381vec_cmpeq(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001382{
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001383 return (vector bool int)
David Blaikie4f918ae2013-01-16 23:08:36 +00001384 __builtin_altivec_vcmpequw((vector int)__a, (vector int)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001385}
1386
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001387static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001388vec_cmpeq(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001389{
David Blaikie4f918ae2013-01-16 23:08:36 +00001390 return (vector bool int)__builtin_altivec_vcmpeqfp(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001391}
1392
1393/* vec_cmpge */
1394
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001395static vector bool int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001396vec_cmpge(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001397{
David Blaikie4f918ae2013-01-16 23:08:36 +00001398 return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001399}
1400
1401/* vec_vcmpgefp */
1402
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001403static vector bool int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001404vec_vcmpgefp(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001405{
David Blaikie4f918ae2013-01-16 23:08:36 +00001406 return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001407}
Chris Lattnerdd173942010-04-14 03:54:58 +00001408
1409/* vec_cmpgt */
1410
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001411static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001412vec_cmpgt(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001413{
David Blaikie4f918ae2013-01-16 23:08:36 +00001414 return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001415}
1416
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001417static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001418vec_cmpgt(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001419{
David Blaikie4f918ae2013-01-16 23:08:36 +00001420 return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001421}
1422
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001423static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001424vec_cmpgt(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001425{
David Blaikie4f918ae2013-01-16 23:08:36 +00001426 return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001427}
1428
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001429static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001430vec_cmpgt(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001431{
David Blaikie4f918ae2013-01-16 23:08:36 +00001432 return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001433}
1434
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001435static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001436vec_cmpgt(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001437{
David Blaikie4f918ae2013-01-16 23:08:36 +00001438 return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001439}
1440
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001441static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001442vec_cmpgt(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001443{
David Blaikie4f918ae2013-01-16 23:08:36 +00001444 return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001445}
1446
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001447static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001448vec_cmpgt(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001449{
David Blaikie4f918ae2013-01-16 23:08:36 +00001450 return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00001451}
1452
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001453/* vec_vcmpgtsb */
Chris Lattnerdd173942010-04-14 03:54:58 +00001454
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001455static vector bool char __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001456vec_vcmpgtsb(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001457{
David Blaikie4f918ae2013-01-16 23:08:36 +00001458 return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001459}
1460
1461/* vec_vcmpgtub */
1462
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001463static vector bool char __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001464vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001465{
David Blaikie4f918ae2013-01-16 23:08:36 +00001466 return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001467}
1468
1469/* vec_vcmpgtsh */
1470
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001471static vector bool short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001472vec_vcmpgtsh(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001473{
David Blaikie4f918ae2013-01-16 23:08:36 +00001474 return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001475}
1476
1477/* vec_vcmpgtuh */
1478
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001479static vector bool short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001480vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001481{
David Blaikie4f918ae2013-01-16 23:08:36 +00001482 return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001483}
1484
1485/* vec_vcmpgtsw */
1486
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001487static vector bool int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001488vec_vcmpgtsw(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001489{
David Blaikie4f918ae2013-01-16 23:08:36 +00001490 return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001491}
1492
1493/* vec_vcmpgtuw */
1494
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001495static vector bool int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001496vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001497{
David Blaikie4f918ae2013-01-16 23:08:36 +00001498 return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001499}
1500
1501/* vec_vcmpgtfp */
1502
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001503static vector bool int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001504vec_vcmpgtfp(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001505{
David Blaikie4f918ae2013-01-16 23:08:36 +00001506 return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001507}
1508
1509/* vec_cmple */
Chris Lattnerdd173942010-04-14 03:54:58 +00001510
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001511static vector bool int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001512vec_cmple(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001513{
David Blaikie4f918ae2013-01-16 23:08:36 +00001514 return (vector bool int)__builtin_altivec_vcmpgefp(__b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +00001515}
1516
1517/* vec_cmplt */
1518
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001519static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001520vec_cmplt(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001521{
David Blaikie4f918ae2013-01-16 23:08:36 +00001522 return (vector bool char)__builtin_altivec_vcmpgtsb(__b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +00001523}
1524
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001525static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001526vec_cmplt(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001527{
David Blaikie4f918ae2013-01-16 23:08:36 +00001528 return (vector bool char)__builtin_altivec_vcmpgtub(__b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +00001529}
1530
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001531static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001532vec_cmplt(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001533{
David Blaikie4f918ae2013-01-16 23:08:36 +00001534 return (vector bool short)__builtin_altivec_vcmpgtsh(__b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +00001535}
1536
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001537static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001538vec_cmplt(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001539{
David Blaikie4f918ae2013-01-16 23:08:36 +00001540 return (vector bool short)__builtin_altivec_vcmpgtuh(__b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +00001541}
1542
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001543static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001544vec_cmplt(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001545{
David Blaikie4f918ae2013-01-16 23:08:36 +00001546 return (vector bool int)__builtin_altivec_vcmpgtsw(__b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +00001547}
1548
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001549static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001550vec_cmplt(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001551{
David Blaikie4f918ae2013-01-16 23:08:36 +00001552 return (vector bool int)__builtin_altivec_vcmpgtuw(__b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +00001553}
1554
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001555static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001556vec_cmplt(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00001557{
David Blaikie4f918ae2013-01-16 23:08:36 +00001558 return (vector bool int)__builtin_altivec_vcmpgtfp(__b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +00001559}
1560
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001561/* vec_ctf */
1562
1563static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001564vec_ctf(vector int __a, int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001565{
David Blaikie4f918ae2013-01-16 23:08:36 +00001566 return __builtin_altivec_vcfsx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001567}
1568
1569static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001570vec_ctf(vector unsigned int __a, int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001571{
David Blaikie4f918ae2013-01-16 23:08:36 +00001572 return __builtin_altivec_vcfux((vector int)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001573}
1574
1575/* vec_vcfsx */
1576
1577static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001578vec_vcfsx(vector int __a, int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001579{
David Blaikie4f918ae2013-01-16 23:08:36 +00001580 return __builtin_altivec_vcfsx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001581}
1582
1583/* vec_vcfux */
1584
1585static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001586vec_vcfux(vector unsigned int __a, int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001587{
David Blaikie4f918ae2013-01-16 23:08:36 +00001588 return __builtin_altivec_vcfux((vector int)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001589}
1590
1591/* vec_cts */
1592
1593static vector int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001594vec_cts(vector float __a, int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001595{
David Blaikie4f918ae2013-01-16 23:08:36 +00001596 return __builtin_altivec_vctsxs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001597}
1598
1599/* vec_vctsxs */
1600
1601static vector int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001602vec_vctsxs(vector float __a, int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001603{
David Blaikie4f918ae2013-01-16 23:08:36 +00001604 return __builtin_altivec_vctsxs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001605}
1606
1607/* vec_ctu */
1608
1609static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001610vec_ctu(vector float __a, int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001611{
David Blaikie4f918ae2013-01-16 23:08:36 +00001612 return __builtin_altivec_vctuxs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001613}
1614
1615/* vec_vctuxs */
1616
1617static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001618vec_vctuxs(vector float __a, int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001619{
David Blaikie4f918ae2013-01-16 23:08:36 +00001620 return __builtin_altivec_vctuxs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001621}
1622
1623/* vec_dss */
1624
1625static void __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001626vec_dss(int __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001627{
David Blaikie4f918ae2013-01-16 23:08:36 +00001628 __builtin_altivec_dss(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001629}
1630
1631/* vec_dssall */
1632
1633static void __attribute__((__always_inline__))
1634vec_dssall(void)
1635{
1636 __builtin_altivec_dssall();
1637}
1638
1639/* vec_dst */
1640
1641static void __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001642vec_dst(const void *__a, int __b, int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001643{
David Blaikie4f918ae2013-01-16 23:08:36 +00001644 __builtin_altivec_dst(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001645}
1646
1647/* vec_dstst */
1648
1649static void __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001650vec_dstst(const void *__a, int __b, int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001651{
David Blaikie4f918ae2013-01-16 23:08:36 +00001652 __builtin_altivec_dstst(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001653}
1654
1655/* vec_dststt */
1656
1657static void __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001658vec_dststt(const void *__a, int __b, int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001659{
David Blaikie4f918ae2013-01-16 23:08:36 +00001660 __builtin_altivec_dststt(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001661}
1662
1663/* vec_dstt */
1664
1665static void __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001666vec_dstt(const void *__a, int __b, int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001667{
David Blaikie4f918ae2013-01-16 23:08:36 +00001668 __builtin_altivec_dstt(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001669}
1670
1671/* vec_expte */
1672
1673static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001674vec_expte(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001675{
David Blaikie4f918ae2013-01-16 23:08:36 +00001676 return __builtin_altivec_vexptefp(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001677}
1678
1679/* vec_vexptefp */
1680
1681static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001682vec_vexptefp(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001683{
David Blaikie4f918ae2013-01-16 23:08:36 +00001684 return __builtin_altivec_vexptefp(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001685}
1686
1687/* vec_floor */
1688
1689static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001690vec_floor(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001691{
David Blaikie4f918ae2013-01-16 23:08:36 +00001692 return __builtin_altivec_vrfim(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001693}
1694
1695/* vec_vrfim */
1696
1697static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00001698vec_vrfim(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001699{
David Blaikie4f918ae2013-01-16 23:08:36 +00001700 return __builtin_altivec_vrfim(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001701}
1702
1703/* vec_ld */
1704
1705static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001706vec_ld(int __a, const vector signed char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001707{
David Blaikie4f918ae2013-01-16 23:08:36 +00001708 return (vector signed char)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001709}
1710
1711static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001712vec_ld(int __a, const signed char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001713{
David Blaikie4f918ae2013-01-16 23:08:36 +00001714 return (vector signed char)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001715}
1716
1717static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001718vec_ld(int __a, const vector unsigned char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001719{
David Blaikie4f918ae2013-01-16 23:08:36 +00001720 return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001721}
1722
1723static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001724vec_ld(int __a, const unsigned char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001725{
David Blaikie4f918ae2013-01-16 23:08:36 +00001726 return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001727}
1728
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001729static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001730vec_ld(int __a, const vector bool char *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001731{
David Blaikie4f918ae2013-01-16 23:08:36 +00001732 return (vector bool char)__builtin_altivec_lvx(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001733}
1734
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001735static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001736vec_ld(int __a, const vector short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001737{
David Blaikie4f918ae2013-01-16 23:08:36 +00001738 return (vector short)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001739}
1740
1741static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001742vec_ld(int __a, const short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001743{
David Blaikie4f918ae2013-01-16 23:08:36 +00001744 return (vector short)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001745}
1746
1747static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001748vec_ld(int __a, const vector unsigned short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001749{
David Blaikie4f918ae2013-01-16 23:08:36 +00001750 return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001751}
1752
1753static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001754vec_ld(int __a, const unsigned short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001755{
David Blaikie4f918ae2013-01-16 23:08:36 +00001756 return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001757}
1758
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001759static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001760vec_ld(int __a, const vector bool short *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001761{
David Blaikie4f918ae2013-01-16 23:08:36 +00001762 return (vector bool short)__builtin_altivec_lvx(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001763}
1764
1765static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001766vec_ld(int __a, const vector pixel *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001767{
David Blaikie4f918ae2013-01-16 23:08:36 +00001768 return (vector pixel)__builtin_altivec_lvx(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001769}
1770
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001771static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001772vec_ld(int __a, const vector int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001773{
David Blaikie4f918ae2013-01-16 23:08:36 +00001774 return (vector int)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001775}
1776
1777static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001778vec_ld(int __a, const int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001779{
David Blaikie4f918ae2013-01-16 23:08:36 +00001780 return (vector int)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001781}
1782
1783static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001784vec_ld(int __a, const vector unsigned int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001785{
David Blaikie4f918ae2013-01-16 23:08:36 +00001786 return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001787}
1788
1789static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001790vec_ld(int __a, const unsigned int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001791{
David Blaikie4f918ae2013-01-16 23:08:36 +00001792 return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001793}
1794
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001795static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001796vec_ld(int __a, const vector bool int *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001797{
David Blaikie4f918ae2013-01-16 23:08:36 +00001798 return (vector bool int)__builtin_altivec_lvx(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001799}
1800
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001801static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001802vec_ld(int __a, const vector float *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001803{
David Blaikie4f918ae2013-01-16 23:08:36 +00001804 return (vector float)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001805}
1806
1807static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001808vec_ld(int __a, const float *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001809{
David Blaikie4f918ae2013-01-16 23:08:36 +00001810 return (vector float)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001811}
1812
1813/* vec_lvx */
1814
1815static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001816vec_lvx(int __a, const vector signed char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001817{
David Blaikie4f918ae2013-01-16 23:08:36 +00001818 return (vector signed char)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001819}
1820
1821static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001822vec_lvx(int __a, const signed char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001823{
David Blaikie4f918ae2013-01-16 23:08:36 +00001824 return (vector signed char)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001825}
1826
1827static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001828vec_lvx(int __a, const vector unsigned char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001829{
David Blaikie4f918ae2013-01-16 23:08:36 +00001830 return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001831}
1832
1833static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001834vec_lvx(int __a, const unsigned char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001835{
David Blaikie4f918ae2013-01-16 23:08:36 +00001836 return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001837}
1838
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001839static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001840vec_lvx(int __a, const vector bool char *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001841{
David Blaikie4f918ae2013-01-16 23:08:36 +00001842 return (vector bool char)__builtin_altivec_lvx(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001843}
1844
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001845static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001846vec_lvx(int __a, const vector short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001847{
David Blaikie4f918ae2013-01-16 23:08:36 +00001848 return (vector short)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001849}
1850
1851static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001852vec_lvx(int __a, const short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001853{
David Blaikie4f918ae2013-01-16 23:08:36 +00001854 return (vector short)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001855}
1856
1857static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001858vec_lvx(int __a, const vector unsigned short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001859{
David Blaikie4f918ae2013-01-16 23:08:36 +00001860 return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001861}
1862
1863static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001864vec_lvx(int __a, const unsigned short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001865{
David Blaikie4f918ae2013-01-16 23:08:36 +00001866 return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001867}
1868
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001869static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001870vec_lvx(int __a, const vector bool short *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001871{
David Blaikie4f918ae2013-01-16 23:08:36 +00001872 return (vector bool short)__builtin_altivec_lvx(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001873}
1874
1875static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001876vec_lvx(int __a, const vector pixel *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001877{
David Blaikie4f918ae2013-01-16 23:08:36 +00001878 return (vector pixel)__builtin_altivec_lvx(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001879}
1880
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001881static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001882vec_lvx(int __a, const vector int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001883{
David Blaikie4f918ae2013-01-16 23:08:36 +00001884 return (vector int)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001885}
1886
1887static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001888vec_lvx(int __a, const int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001889{
David Blaikie4f918ae2013-01-16 23:08:36 +00001890 return (vector int)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001891}
1892
1893static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001894vec_lvx(int __a, const vector unsigned int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001895{
David Blaikie4f918ae2013-01-16 23:08:36 +00001896 return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001897}
1898
1899static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001900vec_lvx(int __a, const unsigned int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001901{
David Blaikie4f918ae2013-01-16 23:08:36 +00001902 return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001903}
1904
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001905static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001906vec_lvx(int __a, const vector bool int *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001907{
David Blaikie4f918ae2013-01-16 23:08:36 +00001908 return (vector bool int)__builtin_altivec_lvx(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00001909}
1910
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001911static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001912vec_lvx(int __a, const vector float *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001913{
David Blaikie4f918ae2013-01-16 23:08:36 +00001914 return (vector float)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001915}
1916
1917static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001918vec_lvx(int __a, const float *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001919{
David Blaikie4f918ae2013-01-16 23:08:36 +00001920 return (vector float)__builtin_altivec_lvx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001921}
1922
1923/* vec_lde */
1924
1925static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001926vec_lde(int __a, const vector signed char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001927{
David Blaikie4f918ae2013-01-16 23:08:36 +00001928 return (vector signed char)__builtin_altivec_lvebx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001929}
1930
1931static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001932vec_lde(int __a, const vector unsigned char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001933{
David Blaikie4f918ae2013-01-16 23:08:36 +00001934 return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001935}
1936
1937static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001938vec_lde(int __a, const vector short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001939{
David Blaikie4f918ae2013-01-16 23:08:36 +00001940 return (vector short)__builtin_altivec_lvehx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001941}
1942
1943static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001944vec_lde(int __a, const vector unsigned short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001945{
David Blaikie4f918ae2013-01-16 23:08:36 +00001946 return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001947}
1948
1949static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001950vec_lde(int __a, const vector int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001951{
David Blaikie4f918ae2013-01-16 23:08:36 +00001952 return (vector int)__builtin_altivec_lvewx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001953}
1954
1955static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001956vec_lde(int __a, const vector unsigned int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001957{
David Blaikie4f918ae2013-01-16 23:08:36 +00001958 return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001959}
1960
1961static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001962vec_lde(int __a, const vector float *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001963{
David Blaikie4f918ae2013-01-16 23:08:36 +00001964 return (vector float)__builtin_altivec_lvewx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001965}
1966
1967/* vec_lvebx */
1968
1969static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001970vec_lvebx(int __a, const vector signed char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001971{
David Blaikie4f918ae2013-01-16 23:08:36 +00001972 return (vector signed char)__builtin_altivec_lvebx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001973}
1974
1975static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001976vec_lvebx(int __a, const vector unsigned char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001977{
David Blaikie4f918ae2013-01-16 23:08:36 +00001978 return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001979}
1980
1981/* vec_lvehx */
1982
1983static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001984vec_lvehx(int __a, const vector short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001985{
David Blaikie4f918ae2013-01-16 23:08:36 +00001986 return (vector short)__builtin_altivec_lvehx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001987}
1988
1989static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001990vec_lvehx(int __a, const vector unsigned short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001991{
David Blaikie4f918ae2013-01-16 23:08:36 +00001992 return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001993}
1994
1995/* vec_lvewx */
1996
1997static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00001998vec_lvewx(int __a, const vector int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00001999{
David Blaikie4f918ae2013-01-16 23:08:36 +00002000 return (vector int)__builtin_altivec_lvewx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002001}
2002
2003static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002004vec_lvewx(int __a, const vector unsigned int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002005{
David Blaikie4f918ae2013-01-16 23:08:36 +00002006 return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002007}
2008
2009static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002010vec_lvewx(int __a, const vector float *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002011{
David Blaikie4f918ae2013-01-16 23:08:36 +00002012 return (vector float)__builtin_altivec_lvewx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002013}
2014
2015/* vec_ldl */
2016
2017static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002018vec_ldl(int __a, const vector signed char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002019{
David Blaikie4f918ae2013-01-16 23:08:36 +00002020 return (vector signed char)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002021}
2022
2023static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002024vec_ldl(int __a, const signed char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002025{
David Blaikie4f918ae2013-01-16 23:08:36 +00002026 return (vector signed char)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002027}
2028
2029static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002030vec_ldl(int __a, const vector unsigned char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002031{
David Blaikie4f918ae2013-01-16 23:08:36 +00002032 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002033}
2034
2035static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002036vec_ldl(int __a, const unsigned char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002037{
David Blaikie4f918ae2013-01-16 23:08:36 +00002038 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002039}
2040
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002041static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002042vec_ldl(int __a, const vector bool char *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002043{
David Blaikie4f918ae2013-01-16 23:08:36 +00002044 return (vector bool char)__builtin_altivec_lvxl(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002045}
2046
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002047static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002048vec_ldl(int __a, const vector short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002049{
David Blaikie4f918ae2013-01-16 23:08:36 +00002050 return (vector short)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002051}
2052
2053static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002054vec_ldl(int __a, const short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002055{
David Blaikie4f918ae2013-01-16 23:08:36 +00002056 return (vector short)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002057}
2058
2059static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002060vec_ldl(int __a, const vector unsigned short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002061{
David Blaikie4f918ae2013-01-16 23:08:36 +00002062 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002063}
2064
2065static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002066vec_ldl(int __a, const unsigned short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002067{
David Blaikie4f918ae2013-01-16 23:08:36 +00002068 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002069}
2070
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002071static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002072vec_ldl(int __a, const vector bool short *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002073{
David Blaikie4f918ae2013-01-16 23:08:36 +00002074 return (vector bool short)__builtin_altivec_lvxl(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002075}
2076
2077static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002078vec_ldl(int __a, const vector pixel *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002079{
David Blaikie4f918ae2013-01-16 23:08:36 +00002080 return (vector pixel short)__builtin_altivec_lvxl(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002081}
2082
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002083static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002084vec_ldl(int __a, const vector int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002085{
David Blaikie4f918ae2013-01-16 23:08:36 +00002086 return (vector int)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002087}
2088
2089static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002090vec_ldl(int __a, const int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002091{
David Blaikie4f918ae2013-01-16 23:08:36 +00002092 return (vector int)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002093}
2094
2095static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002096vec_ldl(int __a, const vector unsigned int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002097{
David Blaikie4f918ae2013-01-16 23:08:36 +00002098 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002099}
2100
2101static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002102vec_ldl(int __a, const unsigned int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002103{
David Blaikie4f918ae2013-01-16 23:08:36 +00002104 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002105}
2106
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002107static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002108vec_ldl(int __a, const vector bool int *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002109{
David Blaikie4f918ae2013-01-16 23:08:36 +00002110 return (vector bool int)__builtin_altivec_lvxl(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002111}
2112
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002113static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002114vec_ldl(int __a, const vector float *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002115{
David Blaikie4f918ae2013-01-16 23:08:36 +00002116 return (vector float)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002117}
2118
2119static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002120vec_ldl(int __a, const float *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002121{
David Blaikie4f918ae2013-01-16 23:08:36 +00002122 return (vector float)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002123}
2124
2125/* vec_lvxl */
2126
2127static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002128vec_lvxl(int __a, const vector signed char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002129{
David Blaikie4f918ae2013-01-16 23:08:36 +00002130 return (vector signed char)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002131}
2132
2133static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002134vec_lvxl(int __a, const signed char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002135{
David Blaikie4f918ae2013-01-16 23:08:36 +00002136 return (vector signed char)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002137}
2138
2139static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002140vec_lvxl(int __a, const vector unsigned char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002141{
David Blaikie4f918ae2013-01-16 23:08:36 +00002142 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002143}
2144
2145static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002146vec_lvxl(int __a, const unsigned char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002147{
David Blaikie4f918ae2013-01-16 23:08:36 +00002148 return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002149}
2150
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002151static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002152vec_lvxl(int __a, const vector bool char *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002153{
David Blaikie4f918ae2013-01-16 23:08:36 +00002154 return (vector bool char)__builtin_altivec_lvxl(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002155}
2156
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002157static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002158vec_lvxl(int __a, const vector short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002159{
David Blaikie4f918ae2013-01-16 23:08:36 +00002160 return (vector short)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002161}
2162
2163static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002164vec_lvxl(int __a, const short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002165{
David Blaikie4f918ae2013-01-16 23:08:36 +00002166 return (vector short)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002167}
2168
2169static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002170vec_lvxl(int __a, const vector unsigned short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002171{
David Blaikie4f918ae2013-01-16 23:08:36 +00002172 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002173}
2174
2175static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002176vec_lvxl(int __a, const unsigned short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002177{
David Blaikie4f918ae2013-01-16 23:08:36 +00002178 return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002179}
2180
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002181static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002182vec_lvxl(int __a, const vector bool short *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002183{
David Blaikie4f918ae2013-01-16 23:08:36 +00002184 return (vector bool short)__builtin_altivec_lvxl(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002185}
2186
2187static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002188vec_lvxl(int __a, const vector pixel *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002189{
David Blaikie4f918ae2013-01-16 23:08:36 +00002190 return (vector pixel)__builtin_altivec_lvxl(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002191}
2192
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002193static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002194vec_lvxl(int __a, const vector int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002195{
David Blaikie4f918ae2013-01-16 23:08:36 +00002196 return (vector int)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002197}
2198
2199static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002200vec_lvxl(int __a, const int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002201{
David Blaikie4f918ae2013-01-16 23:08:36 +00002202 return (vector int)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002203}
2204
2205static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002206vec_lvxl(int __a, const vector unsigned int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002207{
David Blaikie4f918ae2013-01-16 23:08:36 +00002208 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002209}
2210
2211static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002212vec_lvxl(int __a, const unsigned int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002213{
David Blaikie4f918ae2013-01-16 23:08:36 +00002214 return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002215}
2216
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002217static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002218vec_lvxl(int __a, const vector bool int *__b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002219{
David Blaikie4f918ae2013-01-16 23:08:36 +00002220 return (vector bool int)__builtin_altivec_lvxl(__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002221}
2222
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002223static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002224vec_lvxl(int __a, const vector float *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002225{
David Blaikie4f918ae2013-01-16 23:08:36 +00002226 return (vector float)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002227}
2228
2229static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002230vec_lvxl(int __a, const float *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002231{
David Blaikie4f918ae2013-01-16 23:08:36 +00002232 return (vector float)__builtin_altivec_lvxl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002233}
2234
2235/* vec_loge */
2236
2237static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00002238vec_loge(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002239{
David Blaikie4f918ae2013-01-16 23:08:36 +00002240 return __builtin_altivec_vlogefp(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002241}
2242
2243/* vec_vlogefp */
2244
2245static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00002246vec_vlogefp(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002247{
David Blaikie4f918ae2013-01-16 23:08:36 +00002248 return __builtin_altivec_vlogefp(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002249}
2250
2251/* vec_lvsl */
2252
2253static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002254vec_lvsl(int __a, const signed char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002255{
David Blaikie4f918ae2013-01-16 23:08:36 +00002256 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002257}
2258
2259static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002260vec_lvsl(int __a, const unsigned char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002261{
David Blaikie4f918ae2013-01-16 23:08:36 +00002262 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002263}
2264
2265static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002266vec_lvsl(int __a, const short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002267{
David Blaikie4f918ae2013-01-16 23:08:36 +00002268 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002269}
2270
2271static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002272vec_lvsl(int __a, const unsigned short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002273{
David Blaikie4f918ae2013-01-16 23:08:36 +00002274 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002275}
2276
2277static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002278vec_lvsl(int __a, const int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002279{
David Blaikie4f918ae2013-01-16 23:08:36 +00002280 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002281}
2282
2283static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002284vec_lvsl(int __a, const unsigned int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002285{
David Blaikie4f918ae2013-01-16 23:08:36 +00002286 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002287}
2288
2289static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002290vec_lvsl(int __a, const float *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002291{
David Blaikie4f918ae2013-01-16 23:08:36 +00002292 return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002293}
2294
2295/* vec_lvsr */
2296
2297static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002298vec_lvsr(int __a, const signed char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002299{
David Blaikie4f918ae2013-01-16 23:08:36 +00002300 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002301}
2302
2303static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002304vec_lvsr(int __a, const unsigned char *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002305{
David Blaikie4f918ae2013-01-16 23:08:36 +00002306 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002307}
2308
2309static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002310vec_lvsr(int __a, const short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002311{
David Blaikie4f918ae2013-01-16 23:08:36 +00002312 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002313}
2314
2315static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002316vec_lvsr(int __a, const unsigned short *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002317{
David Blaikie4f918ae2013-01-16 23:08:36 +00002318 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002319}
2320
2321static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002322vec_lvsr(int __a, const int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002323{
David Blaikie4f918ae2013-01-16 23:08:36 +00002324 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002325}
2326
2327static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002328vec_lvsr(int __a, const unsigned int *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002329{
David Blaikie4f918ae2013-01-16 23:08:36 +00002330 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002331}
2332
2333static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002334vec_lvsr(int __a, const float *__b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002335{
David Blaikie4f918ae2013-01-16 23:08:36 +00002336 return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002337}
2338
2339/* vec_madd */
2340
2341static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00002342vec_madd(vector float __a, vector float __b, vector float __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002343{
David Blaikie4f918ae2013-01-16 23:08:36 +00002344 return __builtin_altivec_vmaddfp(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002345}
2346
2347/* vec_vmaddfp */
2348
2349static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00002350vec_vmaddfp(vector float __a, vector float __b, vector float __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002351{
David Blaikie4f918ae2013-01-16 23:08:36 +00002352 return __builtin_altivec_vmaddfp(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002353}
2354
2355/* vec_madds */
2356
2357static vector signed short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00002358vec_madds(vector signed short __a, vector signed short __b, vector signed short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002359{
David Blaikie4f918ae2013-01-16 23:08:36 +00002360 return __builtin_altivec_vmhaddshs(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002361}
2362
2363/* vec_vmhaddshs */
2364static vector signed short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00002365vec_vmhaddshs(vector signed short __a,
2366 vector signed short __b,
2367 vector signed short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002368{
David Blaikie4f918ae2013-01-16 23:08:36 +00002369 return __builtin_altivec_vmhaddshs(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002370}
2371
Chris Lattnerdd173942010-04-14 03:54:58 +00002372/* vec_max */
2373
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002374static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002375vec_max(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00002376{
David Blaikie4f918ae2013-01-16 23:08:36 +00002377 return __builtin_altivec_vmaxsb(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00002378}
2379
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002380static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002381vec_max(vector bool char __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002382{
David Blaikie4f918ae2013-01-16 23:08:36 +00002383 return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002384}
2385
2386static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002387vec_max(vector signed char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002388{
David Blaikie4f918ae2013-01-16 23:08:36 +00002389 return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002390}
2391
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002392static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002393vec_max(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00002394{
David Blaikie4f918ae2013-01-16 23:08:36 +00002395 return __builtin_altivec_vmaxub(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00002396}
2397
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002398static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002399vec_max(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002400{
David Blaikie4f918ae2013-01-16 23:08:36 +00002401 return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002402}
2403
2404static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002405vec_max(vector unsigned char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002406{
David Blaikie4f918ae2013-01-16 23:08:36 +00002407 return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002408}
2409
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002410static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002411vec_max(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00002412{
David Blaikie4f918ae2013-01-16 23:08:36 +00002413 return __builtin_altivec_vmaxsh(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00002414}
2415
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002416static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002417vec_max(vector bool short __a, vector short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002418{
David Blaikie4f918ae2013-01-16 23:08:36 +00002419 return __builtin_altivec_vmaxsh((vector short)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002420}
2421
2422static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002423vec_max(vector short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002424{
David Blaikie4f918ae2013-01-16 23:08:36 +00002425 return __builtin_altivec_vmaxsh(__a, (vector short)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002426}
2427
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002428static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002429vec_max(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00002430{
David Blaikie4f918ae2013-01-16 23:08:36 +00002431 return __builtin_altivec_vmaxuh(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00002432}
2433
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002434static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002435vec_max(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002436{
David Blaikie4f918ae2013-01-16 23:08:36 +00002437 return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002438}
2439
2440static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002441vec_max(vector unsigned short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002442{
David Blaikie4f918ae2013-01-16 23:08:36 +00002443 return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002444}
2445
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002446static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002447vec_max(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00002448{
David Blaikie4f918ae2013-01-16 23:08:36 +00002449 return __builtin_altivec_vmaxsw(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00002450}
2451
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002452static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002453vec_max(vector bool int __a, vector int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002454{
David Blaikie4f918ae2013-01-16 23:08:36 +00002455 return __builtin_altivec_vmaxsw((vector int)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002456}
2457
2458static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002459vec_max(vector int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002460{
David Blaikie4f918ae2013-01-16 23:08:36 +00002461 return __builtin_altivec_vmaxsw(__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002462}
2463
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002464static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002465vec_max(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00002466{
David Blaikie4f918ae2013-01-16 23:08:36 +00002467 return __builtin_altivec_vmaxuw(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00002468}
2469
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002470static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002471vec_max(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002472{
David Blaikie4f918ae2013-01-16 23:08:36 +00002473 return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002474}
2475
2476static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002477vec_max(vector unsigned int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002478{
David Blaikie4f918ae2013-01-16 23:08:36 +00002479 return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002480}
2481
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002482static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002483vec_max(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00002484{
David Blaikie4f918ae2013-01-16 23:08:36 +00002485 return __builtin_altivec_vmaxfp(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00002486}
2487
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002488/* vec_vmaxsb */
2489
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002490static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002491vec_vmaxsb(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002492{
David Blaikie4f918ae2013-01-16 23:08:36 +00002493 return __builtin_altivec_vmaxsb(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002494}
2495
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002496static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002497vec_vmaxsb(vector bool char __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002498{
David Blaikie4f918ae2013-01-16 23:08:36 +00002499 return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002500}
2501
2502static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002503vec_vmaxsb(vector signed char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002504{
David Blaikie4f918ae2013-01-16 23:08:36 +00002505 return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002506}
2507
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002508/* vec_vmaxub */
2509
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002510static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002511vec_vmaxub(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002512{
David Blaikie4f918ae2013-01-16 23:08:36 +00002513 return __builtin_altivec_vmaxub(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002514}
2515
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002516static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002517vec_vmaxub(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002518{
David Blaikie4f918ae2013-01-16 23:08:36 +00002519 return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002520}
2521
2522static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002523vec_vmaxub(vector unsigned char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002524{
David Blaikie4f918ae2013-01-16 23:08:36 +00002525 return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002526}
2527
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002528/* vec_vmaxsh */
2529
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002530static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002531vec_vmaxsh(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002532{
David Blaikie4f918ae2013-01-16 23:08:36 +00002533 return __builtin_altivec_vmaxsh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002534}
2535
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002536static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002537vec_vmaxsh(vector bool short __a, vector short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002538{
David Blaikie4f918ae2013-01-16 23:08:36 +00002539 return __builtin_altivec_vmaxsh((vector short)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002540}
2541
2542static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002543vec_vmaxsh(vector short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002544{
David Blaikie4f918ae2013-01-16 23:08:36 +00002545 return __builtin_altivec_vmaxsh(__a, (vector short)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002546}
2547
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002548/* vec_vmaxuh */
2549
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002550static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002551vec_vmaxuh(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002552{
David Blaikie4f918ae2013-01-16 23:08:36 +00002553 return __builtin_altivec_vmaxuh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002554}
2555
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002556static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002557vec_vmaxuh(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002558{
David Blaikie4f918ae2013-01-16 23:08:36 +00002559 return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002560}
2561
2562static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002563vec_vmaxuh(vector unsigned short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002564{
David Blaikie4f918ae2013-01-16 23:08:36 +00002565 return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002566}
2567
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002568/* vec_vmaxsw */
2569
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002570static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002571vec_vmaxsw(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002572{
David Blaikie4f918ae2013-01-16 23:08:36 +00002573 return __builtin_altivec_vmaxsw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002574}
2575
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002576static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002577vec_vmaxsw(vector bool int __a, vector int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002578{
David Blaikie4f918ae2013-01-16 23:08:36 +00002579 return __builtin_altivec_vmaxsw((vector int)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002580}
2581
2582static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002583vec_vmaxsw(vector int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002584{
David Blaikie4f918ae2013-01-16 23:08:36 +00002585 return __builtin_altivec_vmaxsw(__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002586}
2587
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002588/* vec_vmaxuw */
2589
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002590static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002591vec_vmaxuw(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002592{
David Blaikie4f918ae2013-01-16 23:08:36 +00002593 return __builtin_altivec_vmaxuw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002594}
2595
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002596static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002597vec_vmaxuw(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002598{
David Blaikie4f918ae2013-01-16 23:08:36 +00002599 return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002600}
2601
2602static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002603vec_vmaxuw(vector unsigned int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002604{
David Blaikie4f918ae2013-01-16 23:08:36 +00002605 return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00002606}
2607
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002608/* vec_vmaxfp */
2609
2610static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00002611vec_vmaxfp(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002612{
David Blaikie4f918ae2013-01-16 23:08:36 +00002613 return __builtin_altivec_vmaxfp(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002614}
2615
2616/* vec_mergeh */
2617
2618static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002619vec_mergeh(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002620{
David Blaikie4f918ae2013-01-16 23:08:36 +00002621 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002622 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13,
2623 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17));
2624}
2625
2626static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002627vec_mergeh(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002628{
David Blaikie4f918ae2013-01-16 23:08:36 +00002629 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002630 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13,
2631 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17));
2632}
2633
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002634static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002635vec_mergeh(vector bool char __a, vector bool char __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002636{
David Blaikie4f918ae2013-01-16 23:08:36 +00002637 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002638 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13,
2639 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17));
2640}
2641
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002642static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002643vec_mergeh(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002644{
David Blaikie4f918ae2013-01-16 23:08:36 +00002645 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002646 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2647 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2648}
2649
2650static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002651vec_mergeh(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002652{
David Blaikie4f918ae2013-01-16 23:08:36 +00002653 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002654 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2655 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2656}
2657
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002658static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002659vec_mergeh(vector bool short __a, vector bool short __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002660{
David Blaikie4f918ae2013-01-16 23:08:36 +00002661 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002662 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2663 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2664}
2665
2666static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002667vec_mergeh(vector pixel __a, vector pixel __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002668{
David Blaikie4f918ae2013-01-16 23:08:36 +00002669 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002670 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2671 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2672}
2673
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002674static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002675vec_mergeh(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002676{
David Blaikie4f918ae2013-01-16 23:08:36 +00002677 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002678 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2679 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2680}
2681
2682static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002683vec_mergeh(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002684{
David Blaikie4f918ae2013-01-16 23:08:36 +00002685 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002686 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2687 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2688}
2689
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002690static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002691vec_mergeh(vector bool int __a, vector bool int __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002692{
David Blaikie4f918ae2013-01-16 23:08:36 +00002693 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002694 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2695 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2696}
2697
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002698static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002699vec_mergeh(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002700{
David Blaikie4f918ae2013-01-16 23:08:36 +00002701 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002702 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2703 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2704}
2705
2706/* vec_vmrghb */
2707
2708#define __builtin_altivec_vmrghb vec_vmrghb
2709
2710static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002711vec_vmrghb(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002712{
David Blaikie4f918ae2013-01-16 23:08:36 +00002713 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002714 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13,
2715 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17));
2716}
2717
2718static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002719vec_vmrghb(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002720{
David Blaikie4f918ae2013-01-16 23:08:36 +00002721 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002722 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13,
2723 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17));
2724}
2725
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002726static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002727vec_vmrghb(vector bool char __a, vector bool char __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002728{
David Blaikie4f918ae2013-01-16 23:08:36 +00002729 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002730 (0x00, 0x10, 0x01, 0x11, 0x02, 0x12, 0x03, 0x13,
2731 0x04, 0x14, 0x05, 0x15, 0x06, 0x16, 0x07, 0x17));
2732}
2733
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002734/* vec_vmrghh */
2735
2736#define __builtin_altivec_vmrghh vec_vmrghh
2737
2738static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002739vec_vmrghh(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002740{
David Blaikie4f918ae2013-01-16 23:08:36 +00002741 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002742 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2743 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2744}
2745
2746static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002747vec_vmrghh(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002748{
David Blaikie4f918ae2013-01-16 23:08:36 +00002749 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002750 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2751 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2752}
2753
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002754static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002755vec_vmrghh(vector bool short __a, vector bool short __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002756{
David Blaikie4f918ae2013-01-16 23:08:36 +00002757 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002758 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2759 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2760}
2761
2762static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002763vec_vmrghh(vector pixel __a, vector pixel __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002764{
David Blaikie4f918ae2013-01-16 23:08:36 +00002765 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002766 (0x00, 0x01, 0x10, 0x11, 0x02, 0x03, 0x12, 0x13,
2767 0x04, 0x05, 0x14, 0x15, 0x06, 0x07, 0x16, 0x17));
2768}
2769
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002770/* vec_vmrghw */
2771
2772#define __builtin_altivec_vmrghw vec_vmrghw
2773
2774static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002775vec_vmrghw(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002776{
David Blaikie4f918ae2013-01-16 23:08:36 +00002777 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002778 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2779 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2780}
2781
2782static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002783vec_vmrghw(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002784{
David Blaikie4f918ae2013-01-16 23:08:36 +00002785 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002786 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2787 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2788}
2789
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002790static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002791vec_vmrghw(vector bool int __a, vector bool int __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002792{
David Blaikie4f918ae2013-01-16 23:08:36 +00002793 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002794 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2795 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2796}
2797
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002798static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002799vec_vmrghw(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002800{
David Blaikie4f918ae2013-01-16 23:08:36 +00002801 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002802 (0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13,
2803 0x04, 0x05, 0x06, 0x07, 0x14, 0x15, 0x16, 0x17));
2804}
2805
2806/* vec_mergel */
2807
2808static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002809vec_mergel(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002810{
David Blaikie4f918ae2013-01-16 23:08:36 +00002811 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002812 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B,
2813 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F));
2814}
2815
2816static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002817vec_mergel(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002818{
David Blaikie4f918ae2013-01-16 23:08:36 +00002819 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002820 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B,
2821 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F));
2822}
2823
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002824static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002825vec_mergel(vector bool char __a, vector bool char __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002826{
David Blaikie4f918ae2013-01-16 23:08:36 +00002827 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002828 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B,
2829 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F));
2830}
2831
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002832static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002833vec_mergel(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002834{
David Blaikie4f918ae2013-01-16 23:08:36 +00002835 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002836 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2837 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2838}
2839
2840static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002841vec_mergel(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002842{
David Blaikie4f918ae2013-01-16 23:08:36 +00002843 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002844 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2845 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2846}
2847
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002848static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002849vec_mergel(vector bool short __a, vector bool short __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002850{
David Blaikie4f918ae2013-01-16 23:08:36 +00002851 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002852 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2853 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2854}
2855
2856static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002857vec_mergel(vector pixel __a, vector pixel __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002858{
David Blaikie4f918ae2013-01-16 23:08:36 +00002859 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002860 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2861 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2862}
2863
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002864static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002865vec_mergel(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002866{
David Blaikie4f918ae2013-01-16 23:08:36 +00002867 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002868 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2869 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2870}
2871
2872static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002873vec_mergel(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002874{
David Blaikie4f918ae2013-01-16 23:08:36 +00002875 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002876 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2877 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2878}
2879
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002880static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002881vec_mergel(vector bool int __a, vector bool int __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002882{
David Blaikie4f918ae2013-01-16 23:08:36 +00002883 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002884 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2885 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2886}
2887
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002888static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002889vec_mergel(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002890{
David Blaikie4f918ae2013-01-16 23:08:36 +00002891 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002892 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2893 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2894}
2895
2896/* vec_vmrglb */
2897
2898#define __builtin_altivec_vmrglb vec_vmrglb
2899
2900static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002901vec_vmrglb(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002902{
David Blaikie4f918ae2013-01-16 23:08:36 +00002903 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002904 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B,
2905 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F));
2906}
2907
2908static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002909vec_vmrglb(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002910{
David Blaikie4f918ae2013-01-16 23:08:36 +00002911 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002912 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B,
2913 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F));
2914}
2915
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002916static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002917vec_vmrglb(vector bool char __a, vector bool char __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002918{
David Blaikie4f918ae2013-01-16 23:08:36 +00002919 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002920 (0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A, 0x0B, 0x1B,
2921 0x0C, 0x1C, 0x0D, 0x1D, 0x0E, 0x1E, 0x0F, 0x1F));
2922}
2923
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002924/* vec_vmrglh */
2925
2926#define __builtin_altivec_vmrglh vec_vmrglh
2927
2928static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002929vec_vmrglh(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002930{
David Blaikie4f918ae2013-01-16 23:08:36 +00002931 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002932 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2933 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2934}
2935
2936static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002937vec_vmrglh(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002938{
David Blaikie4f918ae2013-01-16 23:08:36 +00002939 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002940 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2941 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2942}
2943
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002944static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002945vec_vmrglh(vector bool short __a, vector bool short __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002946{
David Blaikie4f918ae2013-01-16 23:08:36 +00002947 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002948 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2949 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2950}
2951
2952static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002953vec_vmrglh(vector pixel __a, vector pixel __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002954{
David Blaikie4f918ae2013-01-16 23:08:36 +00002955 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002956 (0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B, 0x1A, 0x1B,
2957 0x0C, 0x0D, 0x1C, 0x1D, 0x0E, 0x0F, 0x1E, 0x1F));
2958}
2959
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002960/* vec_vmrglw */
2961
2962#define __builtin_altivec_vmrglw vec_vmrglw
2963
2964static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002965vec_vmrglw(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002966{
David Blaikie4f918ae2013-01-16 23:08:36 +00002967 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002968 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2969 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2970}
2971
2972static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002973vec_vmrglw(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002974{
David Blaikie4f918ae2013-01-16 23:08:36 +00002975 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002976 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2977 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2978}
2979
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002980static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002981vec_vmrglw(vector bool int __a, vector bool int __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002982{
David Blaikie4f918ae2013-01-16 23:08:36 +00002983 return vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00002984 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2985 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2986}
2987
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002988static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00002989vec_vmrglw(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002990{
David Blaikie4f918ae2013-01-16 23:08:36 +00002991 return vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002992 (0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19, 0x1A, 0x1B,
2993 0x0C, 0x0D, 0x0E, 0x0F, 0x1C, 0x1D, 0x1E, 0x1F));
2994}
2995
Chris Lattnerdd173942010-04-14 03:54:58 +00002996/* vec_mfvscr */
2997
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00002998static vector unsigned short __attribute__((__always_inline__))
2999vec_mfvscr(void)
3000{
3001 return __builtin_altivec_mfvscr();
3002}
Chris Lattnerdd173942010-04-14 03:54:58 +00003003
3004/* vec_min */
3005
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003006static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003007vec_min(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00003008{
David Blaikie4f918ae2013-01-16 23:08:36 +00003009 return __builtin_altivec_vminsb(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00003010}
3011
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003012static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003013vec_min(vector bool char __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003014{
David Blaikie4f918ae2013-01-16 23:08:36 +00003015 return __builtin_altivec_vminsb((vector signed char)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003016}
3017
3018static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003019vec_min(vector signed char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003020{
David Blaikie4f918ae2013-01-16 23:08:36 +00003021 return __builtin_altivec_vminsb(__a, (vector signed char)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003022}
3023
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003024static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003025vec_min(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00003026{
David Blaikie4f918ae2013-01-16 23:08:36 +00003027 return __builtin_altivec_vminub(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00003028}
3029
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003030static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003031vec_min(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003032{
David Blaikie4f918ae2013-01-16 23:08:36 +00003033 return __builtin_altivec_vminub((vector unsigned char)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003034}
3035
3036static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003037vec_min(vector unsigned char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003038{
David Blaikie4f918ae2013-01-16 23:08:36 +00003039 return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003040}
3041
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003042static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003043vec_min(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00003044{
David Blaikie4f918ae2013-01-16 23:08:36 +00003045 return __builtin_altivec_vminsh(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00003046}
3047
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003048static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003049vec_min(vector bool short __a, vector short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003050{
David Blaikie4f918ae2013-01-16 23:08:36 +00003051 return __builtin_altivec_vminsh((vector short)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003052}
3053
3054static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003055vec_min(vector short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003056{
David Blaikie4f918ae2013-01-16 23:08:36 +00003057 return __builtin_altivec_vminsh(__a, (vector short)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003058}
3059
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003060static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003061vec_min(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00003062{
David Blaikie4f918ae2013-01-16 23:08:36 +00003063 return __builtin_altivec_vminuh(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00003064}
3065
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003066static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003067vec_min(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003068{
David Blaikie4f918ae2013-01-16 23:08:36 +00003069 return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003070}
3071
3072static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003073vec_min(vector unsigned short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003074{
David Blaikie4f918ae2013-01-16 23:08:36 +00003075 return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003076}
3077
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003078static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003079vec_min(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00003080{
David Blaikie4f918ae2013-01-16 23:08:36 +00003081 return __builtin_altivec_vminsw(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00003082}
3083
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003084static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003085vec_min(vector bool int __a, vector int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003086{
David Blaikie4f918ae2013-01-16 23:08:36 +00003087 return __builtin_altivec_vminsw((vector int)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003088}
3089
3090static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003091vec_min(vector int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003092{
David Blaikie4f918ae2013-01-16 23:08:36 +00003093 return __builtin_altivec_vminsw(__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003094}
3095
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003096static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003097vec_min(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00003098{
David Blaikie4f918ae2013-01-16 23:08:36 +00003099 return __builtin_altivec_vminuw(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00003100}
3101
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003102static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003103vec_min(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003104{
David Blaikie4f918ae2013-01-16 23:08:36 +00003105 return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003106}
3107
3108static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003109vec_min(vector unsigned int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003110{
David Blaikie4f918ae2013-01-16 23:08:36 +00003111 return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003112}
3113
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003114static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003115vec_min(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00003116{
David Blaikie4f918ae2013-01-16 23:08:36 +00003117 return __builtin_altivec_vminfp(__a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00003118}
3119
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003120/* vec_vminsb */
3121
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003122static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003123vec_vminsb(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003124{
David Blaikie4f918ae2013-01-16 23:08:36 +00003125 return __builtin_altivec_vminsb(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003126}
3127
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003128static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003129vec_vminsb(vector bool char __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003130{
David Blaikie4f918ae2013-01-16 23:08:36 +00003131 return __builtin_altivec_vminsb((vector signed char)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003132}
3133
3134static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003135vec_vminsb(vector signed char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003136{
David Blaikie4f918ae2013-01-16 23:08:36 +00003137 return __builtin_altivec_vminsb(__a, (vector signed char)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003138}
3139
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003140/* vec_vminub */
3141
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003142static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003143vec_vminub(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003144{
David Blaikie4f918ae2013-01-16 23:08:36 +00003145 return __builtin_altivec_vminub(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003146}
3147
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003148static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003149vec_vminub(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003150{
David Blaikie4f918ae2013-01-16 23:08:36 +00003151 return __builtin_altivec_vminub((vector unsigned char)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003152}
3153
3154static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003155vec_vminub(vector unsigned char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003156{
David Blaikie4f918ae2013-01-16 23:08:36 +00003157 return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003158}
3159
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003160/* vec_vminsh */
3161
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003162static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003163vec_vminsh(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003164{
David Blaikie4f918ae2013-01-16 23:08:36 +00003165 return __builtin_altivec_vminsh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003166}
3167
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003168static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003169vec_vminsh(vector bool short __a, vector short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003170{
David Blaikie4f918ae2013-01-16 23:08:36 +00003171 return __builtin_altivec_vminsh((vector short)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003172}
3173
3174static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003175vec_vminsh(vector short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003176{
David Blaikie4f918ae2013-01-16 23:08:36 +00003177 return __builtin_altivec_vminsh(__a, (vector short)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003178}
3179
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003180/* vec_vminuh */
3181
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003182static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003183vec_vminuh(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003184{
David Blaikie4f918ae2013-01-16 23:08:36 +00003185 return __builtin_altivec_vminuh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003186}
3187
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003188static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003189vec_vminuh(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003190{
David Blaikie4f918ae2013-01-16 23:08:36 +00003191 return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003192}
3193
3194static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003195vec_vminuh(vector unsigned short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003196{
David Blaikie4f918ae2013-01-16 23:08:36 +00003197 return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003198}
3199
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003200/* vec_vminsw */
3201
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003202static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003203vec_vminsw(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003204{
David Blaikie4f918ae2013-01-16 23:08:36 +00003205 return __builtin_altivec_vminsw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003206}
3207
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003208static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003209vec_vminsw(vector bool int __a, vector int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003210{
David Blaikie4f918ae2013-01-16 23:08:36 +00003211 return __builtin_altivec_vminsw((vector int)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003212}
3213
3214static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003215vec_vminsw(vector int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003216{
David Blaikie4f918ae2013-01-16 23:08:36 +00003217 return __builtin_altivec_vminsw(__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003218}
3219
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003220/* vec_vminuw */
3221
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003222static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003223vec_vminuw(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003224{
David Blaikie4f918ae2013-01-16 23:08:36 +00003225 return __builtin_altivec_vminuw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003226}
3227
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003228static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003229vec_vminuw(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003230{
David Blaikie4f918ae2013-01-16 23:08:36 +00003231 return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003232}
3233
3234static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003235vec_vminuw(vector unsigned int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003236{
David Blaikie4f918ae2013-01-16 23:08:36 +00003237 return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003238}
3239
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003240/* vec_vminfp */
3241
3242static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003243vec_vminfp(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003244{
David Blaikie4f918ae2013-01-16 23:08:36 +00003245 return __builtin_altivec_vminfp(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003246}
3247
3248/* vec_mladd */
3249
3250#define __builtin_altivec_vmladduhm vec_mladd
3251
3252static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003253vec_mladd(vector short __a, vector short __b, vector short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003254{
David Blaikie4f918ae2013-01-16 23:08:36 +00003255 return __a * __b + __c;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003256}
3257
3258static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003259vec_mladd(vector short __a, vector unsigned short __b, vector unsigned short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003260{
David Blaikie4f918ae2013-01-16 23:08:36 +00003261 return __a * (vector short)__b + (vector short)__c;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003262}
3263
3264static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003265vec_mladd(vector unsigned short __a, vector short __b, vector short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003266{
David Blaikie4f918ae2013-01-16 23:08:36 +00003267 return (vector short)__a * __b + __c;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003268}
3269
3270static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003271vec_mladd(vector unsigned short __a,
3272 vector unsigned short __b,
3273 vector unsigned short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003274{
David Blaikie4f918ae2013-01-16 23:08:36 +00003275 return __a * __b + __c;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003276}
3277
3278/* vec_vmladduhm */
3279
3280static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003281vec_vmladduhm(vector short __a, vector short __b, vector short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003282{
David Blaikie4f918ae2013-01-16 23:08:36 +00003283 return __a * __b + __c;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003284}
3285
3286static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003287vec_vmladduhm(vector short __a, vector unsigned short __b, vector unsigned short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003288{
David Blaikie4f918ae2013-01-16 23:08:36 +00003289 return __a * (vector short)__b + (vector short)__c;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003290}
3291
3292static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003293vec_vmladduhm(vector unsigned short __a, vector short __b, vector short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003294{
David Blaikie4f918ae2013-01-16 23:08:36 +00003295 return (vector short)__a * __b + __c;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003296}
3297
3298static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003299vec_vmladduhm(vector unsigned short __a,
3300 vector unsigned short __b,
3301 vector unsigned short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003302{
David Blaikie4f918ae2013-01-16 23:08:36 +00003303 return __a * __b + __c;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003304}
3305
3306/* vec_mradds */
3307
3308static vector short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003309vec_mradds(vector short __a, vector short __b, vector short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003310{
David Blaikie4f918ae2013-01-16 23:08:36 +00003311 return __builtin_altivec_vmhraddshs(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003312}
3313
3314/* vec_vmhraddshs */
3315
3316static vector short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003317vec_vmhraddshs(vector short __a, vector short __b, vector short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003318{
David Blaikie4f918ae2013-01-16 23:08:36 +00003319 return __builtin_altivec_vmhraddshs(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003320}
3321
3322/* vec_msum */
3323
3324static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003325vec_msum(vector signed char __a, vector unsigned char __b, vector int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003326{
David Blaikie4f918ae2013-01-16 23:08:36 +00003327 return __builtin_altivec_vmsummbm(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003328}
3329
3330static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003331vec_msum(vector unsigned char __a, vector unsigned char __b, vector unsigned int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003332{
David Blaikie4f918ae2013-01-16 23:08:36 +00003333 return __builtin_altivec_vmsumubm(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003334}
3335
3336static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003337vec_msum(vector short __a, vector short __b, vector int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003338{
David Blaikie4f918ae2013-01-16 23:08:36 +00003339 return __builtin_altivec_vmsumshm(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003340}
3341
3342static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003343vec_msum(vector unsigned short __a,
3344 vector unsigned short __b,
3345 vector unsigned int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003346{
David Blaikie4f918ae2013-01-16 23:08:36 +00003347 return __builtin_altivec_vmsumuhm(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003348}
3349
3350/* vec_vmsummbm */
3351
3352static vector int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003353vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003354{
David Blaikie4f918ae2013-01-16 23:08:36 +00003355 return __builtin_altivec_vmsummbm(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003356}
3357
3358/* vec_vmsumubm */
3359
3360static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003361vec_vmsumubm(vector unsigned char __a,
3362 vector unsigned char __b,
3363 vector unsigned int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003364{
David Blaikie4f918ae2013-01-16 23:08:36 +00003365 return __builtin_altivec_vmsumubm(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003366}
3367
3368/* vec_vmsumshm */
3369
3370static vector int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003371vec_vmsumshm(vector short __a, vector short __b, vector int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003372{
David Blaikie4f918ae2013-01-16 23:08:36 +00003373 return __builtin_altivec_vmsumshm(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003374}
3375
3376/* vec_vmsumuhm */
3377
3378static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003379vec_vmsumuhm(vector unsigned short __a,
3380 vector unsigned short __b,
3381 vector unsigned int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003382{
David Blaikie4f918ae2013-01-16 23:08:36 +00003383 return __builtin_altivec_vmsumuhm(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003384}
3385
3386/* vec_msums */
3387
3388static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003389vec_msums(vector short __a, vector short __b, vector int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003390{
David Blaikie4f918ae2013-01-16 23:08:36 +00003391 return __builtin_altivec_vmsumshs(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003392}
3393
3394static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003395vec_msums(vector unsigned short __a,
3396 vector unsigned short __b,
3397 vector unsigned int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003398{
David Blaikie4f918ae2013-01-16 23:08:36 +00003399 return __builtin_altivec_vmsumuhs(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003400}
3401
3402/* vec_vmsumshs */
3403
3404static vector int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003405vec_vmsumshs(vector short __a, vector short __b, vector int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003406{
David Blaikie4f918ae2013-01-16 23:08:36 +00003407 return __builtin_altivec_vmsumshs(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003408}
3409
3410/* vec_vmsumuhs */
3411
3412static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003413vec_vmsumuhs(vector unsigned short __a,
3414 vector unsigned short __b,
3415 vector unsigned int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003416{
David Blaikie4f918ae2013-01-16 23:08:36 +00003417 return __builtin_altivec_vmsumuhs(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003418}
3419
Chris Lattnerdd173942010-04-14 03:54:58 +00003420/* vec_mtvscr */
3421
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003422static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003423vec_mtvscr(vector signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003424{
David Blaikie4f918ae2013-01-16 23:08:36 +00003425 __builtin_altivec_mtvscr((vector int)__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003426}
3427
3428static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003429vec_mtvscr(vector unsigned char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003430{
David Blaikie4f918ae2013-01-16 23:08:36 +00003431 __builtin_altivec_mtvscr((vector int)__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003432}
3433
3434static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003435vec_mtvscr(vector bool char __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003436{
David Blaikie4f918ae2013-01-16 23:08:36 +00003437 __builtin_altivec_mtvscr((vector int)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003438}
3439
3440static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003441vec_mtvscr(vector short __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003442{
David Blaikie4f918ae2013-01-16 23:08:36 +00003443 __builtin_altivec_mtvscr((vector int)__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003444}
3445
3446static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003447vec_mtvscr(vector unsigned short __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003448{
David Blaikie4f918ae2013-01-16 23:08:36 +00003449 __builtin_altivec_mtvscr((vector int)__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003450}
3451
3452static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003453vec_mtvscr(vector bool short __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003454{
David Blaikie4f918ae2013-01-16 23:08:36 +00003455 __builtin_altivec_mtvscr((vector int)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003456}
3457
3458static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003459vec_mtvscr(vector pixel __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003460{
David Blaikie4f918ae2013-01-16 23:08:36 +00003461 __builtin_altivec_mtvscr((vector int)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003462}
3463
3464static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003465vec_mtvscr(vector int __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003466{
David Blaikie4f918ae2013-01-16 23:08:36 +00003467 __builtin_altivec_mtvscr((vector int)__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003468}
3469
3470static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003471vec_mtvscr(vector unsigned int __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003472{
David Blaikie4f918ae2013-01-16 23:08:36 +00003473 __builtin_altivec_mtvscr((vector int)__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003474}
3475
3476static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003477vec_mtvscr(vector bool int __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003478{
David Blaikie4f918ae2013-01-16 23:08:36 +00003479 __builtin_altivec_mtvscr((vector int)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003480}
3481
3482static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003483vec_mtvscr(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003484{
David Blaikie4f918ae2013-01-16 23:08:36 +00003485 __builtin_altivec_mtvscr((vector int)__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003486}
3487
3488/* vec_mule */
3489
3490static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003491vec_mule(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003492{
David Blaikie4f918ae2013-01-16 23:08:36 +00003493 return __builtin_altivec_vmulesb(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003494}
3495
3496static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003497vec_mule(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003498{
David Blaikie4f918ae2013-01-16 23:08:36 +00003499 return __builtin_altivec_vmuleub(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003500}
3501
3502static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003503vec_mule(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003504{
David Blaikie4f918ae2013-01-16 23:08:36 +00003505 return __builtin_altivec_vmulesh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003506}
3507
3508static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003509vec_mule(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003510{
David Blaikie4f918ae2013-01-16 23:08:36 +00003511 return __builtin_altivec_vmuleuh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003512}
3513
3514/* vec_vmulesb */
3515
3516static vector short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003517vec_vmulesb(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003518{
David Blaikie4f918ae2013-01-16 23:08:36 +00003519 return __builtin_altivec_vmulesb(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003520}
3521
3522/* vec_vmuleub */
3523
3524static vector unsigned short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003525vec_vmuleub(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003526{
David Blaikie4f918ae2013-01-16 23:08:36 +00003527 return __builtin_altivec_vmuleub(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003528}
3529
3530/* vec_vmulesh */
3531
3532static vector int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003533vec_vmulesh(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003534{
David Blaikie4f918ae2013-01-16 23:08:36 +00003535 return __builtin_altivec_vmulesh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003536}
3537
3538/* vec_vmuleuh */
3539
3540static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003541vec_vmuleuh(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003542{
David Blaikie4f918ae2013-01-16 23:08:36 +00003543 return __builtin_altivec_vmuleuh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003544}
3545
3546/* vec_mulo */
3547
3548static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003549vec_mulo(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003550{
David Blaikie4f918ae2013-01-16 23:08:36 +00003551 return __builtin_altivec_vmulosb(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003552}
3553
3554static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003555vec_mulo(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003556{
David Blaikie4f918ae2013-01-16 23:08:36 +00003557 return __builtin_altivec_vmuloub(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003558}
3559
3560static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003561vec_mulo(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003562{
David Blaikie4f918ae2013-01-16 23:08:36 +00003563 return __builtin_altivec_vmulosh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003564}
3565
3566static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003567vec_mulo(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003568{
David Blaikie4f918ae2013-01-16 23:08:36 +00003569 return __builtin_altivec_vmulouh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003570}
3571
3572/* vec_vmulosb */
3573
3574static vector short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003575vec_vmulosb(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003576{
David Blaikie4f918ae2013-01-16 23:08:36 +00003577 return __builtin_altivec_vmulosb(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003578}
3579
3580/* vec_vmuloub */
3581
3582static vector unsigned short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003583vec_vmuloub(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003584{
David Blaikie4f918ae2013-01-16 23:08:36 +00003585 return __builtin_altivec_vmuloub(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003586}
3587
3588/* vec_vmulosh */
3589
3590static vector int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003591vec_vmulosh(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003592{
David Blaikie4f918ae2013-01-16 23:08:36 +00003593 return __builtin_altivec_vmulosh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003594}
3595
3596/* vec_vmulouh */
3597
3598static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003599vec_vmulouh(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003600{
David Blaikie4f918ae2013-01-16 23:08:36 +00003601 return __builtin_altivec_vmulouh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003602}
3603
3604/* vec_nmsub */
3605
3606static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003607vec_nmsub(vector float __a, vector float __b, vector float __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003608{
David Blaikie4f918ae2013-01-16 23:08:36 +00003609 return __builtin_altivec_vnmsubfp(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003610}
3611
3612/* vec_vnmsubfp */
3613
3614static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00003615vec_vnmsubfp(vector float __a, vector float __b, vector float __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003616{
David Blaikie4f918ae2013-01-16 23:08:36 +00003617 return __builtin_altivec_vnmsubfp(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003618}
3619
3620/* vec_nor */
3621
3622#define __builtin_altivec_vnor vec_nor
3623
3624static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003625vec_nor(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003626{
David Blaikie4f918ae2013-01-16 23:08:36 +00003627 return ~(__a | __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003628}
3629
3630static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003631vec_nor(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003632{
David Blaikie4f918ae2013-01-16 23:08:36 +00003633 return ~(__a | __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003634}
3635
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003636static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003637vec_nor(vector bool char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003638{
David Blaikie4f918ae2013-01-16 23:08:36 +00003639 return ~(__a | __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003640}
3641
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003642static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003643vec_nor(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003644{
David Blaikie4f918ae2013-01-16 23:08:36 +00003645 return ~(__a | __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003646}
3647
3648static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003649vec_nor(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003650{
David Blaikie4f918ae2013-01-16 23:08:36 +00003651 return ~(__a | __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003652}
3653
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003654static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003655vec_nor(vector bool short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003656{
David Blaikie4f918ae2013-01-16 23:08:36 +00003657 return ~(__a | __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003658}
3659
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003660static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003661vec_nor(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003662{
David Blaikie4f918ae2013-01-16 23:08:36 +00003663 return ~(__a | __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003664}
3665
3666static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003667vec_nor(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003668{
David Blaikie4f918ae2013-01-16 23:08:36 +00003669 return ~(__a | __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003670}
3671
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003672static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003673vec_nor(vector bool int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003674{
David Blaikie4f918ae2013-01-16 23:08:36 +00003675 return ~(__a | __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003676}
3677
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003678static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003679vec_nor(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003680{
David Blaikie4f918ae2013-01-16 23:08:36 +00003681 vector unsigned int __res = ~((vector unsigned int)__a | (vector unsigned int)__b);
3682 return (vector float)__res;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003683}
3684
3685/* vec_vnor */
3686
3687static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003688vec_vnor(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003689{
David Blaikie4f918ae2013-01-16 23:08:36 +00003690 return ~(__a | __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003691}
3692
3693static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003694vec_vnor(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003695{
David Blaikie4f918ae2013-01-16 23:08:36 +00003696 return ~(__a | __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003697}
3698
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003699static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003700vec_vnor(vector bool char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003701{
David Blaikie4f918ae2013-01-16 23:08:36 +00003702 return ~(__a | __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003703}
3704
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003705static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003706vec_vnor(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003707{
David Blaikie4f918ae2013-01-16 23:08:36 +00003708 return ~(__a | __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003709}
3710
3711static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003712vec_vnor(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003713{
David Blaikie4f918ae2013-01-16 23:08:36 +00003714 return ~(__a | __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003715}
3716
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003717static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003718vec_vnor(vector bool short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003719{
David Blaikie4f918ae2013-01-16 23:08:36 +00003720 return ~(__a | __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003721}
3722
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003723static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003724vec_vnor(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003725{
David Blaikie4f918ae2013-01-16 23:08:36 +00003726 return ~(__a | __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003727}
3728
3729static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003730vec_vnor(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003731{
David Blaikie4f918ae2013-01-16 23:08:36 +00003732 return ~(__a | __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003733}
3734
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003735static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003736vec_vnor(vector bool int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003737{
David Blaikie4f918ae2013-01-16 23:08:36 +00003738 return ~(__a | __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003739}
3740
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003741static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003742vec_vnor(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003743{
David Blaikie4f918ae2013-01-16 23:08:36 +00003744 vector unsigned int __res = ~((vector unsigned int)__a | (vector unsigned int)__b);
3745 return (vector float)__res;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003746}
3747
3748/* vec_or */
3749
3750#define __builtin_altivec_vor vec_or
3751
3752static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003753vec_or(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003754{
David Blaikie4f918ae2013-01-16 23:08:36 +00003755 return __a | __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003756}
3757
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003758static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003759vec_or(vector bool char __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003760{
David Blaikie4f918ae2013-01-16 23:08:36 +00003761 return (vector signed char)__a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003762}
3763
3764static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003765vec_or(vector signed char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003766{
David Blaikie4f918ae2013-01-16 23:08:36 +00003767 return __a | (vector signed char)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003768}
3769
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003770static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003771vec_or(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003772{
David Blaikie4f918ae2013-01-16 23:08:36 +00003773 return __a | __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003774}
3775
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003776static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003777vec_or(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003778{
David Blaikie4f918ae2013-01-16 23:08:36 +00003779 return (vector unsigned char)__a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003780}
3781
3782static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003783vec_or(vector unsigned char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003784{
David Blaikie4f918ae2013-01-16 23:08:36 +00003785 return __a | (vector unsigned char)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003786}
3787
3788static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003789vec_or(vector bool char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003790{
David Blaikie4f918ae2013-01-16 23:08:36 +00003791 return __a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003792}
3793
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003794static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003795vec_or(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003796{
David Blaikie4f918ae2013-01-16 23:08:36 +00003797 return __a | __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003798}
3799
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003800static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003801vec_or(vector bool short __a, vector short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003802{
David Blaikie4f918ae2013-01-16 23:08:36 +00003803 return (vector short)__a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003804}
3805
3806static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003807vec_or(vector short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003808{
David Blaikie4f918ae2013-01-16 23:08:36 +00003809 return __a | (vector short)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003810}
3811
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003812static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003813vec_or(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003814{
David Blaikie4f918ae2013-01-16 23:08:36 +00003815 return __a | __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003816}
3817
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003818static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003819vec_or(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003820{
David Blaikie4f918ae2013-01-16 23:08:36 +00003821 return (vector unsigned short)__a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003822}
3823
3824static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003825vec_or(vector unsigned short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003826{
David Blaikie4f918ae2013-01-16 23:08:36 +00003827 return __a | (vector unsigned short)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003828}
3829
3830static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003831vec_or(vector bool short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003832{
David Blaikie4f918ae2013-01-16 23:08:36 +00003833 return __a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003834}
3835
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003836static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003837vec_or(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003838{
David Blaikie4f918ae2013-01-16 23:08:36 +00003839 return __a | __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003840}
3841
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003842static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003843vec_or(vector bool int __a, vector int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003844{
David Blaikie4f918ae2013-01-16 23:08:36 +00003845 return (vector int)__a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003846}
3847
3848static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003849vec_or(vector int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003850{
David Blaikie4f918ae2013-01-16 23:08:36 +00003851 return __a | (vector int)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003852}
3853
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003854static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003855vec_or(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003856{
David Blaikie4f918ae2013-01-16 23:08:36 +00003857 return __a | __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003858}
3859
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003860static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003861vec_or(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003862{
David Blaikie4f918ae2013-01-16 23:08:36 +00003863 return (vector unsigned int)__a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003864}
3865
3866static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003867vec_or(vector unsigned int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003868{
David Blaikie4f918ae2013-01-16 23:08:36 +00003869 return __a | (vector unsigned int)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003870}
3871
3872static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003873vec_or(vector bool int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003874{
David Blaikie4f918ae2013-01-16 23:08:36 +00003875 return __a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003876}
3877
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003878static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003879vec_or(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003880{
David Blaikie4f918ae2013-01-16 23:08:36 +00003881 vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b;
3882 return (vector float)__res;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003883}
3884
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003885static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003886vec_or(vector bool int __a, vector float __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003887{
David Blaikie4f918ae2013-01-16 23:08:36 +00003888 vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b;
3889 return (vector float)__res;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003890}
3891
3892static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003893vec_or(vector float __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003894{
David Blaikie4f918ae2013-01-16 23:08:36 +00003895 vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b;
3896 return (vector float)__res;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003897}
3898
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003899/* vec_vor */
3900
3901static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003902vec_vor(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003903{
David Blaikie4f918ae2013-01-16 23:08:36 +00003904 return __a | __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003905}
3906
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003907static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003908vec_vor(vector bool char __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003909{
David Blaikie4f918ae2013-01-16 23:08:36 +00003910 return (vector signed char)__a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003911}
3912
3913static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003914vec_vor(vector signed char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003915{
David Blaikie4f918ae2013-01-16 23:08:36 +00003916 return __a | (vector signed char)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003917}
3918
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003919static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003920vec_vor(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003921{
David Blaikie4f918ae2013-01-16 23:08:36 +00003922 return __a | __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003923}
3924
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003925static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003926vec_vor(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003927{
David Blaikie4f918ae2013-01-16 23:08:36 +00003928 return (vector unsigned char)__a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003929}
3930
3931static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003932vec_vor(vector unsigned char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003933{
David Blaikie4f918ae2013-01-16 23:08:36 +00003934 return __a | (vector unsigned char)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003935}
3936
3937static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003938vec_vor(vector bool char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003939{
David Blaikie4f918ae2013-01-16 23:08:36 +00003940 return __a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003941}
3942
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003943static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003944vec_vor(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003945{
David Blaikie4f918ae2013-01-16 23:08:36 +00003946 return __a | __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003947}
3948
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003949static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003950vec_vor(vector bool short __a, vector short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003951{
David Blaikie4f918ae2013-01-16 23:08:36 +00003952 return (vector short)__a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003953}
3954
3955static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003956vec_vor(vector short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003957{
David Blaikie4f918ae2013-01-16 23:08:36 +00003958 return __a | (vector short)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003959}
3960
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003961static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003962vec_vor(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003963{
David Blaikie4f918ae2013-01-16 23:08:36 +00003964 return __a | __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003965}
3966
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003967static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003968vec_vor(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003969{
David Blaikie4f918ae2013-01-16 23:08:36 +00003970 return (vector unsigned short)__a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003971}
3972
3973static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003974vec_vor(vector unsigned short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003975{
David Blaikie4f918ae2013-01-16 23:08:36 +00003976 return __a | (vector unsigned short)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003977}
3978
3979static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003980vec_vor(vector bool short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003981{
David Blaikie4f918ae2013-01-16 23:08:36 +00003982 return __a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003983}
3984
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003985static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003986vec_vor(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003987{
David Blaikie4f918ae2013-01-16 23:08:36 +00003988 return __a | __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00003989}
3990
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003991static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003992vec_vor(vector bool int __a, vector int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003993{
David Blaikie4f918ae2013-01-16 23:08:36 +00003994 return (vector int)__a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003995}
3996
3997static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00003998vec_vor(vector int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00003999{
David Blaikie4f918ae2013-01-16 23:08:36 +00004000 return __a | (vector int)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004001}
4002
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004003static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004004vec_vor(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004005{
David Blaikie4f918ae2013-01-16 23:08:36 +00004006 return __a | __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004007}
4008
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004009static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004010vec_vor(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004011{
David Blaikie4f918ae2013-01-16 23:08:36 +00004012 return (vector unsigned int)__a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004013}
4014
4015static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004016vec_vor(vector unsigned int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004017{
David Blaikie4f918ae2013-01-16 23:08:36 +00004018 return __a | (vector unsigned int)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004019}
4020
4021static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004022vec_vor(vector bool int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004023{
David Blaikie4f918ae2013-01-16 23:08:36 +00004024 return __a | __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004025}
4026
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004027static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004028vec_vor(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004029{
David Blaikie4f918ae2013-01-16 23:08:36 +00004030 vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b;
4031 return (vector float)__res;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004032}
4033
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004034static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004035vec_vor(vector bool int __a, vector float __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004036{
David Blaikie4f918ae2013-01-16 23:08:36 +00004037 vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b;
4038 return (vector float)__res;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004039}
4040
4041static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004042vec_vor(vector float __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004043{
David Blaikie4f918ae2013-01-16 23:08:36 +00004044 vector unsigned int __res = (vector unsigned int)__a | (vector unsigned int)__b;
4045 return (vector float)__res;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004046}
4047
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004048/* vec_pack */
4049
4050static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004051vec_pack(vector signed short __a, vector signed short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004052{
David Blaikie4f918ae2013-01-16 23:08:36 +00004053 return (vector signed char)vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004054 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
4055 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
4056}
4057
4058static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004059vec_pack(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004060{
David Blaikie4f918ae2013-01-16 23:08:36 +00004061 return (vector unsigned char)vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004062 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
4063 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
4064}
4065
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004066static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004067vec_pack(vector bool short __a, vector bool short __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004068{
David Blaikie4f918ae2013-01-16 23:08:36 +00004069 return (vector bool char)vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004070 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
4071 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
4072}
4073
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004074static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004075vec_pack(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004076{
David Blaikie4f918ae2013-01-16 23:08:36 +00004077 return (vector short)vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004078 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
4079 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
4080}
4081
4082static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004083vec_pack(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004084{
David Blaikie4f918ae2013-01-16 23:08:36 +00004085 return (vector unsigned short)vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004086 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
4087 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
4088}
4089
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004090static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004091vec_pack(vector bool int __a, vector bool int __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004092{
David Blaikie4f918ae2013-01-16 23:08:36 +00004093 return (vector bool short)vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004094 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
4095 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
4096}
4097
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004098/* vec_vpkuhum */
4099
4100#define __builtin_altivec_vpkuhum vec_vpkuhum
4101
4102static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004103vec_vpkuhum(vector signed short __a, vector signed short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004104{
David Blaikie4f918ae2013-01-16 23:08:36 +00004105 return (vector signed char)vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004106 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
4107 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
4108}
4109
4110static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004111vec_vpkuhum(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004112{
David Blaikie4f918ae2013-01-16 23:08:36 +00004113 return (vector unsigned char)vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004114 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
4115 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
4116}
4117
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004118static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004119vec_vpkuhum(vector bool short __a, vector bool short __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004120{
David Blaikie4f918ae2013-01-16 23:08:36 +00004121 return (vector bool char)vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004122 (0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
4123 0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
4124}
4125
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004126/* vec_vpkuwum */
4127
4128#define __builtin_altivec_vpkuwum vec_vpkuwum
4129
4130static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004131vec_vpkuwum(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004132{
David Blaikie4f918ae2013-01-16 23:08:36 +00004133 return (vector short)vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004134 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
4135 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
4136}
4137
4138static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004139vec_vpkuwum(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004140{
David Blaikie4f918ae2013-01-16 23:08:36 +00004141 return (vector unsigned short)vec_perm(__a, __b, (vector unsigned char)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004142 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
4143 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
4144}
4145
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004146static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004147vec_vpkuwum(vector bool int __a, vector bool int __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004148{
David Blaikie4f918ae2013-01-16 23:08:36 +00004149 return (vector bool short)vec_perm(__a, __b, (vector unsigned char)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004150 (0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
4151 0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
4152}
4153
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004154/* vec_packpx */
4155
4156static vector pixel __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00004157vec_packpx(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004158{
David Blaikie4f918ae2013-01-16 23:08:36 +00004159 return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004160}
4161
4162/* vec_vpkpx */
4163
4164static vector pixel __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00004165vec_vpkpx(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004166{
David Blaikie4f918ae2013-01-16 23:08:36 +00004167 return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004168}
4169
4170/* vec_packs */
4171
4172static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004173vec_packs(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004174{
David Blaikie4f918ae2013-01-16 23:08:36 +00004175 return __builtin_altivec_vpkshss(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004176}
4177
4178static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004179vec_packs(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004180{
David Blaikie4f918ae2013-01-16 23:08:36 +00004181 return __builtin_altivec_vpkuhus(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004182}
4183
4184static vector signed short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004185vec_packs(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004186{
David Blaikie4f918ae2013-01-16 23:08:36 +00004187 return __builtin_altivec_vpkswss(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004188}
4189
4190static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004191vec_packs(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004192{
David Blaikie4f918ae2013-01-16 23:08:36 +00004193 return __builtin_altivec_vpkuwus(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004194}
4195
4196/* vec_vpkshss */
4197
4198static vector signed char __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00004199vec_vpkshss(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004200{
David Blaikie4f918ae2013-01-16 23:08:36 +00004201 return __builtin_altivec_vpkshss(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004202}
4203
4204/* vec_vpkuhus */
4205
4206static vector unsigned char __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00004207vec_vpkuhus(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004208{
David Blaikie4f918ae2013-01-16 23:08:36 +00004209 return __builtin_altivec_vpkuhus(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004210}
4211
4212/* vec_vpkswss */
4213
4214static vector signed short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00004215vec_vpkswss(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004216{
David Blaikie4f918ae2013-01-16 23:08:36 +00004217 return __builtin_altivec_vpkswss(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004218}
4219
4220/* vec_vpkuwus */
4221
4222static vector unsigned short __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00004223vec_vpkuwus(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004224{
David Blaikie4f918ae2013-01-16 23:08:36 +00004225 return __builtin_altivec_vpkuwus(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004226}
4227
4228/* vec_packsu */
4229
4230static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004231vec_packsu(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004232{
David Blaikie4f918ae2013-01-16 23:08:36 +00004233 return __builtin_altivec_vpkshus(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004234}
4235
4236static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004237vec_packsu(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004238{
David Blaikie4f918ae2013-01-16 23:08:36 +00004239 return __builtin_altivec_vpkuhus(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004240}
4241
4242static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004243vec_packsu(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004244{
David Blaikie4f918ae2013-01-16 23:08:36 +00004245 return __builtin_altivec_vpkswus(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004246}
4247
4248static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004249vec_packsu(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004250{
David Blaikie4f918ae2013-01-16 23:08:36 +00004251 return __builtin_altivec_vpkuwus(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004252}
4253
4254/* vec_vpkshus */
4255
4256static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004257vec_vpkshus(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004258{
David Blaikie4f918ae2013-01-16 23:08:36 +00004259 return __builtin_altivec_vpkshus(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004260}
4261
4262static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004263vec_vpkshus(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004264{
David Blaikie4f918ae2013-01-16 23:08:36 +00004265 return __builtin_altivec_vpkuhus(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004266}
4267
4268/* vec_vpkswus */
4269
4270static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004271vec_vpkswus(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004272{
David Blaikie4f918ae2013-01-16 23:08:36 +00004273 return __builtin_altivec_vpkswus(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004274}
4275
4276static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004277vec_vpkswus(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004278{
David Blaikie4f918ae2013-01-16 23:08:36 +00004279 return __builtin_altivec_vpkuwus(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004280}
4281
4282/* vec_perm */
4283
4284vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004285vec_perm(vector signed char __a, vector signed char __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004286{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004287 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00004288 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004289}
4290
4291vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004292vec_perm(vector unsigned char __a,
4293 vector unsigned char __b,
4294 vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004295{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004296 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00004297 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004298}
4299
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004300vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004301vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004302{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004303 return (vector bool char)
David Blaikie4f918ae2013-01-16 23:08:36 +00004304 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004305}
4306
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004307vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004308vec_perm(vector short __a, vector short __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004309{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004310 return (vector short)
David Blaikie4f918ae2013-01-16 23:08:36 +00004311 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004312}
4313
4314vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004315vec_perm(vector unsigned short __a,
4316 vector unsigned short __b,
4317 vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004318{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004319 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00004320 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004321}
4322
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004323vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004324vec_perm(vector bool short __a, vector bool short __b, vector unsigned char __c)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004325{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004326 return (vector bool short)
David Blaikie4f918ae2013-01-16 23:08:36 +00004327 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004328}
4329
4330vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004331vec_perm(vector pixel __a, vector pixel __b, vector unsigned char __c)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004332{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004333 return (vector pixel)
David Blaikie4f918ae2013-01-16 23:08:36 +00004334 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004335}
4336
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004337vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004338vec_perm(vector int __a, vector int __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004339{
David Blaikie4f918ae2013-01-16 23:08:36 +00004340 return (vector int)__builtin_altivec_vperm_4si(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004341}
4342
4343vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004344vec_perm(vector unsigned int __a, vector unsigned int __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004345{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004346 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00004347 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004348}
4349
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004350vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004351vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004352{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004353 return (vector bool int)
David Blaikie4f918ae2013-01-16 23:08:36 +00004354 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004355}
4356
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004357vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004358vec_perm(vector float __a, vector float __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004359{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004360 return (vector float)
David Blaikie4f918ae2013-01-16 23:08:36 +00004361 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004362}
4363
4364/* vec_vperm */
4365
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004366static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004367vec_vperm(vector signed char __a, vector signed char __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004368{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004369 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00004370 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004371}
4372
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004373static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004374vec_vperm(vector unsigned char __a,
4375 vector unsigned char __b,
4376 vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004377{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004378 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00004379 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004380}
4381
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004382static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004383vec_vperm(vector bool char __a, vector bool char __b, vector unsigned char __c)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004384{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004385 return (vector bool char)
David Blaikie4f918ae2013-01-16 23:08:36 +00004386 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004387}
4388
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004389static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004390vec_vperm(vector short __a, vector short __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004391{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004392 return (vector short)
David Blaikie4f918ae2013-01-16 23:08:36 +00004393 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004394}
4395
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004396static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004397vec_vperm(vector unsigned short __a,
4398 vector unsigned short __b,
4399 vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004400{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004401 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00004402 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004403}
4404
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004405static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004406vec_vperm(vector bool short __a, vector bool short __b, vector unsigned char __c)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004407{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004408 return (vector bool short)
David Blaikie4f918ae2013-01-16 23:08:36 +00004409 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004410}
4411
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004412static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004413vec_vperm(vector pixel __a, vector pixel __b, vector unsigned char __c)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004414{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004415 return (vector pixel)
David Blaikie4f918ae2013-01-16 23:08:36 +00004416 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004417}
4418
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004419static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004420vec_vperm(vector int __a, vector int __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004421{
David Blaikie4f918ae2013-01-16 23:08:36 +00004422 return (vector int)__builtin_altivec_vperm_4si(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004423}
4424
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004425static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004426vec_vperm(vector unsigned int __a, vector unsigned int __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004427{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004428 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00004429 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004430}
4431
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004432static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004433vec_vperm(vector bool int __a, vector bool int __b, vector unsigned char __c)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004434{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004435 return (vector bool int)
David Blaikie4f918ae2013-01-16 23:08:36 +00004436 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004437}
4438
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004439static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004440vec_vperm(vector float __a, vector float __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004441{
Anton Yartsev3ed32722010-09-18 00:39:16 +00004442 return (vector float)
David Blaikie4f918ae2013-01-16 23:08:36 +00004443 __builtin_altivec_vperm_4si((vector int)__a, (vector int)__b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004444}
4445
4446/* vec_re */
4447
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004448static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00004449vec_re(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004450{
David Blaikie4f918ae2013-01-16 23:08:36 +00004451 return __builtin_altivec_vrefp(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004452}
4453
4454/* vec_vrefp */
4455
Ulrich Weigand60c158a2012-10-31 18:17:07 +00004456static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00004457vec_vrefp(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004458{
David Blaikie4f918ae2013-01-16 23:08:36 +00004459 return __builtin_altivec_vrefp(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004460}
4461
4462/* vec_rl */
4463
4464static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004465vec_rl(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004466{
David Blaikie4f918ae2013-01-16 23:08:36 +00004467 return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004468}
4469
4470static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004471vec_rl(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004472{
David Blaikie4f918ae2013-01-16 23:08:36 +00004473 return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004474}
4475
4476static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004477vec_rl(vector short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004478{
David Blaikie4f918ae2013-01-16 23:08:36 +00004479 return __builtin_altivec_vrlh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004480}
4481
4482static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004483vec_rl(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004484{
David Blaikie4f918ae2013-01-16 23:08:36 +00004485 return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004486}
4487
4488static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004489vec_rl(vector int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004490{
David Blaikie4f918ae2013-01-16 23:08:36 +00004491 return __builtin_altivec_vrlw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004492}
4493
4494static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004495vec_rl(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004496{
David Blaikie4f918ae2013-01-16 23:08:36 +00004497 return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004498}
4499
4500/* vec_vrlb */
4501
4502static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004503vec_vrlb(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004504{
David Blaikie4f918ae2013-01-16 23:08:36 +00004505 return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004506}
4507
4508static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004509vec_vrlb(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004510{
David Blaikie4f918ae2013-01-16 23:08:36 +00004511 return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004512}
4513
4514/* vec_vrlh */
4515
4516static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004517vec_vrlh(vector short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004518{
David Blaikie4f918ae2013-01-16 23:08:36 +00004519 return __builtin_altivec_vrlh(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004520}
4521
4522static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004523vec_vrlh(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004524{
David Blaikie4f918ae2013-01-16 23:08:36 +00004525 return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004526}
4527
4528/* vec_vrlw */
4529
4530static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004531vec_vrlw(vector int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004532{
David Blaikie4f918ae2013-01-16 23:08:36 +00004533 return __builtin_altivec_vrlw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004534}
4535
4536static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004537vec_vrlw(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004538{
David Blaikie4f918ae2013-01-16 23:08:36 +00004539 return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004540}
4541
4542/* vec_round */
4543
4544static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00004545vec_round(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004546{
David Blaikie4f918ae2013-01-16 23:08:36 +00004547 return __builtin_altivec_vrfin(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004548}
4549
4550/* vec_vrfin */
4551
4552static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00004553vec_vrfin(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004554{
David Blaikie4f918ae2013-01-16 23:08:36 +00004555 return __builtin_altivec_vrfin(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004556}
4557
4558/* vec_rsqrte */
4559
4560static __vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00004561vec_rsqrte(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004562{
David Blaikie4f918ae2013-01-16 23:08:36 +00004563 return __builtin_altivec_vrsqrtefp(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004564}
4565
4566/* vec_vrsqrtefp */
4567
4568static __vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00004569vec_vrsqrtefp(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004570{
David Blaikie4f918ae2013-01-16 23:08:36 +00004571 return __builtin_altivec_vrsqrtefp(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004572}
4573
4574/* vec_sel */
4575
4576#define __builtin_altivec_vsel_4si vec_sel
4577
4578static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004579vec_sel(vector signed char __a, vector signed char __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004580{
David Blaikie4f918ae2013-01-16 23:08:36 +00004581 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004582}
4583
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004584static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004585vec_sel(vector signed char __a, vector signed char __b, vector bool char __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004586{
David Blaikie4f918ae2013-01-16 23:08:36 +00004587 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004588}
4589
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004590static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004591vec_sel(vector unsigned char __a, vector unsigned char __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004592{
David Blaikie4f918ae2013-01-16 23:08:36 +00004593 return (__a & ~__c) | (__b & __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004594}
4595
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004596static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004597vec_sel(vector unsigned char __a, vector unsigned char __b, vector bool char __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004598{
David Blaikie4f918ae2013-01-16 23:08:36 +00004599 return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004600}
4601
4602static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004603vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004604{
David Blaikie4f918ae2013-01-16 23:08:36 +00004605 return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004606}
4607
4608static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004609vec_sel(vector bool char __a, vector bool char __b, vector bool char __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004610{
David Blaikie4f918ae2013-01-16 23:08:36 +00004611 return (__a & ~__c) | (__b & __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004612}
4613
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004614static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004615vec_sel(vector short __a, vector short __b, vector unsigned short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004616{
David Blaikie4f918ae2013-01-16 23:08:36 +00004617 return (__a & ~(vector short)__c) | (__b & (vector short)__c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004618}
4619
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004620static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004621vec_sel(vector short __a, vector short __b, vector bool short __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004622{
David Blaikie4f918ae2013-01-16 23:08:36 +00004623 return (__a & ~(vector short)__c) | (__b & (vector short)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004624}
4625
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004626static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004627vec_sel(vector unsigned short __a,
4628 vector unsigned short __b,
4629 vector unsigned short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004630{
David Blaikie4f918ae2013-01-16 23:08:36 +00004631 return (__a & ~__c) | (__b & __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004632}
4633
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004634static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004635vec_sel(vector unsigned short __a, vector unsigned short __b, vector bool short __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004636{
David Blaikie4f918ae2013-01-16 23:08:36 +00004637 return (__a & ~(vector unsigned short)__c) | (__b & (vector unsigned short)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004638}
4639
4640static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004641vec_sel(vector bool short __a, vector bool short __b, vector unsigned short __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004642{
David Blaikie4f918ae2013-01-16 23:08:36 +00004643 return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004644}
4645
4646static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004647vec_sel(vector bool short __a, vector bool short __b, vector bool short __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004648{
David Blaikie4f918ae2013-01-16 23:08:36 +00004649 return (__a & ~__c) | (__b & __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004650}
4651
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004652static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004653vec_sel(vector int __a, vector int __b, vector unsigned int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004654{
David Blaikie4f918ae2013-01-16 23:08:36 +00004655 return (__a & ~(vector int)__c) | (__b & (vector int)__c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004656}
4657
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004658static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004659vec_sel(vector int __a, vector int __b, vector bool int __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004660{
David Blaikie4f918ae2013-01-16 23:08:36 +00004661 return (__a & ~(vector int)__c) | (__b & (vector int)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004662}
4663
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004664static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004665vec_sel(vector unsigned int __a, vector unsigned int __b, vector unsigned int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004666{
David Blaikie4f918ae2013-01-16 23:08:36 +00004667 return (__a & ~__c) | (__b & __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004668}
4669
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004670static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004671vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004672{
David Blaikie4f918ae2013-01-16 23:08:36 +00004673 return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004674}
4675
4676static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004677vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004678{
David Blaikie4f918ae2013-01-16 23:08:36 +00004679 return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004680}
4681
4682static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004683vec_sel(vector bool int __a, vector bool int __b, vector bool int __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004684{
David Blaikie4f918ae2013-01-16 23:08:36 +00004685 return (__a & ~__c) | (__b & __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004686}
4687
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004688static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004689vec_sel(vector float __a, vector float __b, vector unsigned int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004690{
David Blaikie4f918ae2013-01-16 23:08:36 +00004691 vector int __res = ((vector int)__a & ~(vector int)__c)
4692 | ((vector int)__b & (vector int)__c);
4693 return (vector float)__res;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004694}
4695
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004696static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004697vec_sel(vector float __a, vector float __b, vector bool int __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004698{
David Blaikie4f918ae2013-01-16 23:08:36 +00004699 vector int __res = ((vector int)__a & ~(vector int)__c)
4700 | ((vector int)__b & (vector int)__c);
4701 return (vector float)__res;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004702}
4703
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004704/* vec_vsel */
4705
4706static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004707vec_vsel(vector signed char __a, vector signed char __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004708{
David Blaikie4f918ae2013-01-16 23:08:36 +00004709 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004710}
4711
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004712static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004713vec_vsel(vector signed char __a, vector signed char __b, vector bool char __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004714{
David Blaikie4f918ae2013-01-16 23:08:36 +00004715 return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004716}
4717
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004718static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004719vec_vsel(vector unsigned char __a, vector unsigned char __b, vector unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004720{
David Blaikie4f918ae2013-01-16 23:08:36 +00004721 return (__a & ~__c) | (__b & __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004722}
4723
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004724static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004725vec_vsel(vector unsigned char __a, vector unsigned char __b, vector bool char __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004726{
David Blaikie4f918ae2013-01-16 23:08:36 +00004727 return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004728}
4729
4730static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004731vec_vsel(vector bool char __a, vector bool char __b, vector unsigned char __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004732{
David Blaikie4f918ae2013-01-16 23:08:36 +00004733 return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004734}
4735
4736static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004737vec_vsel(vector bool char __a, vector bool char __b, vector bool char __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004738{
David Blaikie4f918ae2013-01-16 23:08:36 +00004739 return (__a & ~__c) | (__b & __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004740}
4741
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004742static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004743vec_vsel(vector short __a, vector short __b, vector unsigned short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004744{
David Blaikie4f918ae2013-01-16 23:08:36 +00004745 return (__a & ~(vector short)__c) | (__b & (vector short)__c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004746}
4747
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004748static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004749vec_vsel(vector short __a, vector short __b, vector bool short __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004750{
David Blaikie4f918ae2013-01-16 23:08:36 +00004751 return (__a & ~(vector short)__c) | (__b & (vector short)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004752}
4753
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004754static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004755vec_vsel(vector unsigned short __a,
4756 vector unsigned short __b,
4757 vector unsigned short __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004758{
David Blaikie4f918ae2013-01-16 23:08:36 +00004759 return (__a & ~__c) | (__b & __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004760}
4761
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004762static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004763vec_vsel(vector unsigned short __a, vector unsigned short __b, vector bool short __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004764{
David Blaikie4f918ae2013-01-16 23:08:36 +00004765 return (__a & ~(vector unsigned short)__c) | (__b & (vector unsigned short)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004766}
4767
4768static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004769vec_vsel(vector bool short __a, vector bool short __b, vector unsigned short __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004770{
David Blaikie4f918ae2013-01-16 23:08:36 +00004771 return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004772}
4773
4774static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004775vec_vsel(vector bool short __a, vector bool short __b, vector bool short __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004776{
David Blaikie4f918ae2013-01-16 23:08:36 +00004777 return (__a & ~__c) | (__b & __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004778}
4779
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004780static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004781vec_vsel(vector int __a, vector int __b, vector unsigned int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004782{
David Blaikie4f918ae2013-01-16 23:08:36 +00004783 return (__a & ~(vector int)__c) | (__b & (vector int)__c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004784}
4785
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004786static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004787vec_vsel(vector int __a, vector int __b, vector bool int __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004788{
David Blaikie4f918ae2013-01-16 23:08:36 +00004789 return (__a & ~(vector int)__c) | (__b & (vector int)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004790}
4791
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004792static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004793vec_vsel(vector unsigned int __a, vector unsigned int __b, vector unsigned int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004794{
David Blaikie4f918ae2013-01-16 23:08:36 +00004795 return (__a & ~__c) | (__b & __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004796}
4797
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004798static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004799vec_vsel(vector unsigned int __a, vector unsigned int __b, vector bool int __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004800{
David Blaikie4f918ae2013-01-16 23:08:36 +00004801 return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004802}
4803
4804static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004805vec_vsel(vector bool int __a, vector bool int __b, vector unsigned int __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004806{
David Blaikie4f918ae2013-01-16 23:08:36 +00004807 return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004808}
4809
4810static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004811vec_vsel(vector bool int __a, vector bool int __b, vector bool int __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004812{
David Blaikie4f918ae2013-01-16 23:08:36 +00004813 return (__a & ~__c) | (__b & __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004814}
4815
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004816static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004817vec_vsel(vector float __a, vector float __b, vector unsigned int __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004818{
David Blaikie4f918ae2013-01-16 23:08:36 +00004819 vector int __res = ((vector int)__a & ~(vector int)__c)
4820 | ((vector int)__b & (vector int)__c);
4821 return (vector float)__res;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004822}
4823
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004824static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004825vec_vsel(vector float __a, vector float __b, vector bool int __c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004826{
David Blaikie4f918ae2013-01-16 23:08:36 +00004827 vector int __res = ((vector int)__a & ~(vector int)__c)
4828 | ((vector int)__b & (vector int)__c);
4829 return (vector float)__res;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00004830}
4831
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004832/* vec_sl */
4833
4834static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004835vec_sl(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004836{
David Blaikie4f918ae2013-01-16 23:08:36 +00004837 return __a << (vector signed char)__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004838}
4839
4840static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004841vec_sl(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004842{
David Blaikie4f918ae2013-01-16 23:08:36 +00004843 return __a << __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004844}
4845
4846static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004847vec_sl(vector short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004848{
David Blaikie4f918ae2013-01-16 23:08:36 +00004849 return __a << (vector short)__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004850}
4851
4852static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004853vec_sl(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004854{
David Blaikie4f918ae2013-01-16 23:08:36 +00004855 return __a << __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004856}
4857
4858static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004859vec_sl(vector int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004860{
David Blaikie4f918ae2013-01-16 23:08:36 +00004861 return __a << (vector int)__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004862}
4863
4864static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004865vec_sl(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004866{
David Blaikie4f918ae2013-01-16 23:08:36 +00004867 return __a << __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004868}
4869
4870/* vec_vslb */
4871
4872#define __builtin_altivec_vslb vec_vslb
4873
4874static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004875vec_vslb(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004876{
David Blaikie4f918ae2013-01-16 23:08:36 +00004877 return vec_sl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004878}
4879
4880static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004881vec_vslb(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004882{
David Blaikie4f918ae2013-01-16 23:08:36 +00004883 return vec_sl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004884}
4885
4886/* vec_vslh */
4887
4888#define __builtin_altivec_vslh vec_vslh
4889
4890static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004891vec_vslh(vector short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004892{
David Blaikie4f918ae2013-01-16 23:08:36 +00004893 return vec_sl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004894}
4895
4896static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004897vec_vslh(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004898{
David Blaikie4f918ae2013-01-16 23:08:36 +00004899 return vec_sl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004900}
4901
4902/* vec_vslw */
4903
4904#define __builtin_altivec_vslw vec_vslw
4905
4906static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004907vec_vslw(vector int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004908{
David Blaikie4f918ae2013-01-16 23:08:36 +00004909 return vec_sl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004910}
4911
4912static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004913vec_vslw(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004914{
David Blaikie4f918ae2013-01-16 23:08:36 +00004915 return vec_sl(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004916}
4917
4918/* vec_sld */
4919
4920#define __builtin_altivec_vsldoi_4si vec_sld
4921
4922static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004923vec_sld(vector signed char __a, vector signed char __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004924{
David Blaikie4f918ae2013-01-16 23:08:36 +00004925 return vec_perm(__a, __b, (vector unsigned char)
4926 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
4927 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004928}
4929
4930static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004931vec_sld(vector unsigned char __a, vector unsigned char __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004932{
David Blaikie4f918ae2013-01-16 23:08:36 +00004933 return vec_perm(__a, __b, (vector unsigned char)
4934 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
4935 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004936}
4937
4938static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004939vec_sld(vector short __a, vector short __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004940{
David Blaikie4f918ae2013-01-16 23:08:36 +00004941 return vec_perm(__a, __b, (vector unsigned char)
4942 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
4943 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004944}
4945
4946static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004947vec_sld(vector unsigned short __a, vector unsigned short __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004948{
David Blaikie4f918ae2013-01-16 23:08:36 +00004949 return vec_perm(__a, __b, (vector unsigned char)
4950 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
4951 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004952}
4953
4954static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004955vec_sld(vector pixel __a, vector pixel __b, unsigned char __c)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00004956{
David Blaikie4f918ae2013-01-16 23:08:36 +00004957 return vec_perm(__a, __b, (vector unsigned char)
4958 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
4959 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004960}
4961
4962static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004963vec_sld(vector int __a, vector int __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004964{
David Blaikie4f918ae2013-01-16 23:08:36 +00004965 return vec_perm(__a, __b, (vector unsigned char)
4966 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
4967 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004968}
4969
4970static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004971vec_sld(vector unsigned int __a, vector unsigned int __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004972{
David Blaikie4f918ae2013-01-16 23:08:36 +00004973 return vec_perm(__a, __b, (vector unsigned char)
4974 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
4975 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004976}
4977
4978static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004979vec_sld(vector float __a, vector float __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004980{
David Blaikie4f918ae2013-01-16 23:08:36 +00004981 return vec_perm(__a, __b, (vector unsigned char)
4982 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
4983 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004984}
4985
4986/* vec_vsldoi */
4987
4988static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004989vec_vsldoi(vector signed char __a, vector signed char __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004990{
David Blaikie4f918ae2013-01-16 23:08:36 +00004991 return vec_perm(__a, __b, (vector unsigned char)
4992 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
4993 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004994}
4995
4996static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00004997vec_vsldoi(vector unsigned char __a, vector unsigned char __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00004998{
David Blaikie4f918ae2013-01-16 23:08:36 +00004999 return vec_perm(__a, __b, (vector unsigned char)
5000 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
5001 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005002}
5003
5004static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005005vec_vsldoi(vector short __a, vector short __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005006{
David Blaikie4f918ae2013-01-16 23:08:36 +00005007 return vec_perm(__a, __b, (vector unsigned char)
5008 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
5009 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005010}
5011
5012static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005013vec_vsldoi(vector unsigned short __a, vector unsigned short __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005014{
David Blaikie4f918ae2013-01-16 23:08:36 +00005015 return vec_perm(__a, __b, (vector unsigned char)
5016 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
5017 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005018}
5019
5020static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005021vec_vsldoi(vector pixel __a, vector pixel __b, unsigned char __c)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005022{
David Blaikie4f918ae2013-01-16 23:08:36 +00005023 return vec_perm(__a, __b, (vector unsigned char)
5024 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
5025 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005026}
5027
5028static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005029vec_vsldoi(vector int __a, vector int __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005030{
David Blaikie4f918ae2013-01-16 23:08:36 +00005031 return vec_perm(__a, __b, (vector unsigned char)
5032 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
5033 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005034}
5035
5036static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005037vec_vsldoi(vector unsigned int __a, vector unsigned int __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005038{
David Blaikie4f918ae2013-01-16 23:08:36 +00005039 return vec_perm(__a, __b, (vector unsigned char)
5040 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
5041 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005042}
5043
5044static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005045vec_vsldoi(vector float __a, vector float __b, unsigned char __c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005046{
David Blaikie4f918ae2013-01-16 23:08:36 +00005047 return vec_perm(__a, __b, (vector unsigned char)
5048 (__c, __c+1, __c+2, __c+3, __c+4, __c+5, __c+6, __c+7,
5049 __c+8, __c+9, __c+10, __c+11, __c+12, __c+13, __c+14, __c+15));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005050}
5051
5052/* vec_sll */
5053
5054static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005055vec_sll(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005056{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005057 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005058 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005059}
5060
5061static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005062vec_sll(vector signed char __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005063{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005064 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005065 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005066}
5067
5068static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005069vec_sll(vector signed char __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005070{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005071 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005072 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005073}
5074
5075static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005076vec_sll(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005077{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005078 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005079 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005080}
5081
5082static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005083vec_sll(vector unsigned char __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005084{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005085 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005086 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005087}
5088
5089static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005090vec_sll(vector unsigned char __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005091{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005092 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005093 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005094}
5095
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005096static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005097vec_sll(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005098{
David Blaikie4f918ae2013-01-16 23:08:36 +00005099 return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005100}
5101
5102static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005103vec_sll(vector bool char __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005104{
David Blaikie4f918ae2013-01-16 23:08:36 +00005105 return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005106}
5107
5108static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005109vec_sll(vector bool char __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005110{
David Blaikie4f918ae2013-01-16 23:08:36 +00005111 return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005112}
5113
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005114static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005115vec_sll(vector short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005116{
David Blaikie4f918ae2013-01-16 23:08:36 +00005117 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005118}
5119
5120static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005121vec_sll(vector short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005122{
David Blaikie4f918ae2013-01-16 23:08:36 +00005123 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005124}
5125
5126static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005127vec_sll(vector short __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005128{
David Blaikie4f918ae2013-01-16 23:08:36 +00005129 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005130}
5131
5132static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005133vec_sll(vector unsigned short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005134{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005135 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00005136 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005137}
5138
5139static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005140vec_sll(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005141{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005142 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00005143 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005144}
5145
5146static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005147vec_sll(vector unsigned short __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005148{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005149 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00005150 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005151}
5152
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005153static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005154vec_sll(vector bool short __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005155{
David Blaikie4f918ae2013-01-16 23:08:36 +00005156 return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005157}
5158
5159static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005160vec_sll(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005161{
David Blaikie4f918ae2013-01-16 23:08:36 +00005162 return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005163}
5164
5165static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005166vec_sll(vector bool short __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005167{
David Blaikie4f918ae2013-01-16 23:08:36 +00005168 return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005169}
5170
5171static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005172vec_sll(vector pixel __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005173{
David Blaikie4f918ae2013-01-16 23:08:36 +00005174 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005175}
5176
5177static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005178vec_sll(vector pixel __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005179{
David Blaikie4f918ae2013-01-16 23:08:36 +00005180 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005181}
5182
5183static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005184vec_sll(vector pixel __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005185{
David Blaikie4f918ae2013-01-16 23:08:36 +00005186 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005187}
5188
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005189static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005190vec_sll(vector int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005191{
David Blaikie4f918ae2013-01-16 23:08:36 +00005192 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005193}
5194
5195static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005196vec_sll(vector int __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005197{
David Blaikie4f918ae2013-01-16 23:08:36 +00005198 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005199}
5200
5201static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005202vec_sll(vector int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005203{
David Blaikie4f918ae2013-01-16 23:08:36 +00005204 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005205}
5206
5207static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005208vec_sll(vector unsigned int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005209{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005210 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00005211 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005212}
5213
5214static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005215vec_sll(vector unsigned int __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005216{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005217 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00005218 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005219}
5220
5221static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005222vec_sll(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005223{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005224 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00005225 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005226}
5227
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005228static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005229vec_sll(vector bool int __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005230{
David Blaikie4f918ae2013-01-16 23:08:36 +00005231 return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005232}
5233
5234static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005235vec_sll(vector bool int __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005236{
David Blaikie4f918ae2013-01-16 23:08:36 +00005237 return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005238}
5239
5240static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005241vec_sll(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005242{
David Blaikie4f918ae2013-01-16 23:08:36 +00005243 return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005244}
5245
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005246/* vec_vsl */
5247
5248static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005249vec_vsl(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005250{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005251 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005252 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005253}
5254
5255static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005256vec_vsl(vector signed char __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005257{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005258 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005259 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005260}
5261
5262static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005263vec_vsl(vector signed char __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005264{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005265 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005266 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005267}
5268
5269static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005270vec_vsl(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005271{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005272 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005273 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005274}
5275
5276static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005277vec_vsl(vector unsigned char __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005278{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005279 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005280 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005281}
5282
5283static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005284vec_vsl(vector unsigned char __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005285{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005286 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005287 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005288}
5289
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005290static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005291vec_vsl(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005292{
David Blaikie4f918ae2013-01-16 23:08:36 +00005293 return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005294}
5295
5296static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005297vec_vsl(vector bool char __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005298{
David Blaikie4f918ae2013-01-16 23:08:36 +00005299 return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005300}
5301
5302static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005303vec_vsl(vector bool char __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005304{
David Blaikie4f918ae2013-01-16 23:08:36 +00005305 return (vector bool char)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005306}
5307
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005308static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005309vec_vsl(vector short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005310{
David Blaikie4f918ae2013-01-16 23:08:36 +00005311 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005312}
5313
5314static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005315vec_vsl(vector short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005316{
David Blaikie4f918ae2013-01-16 23:08:36 +00005317 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005318}
5319
5320static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005321vec_vsl(vector short __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005322{
David Blaikie4f918ae2013-01-16 23:08:36 +00005323 return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005324}
5325
5326static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005327vec_vsl(vector unsigned short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005328{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005329 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00005330 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005331}
5332
5333static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005334vec_vsl(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005335{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005336 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00005337 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005338}
5339
5340static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005341vec_vsl(vector unsigned short __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005342{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005343 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00005344 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005345}
5346
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005347static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005348vec_vsl(vector bool short __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005349{
David Blaikie4f918ae2013-01-16 23:08:36 +00005350 return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005351}
5352
5353static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005354vec_vsl(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005355{
David Blaikie4f918ae2013-01-16 23:08:36 +00005356 return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005357}
5358
5359static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005360vec_vsl(vector bool short __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005361{
David Blaikie4f918ae2013-01-16 23:08:36 +00005362 return (vector bool short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005363}
5364
5365static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005366vec_vsl(vector pixel __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005367{
David Blaikie4f918ae2013-01-16 23:08:36 +00005368 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005369}
5370
5371static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005372vec_vsl(vector pixel __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005373{
David Blaikie4f918ae2013-01-16 23:08:36 +00005374 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005375}
5376
5377static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005378vec_vsl(vector pixel __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005379{
David Blaikie4f918ae2013-01-16 23:08:36 +00005380 return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005381}
5382
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005383static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005384vec_vsl(vector int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005385{
David Blaikie4f918ae2013-01-16 23:08:36 +00005386 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005387}
5388
5389static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005390vec_vsl(vector int __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005391{
David Blaikie4f918ae2013-01-16 23:08:36 +00005392 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005393}
5394
5395static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005396vec_vsl(vector int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005397{
David Blaikie4f918ae2013-01-16 23:08:36 +00005398 return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005399}
5400
5401static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005402vec_vsl(vector unsigned int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005403{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005404 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00005405 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005406}
5407
5408static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005409vec_vsl(vector unsigned int __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005410{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005411 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00005412 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005413}
5414
5415static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005416vec_vsl(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005417{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005418 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00005419 __builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005420}
5421
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005422static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005423vec_vsl(vector bool int __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005424{
David Blaikie4f918ae2013-01-16 23:08:36 +00005425 return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005426}
5427
5428static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005429vec_vsl(vector bool int __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005430{
David Blaikie4f918ae2013-01-16 23:08:36 +00005431 return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005432}
5433
5434static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005435vec_vsl(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005436{
David Blaikie4f918ae2013-01-16 23:08:36 +00005437 return (vector bool int)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005438}
5439
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005440/* vec_slo */
5441
5442static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005443vec_slo(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005444{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005445 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005446 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005447}
5448
5449static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005450vec_slo(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005451{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005452 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005453 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005454}
5455
5456static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005457vec_slo(vector unsigned char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005458{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005459 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005460 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005461}
5462
5463static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005464vec_slo(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005465{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005466 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005467 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005468}
5469
5470static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005471vec_slo(vector short __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005472{
David Blaikie4f918ae2013-01-16 23:08:36 +00005473 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005474}
5475
5476static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005477vec_slo(vector short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005478{
David Blaikie4f918ae2013-01-16 23:08:36 +00005479 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005480}
5481
5482static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005483vec_slo(vector unsigned short __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005484{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005485 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00005486 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005487}
5488
5489static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005490vec_slo(vector unsigned short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005491{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005492 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00005493 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005494}
5495
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005496static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005497vec_slo(vector pixel __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005498{
David Blaikie4f918ae2013-01-16 23:08:36 +00005499 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005500}
5501
5502static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005503vec_slo(vector pixel __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005504{
David Blaikie4f918ae2013-01-16 23:08:36 +00005505 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005506}
5507
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005508static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005509vec_slo(vector int __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005510{
David Blaikie4f918ae2013-01-16 23:08:36 +00005511 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005512}
5513
5514static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005515vec_slo(vector int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005516{
David Blaikie4f918ae2013-01-16 23:08:36 +00005517 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005518}
5519
5520static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005521vec_slo(vector unsigned int __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005522{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005523 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00005524 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005525}
5526
5527static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005528vec_slo(vector unsigned int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005529{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005530 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00005531 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005532}
5533
5534static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005535vec_slo(vector float __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005536{
David Blaikie4f918ae2013-01-16 23:08:36 +00005537 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005538}
5539
5540static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005541vec_slo(vector float __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005542{
David Blaikie4f918ae2013-01-16 23:08:36 +00005543 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005544}
5545
5546/* vec_vslo */
5547
5548static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005549vec_vslo(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005550{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005551 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005552 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005553}
5554
5555static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005556vec_vslo(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005557{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005558 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005559 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005560}
5561
5562static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005563vec_vslo(vector unsigned char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005564{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005565 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005566 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005567}
5568
5569static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005570vec_vslo(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005571{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005572 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00005573 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005574}
5575
5576static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005577vec_vslo(vector short __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005578{
David Blaikie4f918ae2013-01-16 23:08:36 +00005579 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005580}
5581
5582static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005583vec_vslo(vector short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005584{
David Blaikie4f918ae2013-01-16 23:08:36 +00005585 return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005586}
5587
5588static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005589vec_vslo(vector unsigned short __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005590{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005591 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00005592 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005593}
5594
5595static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005596vec_vslo(vector unsigned short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005597{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005598 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00005599 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005600}
5601
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005602static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005603vec_vslo(vector pixel __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005604{
David Blaikie4f918ae2013-01-16 23:08:36 +00005605 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005606}
5607
5608static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005609vec_vslo(vector pixel __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005610{
David Blaikie4f918ae2013-01-16 23:08:36 +00005611 return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00005612}
5613
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005614static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005615vec_vslo(vector int __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005616{
David Blaikie4f918ae2013-01-16 23:08:36 +00005617 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005618}
5619
5620static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005621vec_vslo(vector int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005622{
David Blaikie4f918ae2013-01-16 23:08:36 +00005623 return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005624}
5625
5626static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005627vec_vslo(vector unsigned int __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005628{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005629 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00005630 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005631}
5632
5633static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005634vec_vslo(vector unsigned int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005635{
Anton Yartsev3ed32722010-09-18 00:39:16 +00005636 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00005637 __builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005638}
5639
5640static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005641vec_vslo(vector float __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005642{
David Blaikie4f918ae2013-01-16 23:08:36 +00005643 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005644}
5645
5646static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005647vec_vslo(vector float __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005648{
David Blaikie4f918ae2013-01-16 23:08:36 +00005649 return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005650}
5651
5652/* vec_splat */
5653
5654static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005655vec_splat(vector signed char __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005656{
David Blaikie4f918ae2013-01-16 23:08:36 +00005657 return vec_perm(__a, __a, (vector unsigned char)(__b));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005658}
5659
5660static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005661vec_splat(vector unsigned char __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005662{
David Blaikie4f918ae2013-01-16 23:08:36 +00005663 return vec_perm(__a, __a, (vector unsigned char)(__b));
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005664}
5665
5666static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005667vec_splat(vector bool char __a, unsigned char __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005668{
David Blaikie4f918ae2013-01-16 23:08:36 +00005669 return vec_perm(__a, __a, (vector unsigned char)(__b));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005670}
5671
5672static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005673vec_splat(vector short __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005674{
David Blaikie4f918ae2013-01-16 23:08:36 +00005675 __b *= 2;
5676 unsigned char b1=__b+1;
5677 return vec_perm(__a, __a, (vector unsigned char)
5678 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005679}
5680
5681static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005682vec_splat(vector unsigned short __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005683{
David Blaikie4f918ae2013-01-16 23:08:36 +00005684 __b *= 2;
5685 unsigned char b1=__b+1;
5686 return vec_perm(__a, __a, (vector unsigned char)
5687 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1));
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005688}
5689
5690static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005691vec_splat(vector bool short __a, unsigned char __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005692{
David Blaikie4f918ae2013-01-16 23:08:36 +00005693 __b *= 2;
5694 unsigned char b1=__b+1;
5695 return vec_perm(__a, __a, (vector unsigned char)
5696 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1));
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005697}
5698
5699static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005700vec_splat(vector pixel __a, unsigned char __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005701{
David Blaikie4f918ae2013-01-16 23:08:36 +00005702 __b *= 2;
5703 unsigned char b1=__b+1;
5704 return vec_perm(__a, __a, (vector unsigned char)
5705 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005706}
5707
5708static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005709vec_splat(vector int __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005710{
David Blaikie4f918ae2013-01-16 23:08:36 +00005711 __b *= 4;
5712 unsigned char b1=__b+1, b2=__b+2, b3=__b+3;
5713 return vec_perm(__a, __a, (vector unsigned char)
5714 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005715}
5716
5717static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005718vec_splat(vector unsigned int __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005719{
David Blaikie4f918ae2013-01-16 23:08:36 +00005720 __b *= 4;
5721 unsigned char b1=__b+1, b2=__b+2, b3=__b+3;
5722 return vec_perm(__a, __a, (vector unsigned char)
5723 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3));
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005724}
5725
5726static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005727vec_splat(vector bool int __a, unsigned char __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005728{
David Blaikie4f918ae2013-01-16 23:08:36 +00005729 __b *= 4;
5730 unsigned char b1=__b+1, b2=__b+2, b3=__b+3;
5731 return vec_perm(__a, __a, (vector unsigned char)
5732 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005733}
5734
5735static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005736vec_splat(vector float __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005737{
David Blaikie4f918ae2013-01-16 23:08:36 +00005738 __b *= 4;
5739 unsigned char b1=__b+1, b2=__b+2, b3=__b+3;
5740 return vec_perm(__a, __a, (vector unsigned char)
5741 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005742}
5743
5744/* vec_vspltb */
5745
5746#define __builtin_altivec_vspltb vec_vspltb
5747
5748static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005749vec_vspltb(vector signed char __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005750{
David Blaikie4f918ae2013-01-16 23:08:36 +00005751 return vec_perm(__a, __a, (vector unsigned char)(__b));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005752}
5753
5754static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005755vec_vspltb(vector unsigned char __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005756{
David Blaikie4f918ae2013-01-16 23:08:36 +00005757 return vec_perm(__a, __a, (vector unsigned char)(__b));
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005758}
5759
5760static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005761vec_vspltb(vector bool char __a, unsigned char __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005762{
David Blaikie4f918ae2013-01-16 23:08:36 +00005763 return vec_perm(__a, __a, (vector unsigned char)(__b));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005764}
5765
5766/* vec_vsplth */
5767
5768#define __builtin_altivec_vsplth vec_vsplth
5769
5770static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005771vec_vsplth(vector short __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005772{
David Blaikie4f918ae2013-01-16 23:08:36 +00005773 __b *= 2;
5774 unsigned char b1=__b+1;
5775 return vec_perm(__a, __a, (vector unsigned char)
5776 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005777}
5778
5779static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005780vec_vsplth(vector unsigned short __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005781{
David Blaikie4f918ae2013-01-16 23:08:36 +00005782 __b *= 2;
5783 unsigned char b1=__b+1;
5784 return vec_perm(__a, __a, (vector unsigned char)
5785 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1));
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005786}
5787
5788static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005789vec_vsplth(vector bool short __a, unsigned char __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005790{
David Blaikie4f918ae2013-01-16 23:08:36 +00005791 __b *= 2;
5792 unsigned char b1=__b+1;
5793 return vec_perm(__a, __a, (vector unsigned char)
5794 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1));
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005795}
5796
5797static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005798vec_vsplth(vector pixel __a, unsigned char __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005799{
David Blaikie4f918ae2013-01-16 23:08:36 +00005800 __b *= 2;
5801 unsigned char b1=__b+1;
5802 return vec_perm(__a, __a, (vector unsigned char)
5803 (__b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1, __b, b1));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005804}
5805
5806/* vec_vspltw */
5807
5808#define __builtin_altivec_vspltw vec_vspltw
5809
5810static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005811vec_vspltw(vector int __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005812{
David Blaikie4f918ae2013-01-16 23:08:36 +00005813 __b *= 4;
5814 unsigned char b1=__b+1, b2=__b+2, b3=__b+3;
5815 return vec_perm(__a, __a, (vector unsigned char)
5816 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005817}
5818
5819static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005820vec_vspltw(vector unsigned int __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005821{
David Blaikie4f918ae2013-01-16 23:08:36 +00005822 __b *= 4;
5823 unsigned char b1=__b+1, b2=__b+2, b3=__b+3;
5824 return vec_perm(__a, __a, (vector unsigned char)
5825 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3));
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005826}
5827
5828static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005829vec_vspltw(vector bool int __a, unsigned char __b)
Anton Yartsevf54dbfd2010-08-19 03:00:09 +00005830{
David Blaikie4f918ae2013-01-16 23:08:36 +00005831 __b *= 4;
5832 unsigned char b1=__b+1, b2=__b+2, b3=__b+3;
5833 return vec_perm(__a, __a, (vector unsigned char)
5834 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005835}
5836
5837static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005838vec_vspltw(vector float __a, unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005839{
David Blaikie4f918ae2013-01-16 23:08:36 +00005840 __b *= 4;
5841 unsigned char b1=__b+1, b2=__b+2, b3=__b+3;
5842 return vec_perm(__a, __a, (vector unsigned char)
5843 (__b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3, __b, b1, b2, b3));
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005844}
5845
5846/* vec_splat_s8 */
5847
5848#define __builtin_altivec_vspltisb vec_splat_s8
5849
5850// FIXME: parameter should be treated as 5-bit signed literal
5851static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005852vec_splat_s8(signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005853{
David Blaikie4f918ae2013-01-16 23:08:36 +00005854 return (vector signed char)(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005855}
5856
5857/* vec_vspltisb */
5858
5859// FIXME: parameter should be treated as 5-bit signed literal
5860static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005861vec_vspltisb(signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005862{
David Blaikie4f918ae2013-01-16 23:08:36 +00005863 return (vector signed char)(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005864}
5865
5866/* vec_splat_s16 */
5867
5868#define __builtin_altivec_vspltish vec_splat_s16
5869
5870// FIXME: parameter should be treated as 5-bit signed literal
5871static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005872vec_splat_s16(signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005873{
David Blaikie4f918ae2013-01-16 23:08:36 +00005874 return (vector short)(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005875}
5876
5877/* vec_vspltish */
5878
5879// FIXME: parameter should be treated as 5-bit signed literal
5880static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005881vec_vspltish(signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005882{
David Blaikie4f918ae2013-01-16 23:08:36 +00005883 return (vector short)(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005884}
5885
5886/* vec_splat_s32 */
5887
5888#define __builtin_altivec_vspltisw vec_splat_s32
5889
5890// FIXME: parameter should be treated as 5-bit signed literal
5891static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005892vec_splat_s32(signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005893{
David Blaikie4f918ae2013-01-16 23:08:36 +00005894 return (vector int)(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005895}
5896
5897/* vec_vspltisw */
5898
5899// FIXME: parameter should be treated as 5-bit signed literal
5900static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005901vec_vspltisw(signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005902{
David Blaikie4f918ae2013-01-16 23:08:36 +00005903 return (vector int)(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005904}
5905
5906/* vec_splat_u8 */
5907
5908// FIXME: parameter should be treated as 5-bit signed literal
5909static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005910vec_splat_u8(unsigned char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005911{
David Blaikie4f918ae2013-01-16 23:08:36 +00005912 return (vector unsigned char)(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005913}
5914
5915/* vec_splat_u16 */
5916
5917// FIXME: parameter should be treated as 5-bit signed literal
5918static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005919vec_splat_u16(signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005920{
David Blaikie4f918ae2013-01-16 23:08:36 +00005921 return (vector unsigned short)(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005922}
5923
5924/* vec_splat_u32 */
5925
5926// FIXME: parameter should be treated as 5-bit signed literal
5927static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005928vec_splat_u32(signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005929{
David Blaikie4f918ae2013-01-16 23:08:36 +00005930 return (vector unsigned int)(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005931}
5932
5933/* vec_sr */
5934
5935static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005936vec_sr(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005937{
David Blaikie4f918ae2013-01-16 23:08:36 +00005938 return __a >> (vector signed char)__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005939}
5940
5941static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005942vec_sr(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005943{
David Blaikie4f918ae2013-01-16 23:08:36 +00005944 return __a >> __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005945}
5946
5947static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005948vec_sr(vector short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005949{
David Blaikie4f918ae2013-01-16 23:08:36 +00005950 return __a >> (vector short)__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005951}
5952
5953static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005954vec_sr(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005955{
David Blaikie4f918ae2013-01-16 23:08:36 +00005956 return __a >> __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005957}
5958
5959static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005960vec_sr(vector int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005961{
David Blaikie4f918ae2013-01-16 23:08:36 +00005962 return __a >> (vector int)__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005963}
5964
5965static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005966vec_sr(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005967{
David Blaikie4f918ae2013-01-16 23:08:36 +00005968 return __a >> __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005969}
5970
5971/* vec_vsrb */
5972
5973#define __builtin_altivec_vsrb vec_vsrb
5974
5975static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005976vec_vsrb(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005977{
David Blaikie4f918ae2013-01-16 23:08:36 +00005978 return __a >> (vector signed char)__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005979}
5980
5981static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005982vec_vsrb(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005983{
David Blaikie4f918ae2013-01-16 23:08:36 +00005984 return __a >> __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005985}
5986
5987/* vec_vsrh */
5988
5989#define __builtin_altivec_vsrh vec_vsrh
5990
5991static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005992vec_vsrh(vector short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005993{
David Blaikie4f918ae2013-01-16 23:08:36 +00005994 return __a >> (vector short)__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005995}
5996
5997static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00005998vec_vsrh(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00005999{
David Blaikie4f918ae2013-01-16 23:08:36 +00006000 return __a >> __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006001}
6002
6003/* vec_vsrw */
6004
6005#define __builtin_altivec_vsrw vec_vsrw
6006
6007static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006008vec_vsrw(vector int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006009{
David Blaikie4f918ae2013-01-16 23:08:36 +00006010 return __a >> (vector int)__b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006011}
6012
6013static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006014vec_vsrw(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006015{
David Blaikie4f918ae2013-01-16 23:08:36 +00006016 return __a >> __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006017}
6018
6019/* vec_sra */
6020
6021static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006022vec_sra(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006023{
David Blaikie4f918ae2013-01-16 23:08:36 +00006024 return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006025}
6026
6027static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006028vec_sra(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006029{
David Blaikie4f918ae2013-01-16 23:08:36 +00006030 return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006031}
6032
6033static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006034vec_sra(vector short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006035{
David Blaikie4f918ae2013-01-16 23:08:36 +00006036 return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006037}
6038
6039static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006040vec_sra(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006041{
David Blaikie4f918ae2013-01-16 23:08:36 +00006042 return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006043}
6044
6045static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006046vec_sra(vector int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006047{
David Blaikie4f918ae2013-01-16 23:08:36 +00006048 return __builtin_altivec_vsraw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006049}
6050
6051static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006052vec_sra(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006053{
David Blaikie4f918ae2013-01-16 23:08:36 +00006054 return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006055}
6056
6057/* vec_vsrab */
6058
6059static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006060vec_vsrab(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006061{
David Blaikie4f918ae2013-01-16 23:08:36 +00006062 return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006063}
6064
6065static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006066vec_vsrab(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006067{
David Blaikie4f918ae2013-01-16 23:08:36 +00006068 return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006069}
6070
6071/* vec_vsrah */
6072
6073static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006074vec_vsrah(vector short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006075{
David Blaikie4f918ae2013-01-16 23:08:36 +00006076 return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006077}
6078
6079static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006080vec_vsrah(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006081{
David Blaikie4f918ae2013-01-16 23:08:36 +00006082 return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006083}
6084
6085/* vec_vsraw */
6086
6087static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006088vec_vsraw(vector int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006089{
David Blaikie4f918ae2013-01-16 23:08:36 +00006090 return __builtin_altivec_vsraw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006091}
6092
6093static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006094vec_vsraw(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006095{
David Blaikie4f918ae2013-01-16 23:08:36 +00006096 return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006097}
6098
6099/* vec_srl */
6100
6101static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006102vec_srl(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006103{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006104 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006105 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006106}
6107
6108static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006109vec_srl(vector signed char __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006110{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006111 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006112 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006113}
6114
6115static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006116vec_srl(vector signed char __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006117{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006118 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006119 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006120}
6121
6122static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006123vec_srl(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006124{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006125 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006126 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006127}
6128
6129static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006130vec_srl(vector unsigned char __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006131{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006132 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006133 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006134}
6135
6136static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006137vec_srl(vector unsigned char __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006138{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006139 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006140 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006141}
6142
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006143static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006144vec_srl(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006145{
David Blaikie4f918ae2013-01-16 23:08:36 +00006146 return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006147}
6148
6149static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006150vec_srl(vector bool char __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006151{
David Blaikie4f918ae2013-01-16 23:08:36 +00006152 return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006153}
6154
6155static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006156vec_srl(vector bool char __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006157{
David Blaikie4f918ae2013-01-16 23:08:36 +00006158 return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006159}
6160
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006161static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006162vec_srl(vector short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006163{
David Blaikie4f918ae2013-01-16 23:08:36 +00006164 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006165}
6166
6167static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006168vec_srl(vector short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006169{
David Blaikie4f918ae2013-01-16 23:08:36 +00006170 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006171}
6172
6173static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006174vec_srl(vector short __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006175{
David Blaikie4f918ae2013-01-16 23:08:36 +00006176 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006177}
6178
6179static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006180vec_srl(vector unsigned short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006181{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006182 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00006183 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006184}
6185
6186static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006187vec_srl(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006188{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006189 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00006190 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006191}
6192
6193static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006194vec_srl(vector unsigned short __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006195{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006196 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00006197 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006198}
6199
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006200static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006201vec_srl(vector bool short __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006202{
David Blaikie4f918ae2013-01-16 23:08:36 +00006203 return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006204}
6205
6206static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006207vec_srl(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006208{
David Blaikie4f918ae2013-01-16 23:08:36 +00006209 return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006210}
6211
6212static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006213vec_srl(vector bool short __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006214{
David Blaikie4f918ae2013-01-16 23:08:36 +00006215 return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006216}
6217
6218static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006219vec_srl(vector pixel __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006220{
David Blaikie4f918ae2013-01-16 23:08:36 +00006221 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006222}
6223
6224static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006225vec_srl(vector pixel __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006226{
David Blaikie4f918ae2013-01-16 23:08:36 +00006227 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006228}
6229
6230static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006231vec_srl(vector pixel __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006232{
David Blaikie4f918ae2013-01-16 23:08:36 +00006233 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006234}
6235
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006236static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006237vec_srl(vector int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006238{
David Blaikie4f918ae2013-01-16 23:08:36 +00006239 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006240}
6241
6242static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006243vec_srl(vector int __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006244{
David Blaikie4f918ae2013-01-16 23:08:36 +00006245 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006246}
6247
6248static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006249vec_srl(vector int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006250{
David Blaikie4f918ae2013-01-16 23:08:36 +00006251 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006252}
6253
6254static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006255vec_srl(vector unsigned int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006256{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006257 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00006258 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006259}
6260
6261static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006262vec_srl(vector unsigned int __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006263{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006264 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00006265 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006266}
6267
6268static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006269vec_srl(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006270{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006271 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00006272 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006273}
6274
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006275static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006276vec_srl(vector bool int __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006277{
David Blaikie4f918ae2013-01-16 23:08:36 +00006278 return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006279}
6280
6281static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006282vec_srl(vector bool int __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006283{
David Blaikie4f918ae2013-01-16 23:08:36 +00006284 return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006285}
6286
6287static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006288vec_srl(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006289{
David Blaikie4f918ae2013-01-16 23:08:36 +00006290 return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006291}
6292
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006293/* vec_vsr */
6294
6295static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006296vec_vsr(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006297{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006298 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006299 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006300}
6301
6302static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006303vec_vsr(vector signed char __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006304{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006305 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006306 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006307}
6308
6309static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006310vec_vsr(vector signed char __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006311{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006312 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006313 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006314}
6315
6316static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006317vec_vsr(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006318{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006319 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006320 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006321}
6322
6323static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006324vec_vsr(vector unsigned char __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006325{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006326 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006327 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006328}
6329
6330static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006331vec_vsr(vector unsigned char __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006332{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006333 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006334 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006335}
6336
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006337static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006338vec_vsr(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006339{
David Blaikie4f918ae2013-01-16 23:08:36 +00006340 return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006341}
6342
6343static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006344vec_vsr(vector bool char __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006345{
David Blaikie4f918ae2013-01-16 23:08:36 +00006346 return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006347}
6348
6349static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006350vec_vsr(vector bool char __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006351{
David Blaikie4f918ae2013-01-16 23:08:36 +00006352 return (vector bool char)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006353}
6354
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006355static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006356vec_vsr(vector short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006357{
David Blaikie4f918ae2013-01-16 23:08:36 +00006358 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006359}
6360
6361static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006362vec_vsr(vector short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006363{
David Blaikie4f918ae2013-01-16 23:08:36 +00006364 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006365}
6366
6367static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006368vec_vsr(vector short __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006369{
David Blaikie4f918ae2013-01-16 23:08:36 +00006370 return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006371}
6372
6373static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006374vec_vsr(vector unsigned short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006375{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006376 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00006377 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006378}
6379
6380static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006381vec_vsr(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006382{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006383 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00006384 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006385}
6386
6387static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006388vec_vsr(vector unsigned short __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006389{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006390 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00006391 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006392}
6393
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006394static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006395vec_vsr(vector bool short __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006396{
David Blaikie4f918ae2013-01-16 23:08:36 +00006397 return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006398}
6399
6400static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006401vec_vsr(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006402{
David Blaikie4f918ae2013-01-16 23:08:36 +00006403 return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006404}
6405
6406static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006407vec_vsr(vector bool short __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006408{
David Blaikie4f918ae2013-01-16 23:08:36 +00006409 return (vector bool short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006410}
6411
6412static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006413vec_vsr(vector pixel __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006414{
David Blaikie4f918ae2013-01-16 23:08:36 +00006415 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006416}
6417
6418static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006419vec_vsr(vector pixel __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006420{
David Blaikie4f918ae2013-01-16 23:08:36 +00006421 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006422}
6423
6424static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006425vec_vsr(vector pixel __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006426{
David Blaikie4f918ae2013-01-16 23:08:36 +00006427 return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006428}
6429
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006430static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006431vec_vsr(vector int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006432{
David Blaikie4f918ae2013-01-16 23:08:36 +00006433 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006434}
6435
6436static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006437vec_vsr(vector int __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006438{
David Blaikie4f918ae2013-01-16 23:08:36 +00006439 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006440}
6441
6442static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006443vec_vsr(vector int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006444{
David Blaikie4f918ae2013-01-16 23:08:36 +00006445 return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006446}
6447
6448static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006449vec_vsr(vector unsigned int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006450{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006451 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00006452 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006453}
6454
6455static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006456vec_vsr(vector unsigned int __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006457{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006458 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00006459 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006460}
6461
6462static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006463vec_vsr(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006464{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006465 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00006466 __builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006467}
6468
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006469static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006470vec_vsr(vector bool int __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006471{
David Blaikie4f918ae2013-01-16 23:08:36 +00006472 return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006473}
6474
6475static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006476vec_vsr(vector bool int __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006477{
David Blaikie4f918ae2013-01-16 23:08:36 +00006478 return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006479}
6480
6481static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006482vec_vsr(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006483{
David Blaikie4f918ae2013-01-16 23:08:36 +00006484 return (vector bool int)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006485}
6486
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006487/* vec_sro */
6488
6489static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006490vec_sro(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006491{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006492 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006493 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006494}
6495
6496static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006497vec_sro(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006498{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006499 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006500 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006501}
6502
6503static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006504vec_sro(vector unsigned char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006505{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006506 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006507 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006508}
6509
6510static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006511vec_sro(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006512{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006513 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006514 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006515}
6516
6517static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006518vec_sro(vector short __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006519{
David Blaikie4f918ae2013-01-16 23:08:36 +00006520 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006521}
6522
6523static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006524vec_sro(vector short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006525{
David Blaikie4f918ae2013-01-16 23:08:36 +00006526 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006527}
6528
6529static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006530vec_sro(vector unsigned short __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006531{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006532 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00006533 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006534}
6535
6536static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006537vec_sro(vector unsigned short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006538{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006539 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00006540 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006541}
6542
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006543static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006544vec_sro(vector pixel __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006545{
David Blaikie4f918ae2013-01-16 23:08:36 +00006546 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006547}
6548
6549static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006550vec_sro(vector pixel __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006551{
David Blaikie4f918ae2013-01-16 23:08:36 +00006552 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006553}
6554
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006555static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006556vec_sro(vector int __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006557{
David Blaikie4f918ae2013-01-16 23:08:36 +00006558 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006559}
6560
6561static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006562vec_sro(vector int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006563{
David Blaikie4f918ae2013-01-16 23:08:36 +00006564 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006565}
6566
6567static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006568vec_sro(vector unsigned int __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006569{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006570 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00006571 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006572}
6573
6574static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006575vec_sro(vector unsigned int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006576{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006577 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00006578 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006579}
6580
6581static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006582vec_sro(vector float __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006583{
David Blaikie4f918ae2013-01-16 23:08:36 +00006584 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006585}
6586
6587static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006588vec_sro(vector float __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006589{
David Blaikie4f918ae2013-01-16 23:08:36 +00006590 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006591}
6592
6593/* vec_vsro */
6594
6595static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006596vec_vsro(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006597{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006598 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006599 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006600}
6601
6602static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006603vec_vsro(vector signed char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006604{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006605 return (vector signed char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006606 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006607}
6608
6609static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006610vec_vsro(vector unsigned char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006611{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006612 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006613 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006614}
6615
6616static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006617vec_vsro(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006618{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006619 return (vector unsigned char)
David Blaikie4f918ae2013-01-16 23:08:36 +00006620 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006621}
6622
6623static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006624vec_vsro(vector short __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006625{
David Blaikie4f918ae2013-01-16 23:08:36 +00006626 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006627}
6628
6629static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006630vec_vsro(vector short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006631{
David Blaikie4f918ae2013-01-16 23:08:36 +00006632 return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006633}
6634
6635static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006636vec_vsro(vector unsigned short __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006637{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006638 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00006639 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006640}
6641
6642static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006643vec_vsro(vector unsigned short __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006644{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006645 return (vector unsigned short)
David Blaikie4f918ae2013-01-16 23:08:36 +00006646 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006647}
6648
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006649static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006650vec_vsro(vector pixel __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006651{
David Blaikie4f918ae2013-01-16 23:08:36 +00006652 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006653}
6654
6655static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006656vec_vsro(vector pixel __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006657{
David Blaikie4f918ae2013-01-16 23:08:36 +00006658 return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006659}
6660
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006661static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006662vec_vsro(vector int __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006663{
David Blaikie4f918ae2013-01-16 23:08:36 +00006664 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006665}
6666
6667static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006668vec_vsro(vector int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006669{
David Blaikie4f918ae2013-01-16 23:08:36 +00006670 return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006671}
6672
6673static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006674vec_vsro(vector unsigned int __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006675{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006676 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00006677 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006678}
6679
6680static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006681vec_vsro(vector unsigned int __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006682{
Anton Yartsev3ed32722010-09-18 00:39:16 +00006683 return (vector unsigned int)
David Blaikie4f918ae2013-01-16 23:08:36 +00006684 __builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006685}
6686
6687static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006688vec_vsro(vector float __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006689{
David Blaikie4f918ae2013-01-16 23:08:36 +00006690 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006691}
6692
6693static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006694vec_vsro(vector float __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006695{
David Blaikie4f918ae2013-01-16 23:08:36 +00006696 return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006697}
6698
6699/* vec_st */
6700
6701static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006702vec_st(vector signed char __a, int __b, vector signed char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006703{
David Blaikie4f918ae2013-01-16 23:08:36 +00006704 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006705}
6706
6707static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006708vec_st(vector signed char __a, int __b, signed char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006709{
David Blaikie4f918ae2013-01-16 23:08:36 +00006710 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006711}
6712
6713static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006714vec_st(vector unsigned char __a, int __b, vector unsigned char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006715{
David Blaikie4f918ae2013-01-16 23:08:36 +00006716 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006717}
6718
6719static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006720vec_st(vector unsigned char __a, int __b, unsigned char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006721{
David Blaikie4f918ae2013-01-16 23:08:36 +00006722 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006723}
6724
6725static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006726vec_st(vector bool char __a, int __b, signed char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006727{
David Blaikie4f918ae2013-01-16 23:08:36 +00006728 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006729}
6730
6731static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006732vec_st(vector bool char __a, int __b, unsigned char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006733{
David Blaikie4f918ae2013-01-16 23:08:36 +00006734 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006735}
6736
6737static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006738vec_st(vector bool char __a, int __b, vector bool char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006739{
David Blaikie4f918ae2013-01-16 23:08:36 +00006740 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006741}
6742
6743static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006744vec_st(vector short __a, int __b, vector short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006745{
David Blaikie4f918ae2013-01-16 23:08:36 +00006746 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006747}
6748
6749static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006750vec_st(vector short __a, int __b, short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006751{
David Blaikie4f918ae2013-01-16 23:08:36 +00006752 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006753}
6754
6755static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006756vec_st(vector unsigned short __a, int __b, vector unsigned short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006757{
David Blaikie4f918ae2013-01-16 23:08:36 +00006758 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006759}
6760
6761static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006762vec_st(vector unsigned short __a, int __b, unsigned short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006763{
David Blaikie4f918ae2013-01-16 23:08:36 +00006764 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006765}
6766
6767static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006768vec_st(vector bool short __a, int __b, short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006769{
David Blaikie4f918ae2013-01-16 23:08:36 +00006770 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006771}
6772
6773static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006774vec_st(vector bool short __a, int __b, unsigned short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006775{
David Blaikie4f918ae2013-01-16 23:08:36 +00006776 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006777}
6778
6779static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006780vec_st(vector bool short __a, int __b, vector bool short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006781{
David Blaikie4f918ae2013-01-16 23:08:36 +00006782 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006783}
6784
6785static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006786vec_st(vector pixel __a, int __b, short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006787{
David Blaikie4f918ae2013-01-16 23:08:36 +00006788 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006789}
6790
6791static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006792vec_st(vector pixel __a, int __b, unsigned short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006793{
David Blaikie4f918ae2013-01-16 23:08:36 +00006794 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006795}
6796
6797static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006798vec_st(vector pixel __a, int __b, vector pixel *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006799{
David Blaikie4f918ae2013-01-16 23:08:36 +00006800 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006801}
6802
6803static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006804vec_st(vector int __a, int __b, vector int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006805{
David Blaikie4f918ae2013-01-16 23:08:36 +00006806 __builtin_altivec_stvx(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006807}
6808
6809static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006810vec_st(vector int __a, int __b, int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006811{
David Blaikie4f918ae2013-01-16 23:08:36 +00006812 __builtin_altivec_stvx(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006813}
6814
6815static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006816vec_st(vector unsigned int __a, int __b, vector unsigned int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006817{
David Blaikie4f918ae2013-01-16 23:08:36 +00006818 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006819}
6820
6821static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006822vec_st(vector unsigned int __a, int __b, unsigned int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006823{
David Blaikie4f918ae2013-01-16 23:08:36 +00006824 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006825}
6826
6827static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006828vec_st(vector bool int __a, int __b, int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006829{
David Blaikie4f918ae2013-01-16 23:08:36 +00006830 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006831}
6832
6833static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006834vec_st(vector bool int __a, int __b, unsigned int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006835{
David Blaikie4f918ae2013-01-16 23:08:36 +00006836 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006837}
6838
6839static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006840vec_st(vector bool int __a, int __b, vector bool int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006841{
David Blaikie4f918ae2013-01-16 23:08:36 +00006842 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006843}
6844
6845static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006846vec_st(vector float __a, int __b, vector float *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006847{
David Blaikie4f918ae2013-01-16 23:08:36 +00006848 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006849}
6850
6851static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006852vec_st(vector float __a, int __b, float *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006853{
David Blaikie4f918ae2013-01-16 23:08:36 +00006854 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006855}
6856
6857/* vec_stvx */
6858
6859static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006860vec_stvx(vector signed char __a, int __b, vector signed char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006861{
David Blaikie4f918ae2013-01-16 23:08:36 +00006862 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006863}
6864
6865static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006866vec_stvx(vector signed char __a, int __b, signed char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006867{
David Blaikie4f918ae2013-01-16 23:08:36 +00006868 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006869}
6870
6871static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006872vec_stvx(vector unsigned char __a, int __b, vector unsigned char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006873{
David Blaikie4f918ae2013-01-16 23:08:36 +00006874 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006875}
6876
6877static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006878vec_stvx(vector unsigned char __a, int __b, unsigned char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006879{
David Blaikie4f918ae2013-01-16 23:08:36 +00006880 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006881}
6882
6883static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006884vec_stvx(vector bool char __a, int __b, signed char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006885{
David Blaikie4f918ae2013-01-16 23:08:36 +00006886 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006887}
6888
6889static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006890vec_stvx(vector bool char __a, int __b, unsigned char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006891{
David Blaikie4f918ae2013-01-16 23:08:36 +00006892 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006893}
6894
6895static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006896vec_stvx(vector bool char __a, int __b, vector bool char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006897{
David Blaikie4f918ae2013-01-16 23:08:36 +00006898 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006899}
6900
6901static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006902vec_stvx(vector short __a, int __b, vector short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006903{
David Blaikie4f918ae2013-01-16 23:08:36 +00006904 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006905}
6906
6907static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006908vec_stvx(vector short __a, int __b, short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006909{
David Blaikie4f918ae2013-01-16 23:08:36 +00006910 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006911}
6912
6913static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006914vec_stvx(vector unsigned short __a, int __b, vector unsigned short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006915{
David Blaikie4f918ae2013-01-16 23:08:36 +00006916 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006917}
6918
6919static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006920vec_stvx(vector unsigned short __a, int __b, unsigned short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006921{
David Blaikie4f918ae2013-01-16 23:08:36 +00006922 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006923}
6924
6925static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006926vec_stvx(vector bool short __a, int __b, short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006927{
David Blaikie4f918ae2013-01-16 23:08:36 +00006928 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006929}
6930
6931static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006932vec_stvx(vector bool short __a, int __b, unsigned short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006933{
David Blaikie4f918ae2013-01-16 23:08:36 +00006934 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006935}
6936
6937static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006938vec_stvx(vector bool short __a, int __b, vector bool short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006939{
David Blaikie4f918ae2013-01-16 23:08:36 +00006940 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006941}
6942
6943static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006944vec_stvx(vector pixel __a, int __b, short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006945{
David Blaikie4f918ae2013-01-16 23:08:36 +00006946 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006947}
6948
6949static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006950vec_stvx(vector pixel __a, int __b, unsigned short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006951{
David Blaikie4f918ae2013-01-16 23:08:36 +00006952 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006953}
6954
6955static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006956vec_stvx(vector pixel __a, int __b, vector pixel *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006957{
David Blaikie4f918ae2013-01-16 23:08:36 +00006958 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006959}
6960
6961static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006962vec_stvx(vector int __a, int __b, vector int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006963{
David Blaikie4f918ae2013-01-16 23:08:36 +00006964 __builtin_altivec_stvx(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006965}
6966
6967static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006968vec_stvx(vector int __a, int __b, int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006969{
David Blaikie4f918ae2013-01-16 23:08:36 +00006970 __builtin_altivec_stvx(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006971}
6972
6973static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006974vec_stvx(vector unsigned int __a, int __b, vector unsigned int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006975{
David Blaikie4f918ae2013-01-16 23:08:36 +00006976 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006977}
6978
6979static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006980vec_stvx(vector unsigned int __a, int __b, unsigned int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006981{
David Blaikie4f918ae2013-01-16 23:08:36 +00006982 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00006983}
6984
6985static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006986vec_stvx(vector bool int __a, int __b, int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006987{
David Blaikie4f918ae2013-01-16 23:08:36 +00006988 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006989}
6990
6991static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006992vec_stvx(vector bool int __a, int __b, unsigned int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006993{
David Blaikie4f918ae2013-01-16 23:08:36 +00006994 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006995}
6996
6997static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00006998vec_stvx(vector bool int __a, int __b, vector bool int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00006999{
David Blaikie4f918ae2013-01-16 23:08:36 +00007000 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007001}
7002
7003static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007004vec_stvx(vector float __a, int __b, vector float *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007005{
David Blaikie4f918ae2013-01-16 23:08:36 +00007006 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007007}
7008
7009static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007010vec_stvx(vector float __a, int __b, float *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007011{
David Blaikie4f918ae2013-01-16 23:08:36 +00007012 __builtin_altivec_stvx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007013}
7014
7015/* vec_ste */
7016
7017static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007018vec_ste(vector signed char __a, int __b, signed char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007019{
David Blaikie4f918ae2013-01-16 23:08:36 +00007020 __builtin_altivec_stvebx((vector char)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007021}
7022
7023static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007024vec_ste(vector unsigned char __a, int __b, unsigned char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007025{
David Blaikie4f918ae2013-01-16 23:08:36 +00007026 __builtin_altivec_stvebx((vector char)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007027}
7028
7029static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007030vec_ste(vector bool char __a, int __b, signed char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007031{
David Blaikie4f918ae2013-01-16 23:08:36 +00007032 __builtin_altivec_stvebx((vector char)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007033}
7034
7035static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007036vec_ste(vector bool char __a, int __b, unsigned char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007037{
David Blaikie4f918ae2013-01-16 23:08:36 +00007038 __builtin_altivec_stvebx((vector char)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007039}
7040
7041static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007042vec_ste(vector short __a, int __b, short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007043{
David Blaikie4f918ae2013-01-16 23:08:36 +00007044 __builtin_altivec_stvehx(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007045}
7046
7047static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007048vec_ste(vector unsigned short __a, int __b, unsigned short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007049{
David Blaikie4f918ae2013-01-16 23:08:36 +00007050 __builtin_altivec_stvehx((vector short)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007051}
7052
7053static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007054vec_ste(vector bool short __a, int __b, short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007055{
David Blaikie4f918ae2013-01-16 23:08:36 +00007056 __builtin_altivec_stvehx((vector short)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007057}
7058
7059static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007060vec_ste(vector bool short __a, int __b, unsigned short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007061{
David Blaikie4f918ae2013-01-16 23:08:36 +00007062 __builtin_altivec_stvehx((vector short)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007063}
7064
7065static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007066vec_ste(vector pixel __a, int __b, short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007067{
David Blaikie4f918ae2013-01-16 23:08:36 +00007068 __builtin_altivec_stvehx((vector short)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007069}
7070
7071static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007072vec_ste(vector pixel __a, int __b, unsigned short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007073{
David Blaikie4f918ae2013-01-16 23:08:36 +00007074 __builtin_altivec_stvehx((vector short)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007075}
7076
7077static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007078vec_ste(vector int __a, int __b, int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007079{
David Blaikie4f918ae2013-01-16 23:08:36 +00007080 __builtin_altivec_stvewx(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007081}
7082
7083static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007084vec_ste(vector unsigned int __a, int __b, unsigned int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007085{
David Blaikie4f918ae2013-01-16 23:08:36 +00007086 __builtin_altivec_stvewx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007087}
7088
7089static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007090vec_ste(vector bool int __a, int __b, int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007091{
David Blaikie4f918ae2013-01-16 23:08:36 +00007092 __builtin_altivec_stvewx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007093}
7094
7095static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007096vec_ste(vector bool int __a, int __b, unsigned int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007097{
David Blaikie4f918ae2013-01-16 23:08:36 +00007098 __builtin_altivec_stvewx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007099}
7100
7101static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007102vec_ste(vector float __a, int __b, float *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007103{
David Blaikie4f918ae2013-01-16 23:08:36 +00007104 __builtin_altivec_stvewx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007105}
7106
7107/* vec_stvebx */
7108
7109static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007110vec_stvebx(vector signed char __a, int __b, signed char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007111{
David Blaikie4f918ae2013-01-16 23:08:36 +00007112 __builtin_altivec_stvebx((vector char)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007113}
7114
7115static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007116vec_stvebx(vector unsigned char __a, int __b, unsigned char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007117{
David Blaikie4f918ae2013-01-16 23:08:36 +00007118 __builtin_altivec_stvebx((vector char)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007119}
7120
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007121static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007122vec_stvebx(vector bool char __a, int __b, signed char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007123{
David Blaikie4f918ae2013-01-16 23:08:36 +00007124 __builtin_altivec_stvebx((vector char)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007125}
7126
7127static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007128vec_stvebx(vector bool char __a, int __b, unsigned char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007129{
David Blaikie4f918ae2013-01-16 23:08:36 +00007130 __builtin_altivec_stvebx((vector char)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007131}
7132
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007133/* vec_stvehx */
7134
7135static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007136vec_stvehx(vector short __a, int __b, short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007137{
David Blaikie4f918ae2013-01-16 23:08:36 +00007138 __builtin_altivec_stvehx(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007139}
7140
7141static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007142vec_stvehx(vector unsigned short __a, int __b, unsigned short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007143{
David Blaikie4f918ae2013-01-16 23:08:36 +00007144 __builtin_altivec_stvehx((vector short)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007145}
7146
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007147static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007148vec_stvehx(vector bool short __a, int __b, short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007149{
David Blaikie4f918ae2013-01-16 23:08:36 +00007150 __builtin_altivec_stvehx((vector short)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007151}
7152
7153static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007154vec_stvehx(vector bool short __a, int __b, unsigned short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007155{
David Blaikie4f918ae2013-01-16 23:08:36 +00007156 __builtin_altivec_stvehx((vector short)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007157}
7158
7159static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007160vec_stvehx(vector pixel __a, int __b, short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007161{
David Blaikie4f918ae2013-01-16 23:08:36 +00007162 __builtin_altivec_stvehx((vector short)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007163}
7164
7165static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007166vec_stvehx(vector pixel __a, int __b, unsigned short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007167{
David Blaikie4f918ae2013-01-16 23:08:36 +00007168 __builtin_altivec_stvehx((vector short)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007169}
7170
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007171/* vec_stvewx */
7172
7173static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007174vec_stvewx(vector int __a, int __b, int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007175{
David Blaikie4f918ae2013-01-16 23:08:36 +00007176 __builtin_altivec_stvewx(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007177}
7178
7179static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007180vec_stvewx(vector unsigned int __a, int __b, unsigned int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007181{
David Blaikie4f918ae2013-01-16 23:08:36 +00007182 __builtin_altivec_stvewx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007183}
7184
7185static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007186vec_stvewx(vector bool int __a, int __b, int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007187{
David Blaikie4f918ae2013-01-16 23:08:36 +00007188 __builtin_altivec_stvewx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007189}
7190
7191static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007192vec_stvewx(vector bool int __a, int __b, unsigned int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007193{
David Blaikie4f918ae2013-01-16 23:08:36 +00007194 __builtin_altivec_stvewx((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007195}
7196
7197static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007198vec_stvewx(vector float __a, int __b, float *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007199{
David Blaikie4f918ae2013-01-16 23:08:36 +00007200 __builtin_altivec_stvewx((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007201}
7202
7203/* vec_stl */
7204
7205static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007206vec_stl(vector signed char __a, int __b, vector signed char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007207{
David Blaikie4f918ae2013-01-16 23:08:36 +00007208 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007209}
7210
7211static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007212vec_stl(vector signed char __a, int __b, signed char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007213{
David Blaikie4f918ae2013-01-16 23:08:36 +00007214 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007215}
7216
7217static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007218vec_stl(vector unsigned char __a, int __b, vector unsigned char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007219{
David Blaikie4f918ae2013-01-16 23:08:36 +00007220 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007221}
7222
7223static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007224vec_stl(vector unsigned char __a, int __b, unsigned char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007225{
David Blaikie4f918ae2013-01-16 23:08:36 +00007226 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007227}
7228
7229static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007230vec_stl(vector bool char __a, int __b, signed char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007231{
David Blaikie4f918ae2013-01-16 23:08:36 +00007232 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007233}
7234
7235static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007236vec_stl(vector bool char __a, int __b, unsigned char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007237{
David Blaikie4f918ae2013-01-16 23:08:36 +00007238 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007239}
7240
7241static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007242vec_stl(vector bool char __a, int __b, vector bool char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007243{
David Blaikie4f918ae2013-01-16 23:08:36 +00007244 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007245}
7246
7247static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007248vec_stl(vector short __a, int __b, vector short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007249{
David Blaikie4f918ae2013-01-16 23:08:36 +00007250 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007251}
7252
7253static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007254vec_stl(vector short __a, int __b, short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007255{
David Blaikie4f918ae2013-01-16 23:08:36 +00007256 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007257}
7258
7259static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007260vec_stl(vector unsigned short __a, int __b, vector unsigned short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007261{
David Blaikie4f918ae2013-01-16 23:08:36 +00007262 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007263}
7264
7265static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007266vec_stl(vector unsigned short __a, int __b, unsigned short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007267{
David Blaikie4f918ae2013-01-16 23:08:36 +00007268 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007269}
7270
7271static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007272vec_stl(vector bool short __a, int __b, short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007273{
David Blaikie4f918ae2013-01-16 23:08:36 +00007274 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007275}
7276
7277static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007278vec_stl(vector bool short __a, int __b, unsigned short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007279{
David Blaikie4f918ae2013-01-16 23:08:36 +00007280 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007281}
7282
7283static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007284vec_stl(vector bool short __a, int __b, vector bool short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007285{
David Blaikie4f918ae2013-01-16 23:08:36 +00007286 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007287}
7288
7289static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007290vec_stl(vector pixel __a, int __b, short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007291{
David Blaikie4f918ae2013-01-16 23:08:36 +00007292 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007293}
7294
7295static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007296vec_stl(vector pixel __a, int __b, unsigned short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007297{
David Blaikie4f918ae2013-01-16 23:08:36 +00007298 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007299}
7300
7301static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007302vec_stl(vector pixel __a, int __b, vector pixel *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007303{
David Blaikie4f918ae2013-01-16 23:08:36 +00007304 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007305}
7306
7307static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007308vec_stl(vector int __a, int __b, vector int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007309{
David Blaikie4f918ae2013-01-16 23:08:36 +00007310 __builtin_altivec_stvxl(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007311}
7312
7313static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007314vec_stl(vector int __a, int __b, int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007315{
David Blaikie4f918ae2013-01-16 23:08:36 +00007316 __builtin_altivec_stvxl(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007317}
7318
7319static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007320vec_stl(vector unsigned int __a, int __b, vector unsigned int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007321{
David Blaikie4f918ae2013-01-16 23:08:36 +00007322 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007323}
7324
7325static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007326vec_stl(vector unsigned int __a, int __b, unsigned int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007327{
David Blaikie4f918ae2013-01-16 23:08:36 +00007328 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007329}
7330
7331static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007332vec_stl(vector bool int __a, int __b, int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007333{
David Blaikie4f918ae2013-01-16 23:08:36 +00007334 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007335}
7336
7337static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007338vec_stl(vector bool int __a, int __b, unsigned int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007339{
David Blaikie4f918ae2013-01-16 23:08:36 +00007340 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007341}
7342
7343static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007344vec_stl(vector bool int __a, int __b, vector bool int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007345{
David Blaikie4f918ae2013-01-16 23:08:36 +00007346 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007347}
7348
7349static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007350vec_stl(vector float __a, int __b, vector float *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007351{
David Blaikie4f918ae2013-01-16 23:08:36 +00007352 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007353}
7354
7355static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007356vec_stl(vector float __a, int __b, float *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007357{
David Blaikie4f918ae2013-01-16 23:08:36 +00007358 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007359}
7360
7361/* vec_stvxl */
7362
7363static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007364vec_stvxl(vector signed char __a, int __b, vector signed char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007365{
David Blaikie4f918ae2013-01-16 23:08:36 +00007366 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007367}
7368
7369static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007370vec_stvxl(vector signed char __a, int __b, signed char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007371{
David Blaikie4f918ae2013-01-16 23:08:36 +00007372 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007373}
7374
7375static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007376vec_stvxl(vector unsigned char __a, int __b, vector unsigned char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007377{
David Blaikie4f918ae2013-01-16 23:08:36 +00007378 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007379}
7380
7381static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007382vec_stvxl(vector unsigned char __a, int __b, unsigned char *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007383{
David Blaikie4f918ae2013-01-16 23:08:36 +00007384 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007385}
7386
7387static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007388vec_stvxl(vector bool char __a, int __b, signed char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007389{
David Blaikie4f918ae2013-01-16 23:08:36 +00007390 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007391}
7392
7393static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007394vec_stvxl(vector bool char __a, int __b, unsigned char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007395{
David Blaikie4f918ae2013-01-16 23:08:36 +00007396 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007397}
7398
7399static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007400vec_stvxl(vector bool char __a, int __b, vector bool char *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007401{
David Blaikie4f918ae2013-01-16 23:08:36 +00007402 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007403}
7404
7405static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007406vec_stvxl(vector short __a, int __b, vector short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007407{
David Blaikie4f918ae2013-01-16 23:08:36 +00007408 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007409}
7410
7411static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007412vec_stvxl(vector short __a, int __b, short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007413{
David Blaikie4f918ae2013-01-16 23:08:36 +00007414 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007415}
7416
7417static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007418vec_stvxl(vector unsigned short __a, int __b, vector unsigned short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007419{
David Blaikie4f918ae2013-01-16 23:08:36 +00007420 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007421}
7422
7423static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007424vec_stvxl(vector unsigned short __a, int __b, unsigned short *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007425{
David Blaikie4f918ae2013-01-16 23:08:36 +00007426 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007427}
7428
7429static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007430vec_stvxl(vector bool short __a, int __b, short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007431{
David Blaikie4f918ae2013-01-16 23:08:36 +00007432 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007433}
7434
7435static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007436vec_stvxl(vector bool short __a, int __b, unsigned short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007437{
David Blaikie4f918ae2013-01-16 23:08:36 +00007438 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007439}
7440
7441static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007442vec_stvxl(vector bool short __a, int __b, vector bool short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007443{
David Blaikie4f918ae2013-01-16 23:08:36 +00007444 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007445}
7446
7447static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007448vec_stvxl(vector pixel __a, int __b, short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007449{
David Blaikie4f918ae2013-01-16 23:08:36 +00007450 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007451}
7452
7453static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007454vec_stvxl(vector pixel __a, int __b, unsigned short *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007455{
David Blaikie4f918ae2013-01-16 23:08:36 +00007456 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007457}
7458
7459static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007460vec_stvxl(vector pixel __a, int __b, vector pixel *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007461{
David Blaikie4f918ae2013-01-16 23:08:36 +00007462 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007463}
7464
7465static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007466vec_stvxl(vector int __a, int __b, vector int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007467{
David Blaikie4f918ae2013-01-16 23:08:36 +00007468 __builtin_altivec_stvxl(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007469}
7470
7471static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007472vec_stvxl(vector int __a, int __b, int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007473{
David Blaikie4f918ae2013-01-16 23:08:36 +00007474 __builtin_altivec_stvxl(__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007475}
7476
7477static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007478vec_stvxl(vector unsigned int __a, int __b, vector unsigned int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007479{
David Blaikie4f918ae2013-01-16 23:08:36 +00007480 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007481}
7482
7483static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007484vec_stvxl(vector unsigned int __a, int __b, unsigned int *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007485{
David Blaikie4f918ae2013-01-16 23:08:36 +00007486 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007487}
7488
7489static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007490vec_stvxl(vector bool int __a, int __b, int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007491{
David Blaikie4f918ae2013-01-16 23:08:36 +00007492 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007493}
7494
7495static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007496vec_stvxl(vector bool int __a, int __b, unsigned int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007497{
David Blaikie4f918ae2013-01-16 23:08:36 +00007498 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007499}
7500
7501static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007502vec_stvxl(vector bool int __a, int __b, vector bool int *__c)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007503{
David Blaikie4f918ae2013-01-16 23:08:36 +00007504 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007505}
7506
7507static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007508vec_stvxl(vector float __a, int __b, vector float *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007509{
David Blaikie4f918ae2013-01-16 23:08:36 +00007510 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007511}
7512
7513static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007514vec_stvxl(vector float __a, int __b, float *__c)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007515{
David Blaikie4f918ae2013-01-16 23:08:36 +00007516 __builtin_altivec_stvxl((vector int)__a, __b, __c);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007517}
7518
7519/* vec_sub */
7520
7521static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007522vec_sub(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007523{
David Blaikie4f918ae2013-01-16 23:08:36 +00007524 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007525}
7526
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007527static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007528vec_sub(vector bool char __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007529{
David Blaikie4f918ae2013-01-16 23:08:36 +00007530 return (vector signed char)__a - __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007531}
7532
7533static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007534vec_sub(vector signed char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007535{
David Blaikie4f918ae2013-01-16 23:08:36 +00007536 return __a - (vector signed char)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007537}
7538
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007539static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007540vec_sub(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007541{
David Blaikie4f918ae2013-01-16 23:08:36 +00007542 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007543}
7544
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007545static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007546vec_sub(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007547{
David Blaikie4f918ae2013-01-16 23:08:36 +00007548 return (vector unsigned char)__a - __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007549}
7550
7551static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007552vec_sub(vector unsigned char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007553{
David Blaikie4f918ae2013-01-16 23:08:36 +00007554 return __a - (vector unsigned char)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007555}
7556
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007557static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007558vec_sub(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007559{
David Blaikie4f918ae2013-01-16 23:08:36 +00007560 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007561}
7562
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007563static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007564vec_sub(vector bool short __a, vector short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007565{
David Blaikie4f918ae2013-01-16 23:08:36 +00007566 return (vector short)__a - __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007567}
7568
7569static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007570vec_sub(vector short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007571{
David Blaikie4f918ae2013-01-16 23:08:36 +00007572 return __a - (vector short)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007573}
7574
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007575static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007576vec_sub(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007577{
David Blaikie4f918ae2013-01-16 23:08:36 +00007578 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007579}
7580
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007581static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007582vec_sub(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007583{
David Blaikie4f918ae2013-01-16 23:08:36 +00007584 return (vector unsigned short)__a - __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007585}
7586
7587static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007588vec_sub(vector unsigned short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007589{
David Blaikie4f918ae2013-01-16 23:08:36 +00007590 return __a - (vector unsigned short)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007591}
7592
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007593static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007594vec_sub(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007595{
David Blaikie4f918ae2013-01-16 23:08:36 +00007596 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007597}
7598
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007599static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007600vec_sub(vector bool int __a, vector int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007601{
David Blaikie4f918ae2013-01-16 23:08:36 +00007602 return (vector int)__a - __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007603}
7604
7605static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007606vec_sub(vector int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007607{
David Blaikie4f918ae2013-01-16 23:08:36 +00007608 return __a - (vector int)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007609}
7610
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007611static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007612vec_sub(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007613{
David Blaikie4f918ae2013-01-16 23:08:36 +00007614 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007615}
7616
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007617static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007618vec_sub(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007619{
David Blaikie4f918ae2013-01-16 23:08:36 +00007620 return (vector unsigned int)__a - __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007621}
7622
7623static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007624vec_sub(vector unsigned int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007625{
David Blaikie4f918ae2013-01-16 23:08:36 +00007626 return __a - (vector unsigned int)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007627}
7628
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007629static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007630vec_sub(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007631{
David Blaikie4f918ae2013-01-16 23:08:36 +00007632 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007633}
7634
7635/* vec_vsububm */
7636
7637#define __builtin_altivec_vsububm vec_vsububm
7638
7639static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007640vec_vsububm(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007641{
David Blaikie4f918ae2013-01-16 23:08:36 +00007642 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007643}
7644
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007645static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007646vec_vsububm(vector bool char __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007647{
David Blaikie4f918ae2013-01-16 23:08:36 +00007648 return (vector signed char)__a - __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007649}
7650
7651static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007652vec_vsububm(vector signed char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007653{
David Blaikie4f918ae2013-01-16 23:08:36 +00007654 return __a - (vector signed char)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007655}
7656
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007657static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007658vec_vsububm(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007659{
David Blaikie4f918ae2013-01-16 23:08:36 +00007660 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007661}
7662
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007663static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007664vec_vsububm(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007665{
David Blaikie4f918ae2013-01-16 23:08:36 +00007666 return (vector unsigned char)__a - __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007667}
7668
7669static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007670vec_vsububm(vector unsigned char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007671{
David Blaikie4f918ae2013-01-16 23:08:36 +00007672 return __a - (vector unsigned char)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007673}
7674
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007675/* vec_vsubuhm */
7676
7677#define __builtin_altivec_vsubuhm vec_vsubuhm
7678
7679static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007680vec_vsubuhm(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007681{
David Blaikie4f918ae2013-01-16 23:08:36 +00007682 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007683}
7684
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007685static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007686vec_vsubuhm(vector bool short __a, vector short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007687{
David Blaikie4f918ae2013-01-16 23:08:36 +00007688 return (vector short)__a - __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007689}
7690
7691static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007692vec_vsubuhm(vector short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007693{
David Blaikie4f918ae2013-01-16 23:08:36 +00007694 return __a - (vector short)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007695}
7696
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007697static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007698vec_vsubuhm(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007699{
David Blaikie4f918ae2013-01-16 23:08:36 +00007700 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007701}
7702
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007703static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007704vec_vsubuhm(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007705{
David Blaikie4f918ae2013-01-16 23:08:36 +00007706 return (vector unsigned short)__a - __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007707}
7708
7709static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007710vec_vsubuhm(vector unsigned short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007711{
David Blaikie4f918ae2013-01-16 23:08:36 +00007712 return __a - (vector unsigned short)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007713}
7714
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007715/* vec_vsubuwm */
7716
7717#define __builtin_altivec_vsubuwm vec_vsubuwm
7718
7719static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007720vec_vsubuwm(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007721{
David Blaikie4f918ae2013-01-16 23:08:36 +00007722 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007723}
7724
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007725static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007726vec_vsubuwm(vector bool int __a, vector int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007727{
David Blaikie4f918ae2013-01-16 23:08:36 +00007728 return (vector int)__a - __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007729}
7730
7731static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007732vec_vsubuwm(vector int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007733{
David Blaikie4f918ae2013-01-16 23:08:36 +00007734 return __a - (vector int)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007735}
7736
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007737static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007738vec_vsubuwm(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007739{
David Blaikie4f918ae2013-01-16 23:08:36 +00007740 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007741}
7742
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007743static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007744vec_vsubuwm(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007745{
David Blaikie4f918ae2013-01-16 23:08:36 +00007746 return (vector unsigned int)__a - __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007747}
7748
7749static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007750vec_vsubuwm(vector unsigned int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007751{
David Blaikie4f918ae2013-01-16 23:08:36 +00007752 return __a - (vector unsigned int)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007753}
7754
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007755/* vec_vsubfp */
7756
7757#define __builtin_altivec_vsubfp vec_vsubfp
7758
7759static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00007760vec_vsubfp(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007761{
David Blaikie4f918ae2013-01-16 23:08:36 +00007762 return __a - __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007763}
7764
7765/* vec_subc */
7766
7767static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00007768vec_subc(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007769{
David Blaikie4f918ae2013-01-16 23:08:36 +00007770 return __builtin_altivec_vsubcuw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007771}
7772
7773/* vec_vsubcuw */
7774
7775static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00007776vec_vsubcuw(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007777{
David Blaikie4f918ae2013-01-16 23:08:36 +00007778 return __builtin_altivec_vsubcuw(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007779}
7780
7781/* vec_subs */
7782
7783static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007784vec_subs(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007785{
David Blaikie4f918ae2013-01-16 23:08:36 +00007786 return __builtin_altivec_vsubsbs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007787}
7788
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007789static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007790vec_subs(vector bool char __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007791{
David Blaikie4f918ae2013-01-16 23:08:36 +00007792 return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007793}
7794
7795static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007796vec_subs(vector signed char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007797{
David Blaikie4f918ae2013-01-16 23:08:36 +00007798 return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007799}
7800
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007801static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007802vec_subs(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007803{
David Blaikie4f918ae2013-01-16 23:08:36 +00007804 return __builtin_altivec_vsububs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007805}
7806
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007807static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007808vec_subs(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007809{
David Blaikie4f918ae2013-01-16 23:08:36 +00007810 return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007811}
7812
7813static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007814vec_subs(vector unsigned char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007815{
David Blaikie4f918ae2013-01-16 23:08:36 +00007816 return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007817}
7818
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007819static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007820vec_subs(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007821{
David Blaikie4f918ae2013-01-16 23:08:36 +00007822 return __builtin_altivec_vsubshs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007823}
7824
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007825static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007826vec_subs(vector bool short __a, vector short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007827{
David Blaikie4f918ae2013-01-16 23:08:36 +00007828 return __builtin_altivec_vsubshs((vector short)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007829}
7830
7831static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007832vec_subs(vector short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007833{
David Blaikie4f918ae2013-01-16 23:08:36 +00007834 return __builtin_altivec_vsubshs(__a, (vector short)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007835}
7836
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007837static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007838vec_subs(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007839{
David Blaikie4f918ae2013-01-16 23:08:36 +00007840 return __builtin_altivec_vsubuhs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007841}
7842
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007843static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007844vec_subs(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007845{
David Blaikie4f918ae2013-01-16 23:08:36 +00007846 return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007847}
7848
7849static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007850vec_subs(vector unsigned short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007851{
David Blaikie4f918ae2013-01-16 23:08:36 +00007852 return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007853}
7854
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007855static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007856vec_subs(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007857{
David Blaikie4f918ae2013-01-16 23:08:36 +00007858 return __builtin_altivec_vsubsws(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007859}
7860
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007861static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007862vec_subs(vector bool int __a, vector int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007863{
David Blaikie4f918ae2013-01-16 23:08:36 +00007864 return __builtin_altivec_vsubsws((vector int)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007865}
7866
7867static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007868vec_subs(vector int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007869{
David Blaikie4f918ae2013-01-16 23:08:36 +00007870 return __builtin_altivec_vsubsws(__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007871}
7872
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007873static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007874vec_subs(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007875{
David Blaikie4f918ae2013-01-16 23:08:36 +00007876 return __builtin_altivec_vsubuws(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007877}
7878
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007879static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007880vec_subs(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007881{
David Blaikie4f918ae2013-01-16 23:08:36 +00007882 return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007883}
7884
7885static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007886vec_subs(vector unsigned int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007887{
David Blaikie4f918ae2013-01-16 23:08:36 +00007888 return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007889}
7890
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007891/* vec_vsubsbs */
7892
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007893static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007894vec_vsubsbs(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007895{
David Blaikie4f918ae2013-01-16 23:08:36 +00007896 return __builtin_altivec_vsubsbs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007897}
7898
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007899static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007900vec_vsubsbs(vector bool char __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007901{
David Blaikie4f918ae2013-01-16 23:08:36 +00007902 return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007903}
7904
7905static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007906vec_vsubsbs(vector signed char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007907{
David Blaikie4f918ae2013-01-16 23:08:36 +00007908 return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007909}
7910
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007911/* vec_vsububs */
7912
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007913static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007914vec_vsububs(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007915{
David Blaikie4f918ae2013-01-16 23:08:36 +00007916 return __builtin_altivec_vsububs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007917}
7918
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007919static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007920vec_vsububs(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007921{
David Blaikie4f918ae2013-01-16 23:08:36 +00007922 return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007923}
7924
7925static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007926vec_vsububs(vector unsigned char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007927{
David Blaikie4f918ae2013-01-16 23:08:36 +00007928 return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007929}
7930
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007931/* vec_vsubshs */
7932
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007933static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007934vec_vsubshs(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007935{
David Blaikie4f918ae2013-01-16 23:08:36 +00007936 return __builtin_altivec_vsubshs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007937}
7938
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007939static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007940vec_vsubshs(vector bool short __a, vector short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007941{
David Blaikie4f918ae2013-01-16 23:08:36 +00007942 return __builtin_altivec_vsubshs((vector short)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007943}
7944
7945static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007946vec_vsubshs(vector short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007947{
David Blaikie4f918ae2013-01-16 23:08:36 +00007948 return __builtin_altivec_vsubshs(__a, (vector short)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007949}
7950
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007951/* vec_vsubuhs */
7952
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007953static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007954vec_vsubuhs(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007955{
David Blaikie4f918ae2013-01-16 23:08:36 +00007956 return __builtin_altivec_vsubuhs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007957}
7958
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007959static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007960vec_vsubuhs(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007961{
David Blaikie4f918ae2013-01-16 23:08:36 +00007962 return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007963}
7964
7965static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007966vec_vsubuhs(vector unsigned short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007967{
David Blaikie4f918ae2013-01-16 23:08:36 +00007968 return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007969}
7970
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007971/* vec_vsubsws */
7972
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007973static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007974vec_vsubsws(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007975{
David Blaikie4f918ae2013-01-16 23:08:36 +00007976 return __builtin_altivec_vsubsws(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007977}
7978
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007979static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007980vec_vsubsws(vector bool int __a, vector int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007981{
David Blaikie4f918ae2013-01-16 23:08:36 +00007982 return __builtin_altivec_vsubsws((vector int)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007983}
7984
7985static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007986vec_vsubsws(vector int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007987{
David Blaikie4f918ae2013-01-16 23:08:36 +00007988 return __builtin_altivec_vsubsws(__a, (vector int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007989}
7990
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007991/* vec_vsubuws */
7992
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007993static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00007994vec_vsubuws(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007995{
David Blaikie4f918ae2013-01-16 23:08:36 +00007996 return __builtin_altivec_vsubuws(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00007997}
7998
Anton Yartseva2fc0f52010-08-19 03:21:36 +00007999static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008000vec_vsubuws(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008001{
David Blaikie4f918ae2013-01-16 23:08:36 +00008002 return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008003}
8004
8005static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008006vec_vsubuws(vector unsigned int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008007{
David Blaikie4f918ae2013-01-16 23:08:36 +00008008 return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008009}
8010
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008011/* vec_sum4s */
8012
8013static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008014vec_sum4s(vector signed char __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008015{
David Blaikie4f918ae2013-01-16 23:08:36 +00008016 return __builtin_altivec_vsum4sbs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008017}
8018
8019static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008020vec_sum4s(vector unsigned char __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008021{
David Blaikie4f918ae2013-01-16 23:08:36 +00008022 return __builtin_altivec_vsum4ubs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008023}
8024
8025static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008026vec_sum4s(vector signed short __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008027{
David Blaikie4f918ae2013-01-16 23:08:36 +00008028 return __builtin_altivec_vsum4shs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008029}
8030
8031/* vec_vsum4sbs */
8032
8033static vector int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00008034vec_vsum4sbs(vector signed char __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008035{
David Blaikie4f918ae2013-01-16 23:08:36 +00008036 return __builtin_altivec_vsum4sbs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008037}
8038
8039/* vec_vsum4ubs */
8040
8041static vector unsigned int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00008042vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008043{
David Blaikie4f918ae2013-01-16 23:08:36 +00008044 return __builtin_altivec_vsum4ubs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008045}
8046
8047/* vec_vsum4shs */
8048
8049static vector int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00008050vec_vsum4shs(vector signed short __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008051{
David Blaikie4f918ae2013-01-16 23:08:36 +00008052 return __builtin_altivec_vsum4shs(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008053}
8054
8055/* vec_sum2s */
8056
8057static vector signed int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00008058vec_sum2s(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008059{
David Blaikie4f918ae2013-01-16 23:08:36 +00008060 return __builtin_altivec_vsum2sws(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008061}
8062
8063/* vec_vsum2sws */
8064
8065static vector signed int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00008066vec_vsum2sws(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008067{
David Blaikie4f918ae2013-01-16 23:08:36 +00008068 return __builtin_altivec_vsum2sws(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008069}
8070
8071/* vec_sums */
8072
8073static vector signed int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00008074vec_sums(vector signed int __a, vector signed int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008075{
David Blaikie4f918ae2013-01-16 23:08:36 +00008076 return __builtin_altivec_vsumsws(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008077}
8078
8079/* vec_vsumsws */
8080
8081static vector signed int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00008082vec_vsumsws(vector signed int __a, vector signed int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008083{
David Blaikie4f918ae2013-01-16 23:08:36 +00008084 return __builtin_altivec_vsumsws(__a, __b);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008085}
8086
8087/* vec_trunc */
8088
8089static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00008090vec_trunc(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008091{
David Blaikie4f918ae2013-01-16 23:08:36 +00008092 return __builtin_altivec_vrfiz(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008093}
8094
8095/* vec_vrfiz */
8096
8097static vector float __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +00008098vec_vrfiz(vector float __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008099{
David Blaikie4f918ae2013-01-16 23:08:36 +00008100 return __builtin_altivec_vrfiz(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008101}
8102
8103/* vec_unpackh */
8104
8105static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008106vec_unpackh(vector signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008107{
David Blaikie4f918ae2013-01-16 23:08:36 +00008108 return __builtin_altivec_vupkhsb((vector char)__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008109}
8110
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008111static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008112vec_unpackh(vector bool char __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008113{
David Blaikie4f918ae2013-01-16 23:08:36 +00008114 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008115}
8116
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008117static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008118vec_unpackh(vector short __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008119{
David Blaikie4f918ae2013-01-16 23:08:36 +00008120 return __builtin_altivec_vupkhsh(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008121}
8122
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008123static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008124vec_unpackh(vector bool short __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008125{
David Blaikie4f918ae2013-01-16 23:08:36 +00008126 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008127}
8128
8129static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008130vec_unpackh(vector pixel __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008131{
David Blaikie4f918ae2013-01-16 23:08:36 +00008132 return (vector unsigned int)__builtin_altivec_vupkhsh((vector short)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008133}
8134
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008135/* vec_vupkhsb */
8136
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008137static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008138vec_vupkhsb(vector signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008139{
David Blaikie4f918ae2013-01-16 23:08:36 +00008140 return __builtin_altivec_vupkhsb((vector char)__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008141}
8142
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008143static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008144vec_vupkhsb(vector bool char __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008145{
David Blaikie4f918ae2013-01-16 23:08:36 +00008146 return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008147}
8148
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008149/* vec_vupkhsh */
8150
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008151static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008152vec_vupkhsh(vector short __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008153{
David Blaikie4f918ae2013-01-16 23:08:36 +00008154 return __builtin_altivec_vupkhsh(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008155}
8156
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008157static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008158vec_vupkhsh(vector bool short __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008159{
David Blaikie4f918ae2013-01-16 23:08:36 +00008160 return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008161}
8162
8163static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008164vec_vupkhsh(vector pixel __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008165{
David Blaikie4f918ae2013-01-16 23:08:36 +00008166 return (vector unsigned int)__builtin_altivec_vupkhsh((vector short)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008167}
8168
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008169/* vec_unpackl */
8170
8171static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008172vec_unpackl(vector signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008173{
David Blaikie4f918ae2013-01-16 23:08:36 +00008174 return __builtin_altivec_vupklsb((vector char)__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008175}
8176
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008177static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008178vec_unpackl(vector bool char __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008179{
David Blaikie4f918ae2013-01-16 23:08:36 +00008180 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008181}
8182
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008183static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008184vec_unpackl(vector short __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008185{
David Blaikie4f918ae2013-01-16 23:08:36 +00008186 return __builtin_altivec_vupklsh(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008187}
8188
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008189static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008190vec_unpackl(vector bool short __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008191{
David Blaikie4f918ae2013-01-16 23:08:36 +00008192 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008193}
8194
8195static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008196vec_unpackl(vector pixel __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008197{
David Blaikie4f918ae2013-01-16 23:08:36 +00008198 return (vector unsigned int)__builtin_altivec_vupklsh((vector short)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008199}
8200
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008201/* vec_vupklsb */
8202
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008203static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008204vec_vupklsb(vector signed char __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008205{
David Blaikie4f918ae2013-01-16 23:08:36 +00008206 return __builtin_altivec_vupklsb((vector char)__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008207}
8208
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008209static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008210vec_vupklsb(vector bool char __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008211{
David Blaikie4f918ae2013-01-16 23:08:36 +00008212 return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008213}
8214
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008215/* vec_vupklsh */
8216
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008217static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008218vec_vupklsh(vector short __a)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008219{
David Blaikie4f918ae2013-01-16 23:08:36 +00008220 return __builtin_altivec_vupklsh(__a);
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008221}
8222
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008223static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008224vec_vupklsh(vector bool short __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008225{
David Blaikie4f918ae2013-01-16 23:08:36 +00008226 return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008227}
8228
8229static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008230vec_vupklsh(vector pixel __a)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008231{
David Blaikie4f918ae2013-01-16 23:08:36 +00008232 return (vector unsigned int)__builtin_altivec_vupklsh((vector short)__a);
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008233}
8234
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008235/* vec_xor */
8236
8237#define __builtin_altivec_vxor vec_xor
8238
8239static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008240vec_xor(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008241{
David Blaikie4f918ae2013-01-16 23:08:36 +00008242 return __a ^ __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008243}
8244
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008245static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008246vec_xor(vector bool char __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008247{
David Blaikie4f918ae2013-01-16 23:08:36 +00008248 return (vector signed char)__a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008249}
8250
8251static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008252vec_xor(vector signed char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008253{
David Blaikie4f918ae2013-01-16 23:08:36 +00008254 return __a ^ (vector signed char)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008255}
8256
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008257static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008258vec_xor(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008259{
David Blaikie4f918ae2013-01-16 23:08:36 +00008260 return __a ^ __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008261}
8262
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008263static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008264vec_xor(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008265{
David Blaikie4f918ae2013-01-16 23:08:36 +00008266 return (vector unsigned char)__a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008267}
8268
8269static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008270vec_xor(vector unsigned char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008271{
David Blaikie4f918ae2013-01-16 23:08:36 +00008272 return __a ^ (vector unsigned char)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008273}
8274
8275static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008276vec_xor(vector bool char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008277{
David Blaikie4f918ae2013-01-16 23:08:36 +00008278 return __a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008279}
8280
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008281static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008282vec_xor(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008283{
David Blaikie4f918ae2013-01-16 23:08:36 +00008284 return __a ^ __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008285}
8286
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008287static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008288vec_xor(vector bool short __a, vector short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008289{
David Blaikie4f918ae2013-01-16 23:08:36 +00008290 return (vector short)__a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008291}
8292
8293static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008294vec_xor(vector short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008295{
David Blaikie4f918ae2013-01-16 23:08:36 +00008296 return __a ^ (vector short)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008297}
8298
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008299static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008300vec_xor(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008301{
David Blaikie4f918ae2013-01-16 23:08:36 +00008302 return __a ^ __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008303}
8304
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008305static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008306vec_xor(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008307{
David Blaikie4f918ae2013-01-16 23:08:36 +00008308 return (vector unsigned short)__a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008309}
8310
8311static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008312vec_xor(vector unsigned short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008313{
David Blaikie4f918ae2013-01-16 23:08:36 +00008314 return __a ^ (vector unsigned short)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008315}
8316
8317static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008318vec_xor(vector bool short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008319{
David Blaikie4f918ae2013-01-16 23:08:36 +00008320 return __a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008321}
8322
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008323static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008324vec_xor(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008325{
David Blaikie4f918ae2013-01-16 23:08:36 +00008326 return __a ^ __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008327}
8328
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008329static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008330vec_xor(vector bool int __a, vector int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008331{
David Blaikie4f918ae2013-01-16 23:08:36 +00008332 return (vector int)__a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008333}
8334
8335static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008336vec_xor(vector int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008337{
David Blaikie4f918ae2013-01-16 23:08:36 +00008338 return __a ^ (vector int)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008339}
8340
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008341static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008342vec_xor(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008343{
David Blaikie4f918ae2013-01-16 23:08:36 +00008344 return __a ^ __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008345}
8346
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008347static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008348vec_xor(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008349{
David Blaikie4f918ae2013-01-16 23:08:36 +00008350 return (vector unsigned int)__a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008351}
8352
8353static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008354vec_xor(vector unsigned int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008355{
David Blaikie4f918ae2013-01-16 23:08:36 +00008356 return __a ^ (vector unsigned int)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008357}
8358
8359static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008360vec_xor(vector bool int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008361{
David Blaikie4f918ae2013-01-16 23:08:36 +00008362 return __a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008363}
8364
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008365static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008366vec_xor(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008367{
David Blaikie4f918ae2013-01-16 23:08:36 +00008368 vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b;
8369 return (vector float)__res;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008370}
8371
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008372static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008373vec_xor(vector bool int __a, vector float __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008374{
David Blaikie4f918ae2013-01-16 23:08:36 +00008375 vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b;
8376 return (vector float)__res;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008377}
8378
8379static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008380vec_xor(vector float __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008381{
David Blaikie4f918ae2013-01-16 23:08:36 +00008382 vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b;
8383 return (vector float)__res;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008384}
8385
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008386/* vec_vxor */
8387
8388static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008389vec_vxor(vector signed char __a, vector signed char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008390{
David Blaikie4f918ae2013-01-16 23:08:36 +00008391 return __a ^ __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008392}
8393
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008394static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008395vec_vxor(vector bool char __a, vector signed char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008396{
David Blaikie4f918ae2013-01-16 23:08:36 +00008397 return (vector signed char)__a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008398}
8399
8400static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008401vec_vxor(vector signed char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008402{
David Blaikie4f918ae2013-01-16 23:08:36 +00008403 return __a ^ (vector signed char)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008404}
8405
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008406static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008407vec_vxor(vector unsigned char __a, vector unsigned char __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008408{
David Blaikie4f918ae2013-01-16 23:08:36 +00008409 return __a ^ __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008410}
8411
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008412static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008413vec_vxor(vector bool char __a, vector unsigned char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008414{
David Blaikie4f918ae2013-01-16 23:08:36 +00008415 return (vector unsigned char)__a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008416}
8417
8418static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008419vec_vxor(vector unsigned char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008420{
David Blaikie4f918ae2013-01-16 23:08:36 +00008421 return __a ^ (vector unsigned char)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008422}
8423
8424static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008425vec_vxor(vector bool char __a, vector bool char __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008426{
David Blaikie4f918ae2013-01-16 23:08:36 +00008427 return __a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008428}
8429
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008430static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008431vec_vxor(vector short __a, vector short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008432{
David Blaikie4f918ae2013-01-16 23:08:36 +00008433 return __a ^ __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008434}
8435
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008436static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008437vec_vxor(vector bool short __a, vector short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008438{
David Blaikie4f918ae2013-01-16 23:08:36 +00008439 return (vector short)__a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008440}
8441
8442static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008443vec_vxor(vector short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008444{
David Blaikie4f918ae2013-01-16 23:08:36 +00008445 return __a ^ (vector short)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008446}
8447
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008448static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008449vec_vxor(vector unsigned short __a, vector unsigned short __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008450{
David Blaikie4f918ae2013-01-16 23:08:36 +00008451 return __a ^ __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008452}
8453
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008454static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008455vec_vxor(vector bool short __a, vector unsigned short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008456{
David Blaikie4f918ae2013-01-16 23:08:36 +00008457 return (vector unsigned short)__a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008458}
8459
8460static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008461vec_vxor(vector unsigned short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008462{
David Blaikie4f918ae2013-01-16 23:08:36 +00008463 return __a ^ (vector unsigned short)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008464}
8465
8466static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008467vec_vxor(vector bool short __a, vector bool short __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008468{
David Blaikie4f918ae2013-01-16 23:08:36 +00008469 return __a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008470}
8471
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008472static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008473vec_vxor(vector int __a, vector int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008474{
David Blaikie4f918ae2013-01-16 23:08:36 +00008475 return __a ^ __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008476}
8477
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008478static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008479vec_vxor(vector bool int __a, vector int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008480{
David Blaikie4f918ae2013-01-16 23:08:36 +00008481 return (vector int)__a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008482}
8483
8484static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008485vec_vxor(vector int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008486{
David Blaikie4f918ae2013-01-16 23:08:36 +00008487 return __a ^ (vector int)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008488}
8489
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008490static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008491vec_vxor(vector unsigned int __a, vector unsigned int __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008492{
David Blaikie4f918ae2013-01-16 23:08:36 +00008493 return __a ^ __b;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008494}
8495
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008496static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008497vec_vxor(vector bool int __a, vector unsigned int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008498{
David Blaikie4f918ae2013-01-16 23:08:36 +00008499 return (vector unsigned int)__a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008500}
8501
8502static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008503vec_vxor(vector unsigned int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008504{
David Blaikie4f918ae2013-01-16 23:08:36 +00008505 return __a ^ (vector unsigned int)__b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008506}
8507
8508static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008509vec_vxor(vector bool int __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008510{
David Blaikie4f918ae2013-01-16 23:08:36 +00008511 return __a ^ __b;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008512}
8513
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008514static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008515vec_vxor(vector float __a, vector float __b)
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008516{
David Blaikie4f918ae2013-01-16 23:08:36 +00008517 vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b;
8518 return (vector float)__res;
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00008519}
Chris Lattnerdd173942010-04-14 03:54:58 +00008520
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008521static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008522vec_vxor(vector bool int __a, vector float __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008523{
David Blaikie4f918ae2013-01-16 23:08:36 +00008524 vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b;
8525 return (vector float)__res;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008526}
8527
8528static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008529vec_vxor(vector float __a, vector bool int __b)
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008530{
David Blaikie4f918ae2013-01-16 23:08:36 +00008531 vector unsigned int __res = (vector unsigned int)__a ^ (vector unsigned int)__b;
8532 return (vector float)__res;
Anton Yartseva2fc0f52010-08-19 03:21:36 +00008533}
8534
Anton Yartsev3ed32722010-09-18 00:39:16 +00008535/* ------------------------ extensions for CBEA ----------------------------- */
Anton Yartsev44270d62010-10-14 14:37:46 +00008536
8537/* vec_extract */
8538
8539static signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008540vec_extract(vector signed char __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008541{
David Blaikie4f918ae2013-01-16 23:08:36 +00008542 return __a[__b];
Anton Yartsev44270d62010-10-14 14:37:46 +00008543}
8544
8545static unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008546vec_extract(vector unsigned char __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008547{
David Blaikie4f918ae2013-01-16 23:08:36 +00008548 return __a[__b];
Anton Yartsev44270d62010-10-14 14:37:46 +00008549}
8550
8551static short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008552vec_extract(vector short __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008553{
David Blaikie4f918ae2013-01-16 23:08:36 +00008554 return __a[__b];
Anton Yartsev44270d62010-10-14 14:37:46 +00008555}
8556
8557static unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008558vec_extract(vector unsigned short __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008559{
David Blaikie4f918ae2013-01-16 23:08:36 +00008560 return __a[__b];
Anton Yartsev44270d62010-10-14 14:37:46 +00008561}
8562
8563static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008564vec_extract(vector int __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008565{
David Blaikie4f918ae2013-01-16 23:08:36 +00008566 return __a[__b];
Anton Yartsev44270d62010-10-14 14:37:46 +00008567}
8568
8569static unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008570vec_extract(vector unsigned int __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008571{
David Blaikie4f918ae2013-01-16 23:08:36 +00008572 return __a[__b];
Anton Yartsev44270d62010-10-14 14:37:46 +00008573}
8574
8575static float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008576vec_extract(vector float __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008577{
David Blaikie4f918ae2013-01-16 23:08:36 +00008578 return __a[__b];
Anton Yartsev44270d62010-10-14 14:37:46 +00008579}
8580
8581/* vec_insert */
8582
8583static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008584vec_insert(signed char __a, vector signed char __b, int __c)
Anton Yartsev44270d62010-10-14 14:37:46 +00008585{
David Blaikie4f918ae2013-01-16 23:08:36 +00008586 __b[__c] = __a;
8587 return __b;
Anton Yartsev44270d62010-10-14 14:37:46 +00008588}
8589
8590static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008591vec_insert(unsigned char __a, vector unsigned char __b, int __c)
Anton Yartsev44270d62010-10-14 14:37:46 +00008592{
David Blaikie4f918ae2013-01-16 23:08:36 +00008593 __b[__c] = __a;
8594 return __b;
Anton Yartsev44270d62010-10-14 14:37:46 +00008595}
8596
8597static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008598vec_insert(short __a, vector short __b, int __c)
Anton Yartsev44270d62010-10-14 14:37:46 +00008599{
David Blaikie4f918ae2013-01-16 23:08:36 +00008600 __b[__c] = __a;
8601 return __b;
Anton Yartsev44270d62010-10-14 14:37:46 +00008602}
8603
8604static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008605vec_insert(unsigned short __a, vector unsigned short __b, int __c)
Anton Yartsev44270d62010-10-14 14:37:46 +00008606{
David Blaikie4f918ae2013-01-16 23:08:36 +00008607 __b[__c] = __a;
8608 return __b;
Anton Yartsev44270d62010-10-14 14:37:46 +00008609}
8610
8611static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008612vec_insert(int __a, vector int __b, int __c)
Anton Yartsev44270d62010-10-14 14:37:46 +00008613{
David Blaikie4f918ae2013-01-16 23:08:36 +00008614 __b[__c] = __a;
8615 return __b;
Anton Yartsev44270d62010-10-14 14:37:46 +00008616}
8617
8618static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008619vec_insert(unsigned int __a, vector unsigned int __b, int __c)
Anton Yartsev44270d62010-10-14 14:37:46 +00008620{
David Blaikie4f918ae2013-01-16 23:08:36 +00008621 __b[__c] = __a;
8622 return __b;
Anton Yartsev44270d62010-10-14 14:37:46 +00008623}
8624
8625static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008626vec_insert(float __a, vector float __b, int __c)
Anton Yartsev44270d62010-10-14 14:37:46 +00008627{
David Blaikie4f918ae2013-01-16 23:08:36 +00008628 __b[__c] = __a;
8629 return __b;
Anton Yartsev44270d62010-10-14 14:37:46 +00008630}
8631
8632/* vec_lvlx */
8633
8634static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008635vec_lvlx(int __a, const signed char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008636{
David Blaikie4f918ae2013-01-16 23:08:36 +00008637 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008638 (vector signed char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008639 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008640}
8641
8642static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008643vec_lvlx(int __a, const vector signed char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008644{
David Blaikie4f918ae2013-01-16 23:08:36 +00008645 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008646 (vector signed char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008647 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008648}
8649
8650static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008651vec_lvlx(int __a, const unsigned char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008652{
David Blaikie4f918ae2013-01-16 23:08:36 +00008653 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008654 (vector unsigned char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008655 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008656}
8657
8658static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008659vec_lvlx(int __a, const vector unsigned char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008660{
David Blaikie4f918ae2013-01-16 23:08:36 +00008661 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008662 (vector unsigned char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008663 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008664}
8665
8666static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008667vec_lvlx(int __a, const vector bool char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008668{
David Blaikie4f918ae2013-01-16 23:08:36 +00008669 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008670 (vector bool char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008671 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008672}
8673
8674static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008675vec_lvlx(int __a, const short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008676{
David Blaikie4f918ae2013-01-16 23:08:36 +00008677 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008678 (vector short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008679 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008680}
8681
8682static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008683vec_lvlx(int __a, const vector short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008684{
David Blaikie4f918ae2013-01-16 23:08:36 +00008685 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008686 (vector short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008687 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008688}
8689
8690static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008691vec_lvlx(int __a, const unsigned short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008692{
David Blaikie4f918ae2013-01-16 23:08:36 +00008693 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008694 (vector unsigned short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008695 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008696}
8697
8698static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008699vec_lvlx(int __a, const vector unsigned short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008700{
David Blaikie4f918ae2013-01-16 23:08:36 +00008701 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008702 (vector unsigned short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008703 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008704}
8705
8706static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008707vec_lvlx(int __a, const vector bool short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008708{
David Blaikie4f918ae2013-01-16 23:08:36 +00008709 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008710 (vector bool short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008711 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008712}
8713
8714static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008715vec_lvlx(int __a, const vector pixel *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008716{
David Blaikie4f918ae2013-01-16 23:08:36 +00008717 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008718 (vector pixel)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008719 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008720}
8721
8722static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008723vec_lvlx(int __a, const int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008724{
David Blaikie4f918ae2013-01-16 23:08:36 +00008725 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008726 (vector int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008727 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008728}
8729
8730static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008731vec_lvlx(int __a, const vector int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008732{
David Blaikie4f918ae2013-01-16 23:08:36 +00008733 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008734 (vector int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008735 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008736}
8737
8738static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008739vec_lvlx(int __a, const unsigned int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008740{
David Blaikie4f918ae2013-01-16 23:08:36 +00008741 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008742 (vector unsigned int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008743 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008744}
8745
8746static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008747vec_lvlx(int __a, const vector unsigned int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008748{
David Blaikie4f918ae2013-01-16 23:08:36 +00008749 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008750 (vector unsigned int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008751 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008752}
8753
8754static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008755vec_lvlx(int __a, const vector bool int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008756{
David Blaikie4f918ae2013-01-16 23:08:36 +00008757 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008758 (vector bool int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008759 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008760}
8761
8762static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008763vec_lvlx(int __a, const float *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008764{
David Blaikie4f918ae2013-01-16 23:08:36 +00008765 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008766 (vector float)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008767 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008768}
8769
8770static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008771vec_lvlx(int __a, const vector float *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008772{
David Blaikie4f918ae2013-01-16 23:08:36 +00008773 return vec_perm(vec_ld(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008774 (vector float)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008775 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008776}
8777
8778/* vec_lvlxl */
8779
8780static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008781vec_lvlxl(int __a, const signed char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008782{
David Blaikie4f918ae2013-01-16 23:08:36 +00008783 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008784 (vector signed char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008785 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008786}
8787
8788static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008789vec_lvlxl(int __a, const vector signed char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008790{
David Blaikie4f918ae2013-01-16 23:08:36 +00008791 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008792 (vector signed char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008793 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008794}
8795
8796static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008797vec_lvlxl(int __a, const unsigned char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008798{
David Blaikie4f918ae2013-01-16 23:08:36 +00008799 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008800 (vector unsigned char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008801 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008802}
8803
8804static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008805vec_lvlxl(int __a, const vector unsigned char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008806{
David Blaikie4f918ae2013-01-16 23:08:36 +00008807 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008808 (vector unsigned char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008809 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008810}
8811
8812static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008813vec_lvlxl(int __a, const vector bool char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008814{
David Blaikie4f918ae2013-01-16 23:08:36 +00008815 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008816 (vector bool char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008817 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008818}
8819
8820static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008821vec_lvlxl(int __a, const short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008822{
David Blaikie4f918ae2013-01-16 23:08:36 +00008823 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008824 (vector short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008825 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008826}
8827
8828static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008829vec_lvlxl(int __a, const vector short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008830{
David Blaikie4f918ae2013-01-16 23:08:36 +00008831 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008832 (vector short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008833 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008834}
8835
8836static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008837vec_lvlxl(int __a, const unsigned short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008838{
David Blaikie4f918ae2013-01-16 23:08:36 +00008839 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008840 (vector unsigned short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008841 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008842}
8843
8844static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008845vec_lvlxl(int __a, const vector unsigned short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008846{
David Blaikie4f918ae2013-01-16 23:08:36 +00008847 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008848 (vector unsigned short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008849 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008850}
8851
8852static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008853vec_lvlxl(int __a, const vector bool short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008854{
David Blaikie4f918ae2013-01-16 23:08:36 +00008855 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008856 (vector bool short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008857 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008858}
8859
8860static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008861vec_lvlxl(int __a, const vector pixel *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008862{
David Blaikie4f918ae2013-01-16 23:08:36 +00008863 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008864 (vector pixel)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008865 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008866}
8867
8868static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008869vec_lvlxl(int __a, const int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008870{
David Blaikie4f918ae2013-01-16 23:08:36 +00008871 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008872 (vector int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008873 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008874}
8875
8876static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008877vec_lvlxl(int __a, const vector int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008878{
David Blaikie4f918ae2013-01-16 23:08:36 +00008879 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008880 (vector int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008881 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008882}
8883
8884static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008885vec_lvlxl(int __a, const unsigned int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008886{
David Blaikie4f918ae2013-01-16 23:08:36 +00008887 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008888 (vector unsigned int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008889 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008890}
8891
8892static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008893vec_lvlxl(int __a, const vector unsigned int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008894{
David Blaikie4f918ae2013-01-16 23:08:36 +00008895 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008896 (vector unsigned int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008897 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008898}
8899
8900static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008901vec_lvlxl(int __a, const vector bool int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008902{
David Blaikie4f918ae2013-01-16 23:08:36 +00008903 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008904 (vector bool int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008905 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008906}
8907
8908static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008909vec_lvlxl(int __a, const float *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008910{
David Blaikie4f918ae2013-01-16 23:08:36 +00008911 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008912 (vector float)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008913 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008914}
8915
8916static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008917vec_lvlxl(int __a, vector float *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008918{
David Blaikie4f918ae2013-01-16 23:08:36 +00008919 return vec_perm(vec_ldl(__a, __b),
Anton Yartsev44270d62010-10-14 14:37:46 +00008920 (vector float)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008921 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008922}
8923
8924/* vec_lvrx */
8925
8926static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008927vec_lvrx(int __a, const signed char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008928{
8929 return vec_perm((vector signed char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008930 vec_ld(__a, __b),
8931 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008932}
8933
8934static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008935vec_lvrx(int __a, const vector signed char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008936{
8937 return vec_perm((vector signed char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008938 vec_ld(__a, __b),
8939 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008940}
8941
8942static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008943vec_lvrx(int __a, const unsigned char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008944{
8945 return vec_perm((vector unsigned char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008946 vec_ld(__a, __b),
8947 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008948}
8949
8950static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008951vec_lvrx(int __a, const vector unsigned char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008952{
8953 return vec_perm((vector unsigned char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008954 vec_ld(__a, __b),
8955 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008956}
8957
8958static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008959vec_lvrx(int __a, const vector bool char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008960{
8961 return vec_perm((vector bool char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008962 vec_ld(__a, __b),
8963 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008964}
8965
8966static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008967vec_lvrx(int __a, const short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008968{
8969 return vec_perm((vector short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008970 vec_ld(__a, __b),
8971 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008972}
8973
8974static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008975vec_lvrx(int __a, const vector short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008976{
8977 return vec_perm((vector short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008978 vec_ld(__a, __b),
8979 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008980}
8981
8982static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008983vec_lvrx(int __a, const unsigned short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008984{
8985 return vec_perm((vector unsigned short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008986 vec_ld(__a, __b),
8987 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008988}
8989
8990static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008991vec_lvrx(int __a, const vector unsigned short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00008992{
8993 return vec_perm((vector unsigned short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00008994 vec_ld(__a, __b),
8995 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00008996}
8997
8998static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00008999vec_lvrx(int __a, const vector bool short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009000{
9001 return vec_perm((vector bool short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009002 vec_ld(__a, __b),
9003 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009004}
9005
9006static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009007vec_lvrx(int __a, const vector pixel *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009008{
9009 return vec_perm((vector pixel)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009010 vec_ld(__a, __b),
9011 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009012}
9013
9014static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009015vec_lvrx(int __a, const int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009016{
9017 return vec_perm((vector int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009018 vec_ld(__a, __b),
9019 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009020}
9021
9022static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009023vec_lvrx(int __a, const vector int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009024{
9025 return vec_perm((vector int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009026 vec_ld(__a, __b),
9027 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009028}
9029
9030static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009031vec_lvrx(int __a, const unsigned int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009032{
9033 return vec_perm((vector unsigned int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009034 vec_ld(__a, __b),
9035 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009036}
9037
9038static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009039vec_lvrx(int __a, const vector unsigned int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009040{
9041 return vec_perm((vector unsigned int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009042 vec_ld(__a, __b),
9043 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009044}
9045
9046static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009047vec_lvrx(int __a, const vector bool int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009048{
9049 return vec_perm((vector bool int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009050 vec_ld(__a, __b),
9051 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009052}
9053
9054static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009055vec_lvrx(int __a, const float *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009056{
9057 return vec_perm((vector float)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009058 vec_ld(__a, __b),
9059 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009060}
9061
9062static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009063vec_lvrx(int __a, const vector float *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009064{
9065 return vec_perm((vector float)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009066 vec_ld(__a, __b),
9067 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009068}
9069
9070/* vec_lvrxl */
9071
9072static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009073vec_lvrxl(int __a, const signed char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009074{
9075 return vec_perm((vector signed char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009076 vec_ldl(__a, __b),
9077 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009078}
9079
9080static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009081vec_lvrxl(int __a, const vector signed char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009082{
9083 return vec_perm((vector signed char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009084 vec_ldl(__a, __b),
9085 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009086}
9087
9088static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009089vec_lvrxl(int __a, const unsigned char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009090{
9091 return vec_perm((vector unsigned char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009092 vec_ldl(__a, __b),
9093 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009094}
9095
9096static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009097vec_lvrxl(int __a, const vector unsigned char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009098{
9099 return vec_perm((vector unsigned char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009100 vec_ldl(__a, __b),
9101 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009102}
9103
9104static vector bool char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009105vec_lvrxl(int __a, const vector bool char *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009106{
9107 return vec_perm((vector bool char)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009108 vec_ldl(__a, __b),
9109 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009110}
9111
9112static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009113vec_lvrxl(int __a, const short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009114{
9115 return vec_perm((vector short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009116 vec_ldl(__a, __b),
9117 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009118}
9119
9120static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009121vec_lvrxl(int __a, const vector short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009122{
9123 return vec_perm((vector short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009124 vec_ldl(__a, __b),
9125 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009126}
9127
9128static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009129vec_lvrxl(int __a, const unsigned short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009130{
9131 return vec_perm((vector unsigned short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009132 vec_ldl(__a, __b),
9133 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009134}
9135
9136static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009137vec_lvrxl(int __a, const vector unsigned short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009138{
9139 return vec_perm((vector unsigned short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009140 vec_ldl(__a, __b),
9141 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009142}
9143
9144static vector bool short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009145vec_lvrxl(int __a, const vector bool short *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009146{
9147 return vec_perm((vector bool short)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009148 vec_ldl(__a, __b),
9149 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009150}
9151
9152static vector pixel __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009153vec_lvrxl(int __a, const vector pixel *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009154{
9155 return vec_perm((vector pixel)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009156 vec_ldl(__a, __b),
9157 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009158}
9159
9160static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009161vec_lvrxl(int __a, const int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009162{
9163 return vec_perm((vector int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009164 vec_ldl(__a, __b),
9165 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009166}
9167
9168static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009169vec_lvrxl(int __a, const vector int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009170{
9171 return vec_perm((vector int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009172 vec_ldl(__a, __b),
9173 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009174}
9175
9176static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009177vec_lvrxl(int __a, const unsigned int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009178{
9179 return vec_perm((vector unsigned int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009180 vec_ldl(__a, __b),
9181 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009182}
9183
9184static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009185vec_lvrxl(int __a, const vector unsigned int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009186{
9187 return vec_perm((vector unsigned int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009188 vec_ldl(__a, __b),
9189 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009190}
9191
9192static vector bool int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009193vec_lvrxl(int __a, const vector bool int *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009194{
9195 return vec_perm((vector bool int)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009196 vec_ldl(__a, __b),
9197 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009198}
9199
9200static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009201vec_lvrxl(int __a, const float *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009202{
9203 return vec_perm((vector float)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009204 vec_ldl(__a, __b),
9205 vec_lvsl(__a, __b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009206}
9207
9208static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009209vec_lvrxl(int __a, const vector float *__b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009210{
9211 return vec_perm((vector float)(0),
David Blaikie4f918ae2013-01-16 23:08:36 +00009212 vec_ldl(__a, __b),
9213 vec_lvsl(__a, (unsigned char *)__b));
Anton Yartsev44270d62010-10-14 14:37:46 +00009214}
9215
9216/* vec_stvlx */
9217
9218static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009219vec_stvlx(vector signed char __a, int __b, signed char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009220{
David Blaikie4f918ae2013-01-16 23:08:36 +00009221 return vec_st(vec_perm(vec_lvrx(__b, __c),
9222 __a,
9223 vec_lvsr(__b, __c)),
9224 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009225}
9226
9227static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009228vec_stvlx(vector signed char __a, int __b, vector signed char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009229{
David Blaikie4f918ae2013-01-16 23:08:36 +00009230 return vec_st(vec_perm(vec_lvrx(__b, __c),
9231 __a,
9232 vec_lvsr(__b, (unsigned char *)__c)),
9233 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009234}
9235
9236static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009237vec_stvlx(vector unsigned char __a, int __b, unsigned char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009238{
David Blaikie4f918ae2013-01-16 23:08:36 +00009239 return vec_st(vec_perm(vec_lvrx(__b, __c),
9240 __a,
9241 vec_lvsr(__b, __c)),
9242 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009243}
9244
9245static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009246vec_stvlx(vector unsigned char __a, int __b, vector unsigned char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009247{
David Blaikie4f918ae2013-01-16 23:08:36 +00009248 return vec_st(vec_perm(vec_lvrx(__b, __c),
9249 __a,
9250 vec_lvsr(__b, (unsigned char *)__c)),
9251 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009252}
9253
9254static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009255vec_stvlx(vector bool char __a, int __b, vector bool char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009256{
David Blaikie4f918ae2013-01-16 23:08:36 +00009257 return vec_st(vec_perm(vec_lvrx(__b, __c),
9258 __a,
9259 vec_lvsr(__b, (unsigned char *)__c)),
9260 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009261}
9262
9263static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009264vec_stvlx(vector short __a, int __b, short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009265{
David Blaikie4f918ae2013-01-16 23:08:36 +00009266 return vec_st(vec_perm(vec_lvrx(__b, __c),
9267 __a,
9268 vec_lvsr(__b, __c)),
9269 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009270}
9271
9272static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009273vec_stvlx(vector short __a, int __b, vector short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009274{
David Blaikie4f918ae2013-01-16 23:08:36 +00009275 return vec_st(vec_perm(vec_lvrx(__b, __c),
9276 __a,
9277 vec_lvsr(__b, (unsigned char *)__c)),
9278 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009279}
9280
9281static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009282vec_stvlx(vector unsigned short __a, int __b, unsigned short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009283{
David Blaikie4f918ae2013-01-16 23:08:36 +00009284 return vec_st(vec_perm(vec_lvrx(__b, __c),
9285 __a,
9286 vec_lvsr(__b, __c)),
9287 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009288}
9289
9290static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009291vec_stvlx(vector unsigned short __a, int __b, vector unsigned short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009292{
David Blaikie4f918ae2013-01-16 23:08:36 +00009293 return vec_st(vec_perm(vec_lvrx(__b, __c),
9294 __a,
9295 vec_lvsr(__b, (unsigned char *)__c)),
9296 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009297}
9298
9299static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009300vec_stvlx(vector bool short __a, int __b, vector bool short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009301{
David Blaikie4f918ae2013-01-16 23:08:36 +00009302 return vec_st(vec_perm(vec_lvrx(__b, __c),
9303 __a,
9304 vec_lvsr(__b, (unsigned char *)__c)),
9305 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009306}
9307
9308static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009309vec_stvlx(vector pixel __a, int __b, vector pixel *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009310{
David Blaikie4f918ae2013-01-16 23:08:36 +00009311 return vec_st(vec_perm(vec_lvrx(__b, __c),
9312 __a,
9313 vec_lvsr(__b, (unsigned char *)__c)),
9314 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009315}
9316
9317static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009318vec_stvlx(vector int __a, int __b, int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009319{
David Blaikie4f918ae2013-01-16 23:08:36 +00009320 return vec_st(vec_perm(vec_lvrx(__b, __c),
9321 __a,
9322 vec_lvsr(__b, __c)),
9323 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009324}
9325
9326static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009327vec_stvlx(vector int __a, int __b, vector int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009328{
David Blaikie4f918ae2013-01-16 23:08:36 +00009329 return vec_st(vec_perm(vec_lvrx(__b, __c),
9330 __a,
9331 vec_lvsr(__b, (unsigned char *)__c)),
9332 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009333}
9334
9335static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009336vec_stvlx(vector unsigned int __a, int __b, unsigned int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009337{
David Blaikie4f918ae2013-01-16 23:08:36 +00009338 return vec_st(vec_perm(vec_lvrx(__b, __c),
9339 __a,
9340 vec_lvsr(__b, __c)),
9341 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009342}
9343
9344static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009345vec_stvlx(vector unsigned int __a, int __b, vector unsigned int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009346{
David Blaikie4f918ae2013-01-16 23:08:36 +00009347 return vec_st(vec_perm(vec_lvrx(__b, __c),
9348 __a,
9349 vec_lvsr(__b, (unsigned char *)__c)),
9350 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009351}
9352
9353static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009354vec_stvlx(vector bool int __a, int __b, vector bool int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009355{
David Blaikie4f918ae2013-01-16 23:08:36 +00009356 return vec_st(vec_perm(vec_lvrx(__b, __c),
9357 __a,
9358 vec_lvsr(__b, (unsigned char *)__c)),
9359 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009360}
9361
9362static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009363vec_stvlx(vector float __a, int __b, vector float *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009364{
David Blaikie4f918ae2013-01-16 23:08:36 +00009365 return vec_st(vec_perm(vec_lvrx(__b, __c),
9366 __a,
9367 vec_lvsr(__b, (unsigned char *)__c)),
9368 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009369}
9370
9371/* vec_stvlxl */
9372
9373static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009374vec_stvlxl(vector signed char __a, int __b, signed char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009375{
David Blaikie4f918ae2013-01-16 23:08:36 +00009376 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9377 __a,
9378 vec_lvsr(__b, __c)),
9379 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009380}
9381
9382static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009383vec_stvlxl(vector signed char __a, int __b, vector signed char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009384{
David Blaikie4f918ae2013-01-16 23:08:36 +00009385 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9386 __a,
9387 vec_lvsr(__b, (unsigned char *)__c)),
9388 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009389}
9390
9391static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009392vec_stvlxl(vector unsigned char __a, int __b, unsigned char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009393{
David Blaikie4f918ae2013-01-16 23:08:36 +00009394 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9395 __a,
9396 vec_lvsr(__b, __c)),
9397 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009398}
9399
9400static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009401vec_stvlxl(vector unsigned char __a, int __b, vector unsigned char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009402{
David Blaikie4f918ae2013-01-16 23:08:36 +00009403 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9404 __a,
9405 vec_lvsr(__b, (unsigned char *)__c)),
9406 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009407}
9408
9409static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009410vec_stvlxl(vector bool char __a, int __b, vector bool char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009411{
David Blaikie4f918ae2013-01-16 23:08:36 +00009412 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9413 __a,
9414 vec_lvsr(__b, (unsigned char *)__c)),
9415 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009416}
9417
9418static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009419vec_stvlxl(vector short __a, int __b, short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009420{
David Blaikie4f918ae2013-01-16 23:08:36 +00009421 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9422 __a,
9423 vec_lvsr(__b, __c)),
9424 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009425}
9426
9427static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009428vec_stvlxl(vector short __a, int __b, vector short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009429{
David Blaikie4f918ae2013-01-16 23:08:36 +00009430 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9431 __a,
9432 vec_lvsr(__b, (unsigned char *)__c)),
9433 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009434}
9435
9436static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009437vec_stvlxl(vector unsigned short __a, int __b, unsigned short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009438{
David Blaikie4f918ae2013-01-16 23:08:36 +00009439 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9440 __a,
9441 vec_lvsr(__b, __c)),
9442 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009443}
9444
9445static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009446vec_stvlxl(vector unsigned short __a, int __b, vector unsigned short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009447{
David Blaikie4f918ae2013-01-16 23:08:36 +00009448 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9449 __a,
9450 vec_lvsr(__b, (unsigned char *)__c)),
9451 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009452}
9453
9454static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009455vec_stvlxl(vector bool short __a, int __b, vector bool short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009456{
David Blaikie4f918ae2013-01-16 23:08:36 +00009457 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9458 __a,
9459 vec_lvsr(__b, (unsigned char *)__c)),
9460 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009461}
9462
9463static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009464vec_stvlxl(vector pixel __a, int __b, vector pixel *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009465{
David Blaikie4f918ae2013-01-16 23:08:36 +00009466 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9467 __a,
9468 vec_lvsr(__b, (unsigned char *)__c)),
9469 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009470}
9471
9472static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009473vec_stvlxl(vector int __a, int __b, int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009474{
David Blaikie4f918ae2013-01-16 23:08:36 +00009475 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9476 __a,
9477 vec_lvsr(__b, __c)),
9478 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009479}
9480
9481static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009482vec_stvlxl(vector int __a, int __b, vector int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009483{
David Blaikie4f918ae2013-01-16 23:08:36 +00009484 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9485 __a,
9486 vec_lvsr(__b, (unsigned char *)__c)),
9487 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009488}
9489
9490static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009491vec_stvlxl(vector unsigned int __a, int __b, unsigned int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009492{
David Blaikie4f918ae2013-01-16 23:08:36 +00009493 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9494 __a,
9495 vec_lvsr(__b, __c)),
9496 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009497}
9498
9499static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009500vec_stvlxl(vector unsigned int __a, int __b, vector unsigned int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009501{
David Blaikie4f918ae2013-01-16 23:08:36 +00009502 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9503 __a,
9504 vec_lvsr(__b, (unsigned char *)__c)),
9505 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009506}
9507
9508static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009509vec_stvlxl(vector bool int __a, int __b, vector bool int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009510{
David Blaikie4f918ae2013-01-16 23:08:36 +00009511 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9512 __a,
9513 vec_lvsr(__b, (unsigned char *)__c)),
9514 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009515}
9516
9517static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009518vec_stvlxl(vector float __a, int __b, vector float *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009519{
David Blaikie4f918ae2013-01-16 23:08:36 +00009520 return vec_stl(vec_perm(vec_lvrx(__b, __c),
9521 __a,
9522 vec_lvsr(__b, (unsigned char *)__c)),
9523 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009524}
9525
9526/* vec_stvrx */
9527
9528static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009529vec_stvrx(vector signed char __a, int __b, signed char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009530{
David Blaikie4f918ae2013-01-16 23:08:36 +00009531 return vec_st(vec_perm(__a,
9532 vec_lvlx(__b, __c),
9533 vec_lvsr(__b, __c)),
9534 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009535}
9536
9537static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009538vec_stvrx(vector signed char __a, int __b, vector signed char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009539{
David Blaikie4f918ae2013-01-16 23:08:36 +00009540 return vec_st(vec_perm(__a,
9541 vec_lvlx(__b, __c),
9542 vec_lvsr(__b, (unsigned char *)__c)),
9543 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009544}
9545
9546static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009547vec_stvrx(vector unsigned char __a, int __b, unsigned char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009548{
David Blaikie4f918ae2013-01-16 23:08:36 +00009549 return vec_st(vec_perm(__a,
9550 vec_lvlx(__b, __c),
9551 vec_lvsr(__b, __c)),
9552 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009553}
9554
9555static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009556vec_stvrx(vector unsigned char __a, int __b, vector unsigned char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009557{
David Blaikie4f918ae2013-01-16 23:08:36 +00009558 return vec_st(vec_perm(__a,
9559 vec_lvlx(__b, __c),
9560 vec_lvsr(__b, (unsigned char *)__c)),
9561 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009562}
9563
9564static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009565vec_stvrx(vector bool char __a, int __b, vector bool char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009566{
David Blaikie4f918ae2013-01-16 23:08:36 +00009567 return vec_st(vec_perm(__a,
9568 vec_lvlx(__b, __c),
9569 vec_lvsr(__b, (unsigned char *)__c)),
9570 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009571}
9572
9573static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009574vec_stvrx(vector short __a, int __b, short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009575{
David Blaikie4f918ae2013-01-16 23:08:36 +00009576 return vec_st(vec_perm(__a,
9577 vec_lvlx(__b, __c),
9578 vec_lvsr(__b, __c)),
9579 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009580}
9581
9582static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009583vec_stvrx(vector short __a, int __b, vector short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009584{
David Blaikie4f918ae2013-01-16 23:08:36 +00009585 return vec_st(vec_perm(__a,
9586 vec_lvlx(__b, __c),
9587 vec_lvsr(__b, (unsigned char *)__c)),
9588 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009589}
9590
9591static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009592vec_stvrx(vector unsigned short __a, int __b, unsigned short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009593{
David Blaikie4f918ae2013-01-16 23:08:36 +00009594 return vec_st(vec_perm(__a,
9595 vec_lvlx(__b, __c),
9596 vec_lvsr(__b, __c)),
9597 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009598}
9599
9600static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009601vec_stvrx(vector unsigned short __a, int __b, vector unsigned short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009602{
David Blaikie4f918ae2013-01-16 23:08:36 +00009603 return vec_st(vec_perm(__a,
9604 vec_lvlx(__b, __c),
9605 vec_lvsr(__b, (unsigned char *)__c)),
9606 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009607}
9608
9609static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009610vec_stvrx(vector bool short __a, int __b, vector bool short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009611{
David Blaikie4f918ae2013-01-16 23:08:36 +00009612 return vec_st(vec_perm(__a,
9613 vec_lvlx(__b, __c),
9614 vec_lvsr(__b, (unsigned char *)__c)),
9615 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009616}
9617
9618static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009619vec_stvrx(vector pixel __a, int __b, vector pixel *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009620{
David Blaikie4f918ae2013-01-16 23:08:36 +00009621 return vec_st(vec_perm(__a,
9622 vec_lvlx(__b, __c),
9623 vec_lvsr(__b, (unsigned char *)__c)),
9624 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009625}
9626
9627static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009628vec_stvrx(vector int __a, int __b, int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009629{
David Blaikie4f918ae2013-01-16 23:08:36 +00009630 return vec_st(vec_perm(__a,
9631 vec_lvlx(__b, __c),
9632 vec_lvsr(__b, __c)),
9633 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009634}
9635
9636static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009637vec_stvrx(vector int __a, int __b, vector int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009638{
David Blaikie4f918ae2013-01-16 23:08:36 +00009639 return vec_st(vec_perm(__a,
9640 vec_lvlx(__b, __c),
9641 vec_lvsr(__b, (unsigned char *)__c)),
9642 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009643}
9644
9645static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009646vec_stvrx(vector unsigned int __a, int __b, unsigned int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009647{
David Blaikie4f918ae2013-01-16 23:08:36 +00009648 return vec_st(vec_perm(__a,
9649 vec_lvlx(__b, __c),
9650 vec_lvsr(__b, __c)),
9651 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009652}
9653
9654static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009655vec_stvrx(vector unsigned int __a, int __b, vector unsigned int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009656{
David Blaikie4f918ae2013-01-16 23:08:36 +00009657 return vec_st(vec_perm(__a,
9658 vec_lvlx(__b, __c),
9659 vec_lvsr(__b, (unsigned char *)__c)),
9660 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009661}
9662
9663static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009664vec_stvrx(vector bool int __a, int __b, vector bool int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009665{
David Blaikie4f918ae2013-01-16 23:08:36 +00009666 return vec_st(vec_perm(__a,
9667 vec_lvlx(__b, __c),
9668 vec_lvsr(__b, (unsigned char *)__c)),
9669 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009670}
9671
9672static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009673vec_stvrx(vector float __a, int __b, vector float *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009674{
David Blaikie4f918ae2013-01-16 23:08:36 +00009675 return vec_st(vec_perm(__a,
9676 vec_lvlx(__b, __c),
9677 vec_lvsr(__b, (unsigned char *)__c)),
9678 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009679}
9680
9681/* vec_stvrxl */
9682
9683static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009684vec_stvrxl(vector signed char __a, int __b, signed char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009685{
David Blaikie4f918ae2013-01-16 23:08:36 +00009686 return vec_stl(vec_perm(__a,
9687 vec_lvlx(__b, __c),
9688 vec_lvsr(__b, __c)),
9689 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009690}
9691
9692static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009693vec_stvrxl(vector signed char __a, int __b, vector signed char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009694{
David Blaikie4f918ae2013-01-16 23:08:36 +00009695 return vec_stl(vec_perm(__a,
9696 vec_lvlx(__b, __c),
9697 vec_lvsr(__b, (unsigned char *)__c)),
9698 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009699}
9700
9701static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009702vec_stvrxl(vector unsigned char __a, int __b, unsigned char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009703{
David Blaikie4f918ae2013-01-16 23:08:36 +00009704 return vec_stl(vec_perm(__a,
9705 vec_lvlx(__b, __c),
9706 vec_lvsr(__b, __c)),
9707 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009708}
9709
9710static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009711vec_stvrxl(vector unsigned char __a, int __b, vector unsigned char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009712{
David Blaikie4f918ae2013-01-16 23:08:36 +00009713 return vec_stl(vec_perm(__a,
9714 vec_lvlx(__b, __c),
9715 vec_lvsr(__b, (unsigned char *)__c)),
9716 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009717}
9718
9719static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009720vec_stvrxl(vector bool char __a, int __b, vector bool char *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009721{
David Blaikie4f918ae2013-01-16 23:08:36 +00009722 return vec_stl(vec_perm(__a,
9723 vec_lvlx(__b, __c),
9724 vec_lvsr(__b, (unsigned char *)__c)),
9725 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009726}
9727
9728static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009729vec_stvrxl(vector short __a, int __b, short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009730{
David Blaikie4f918ae2013-01-16 23:08:36 +00009731 return vec_stl(vec_perm(__a,
9732 vec_lvlx(__b, __c),
9733 vec_lvsr(__b, __c)),
9734 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009735}
9736
9737static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009738vec_stvrxl(vector short __a, int __b, vector short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009739{
David Blaikie4f918ae2013-01-16 23:08:36 +00009740 return vec_stl(vec_perm(__a,
9741 vec_lvlx(__b, __c),
9742 vec_lvsr(__b, (unsigned char *)__c)),
9743 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009744}
9745
9746static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009747vec_stvrxl(vector unsigned short __a, int __b, unsigned short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009748{
David Blaikie4f918ae2013-01-16 23:08:36 +00009749 return vec_stl(vec_perm(__a,
9750 vec_lvlx(__b, __c),
9751 vec_lvsr(__b, __c)),
9752 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009753}
9754
9755static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009756vec_stvrxl(vector unsigned short __a, int __b, vector unsigned short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009757{
David Blaikie4f918ae2013-01-16 23:08:36 +00009758 return vec_stl(vec_perm(__a,
9759 vec_lvlx(__b, __c),
9760 vec_lvsr(__b, (unsigned char *)__c)),
9761 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009762}
9763
9764static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009765vec_stvrxl(vector bool short __a, int __b, vector bool short *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009766{
David Blaikie4f918ae2013-01-16 23:08:36 +00009767 return vec_stl(vec_perm(__a,
9768 vec_lvlx(__b, __c),
9769 vec_lvsr(__b, (unsigned char *)__c)),
9770 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009771}
9772
9773static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009774vec_stvrxl(vector pixel __a, int __b, vector pixel *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009775{
David Blaikie4f918ae2013-01-16 23:08:36 +00009776 return vec_stl(vec_perm(__a,
9777 vec_lvlx(__b, __c),
9778 vec_lvsr(__b, (unsigned char *)__c)),
9779 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009780}
9781
9782static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009783vec_stvrxl(vector int __a, int __b, int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009784{
David Blaikie4f918ae2013-01-16 23:08:36 +00009785 return vec_stl(vec_perm(__a,
9786 vec_lvlx(__b, __c),
9787 vec_lvsr(__b, __c)),
9788 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009789}
9790
9791static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009792vec_stvrxl(vector int __a, int __b, vector int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009793{
David Blaikie4f918ae2013-01-16 23:08:36 +00009794 return vec_stl(vec_perm(__a,
9795 vec_lvlx(__b, __c),
9796 vec_lvsr(__b, (unsigned char *)__c)),
9797 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009798}
9799
9800static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009801vec_stvrxl(vector unsigned int __a, int __b, unsigned int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009802{
David Blaikie4f918ae2013-01-16 23:08:36 +00009803 return vec_stl(vec_perm(__a,
9804 vec_lvlx(__b, __c),
9805 vec_lvsr(__b, __c)),
9806 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009807}
9808
9809static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009810vec_stvrxl(vector unsigned int __a, int __b, vector unsigned int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009811{
David Blaikie4f918ae2013-01-16 23:08:36 +00009812 return vec_stl(vec_perm(__a,
9813 vec_lvlx(__b, __c),
9814 vec_lvsr(__b, (unsigned char *)__c)),
9815 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009816}
9817
9818static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009819vec_stvrxl(vector bool int __a, int __b, vector bool int *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009820{
David Blaikie4f918ae2013-01-16 23:08:36 +00009821 return vec_stl(vec_perm(__a,
9822 vec_lvlx(__b, __c),
9823 vec_lvsr(__b, (unsigned char *)__c)),
9824 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009825}
9826
9827static void __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009828vec_stvrxl(vector float __a, int __b, vector float *__c)
Anton Yartsev44270d62010-10-14 14:37:46 +00009829{
David Blaikie4f918ae2013-01-16 23:08:36 +00009830 return vec_stl(vec_perm(__a,
9831 vec_lvlx(__b, __c),
9832 vec_lvsr(__b, (unsigned char *)__c)),
9833 __b, __c);
Anton Yartsev44270d62010-10-14 14:37:46 +00009834}
9835
9836/* vec_promote */
9837
9838static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009839vec_promote(signed char __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009840{
David Blaikie4f918ae2013-01-16 23:08:36 +00009841 vector signed char __res = (vector signed char)(0);
9842 __res[__b] = __a;
9843 return __res;
Anton Yartsev44270d62010-10-14 14:37:46 +00009844}
9845
9846static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009847vec_promote(unsigned char __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009848{
David Blaikie4f918ae2013-01-16 23:08:36 +00009849 vector unsigned char __res = (vector unsigned char)(0);
9850 __res[__b] = __a;
9851 return __res;
Anton Yartsev44270d62010-10-14 14:37:46 +00009852}
9853
9854static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009855vec_promote(short __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009856{
David Blaikie4f918ae2013-01-16 23:08:36 +00009857 vector short __res = (vector short)(0);
9858 __res[__b] = __a;
9859 return __res;
Anton Yartsev44270d62010-10-14 14:37:46 +00009860}
9861
9862static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009863vec_promote(unsigned short __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009864{
David Blaikie4f918ae2013-01-16 23:08:36 +00009865 vector unsigned short __res = (vector unsigned short)(0);
9866 __res[__b] = __a;
9867 return __res;
Anton Yartsev44270d62010-10-14 14:37:46 +00009868}
9869
9870static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009871vec_promote(int __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009872{
David Blaikie4f918ae2013-01-16 23:08:36 +00009873 vector int __res = (vector int)(0);
9874 __res[__b] = __a;
9875 return __res;
Anton Yartsev44270d62010-10-14 14:37:46 +00009876}
9877
9878static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009879vec_promote(unsigned int __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009880{
David Blaikie4f918ae2013-01-16 23:08:36 +00009881 vector unsigned int __res = (vector unsigned int)(0);
9882 __res[__b] = __a;
9883 return __res;
Anton Yartsev44270d62010-10-14 14:37:46 +00009884}
9885
9886static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009887vec_promote(float __a, int __b)
Anton Yartsev44270d62010-10-14 14:37:46 +00009888{
David Blaikie4f918ae2013-01-16 23:08:36 +00009889 vector float __res = (vector float)(0);
9890 __res[__b] = __a;
9891 return __res;
Anton Yartsev44270d62010-10-14 14:37:46 +00009892}
9893
9894/* vec_splats */
9895
9896static vector signed char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009897vec_splats(signed char __a)
Anton Yartsev44270d62010-10-14 14:37:46 +00009898{
David Blaikie4f918ae2013-01-16 23:08:36 +00009899 return (vector signed char)(__a);
Anton Yartsev44270d62010-10-14 14:37:46 +00009900}
9901
9902static vector unsigned char __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009903vec_splats(unsigned char __a)
Anton Yartsev44270d62010-10-14 14:37:46 +00009904{
David Blaikie4f918ae2013-01-16 23:08:36 +00009905 return (vector unsigned char)(__a);
Anton Yartsev44270d62010-10-14 14:37:46 +00009906}
9907
9908static vector short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009909vec_splats(short __a)
Anton Yartsev44270d62010-10-14 14:37:46 +00009910{
David Blaikie4f918ae2013-01-16 23:08:36 +00009911 return (vector short)(__a);
Anton Yartsev44270d62010-10-14 14:37:46 +00009912}
9913
9914static vector unsigned short __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009915vec_splats(unsigned short __a)
Anton Yartsev44270d62010-10-14 14:37:46 +00009916{
David Blaikie4f918ae2013-01-16 23:08:36 +00009917 return (vector unsigned short)(__a);
Anton Yartsev44270d62010-10-14 14:37:46 +00009918}
9919
9920static vector int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009921vec_splats(int __a)
Anton Yartsev44270d62010-10-14 14:37:46 +00009922{
David Blaikie4f918ae2013-01-16 23:08:36 +00009923 return (vector int)(__a);
Anton Yartsev44270d62010-10-14 14:37:46 +00009924}
9925
9926static vector unsigned int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009927vec_splats(unsigned int __a)
Anton Yartsev44270d62010-10-14 14:37:46 +00009928{
David Blaikie4f918ae2013-01-16 23:08:36 +00009929 return (vector unsigned int)(__a);
Anton Yartsev44270d62010-10-14 14:37:46 +00009930}
9931
9932static vector float __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009933vec_splats(float __a)
Anton Yartsev44270d62010-10-14 14:37:46 +00009934{
David Blaikie4f918ae2013-01-16 23:08:36 +00009935 return (vector float)(__a);
Anton Yartsev44270d62010-10-14 14:37:46 +00009936}
9937
Anton Yartsev3ed32722010-09-18 00:39:16 +00009938/* ----------------------------- predicates --------------------------------- */
Chris Lattnerdd173942010-04-14 03:54:58 +00009939
Chris Lattnerdd173942010-04-14 03:54:58 +00009940/* vec_all_eq */
9941
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00009942static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009943vec_all_eq(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00009944{
David Blaikie4f918ae2013-01-16 23:08:36 +00009945 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +00009946}
9947
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00009948static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009949vec_all_eq(vector signed char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +00009950{
David Blaikie4f918ae2013-01-16 23:08:36 +00009951 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +00009952}
9953
9954static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009955vec_all_eq(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00009956{
David Blaikie4f918ae2013-01-16 23:08:36 +00009957 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +00009958}
9959
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00009960static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009961vec_all_eq(vector unsigned char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +00009962{
David Blaikie4f918ae2013-01-16 23:08:36 +00009963 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +00009964}
9965
9966static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009967vec_all_eq(vector bool char __a, vector signed char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +00009968{
David Blaikie4f918ae2013-01-16 23:08:36 +00009969 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +00009970}
9971
9972static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009973vec_all_eq(vector bool char __a, vector unsigned char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +00009974{
David Blaikie4f918ae2013-01-16 23:08:36 +00009975 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +00009976}
9977
9978static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009979vec_all_eq(vector bool char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +00009980{
David Blaikie4f918ae2013-01-16 23:08:36 +00009981 return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +00009982}
9983
9984static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009985vec_all_eq(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00009986{
David Blaikie4f918ae2013-01-16 23:08:36 +00009987 return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +00009988}
9989
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +00009990static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009991vec_all_eq(vector short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +00009992{
David Blaikie4f918ae2013-01-16 23:08:36 +00009993 return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +00009994}
9995
9996static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +00009997vec_all_eq(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +00009998{
Anton Yartsev3ed32722010-09-18 00:39:16 +00009999 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010000 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010001}
10002
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010003static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010004vec_all_eq(vector unsigned short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010005{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010006 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010007 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010008}
10009
10010static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010011vec_all_eq(vector bool short __a, vector short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010012{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010013 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010014 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010015}
10016
10017static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010018vec_all_eq(vector bool short __a, vector unsigned short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010019{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010020 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010021 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010022}
10023
10024static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010025vec_all_eq(vector bool short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010026{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010027 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010028 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010029}
10030
10031static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010032vec_all_eq(vector pixel __a, vector pixel __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010033{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010034 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010035 __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010036}
10037
10038static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010039vec_all_eq(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010040{
David Blaikie4f918ae2013-01-16 23:08:36 +000010041 return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010042}
10043
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010044static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010045vec_all_eq(vector int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010046{
David Blaikie4f918ae2013-01-16 23:08:36 +000010047 return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010048}
10049
10050static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010051vec_all_eq(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010052{
David Blaikie4f918ae2013-01-16 23:08:36 +000010053 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010054}
10055
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010056static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010057vec_all_eq(vector unsigned int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010058{
David Blaikie4f918ae2013-01-16 23:08:36 +000010059 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010060}
10061
10062static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010063vec_all_eq(vector bool int __a, vector int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010064{
David Blaikie4f918ae2013-01-16 23:08:36 +000010065 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010066}
10067
10068static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010069vec_all_eq(vector bool int __a, vector unsigned int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010070{
David Blaikie4f918ae2013-01-16 23:08:36 +000010071 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010072}
10073
10074static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010075vec_all_eq(vector bool int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010076{
David Blaikie4f918ae2013-01-16 23:08:36 +000010077 return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010078}
10079
10080static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010081vec_all_eq(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010082{
David Blaikie4f918ae2013-01-16 23:08:36 +000010083 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010084}
10085
10086/* vec_all_ge */
10087
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010088static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010089vec_all_ge(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010090{
David Blaikie4f918ae2013-01-16 23:08:36 +000010091 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010092}
10093
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010094static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010095vec_all_ge(vector signed char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010096{
David Blaikie4f918ae2013-01-16 23:08:36 +000010097 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010098}
10099
10100static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010101vec_all_ge(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010102{
David Blaikie4f918ae2013-01-16 23:08:36 +000010103 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010104}
10105
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010106static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010107vec_all_ge(vector unsigned char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010108{
David Blaikie4f918ae2013-01-16 23:08:36 +000010109 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010110}
10111
10112static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010113vec_all_ge(vector bool char __a, vector signed char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010114{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010115 return __builtin_altivec_vcmpgtub_p(__CR6_EQ,
David Blaikie4f918ae2013-01-16 23:08:36 +000010116 (vector unsigned char)__b,
10117 (vector unsigned char)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010118}
10119
10120static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010121vec_all_ge(vector bool char __a, vector unsigned char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010122{
David Blaikie4f918ae2013-01-16 23:08:36 +000010123 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010124}
10125
10126static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010127vec_all_ge(vector bool char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010128{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010129 return __builtin_altivec_vcmpgtub_p(__CR6_EQ,
David Blaikie4f918ae2013-01-16 23:08:36 +000010130 (vector unsigned char)__b,
10131 (vector unsigned char)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010132}
10133
10134static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010135vec_all_ge(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010136{
David Blaikie4f918ae2013-01-16 23:08:36 +000010137 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010138}
10139
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010140static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010141vec_all_ge(vector short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010142{
David Blaikie4f918ae2013-01-16 23:08:36 +000010143 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010144}
10145
10146static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010147vec_all_ge(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010148{
David Blaikie4f918ae2013-01-16 23:08:36 +000010149 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010150}
10151
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010152static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010153vec_all_ge(vector unsigned short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010154{
David Blaikie4f918ae2013-01-16 23:08:36 +000010155 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010156}
10157
10158static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010159vec_all_ge(vector bool short __a, vector short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010160{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010161 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ,
David Blaikie4f918ae2013-01-16 23:08:36 +000010162 (vector unsigned short)__b,
10163 (vector unsigned short)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010164}
10165
10166static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010167vec_all_ge(vector bool short __a, vector unsigned short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010168{
David Blaikie4f918ae2013-01-16 23:08:36 +000010169 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, (vector unsigned short)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010170}
10171
10172static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010173vec_all_ge(vector bool short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010174{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010175 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ,
David Blaikie4f918ae2013-01-16 23:08:36 +000010176 (vector unsigned short)__b,
10177 (vector unsigned short)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010178}
10179
10180static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010181vec_all_ge(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010182{
David Blaikie4f918ae2013-01-16 23:08:36 +000010183 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010184}
10185
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010186static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010187vec_all_ge(vector int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010188{
David Blaikie4f918ae2013-01-16 23:08:36 +000010189 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010190}
10191
10192static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010193vec_all_ge(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010194{
David Blaikie4f918ae2013-01-16 23:08:36 +000010195 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010196}
10197
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010198static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010199vec_all_ge(vector unsigned int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010200{
David Blaikie4f918ae2013-01-16 23:08:36 +000010201 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010202}
10203
10204static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010205vec_all_ge(vector bool int __a, vector int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010206{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010207 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ,
David Blaikie4f918ae2013-01-16 23:08:36 +000010208 (vector unsigned int)__b,
10209 (vector unsigned int)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010210}
10211
10212static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010213vec_all_ge(vector bool int __a, vector unsigned int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010214{
David Blaikie4f918ae2013-01-16 23:08:36 +000010215 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010216}
10217
10218static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010219vec_all_ge(vector bool int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010220{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010221 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ,
David Blaikie4f918ae2013-01-16 23:08:36 +000010222 (vector unsigned int)__b,
10223 (vector unsigned int)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010224}
10225
10226static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010227vec_all_ge(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010228{
David Blaikie4f918ae2013-01-16 23:08:36 +000010229 return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010230}
10231
10232/* vec_all_gt */
10233
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010234static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010235vec_all_gt(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010236{
David Blaikie4f918ae2013-01-16 23:08:36 +000010237 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010238}
10239
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010240static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010241vec_all_gt(vector signed char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010242{
David Blaikie4f918ae2013-01-16 23:08:36 +000010243 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010244}
10245
10246static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010247vec_all_gt(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010248{
David Blaikie4f918ae2013-01-16 23:08:36 +000010249 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010250}
10251
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010252static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010253vec_all_gt(vector unsigned char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010254{
David Blaikie4f918ae2013-01-16 23:08:36 +000010255 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010256}
10257
10258static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010259vec_all_gt(vector bool char __a, vector signed char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010260{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010261 return __builtin_altivec_vcmpgtub_p(__CR6_LT,
David Blaikie4f918ae2013-01-16 23:08:36 +000010262 (vector unsigned char)__a,
10263 (vector unsigned char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010264}
10265
10266static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010267vec_all_gt(vector bool char __a, vector unsigned char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010268{
David Blaikie4f918ae2013-01-16 23:08:36 +000010269 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010270}
10271
10272static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010273vec_all_gt(vector bool char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010274{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010275 return __builtin_altivec_vcmpgtub_p(__CR6_LT,
David Blaikie4f918ae2013-01-16 23:08:36 +000010276 (vector unsigned char)__a,
10277 (vector unsigned char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010278}
10279
10280static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010281vec_all_gt(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010282{
David Blaikie4f918ae2013-01-16 23:08:36 +000010283 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010284}
10285
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010286static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010287vec_all_gt(vector short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010288{
David Blaikie4f918ae2013-01-16 23:08:36 +000010289 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010290}
10291
10292static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010293vec_all_gt(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010294{
David Blaikie4f918ae2013-01-16 23:08:36 +000010295 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010296}
10297
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010298static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010299vec_all_gt(vector unsigned short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010300{
David Blaikie4f918ae2013-01-16 23:08:36 +000010301 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, (vector unsigned short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010302}
10303
10304static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010305vec_all_gt(vector bool short __a, vector short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010306{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010307 return __builtin_altivec_vcmpgtuh_p(__CR6_LT,
David Blaikie4f918ae2013-01-16 23:08:36 +000010308 (vector unsigned short)__a,
10309 (vector unsigned short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010310}
10311
10312static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010313vec_all_gt(vector bool short __a, vector unsigned short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010314{
David Blaikie4f918ae2013-01-16 23:08:36 +000010315 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a, __b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010316}
10317
10318static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010319vec_all_gt(vector bool short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010320{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010321 return __builtin_altivec_vcmpgtuh_p(__CR6_LT,
David Blaikie4f918ae2013-01-16 23:08:36 +000010322 (vector unsigned short)__a,
10323 (vector unsigned short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010324}
10325
10326static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010327vec_all_gt(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010328{
David Blaikie4f918ae2013-01-16 23:08:36 +000010329 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010330}
10331
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010332static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010333vec_all_gt(vector int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010334{
David Blaikie4f918ae2013-01-16 23:08:36 +000010335 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010336}
10337
10338static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010339vec_all_gt(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010340{
David Blaikie4f918ae2013-01-16 23:08:36 +000010341 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010342}
10343
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010344static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010345vec_all_gt(vector unsigned int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010346{
David Blaikie4f918ae2013-01-16 23:08:36 +000010347 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010348}
10349
10350static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010351vec_all_gt(vector bool int __a, vector int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010352{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010353 return __builtin_altivec_vcmpgtuw_p(__CR6_LT,
David Blaikie4f918ae2013-01-16 23:08:36 +000010354 (vector unsigned int)__a,
10355 (vector unsigned int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010356}
10357
10358static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010359vec_all_gt(vector bool int __a, vector unsigned int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010360{
David Blaikie4f918ae2013-01-16 23:08:36 +000010361 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010362}
10363
10364static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010365vec_all_gt(vector bool int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010366{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010367 return __builtin_altivec_vcmpgtuw_p(__CR6_LT,
David Blaikie4f918ae2013-01-16 23:08:36 +000010368 (vector unsigned int)__a,
10369 (vector unsigned int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010370}
10371
10372static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010373vec_all_gt(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010374{
David Blaikie4f918ae2013-01-16 23:08:36 +000010375 return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010376}
10377
10378/* vec_all_in */
10379
10380static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000010381vec_all_in(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010382{
David Blaikie4f918ae2013-01-16 23:08:36 +000010383 return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010384}
10385
10386/* vec_all_le */
10387
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010388static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010389vec_all_le(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010390{
David Blaikie4f918ae2013-01-16 23:08:36 +000010391 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010392}
10393
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010394static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010395vec_all_le(vector signed char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010396{
David Blaikie4f918ae2013-01-16 23:08:36 +000010397 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010398}
10399
10400static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010401vec_all_le(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010402{
David Blaikie4f918ae2013-01-16 23:08:36 +000010403 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010404}
10405
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010406static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010407vec_all_le(vector unsigned char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010408{
David Blaikie4f918ae2013-01-16 23:08:36 +000010409 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010410}
10411
10412static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010413vec_all_le(vector bool char __a, vector signed char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010414{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010415 return __builtin_altivec_vcmpgtub_p(__CR6_EQ,
David Blaikie4f918ae2013-01-16 23:08:36 +000010416 (vector unsigned char)__a,
10417 (vector unsigned char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010418}
10419
10420static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010421vec_all_le(vector bool char __a, vector unsigned char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010422{
David Blaikie4f918ae2013-01-16 23:08:36 +000010423 return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010424}
10425
10426static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010427vec_all_le(vector bool char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010428{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010429 return __builtin_altivec_vcmpgtub_p(__CR6_EQ,
David Blaikie4f918ae2013-01-16 23:08:36 +000010430 (vector unsigned char)__a,
10431 (vector unsigned char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010432}
10433
10434static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010435vec_all_le(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010436{
David Blaikie4f918ae2013-01-16 23:08:36 +000010437 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010438}
10439
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010440static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010441vec_all_le(vector short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010442{
David Blaikie4f918ae2013-01-16 23:08:36 +000010443 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010444}
10445
10446static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010447vec_all_le(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010448{
David Blaikie4f918ae2013-01-16 23:08:36 +000010449 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010450}
10451
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010452static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010453vec_all_le(vector unsigned short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010454{
David Blaikie4f918ae2013-01-16 23:08:36 +000010455 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, (vector unsigned short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010456}
10457
10458static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010459vec_all_le(vector bool short __a, vector short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010460{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010461 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ,
David Blaikie4f918ae2013-01-16 23:08:36 +000010462 (vector unsigned short)__a,
10463 (vector unsigned short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010464}
10465
10466static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010467vec_all_le(vector bool short __a, vector unsigned short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010468{
David Blaikie4f918ae2013-01-16 23:08:36 +000010469 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a, __b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010470}
10471
10472static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010473vec_all_le(vector bool short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010474{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010475 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ,
David Blaikie4f918ae2013-01-16 23:08:36 +000010476 (vector unsigned short)__a,
10477 (vector unsigned short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010478}
10479
10480static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010481vec_all_le(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010482{
David Blaikie4f918ae2013-01-16 23:08:36 +000010483 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010484}
10485
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010486static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010487vec_all_le(vector int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010488{
David Blaikie4f918ae2013-01-16 23:08:36 +000010489 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010490}
10491
10492static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010493vec_all_le(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010494{
David Blaikie4f918ae2013-01-16 23:08:36 +000010495 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010496}
10497
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010498static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010499vec_all_le(vector unsigned int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010500{
David Blaikie4f918ae2013-01-16 23:08:36 +000010501 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010502}
10503
10504static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010505vec_all_le(vector bool int __a, vector int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010506{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010507 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ,
David Blaikie4f918ae2013-01-16 23:08:36 +000010508 (vector unsigned int)__a,
10509 (vector unsigned int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010510}
10511
10512static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010513vec_all_le(vector bool int __a, vector unsigned int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010514{
David Blaikie4f918ae2013-01-16 23:08:36 +000010515 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010516}
10517
10518static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010519vec_all_le(vector bool int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010520{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010521 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ,
David Blaikie4f918ae2013-01-16 23:08:36 +000010522 (vector unsigned int)__a,
10523 (vector unsigned int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010524}
10525
10526static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010527vec_all_le(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010528{
David Blaikie4f918ae2013-01-16 23:08:36 +000010529 return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010530}
10531
10532/* vec_all_lt */
10533
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010534static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010535vec_all_lt(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010536{
David Blaikie4f918ae2013-01-16 23:08:36 +000010537 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010538}
10539
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010540static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010541vec_all_lt(vector signed char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010542{
David Blaikie4f918ae2013-01-16 23:08:36 +000010543 return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010544}
10545
10546static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010547vec_all_lt(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010548{
David Blaikie4f918ae2013-01-16 23:08:36 +000010549 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010550}
10551
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010552static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010553vec_all_lt(vector unsigned char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010554{
David Blaikie4f918ae2013-01-16 23:08:36 +000010555 return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010556}
10557
10558static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010559vec_all_lt(vector bool char __a, vector signed char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010560{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010561 return __builtin_altivec_vcmpgtub_p(__CR6_LT,
David Blaikie4f918ae2013-01-16 23:08:36 +000010562 (vector unsigned char)__b,
10563 (vector unsigned char)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010564}
10565
10566static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010567vec_all_lt(vector bool char __a, vector unsigned char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010568{
David Blaikie4f918ae2013-01-16 23:08:36 +000010569 return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010570}
10571
10572static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010573vec_all_lt(vector bool char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010574{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010575 return __builtin_altivec_vcmpgtub_p(__CR6_LT,
David Blaikie4f918ae2013-01-16 23:08:36 +000010576 (vector unsigned char)__b,
10577 (vector unsigned char)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010578}
10579
10580static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010581vec_all_lt(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010582{
David Blaikie4f918ae2013-01-16 23:08:36 +000010583 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010584}
10585
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010586static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010587vec_all_lt(vector short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010588{
David Blaikie4f918ae2013-01-16 23:08:36 +000010589 return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010590}
10591
10592static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010593vec_all_lt(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010594{
David Blaikie4f918ae2013-01-16 23:08:36 +000010595 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010596}
10597
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010598static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010599vec_all_lt(vector unsigned short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010600{
David Blaikie4f918ae2013-01-16 23:08:36 +000010601 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010602}
10603
10604static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010605vec_all_lt(vector bool short __a, vector short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010606{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010607 return __builtin_altivec_vcmpgtuh_p(__CR6_LT,
David Blaikie4f918ae2013-01-16 23:08:36 +000010608 (vector unsigned short)__b,
10609 (vector unsigned short)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010610}
10611
10612static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010613vec_all_lt(vector bool short __a, vector unsigned short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010614{
David Blaikie4f918ae2013-01-16 23:08:36 +000010615 return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, (vector unsigned short)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010616}
10617
10618static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010619vec_all_lt(vector bool short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010620{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010621 return __builtin_altivec_vcmpgtuh_p(__CR6_LT,
David Blaikie4f918ae2013-01-16 23:08:36 +000010622 (vector unsigned short)__b,
10623 (vector unsigned short)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010624}
10625
10626static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010627vec_all_lt(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010628{
David Blaikie4f918ae2013-01-16 23:08:36 +000010629 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010630}
10631
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010632static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010633vec_all_lt(vector int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010634{
David Blaikie4f918ae2013-01-16 23:08:36 +000010635 return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010636}
10637
10638static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010639vec_all_lt(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010640{
David Blaikie4f918ae2013-01-16 23:08:36 +000010641 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010642}
10643
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010644static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010645vec_all_lt(vector unsigned int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010646{
David Blaikie4f918ae2013-01-16 23:08:36 +000010647 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010648}
10649
10650static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010651vec_all_lt(vector bool int __a, vector int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010652{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010653 return __builtin_altivec_vcmpgtuw_p(__CR6_LT,
David Blaikie4f918ae2013-01-16 23:08:36 +000010654 (vector unsigned int)__b,
10655 (vector unsigned int)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010656}
10657
10658static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010659vec_all_lt(vector bool int __a, vector unsigned int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010660{
David Blaikie4f918ae2013-01-16 23:08:36 +000010661 return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010662}
10663
10664static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010665vec_all_lt(vector bool int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010666{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010667 return __builtin_altivec_vcmpgtuw_p(__CR6_LT,
David Blaikie4f918ae2013-01-16 23:08:36 +000010668 (vector unsigned int)__b,
10669 (vector unsigned int)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010670}
10671
10672static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010673vec_all_lt(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010674{
David Blaikie4f918ae2013-01-16 23:08:36 +000010675 return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010676}
10677
10678/* vec_all_nan */
10679
10680static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000010681vec_all_nan(vector float __a)
Chris Lattnerdd173942010-04-14 03:54:58 +000010682{
David Blaikie4f918ae2013-01-16 23:08:36 +000010683 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010684}
10685
10686/* vec_all_ne */
10687
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010688static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010689vec_all_ne(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010690{
David Blaikie4f918ae2013-01-16 23:08:36 +000010691 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010692}
10693
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010694static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010695vec_all_ne(vector signed char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010696{
David Blaikie4f918ae2013-01-16 23:08:36 +000010697 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010698}
10699
10700static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010701vec_all_ne(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010702{
David Blaikie4f918ae2013-01-16 23:08:36 +000010703 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010704}
10705
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010706static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010707vec_all_ne(vector unsigned char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010708{
David Blaikie4f918ae2013-01-16 23:08:36 +000010709 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010710}
10711
10712static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010713vec_all_ne(vector bool char __a, vector signed char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010714{
David Blaikie4f918ae2013-01-16 23:08:36 +000010715 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010716}
10717
10718static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010719vec_all_ne(vector bool char __a, vector unsigned char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010720{
David Blaikie4f918ae2013-01-16 23:08:36 +000010721 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010722}
10723
10724static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010725vec_all_ne(vector bool char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010726{
David Blaikie4f918ae2013-01-16 23:08:36 +000010727 return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010728}
10729
10730static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010731vec_all_ne(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010732{
David Blaikie4f918ae2013-01-16 23:08:36 +000010733 return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010734}
10735
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010736static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010737vec_all_ne(vector short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010738{
David Blaikie4f918ae2013-01-16 23:08:36 +000010739 return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010740}
10741
10742static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010743vec_all_ne(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010744{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010745 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010746 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010747}
10748
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010749static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010750vec_all_ne(vector unsigned short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010751{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010752 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010753 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010754}
10755
10756static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010757vec_all_ne(vector bool short __a, vector short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010758{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010759 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010760 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010761}
10762
10763static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010764vec_all_ne(vector bool short __a, vector unsigned short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010765{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010766 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010767 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010768}
10769
10770static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010771vec_all_ne(vector bool short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010772{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010773 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010774 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010775}
10776
10777static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010778vec_all_ne(vector pixel __a, vector pixel __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010779{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010780 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010781 __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010782}
10783
10784static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010785vec_all_ne(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010786{
David Blaikie4f918ae2013-01-16 23:08:36 +000010787 return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010788}
10789
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010790static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010791vec_all_ne(vector int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010792{
David Blaikie4f918ae2013-01-16 23:08:36 +000010793 return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010794}
10795
10796static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010797vec_all_ne(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010798{
David Blaikie4f918ae2013-01-16 23:08:36 +000010799 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010800}
10801
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010802static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010803vec_all_ne(vector unsigned int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010804{
David Blaikie4f918ae2013-01-16 23:08:36 +000010805 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010806}
10807
10808static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010809vec_all_ne(vector bool int __a, vector int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010810{
David Blaikie4f918ae2013-01-16 23:08:36 +000010811 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010812}
10813
10814static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010815vec_all_ne(vector bool int __a, vector unsigned int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010816{
David Blaikie4f918ae2013-01-16 23:08:36 +000010817 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010818}
10819
10820static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010821vec_all_ne(vector bool int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010822{
David Blaikie4f918ae2013-01-16 23:08:36 +000010823 return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010824}
10825
10826static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010827vec_all_ne(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010828{
David Blaikie4f918ae2013-01-16 23:08:36 +000010829 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010830}
10831
10832/* vec_all_nge */
10833
10834static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000010835vec_all_nge(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010836{
David Blaikie4f918ae2013-01-16 23:08:36 +000010837 return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010838}
10839
10840/* vec_all_ngt */
10841
10842static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000010843vec_all_ngt(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010844{
David Blaikie4f918ae2013-01-16 23:08:36 +000010845 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010846}
10847
10848/* vec_all_nle */
10849
10850static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000010851vec_all_nle(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010852{
David Blaikie4f918ae2013-01-16 23:08:36 +000010853 return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010854}
10855
10856/* vec_all_nlt */
10857
10858static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000010859vec_all_nlt(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010860{
David Blaikie4f918ae2013-01-16 23:08:36 +000010861 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010862}
10863
10864/* vec_all_numeric */
10865
10866static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000010867vec_all_numeric(vector float __a)
Chris Lattnerdd173942010-04-14 03:54:58 +000010868{
David Blaikie4f918ae2013-01-16 23:08:36 +000010869 return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000010870}
10871
10872/* vec_any_eq */
10873
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010874static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010875vec_any_eq(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010876{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010877 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010878 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010879}
10880
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010881static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010882vec_any_eq(vector signed char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010883{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010884 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010885 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010886}
10887
10888static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010889vec_any_eq(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010890{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010891 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010892 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010893}
10894
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010895static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010896vec_any_eq(vector unsigned char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010897{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010898 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010899 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010900}
10901
10902static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010903vec_any_eq(vector bool char __a, vector signed char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010904{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010905 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010906 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010907}
10908
10909static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010910vec_any_eq(vector bool char __a, vector unsigned char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010911{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010912 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010913 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010914}
10915
10916static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010917vec_any_eq(vector bool char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010918{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010919 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010920 __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010921}
10922
10923static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010924vec_any_eq(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010925{
David Blaikie4f918ae2013-01-16 23:08:36 +000010926 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010927}
10928
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010929static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010930vec_any_eq(vector short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010931{
David Blaikie4f918ae2013-01-16 23:08:36 +000010932 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010933}
10934
10935static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010936vec_any_eq(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010937{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010938 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000010939 (vector short)__a,
10940 (vector short)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010941}
10942
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010943static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010944vec_any_eq(vector unsigned short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010945{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010946 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000010947 (vector short)__a,
10948 (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010949}
10950
10951static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010952vec_any_eq(vector bool short __a, vector short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010953{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010954 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000010955 (vector short)__a,
10956 (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010957}
10958
10959static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010960vec_any_eq(vector bool short __a, vector unsigned short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010961{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010962 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000010963 (vector short)__a,
10964 (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010965}
10966
10967static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010968vec_any_eq(vector bool short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010969{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010970 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000010971 (vector short)__a,
10972 (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010973}
10974
10975static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010976vec_any_eq(vector pixel __a, vector pixel __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010977{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010978 return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000010979 (vector short)__a,
10980 (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010981}
10982
10983static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010984vec_any_eq(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010985{
David Blaikie4f918ae2013-01-16 23:08:36 +000010986 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000010987}
10988
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000010989static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010990vec_any_eq(vector int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000010991{
David Blaikie4f918ae2013-01-16 23:08:36 +000010992 return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000010993}
10994
10995static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000010996vec_any_eq(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000010997{
Anton Yartsev3ed32722010-09-18 00:39:16 +000010998 return
David Blaikie4f918ae2013-01-16 23:08:36 +000010999 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011000}
11001
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011002static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011003vec_any_eq(vector unsigned int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011004{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011005 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011006 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011007}
11008
11009static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011010vec_any_eq(vector bool int __a, vector int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011011{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011012 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011013 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011014}
11015
11016static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011017vec_any_eq(vector bool int __a, vector unsigned int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011018{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011019 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011020 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011021}
11022
11023static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011024vec_any_eq(vector bool int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011025{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011026 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011027 __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011028}
11029
11030static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011031vec_any_eq(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011032{
David Blaikie4f918ae2013-01-16 23:08:36 +000011033 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011034}
11035
11036/* vec_any_ge */
11037
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011038static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011039vec_any_ge(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011040{
David Blaikie4f918ae2013-01-16 23:08:36 +000011041 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011042}
11043
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011044static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011045vec_any_ge(vector signed char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011046{
David Blaikie4f918ae2013-01-16 23:08:36 +000011047 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011048}
11049
11050static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011051vec_any_ge(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011052{
David Blaikie4f918ae2013-01-16 23:08:36 +000011053 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011054}
11055
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011056static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011057vec_any_ge(vector unsigned char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011058{
David Blaikie4f918ae2013-01-16 23:08:36 +000011059 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011060}
11061
11062static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011063vec_any_ge(vector bool char __a, vector signed char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011064{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011065 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011066 (vector unsigned char)__b,
11067 (vector unsigned char)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011068}
11069
11070static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011071vec_any_ge(vector bool char __a, vector unsigned char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011072{
David Blaikie4f918ae2013-01-16 23:08:36 +000011073 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, (vector unsigned char)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011074}
11075
11076static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011077vec_any_ge(vector bool char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011078{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011079 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011080 (vector unsigned char)__b,
11081 (vector unsigned char)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011082}
11083
11084static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011085vec_any_ge(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011086{
David Blaikie4f918ae2013-01-16 23:08:36 +000011087 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011088}
11089
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011090static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011091vec_any_ge(vector short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011092{
David Blaikie4f918ae2013-01-16 23:08:36 +000011093 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011094}
11095
11096static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011097vec_any_ge(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011098{
David Blaikie4f918ae2013-01-16 23:08:36 +000011099 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011100}
11101
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011102static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011103vec_any_ge(vector unsigned short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011104{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011105 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011106 __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011107}
11108
11109static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011110vec_any_ge(vector bool short __a, vector short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011111{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011112 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011113 (vector unsigned short)__b,
11114 (vector unsigned short)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011115}
11116
11117static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011118vec_any_ge(vector bool short __a, vector unsigned short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011119{
11120 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011121 __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, (vector unsigned short)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011122}
11123
11124static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011125vec_any_ge(vector bool short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011126{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011127 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011128 (vector unsigned short)__b,
11129 (vector unsigned short)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011130}
11131
11132static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011133vec_any_ge(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011134{
David Blaikie4f918ae2013-01-16 23:08:36 +000011135 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011136}
11137
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011138static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011139vec_any_ge(vector int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011140{
David Blaikie4f918ae2013-01-16 23:08:36 +000011141 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011142}
11143
11144static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011145vec_any_ge(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011146{
David Blaikie4f918ae2013-01-16 23:08:36 +000011147 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011148}
11149
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011150static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011151vec_any_ge(vector unsigned int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011152{
David Blaikie4f918ae2013-01-16 23:08:36 +000011153 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011154}
11155
11156static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011157vec_any_ge(vector bool int __a, vector int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011158{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011159 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011160 (vector unsigned int)__b,
11161 (vector unsigned int)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011162}
11163
11164static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011165vec_any_ge(vector bool int __a, vector unsigned int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011166{
David Blaikie4f918ae2013-01-16 23:08:36 +000011167 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, (vector unsigned int)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011168}
11169
11170static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011171vec_any_ge(vector bool int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011172{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011173 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011174 (vector unsigned int)__b,
11175 (vector unsigned int)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011176}
11177
11178static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011179vec_any_ge(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011180{
David Blaikie4f918ae2013-01-16 23:08:36 +000011181 return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011182}
11183
11184/* vec_any_gt */
11185
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011186static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011187vec_any_gt(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011188{
David Blaikie4f918ae2013-01-16 23:08:36 +000011189 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011190}
11191
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011192static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011193vec_any_gt(vector signed char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011194{
David Blaikie4f918ae2013-01-16 23:08:36 +000011195 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, (vector signed char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011196}
11197
11198static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011199vec_any_gt(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011200{
David Blaikie4f918ae2013-01-16 23:08:36 +000011201 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011202}
11203
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011204static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011205vec_any_gt(vector unsigned char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011206{
11207 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011208 __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, (vector unsigned char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011209}
11210
11211static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011212vec_any_gt(vector bool char __a, vector signed char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011213{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011214 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011215 (vector unsigned char)__a,
11216 (vector unsigned char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011217}
11218
11219static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011220vec_any_gt(vector bool char __a, vector unsigned char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011221{
11222 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011223 __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a, __b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011224}
11225
11226static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011227vec_any_gt(vector bool char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011228{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011229 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011230 (vector unsigned char)__a,
11231 (vector unsigned char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011232}
11233
11234static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011235vec_any_gt(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011236{
David Blaikie4f918ae2013-01-16 23:08:36 +000011237 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011238}
11239
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011240static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011241vec_any_gt(vector short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011242{
David Blaikie4f918ae2013-01-16 23:08:36 +000011243 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011244}
11245
11246static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011247vec_any_gt(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011248{
David Blaikie4f918ae2013-01-16 23:08:36 +000011249 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011250}
11251
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011252static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011253vec_any_gt(vector unsigned short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011254{
11255 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011256 __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, (vector unsigned short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011257}
11258
11259static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011260vec_any_gt(vector bool short __a, vector short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011261{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011262 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011263 (vector unsigned short)__a,
11264 (vector unsigned short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011265}
11266
11267static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011268vec_any_gt(vector bool short __a, vector unsigned short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011269{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011270 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011271 __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a, __b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011272}
11273
11274static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011275vec_any_gt(vector bool short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011276{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011277 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011278 (vector unsigned short)__a,
11279 (vector unsigned short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011280}
11281
11282static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011283vec_any_gt(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011284{
David Blaikie4f918ae2013-01-16 23:08:36 +000011285 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011286}
11287
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011288static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011289vec_any_gt(vector int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011290{
David Blaikie4f918ae2013-01-16 23:08:36 +000011291 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011292}
11293
11294static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011295vec_any_gt(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011296{
David Blaikie4f918ae2013-01-16 23:08:36 +000011297 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011298}
11299
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011300static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011301vec_any_gt(vector unsigned int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011302{
David Blaikie4f918ae2013-01-16 23:08:36 +000011303 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, (vector unsigned int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011304}
11305
11306static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011307vec_any_gt(vector bool int __a, vector int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011308{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011309 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011310 (vector unsigned int)__a,
11311 (vector unsigned int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011312}
11313
11314static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011315vec_any_gt(vector bool int __a, vector unsigned int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011316{
David Blaikie4f918ae2013-01-16 23:08:36 +000011317 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a, __b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011318}
11319
11320static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011321vec_any_gt(vector bool int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011322{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011323 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011324 (vector unsigned int)__a,
11325 (vector unsigned int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011326}
11327
11328static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011329vec_any_gt(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011330{
David Blaikie4f918ae2013-01-16 23:08:36 +000011331 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011332}
11333
11334/* vec_any_le */
11335
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011336static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011337vec_any_le(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011338{
David Blaikie4f918ae2013-01-16 23:08:36 +000011339 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011340}
11341
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011342static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011343vec_any_le(vector signed char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011344{
David Blaikie4f918ae2013-01-16 23:08:36 +000011345 return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, (vector signed char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011346}
11347
11348static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011349vec_any_le(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011350{
David Blaikie4f918ae2013-01-16 23:08:36 +000011351 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011352}
11353
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011354static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011355vec_any_le(vector unsigned char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011356{
11357 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011358 __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, (vector unsigned char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011359}
11360
11361static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011362vec_any_le(vector bool char __a, vector signed char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011363{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011364 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011365 (vector unsigned char)__a,
11366 (vector unsigned char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011367}
11368
11369static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011370vec_any_le(vector bool char __a, vector unsigned char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011371{
11372 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011373 __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a, __b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011374}
11375
11376static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011377vec_any_le(vector bool char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011378{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011379 return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011380 (vector unsigned char)__a,
11381 (vector unsigned char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011382}
11383
11384static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011385vec_any_le(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011386{
David Blaikie4f918ae2013-01-16 23:08:36 +000011387 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011388}
11389
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011390static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011391vec_any_le(vector short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011392{
David Blaikie4f918ae2013-01-16 23:08:36 +000011393 return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011394}
11395
11396static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011397vec_any_le(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011398{
David Blaikie4f918ae2013-01-16 23:08:36 +000011399 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011400}
11401
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011402static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011403vec_any_le(vector unsigned short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011404{
11405 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011406 __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, (vector unsigned short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011407}
11408
11409static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011410vec_any_le(vector bool short __a, vector short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011411{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011412 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011413 (vector unsigned short)__a,
11414 (vector unsigned short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011415}
11416
11417static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011418vec_any_le(vector bool short __a, vector unsigned short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011419{
11420 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011421 __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a, __b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011422}
11423
11424static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011425vec_any_le(vector bool short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011426{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011427 return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011428 (vector unsigned short)__a,
11429 (vector unsigned short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011430}
11431
11432static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011433vec_any_le(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011434{
David Blaikie4f918ae2013-01-16 23:08:36 +000011435 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011436}
11437
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011438static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011439vec_any_le(vector int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011440{
David Blaikie4f918ae2013-01-16 23:08:36 +000011441 return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011442}
11443
11444static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011445vec_any_le(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011446{
David Blaikie4f918ae2013-01-16 23:08:36 +000011447 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011448}
11449
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011450static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011451vec_any_le(vector unsigned int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011452{
David Blaikie4f918ae2013-01-16 23:08:36 +000011453 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, (vector unsigned int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011454}
11455
11456static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011457vec_any_le(vector bool int __a, vector int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011458{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011459 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011460 (vector unsigned int)__a,
11461 (vector unsigned int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011462}
11463
11464static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011465vec_any_le(vector bool int __a, vector unsigned int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011466{
David Blaikie4f918ae2013-01-16 23:08:36 +000011467 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a, __b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011468}
11469
11470static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011471vec_any_le(vector bool int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011472{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011473 return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011474 (vector unsigned int)__a,
11475 (vector unsigned int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011476}
11477
11478static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011479vec_any_le(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011480{
David Blaikie4f918ae2013-01-16 23:08:36 +000011481 return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011482}
11483
11484/* vec_any_lt */
11485
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011486static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011487vec_any_lt(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011488{
David Blaikie4f918ae2013-01-16 23:08:36 +000011489 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011490}
11491
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011492static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011493vec_any_lt(vector signed char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011494{
David Blaikie4f918ae2013-01-16 23:08:36 +000011495 return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011496}
11497
11498static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011499vec_any_lt(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011500{
David Blaikie4f918ae2013-01-16 23:08:36 +000011501 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011502}
11503
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011504static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011505vec_any_lt(vector unsigned char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011506{
11507 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011508 __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011509}
11510
11511static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011512vec_any_lt(vector bool char __a, vector signed char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011513{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011514 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011515 (vector unsigned char)__b,
11516 (vector unsigned char)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011517}
11518
11519static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011520vec_any_lt(vector bool char __a, vector unsigned char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011521{
11522 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011523 __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, (vector unsigned char)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011524}
11525
11526static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011527vec_any_lt(vector bool char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011528{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011529 return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011530 (vector unsigned char)__b,
11531 (vector unsigned char)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011532}
11533
11534static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011535vec_any_lt(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011536{
David Blaikie4f918ae2013-01-16 23:08:36 +000011537 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011538}
11539
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011540static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011541vec_any_lt(vector short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011542{
David Blaikie4f918ae2013-01-16 23:08:36 +000011543 return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011544}
11545
11546static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011547vec_any_lt(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011548{
David Blaikie4f918ae2013-01-16 23:08:36 +000011549 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011550}
11551
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011552static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011553vec_any_lt(vector unsigned short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011554{
11555 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011556 __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011557}
11558
11559static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011560vec_any_lt(vector bool short __a, vector short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011561{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011562 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011563 (vector unsigned short)__b,
11564 (vector unsigned short)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011565}
11566
11567static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011568vec_any_lt(vector bool short __a, vector unsigned short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011569{
11570 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011571 __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, (vector unsigned short)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011572}
11573
11574static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011575vec_any_lt(vector bool short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011576{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011577 return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011578 (vector unsigned short)__b,
11579 (vector unsigned short)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011580}
11581
11582static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011583vec_any_lt(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011584{
David Blaikie4f918ae2013-01-16 23:08:36 +000011585 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011586}
11587
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011588static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011589vec_any_lt(vector int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011590{
David Blaikie4f918ae2013-01-16 23:08:36 +000011591 return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011592}
11593
11594static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011595vec_any_lt(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011596{
David Blaikie4f918ae2013-01-16 23:08:36 +000011597 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011598}
11599
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011600static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011601vec_any_lt(vector unsigned int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011602{
David Blaikie4f918ae2013-01-16 23:08:36 +000011603 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b, __a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011604}
11605
11606static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011607vec_any_lt(vector bool int __a, vector int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011608{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011609 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011610 (vector unsigned int)__b,
11611 (vector unsigned int)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011612}
11613
11614static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011615vec_any_lt(vector bool int __a, vector unsigned int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011616{
David Blaikie4f918ae2013-01-16 23:08:36 +000011617 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, (vector unsigned int)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011618}
11619
11620static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011621vec_any_lt(vector bool int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011622{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011623 return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011624 (vector unsigned int)__b,
11625 (vector unsigned int)__a);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011626}
11627
11628static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011629vec_any_lt(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011630{
David Blaikie4f918ae2013-01-16 23:08:36 +000011631 return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011632}
11633
11634/* vec_any_nan */
11635
11636static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000011637vec_any_nan(vector float __a)
Chris Lattnerdd173942010-04-14 03:54:58 +000011638{
David Blaikie4f918ae2013-01-16 23:08:36 +000011639 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011640}
11641
11642/* vec_any_ne */
11643
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011644static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011645vec_any_ne(vector signed char __a, vector signed char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011646{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011647 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011648 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011649}
11650
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011651static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011652vec_any_ne(vector signed char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011653{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011654 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011655 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011656}
11657
11658static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011659vec_any_ne(vector unsigned char __a, vector unsigned char __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011660{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011661 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011662 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011663}
11664
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011665static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011666vec_any_ne(vector unsigned char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011667{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011668 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011669 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011670}
11671
11672static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011673vec_any_ne(vector bool char __a, vector signed char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011674{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011675 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011676 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011677}
11678
11679static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011680vec_any_ne(vector bool char __a, vector unsigned char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011681{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011682 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011683 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011684}
11685
11686static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011687vec_any_ne(vector bool char __a, vector bool char __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011688{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011689 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011690 __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a, (vector char)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011691}
11692
11693static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011694vec_any_ne(vector short __a, vector short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011695{
David Blaikie4f918ae2013-01-16 23:08:36 +000011696 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011697}
11698
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011699static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011700vec_any_ne(vector short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011701{
David Blaikie4f918ae2013-01-16 23:08:36 +000011702 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011703}
11704
11705static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011706vec_any_ne(vector unsigned short __a, vector unsigned short __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011707{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011708 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011709 (vector short)__a,
11710 (vector short)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011711}
11712
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011713static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011714vec_any_ne(vector unsigned short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011715{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011716 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011717 (vector short)__a,
11718 (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011719}
11720
11721static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011722vec_any_ne(vector bool short __a, vector short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011723{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011724 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011725 (vector short)__a,
11726 (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011727}
11728
11729static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011730vec_any_ne(vector bool short __a, vector unsigned short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011731{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011732 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011733 (vector short)__a,
11734 (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011735}
11736
11737static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011738vec_any_ne(vector bool short __a, vector bool short __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011739{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011740 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011741 (vector short)__a,
11742 (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011743}
11744
11745static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011746vec_any_ne(vector pixel __a, vector pixel __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011747{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011748 return __builtin_altivec_vcmpequh_p(__CR6_LT_REV,
David Blaikie4f918ae2013-01-16 23:08:36 +000011749 (vector short)__a,
11750 (vector short)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011751}
11752
11753static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011754vec_any_ne(vector int __a, vector int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011755{
David Blaikie4f918ae2013-01-16 23:08:36 +000011756 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011757}
11758
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011759static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011760vec_any_ne(vector int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011761{
David Blaikie4f918ae2013-01-16 23:08:36 +000011762 return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011763}
11764
11765static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011766vec_any_ne(vector unsigned int __a, vector unsigned int __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011767{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011768 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011769 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011770}
11771
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011772static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011773vec_any_ne(vector unsigned int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011774{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011775 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011776 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011777}
11778
11779static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011780vec_any_ne(vector bool int __a, vector int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011781{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011782 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011783 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011784}
11785
11786static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011787vec_any_ne(vector bool int __a, vector unsigned int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011788{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011789 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011790 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011791}
11792
11793static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011794vec_any_ne(vector bool int __a, vector bool int __b)
Anton Yartseva4f235b2010-08-19 11:57:49 +000011795{
Anton Yartsev3ed32722010-09-18 00:39:16 +000011796 return
David Blaikie4f918ae2013-01-16 23:08:36 +000011797 __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a, (vector int)__b);
Anton Yartseva4f235b2010-08-19 11:57:49 +000011798}
11799
11800static int __ATTRS_o_ai
David Blaikie4f918ae2013-01-16 23:08:36 +000011801vec_any_ne(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011802{
David Blaikie4f918ae2013-01-16 23:08:36 +000011803 return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011804}
11805
11806/* vec_any_nge */
11807
11808static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000011809vec_any_nge(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011810{
David Blaikie4f918ae2013-01-16 23:08:36 +000011811 return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011812}
11813
11814/* vec_any_ngt */
11815
11816static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000011817vec_any_ngt(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011818{
David Blaikie4f918ae2013-01-16 23:08:36 +000011819 return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011820}
11821
11822/* vec_any_nle */
11823
11824static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000011825vec_any_nle(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011826{
David Blaikie4f918ae2013-01-16 23:08:36 +000011827 return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011828}
11829
11830/* vec_any_nlt */
11831
11832static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000011833vec_any_nlt(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011834{
David Blaikie4f918ae2013-01-16 23:08:36 +000011835 return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011836}
11837
11838/* vec_any_numeric */
11839
11840static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000011841vec_any_numeric(vector float __a)
Chris Lattnerdd173942010-04-14 03:54:58 +000011842{
David Blaikie4f918ae2013-01-16 23:08:36 +000011843 return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a);
Chris Lattnerdd173942010-04-14 03:54:58 +000011844}
11845
11846/* vec_any_out */
11847
11848static int __attribute__((__always_inline__))
David Blaikie4f918ae2013-01-16 23:08:36 +000011849vec_any_out(vector float __a, vector float __b)
Chris Lattnerdd173942010-04-14 03:54:58 +000011850{
David Blaikie4f918ae2013-01-16 23:08:36 +000011851 return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b);
Chris Lattnerdd173942010-04-14 03:54:58 +000011852}
11853
Anton Korobeynikov4d3a7b02010-06-19 09:47:18 +000011854#undef __ATTRS_o_ai
Chris Lattnerdd173942010-04-14 03:54:58 +000011855
11856#endif /* __ALTIVEC_H */