xref: /aosp_15_r20/prebuilts/sdk/renderscript/clang-include/altivec.h (revision 344a7f5ef16c479e7a7f54ee6567a9d112f9e72b)
1*344a7f5eSAndroid Build Coastguard Worker /*===---- altivec.h - Standard header for type generic math ---------------===*\
2*344a7f5eSAndroid Build Coastguard Worker  *
3*344a7f5eSAndroid Build Coastguard Worker  * Permission is hereby granted, free of charge, to any person obtaining a copy
4*344a7f5eSAndroid Build Coastguard Worker  * of this software and associated documentation files (the "Software"), to deal
5*344a7f5eSAndroid Build Coastguard Worker  * in the Software without restriction, including without limitation the rights
6*344a7f5eSAndroid Build Coastguard Worker  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7*344a7f5eSAndroid Build Coastguard Worker  * copies of the Software, and to permit persons to whom the Software is
8*344a7f5eSAndroid Build Coastguard Worker  * furnished to do so, subject to the following conditions:
9*344a7f5eSAndroid Build Coastguard Worker  *
10*344a7f5eSAndroid Build Coastguard Worker  * The above copyright notice and this permission notice shall be included in
11*344a7f5eSAndroid Build Coastguard Worker  * all copies or substantial portions of the Software.
12*344a7f5eSAndroid Build Coastguard Worker  *
13*344a7f5eSAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14*344a7f5eSAndroid Build Coastguard Worker  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15*344a7f5eSAndroid Build Coastguard Worker  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16*344a7f5eSAndroid Build Coastguard Worker  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17*344a7f5eSAndroid Build Coastguard Worker  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18*344a7f5eSAndroid Build Coastguard Worker  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19*344a7f5eSAndroid Build Coastguard Worker  * THE SOFTWARE.
20*344a7f5eSAndroid Build Coastguard Worker  *
21*344a7f5eSAndroid Build Coastguard Worker \*===----------------------------------------------------------------------===*/
22*344a7f5eSAndroid Build Coastguard Worker 
23*344a7f5eSAndroid Build Coastguard Worker #ifndef __ALTIVEC_H
24*344a7f5eSAndroid Build Coastguard Worker #define __ALTIVEC_H
25*344a7f5eSAndroid Build Coastguard Worker 
26*344a7f5eSAndroid Build Coastguard Worker #ifndef __ALTIVEC__
27*344a7f5eSAndroid Build Coastguard Worker #error "AltiVec support not enabled"
28*344a7f5eSAndroid Build Coastguard Worker #endif
29*344a7f5eSAndroid Build Coastguard Worker 
30*344a7f5eSAndroid Build Coastguard Worker /* Constants for mapping CR6 bits to predicate result. */
31*344a7f5eSAndroid Build Coastguard Worker 
32*344a7f5eSAndroid Build Coastguard Worker #define __CR6_EQ 0
33*344a7f5eSAndroid Build Coastguard Worker #define __CR6_EQ_REV 1
34*344a7f5eSAndroid Build Coastguard Worker #define __CR6_LT 2
35*344a7f5eSAndroid Build Coastguard Worker #define __CR6_LT_REV 3
36*344a7f5eSAndroid Build Coastguard Worker 
37*344a7f5eSAndroid Build Coastguard Worker #define __ATTRS_o_ai __attribute__((__overloadable__, __always_inline__))
38*344a7f5eSAndroid Build Coastguard Worker 
39*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai vec_perm(
40*344a7f5eSAndroid Build Coastguard Worker     vector signed char __a, vector signed char __b, vector unsigned char __c);
41*344a7f5eSAndroid Build Coastguard Worker 
42*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
43*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector unsigned char __a, vector unsigned char __b,
44*344a7f5eSAndroid Build Coastguard Worker          vector unsigned char __c);
45*344a7f5eSAndroid Build Coastguard Worker 
46*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
47*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c);
48*344a7f5eSAndroid Build Coastguard Worker 
49*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
50*344a7f5eSAndroid Build Coastguard Worker                                                      vector signed short __b,
51*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned char __c);
52*344a7f5eSAndroid Build Coastguard Worker 
53*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
54*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector unsigned short __a, vector unsigned short __b,
55*344a7f5eSAndroid Build Coastguard Worker          vector unsigned char __c);
56*344a7f5eSAndroid Build Coastguard Worker 
57*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai vec_perm(
58*344a7f5eSAndroid Build Coastguard Worker     vector bool short __a, vector bool short __b, vector unsigned char __c);
59*344a7f5eSAndroid Build Coastguard Worker 
60*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
61*344a7f5eSAndroid Build Coastguard Worker                                                      vector pixel __b,
62*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned char __c);
63*344a7f5eSAndroid Build Coastguard Worker 
64*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
65*344a7f5eSAndroid Build Coastguard Worker                                                    vector signed int __b,
66*344a7f5eSAndroid Build Coastguard Worker                                                    vector unsigned char __c);
67*344a7f5eSAndroid Build Coastguard Worker 
68*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai vec_perm(
69*344a7f5eSAndroid Build Coastguard Worker     vector unsigned int __a, vector unsigned int __b, vector unsigned char __c);
70*344a7f5eSAndroid Build Coastguard Worker 
71*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
72*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c);
73*344a7f5eSAndroid Build Coastguard Worker 
74*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
75*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b,
76*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned char __c);
77*344a7f5eSAndroid Build Coastguard Worker 
78*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
79*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector long long __ATTRS_o_ai
80*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector signed long long __a, vector signed long long __b,
81*344a7f5eSAndroid Build Coastguard Worker          vector unsigned char __c);
82*344a7f5eSAndroid Build Coastguard Worker 
83*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
84*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector unsigned long long __a, vector unsigned long long __b,
85*344a7f5eSAndroid Build Coastguard Worker          vector unsigned char __c);
86*344a7f5eSAndroid Build Coastguard Worker 
87*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
88*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector bool long long __a, vector bool long long __b,
89*344a7f5eSAndroid Build Coastguard Worker          vector unsigned char __c);
90*344a7f5eSAndroid Build Coastguard Worker 
91*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_perm(vector double __a,
92*344a7f5eSAndroid Build Coastguard Worker                                                       vector double __b,
93*344a7f5eSAndroid Build Coastguard Worker                                                       vector unsigned char __c);
94*344a7f5eSAndroid Build Coastguard Worker #endif
95*344a7f5eSAndroid Build Coastguard Worker 
96*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
97*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector unsigned char __a, vector unsigned char __b);
98*344a7f5eSAndroid Build Coastguard Worker 
99*344a7f5eSAndroid Build Coastguard Worker /* vec_abs */
100*344a7f5eSAndroid Build Coastguard Worker 
101*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_abs_v16qi vec_abs
102*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_abs_v8hi vec_abs
103*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_abs_v4si vec_abs
104*344a7f5eSAndroid Build Coastguard Worker 
105*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_abs(vector signed char __a)106*344a7f5eSAndroid Build Coastguard Worker vec_abs(vector signed char __a) {
107*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsb(__a, -__a);
108*344a7f5eSAndroid Build Coastguard Worker }
109*344a7f5eSAndroid Build Coastguard Worker 
110*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_abs(vector signed short __a)111*344a7f5eSAndroid Build Coastguard Worker vec_abs(vector signed short __a) {
112*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsh(__a, -__a);
113*344a7f5eSAndroid Build Coastguard Worker }
114*344a7f5eSAndroid Build Coastguard Worker 
115*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_abs(vector signed int __a)116*344a7f5eSAndroid Build Coastguard Worker vec_abs(vector signed int __a) {
117*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsw(__a, -__a);
118*344a7f5eSAndroid Build Coastguard Worker }
119*344a7f5eSAndroid Build Coastguard Worker 
120*344a7f5eSAndroid Build Coastguard Worker #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
121*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_abs(vector signed long long __a)122*344a7f5eSAndroid Build Coastguard Worker vec_abs(vector signed long long __a) {
123*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsd(__a, -__a);
124*344a7f5eSAndroid Build Coastguard Worker }
125*344a7f5eSAndroid Build Coastguard Worker #endif
126*344a7f5eSAndroid Build Coastguard Worker 
vec_abs(vector float __a)127*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_abs(vector float __a) {
128*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
129*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvabssp(__a);
130*344a7f5eSAndroid Build Coastguard Worker #else
131*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
132*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & (vector unsigned int)(0x7FFFFFFF);
133*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
134*344a7f5eSAndroid Build Coastguard Worker #endif
135*344a7f5eSAndroid Build Coastguard Worker }
136*344a7f5eSAndroid Build Coastguard Worker 
137*344a7f5eSAndroid Build Coastguard Worker #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
vec_abs(vector double __a)138*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_abs(vector double __a) {
139*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvabsdp(__a);
140*344a7f5eSAndroid Build Coastguard Worker }
141*344a7f5eSAndroid Build Coastguard Worker #endif
142*344a7f5eSAndroid Build Coastguard Worker 
143*344a7f5eSAndroid Build Coastguard Worker /* vec_abss */
144*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_abss_v16qi vec_abss
145*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_abss_v8hi vec_abss
146*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_abss_v4si vec_abss
147*344a7f5eSAndroid Build Coastguard Worker 
148*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_abss(vector signed char __a)149*344a7f5eSAndroid Build Coastguard Worker vec_abss(vector signed char __a) {
150*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsb(
151*344a7f5eSAndroid Build Coastguard Worker       __a, __builtin_altivec_vsubsbs((vector signed char)(0), __a));
152*344a7f5eSAndroid Build Coastguard Worker }
153*344a7f5eSAndroid Build Coastguard Worker 
154*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_abss(vector signed short __a)155*344a7f5eSAndroid Build Coastguard Worker vec_abss(vector signed short __a) {
156*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsh(
157*344a7f5eSAndroid Build Coastguard Worker       __a, __builtin_altivec_vsubshs((vector signed short)(0), __a));
158*344a7f5eSAndroid Build Coastguard Worker }
159*344a7f5eSAndroid Build Coastguard Worker 
160*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_abss(vector signed int __a)161*344a7f5eSAndroid Build Coastguard Worker vec_abss(vector signed int __a) {
162*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsw(
163*344a7f5eSAndroid Build Coastguard Worker       __a, __builtin_altivec_vsubsws((vector signed int)(0), __a));
164*344a7f5eSAndroid Build Coastguard Worker }
165*344a7f5eSAndroid Build Coastguard Worker 
166*344a7f5eSAndroid Build Coastguard Worker /* vec_add */
167*344a7f5eSAndroid Build Coastguard Worker 
168*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_add(vector signed char __a,vector signed char __b)169*344a7f5eSAndroid Build Coastguard Worker vec_add(vector signed char __a, vector signed char __b) {
170*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
171*344a7f5eSAndroid Build Coastguard Worker }
172*344a7f5eSAndroid Build Coastguard Worker 
173*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_add(vector bool char __a,vector signed char __b)174*344a7f5eSAndroid Build Coastguard Worker vec_add(vector bool char __a, vector signed char __b) {
175*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__a + __b;
176*344a7f5eSAndroid Build Coastguard Worker }
177*344a7f5eSAndroid Build Coastguard Worker 
178*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_add(vector signed char __a,vector bool char __b)179*344a7f5eSAndroid Build Coastguard Worker vec_add(vector signed char __a, vector bool char __b) {
180*344a7f5eSAndroid Build Coastguard Worker   return __a + (vector signed char)__b;
181*344a7f5eSAndroid Build Coastguard Worker }
182*344a7f5eSAndroid Build Coastguard Worker 
183*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_add(vector unsigned char __a,vector unsigned char __b)184*344a7f5eSAndroid Build Coastguard Worker vec_add(vector unsigned char __a, vector unsigned char __b) {
185*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
186*344a7f5eSAndroid Build Coastguard Worker }
187*344a7f5eSAndroid Build Coastguard Worker 
188*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_add(vector bool char __a,vector unsigned char __b)189*344a7f5eSAndroid Build Coastguard Worker vec_add(vector bool char __a, vector unsigned char __b) {
190*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__a + __b;
191*344a7f5eSAndroid Build Coastguard Worker }
192*344a7f5eSAndroid Build Coastguard Worker 
193*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_add(vector unsigned char __a,vector bool char __b)194*344a7f5eSAndroid Build Coastguard Worker vec_add(vector unsigned char __a, vector bool char __b) {
195*344a7f5eSAndroid Build Coastguard Worker   return __a + (vector unsigned char)__b;
196*344a7f5eSAndroid Build Coastguard Worker }
197*344a7f5eSAndroid Build Coastguard Worker 
vec_add(vector short __a,vector short __b)198*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
199*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
200*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
201*344a7f5eSAndroid Build Coastguard Worker }
202*344a7f5eSAndroid Build Coastguard Worker 
vec_add(vector bool short __a,vector short __b)203*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_add(vector bool short __a,
204*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
205*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a + __b;
206*344a7f5eSAndroid Build Coastguard Worker }
207*344a7f5eSAndroid Build Coastguard Worker 
vec_add(vector short __a,vector bool short __b)208*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_add(vector short __a,
209*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool short __b) {
210*344a7f5eSAndroid Build Coastguard Worker   return __a + (vector short)__b;
211*344a7f5eSAndroid Build Coastguard Worker }
212*344a7f5eSAndroid Build Coastguard Worker 
213*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_add(vector unsigned short __a,vector unsigned short __b)214*344a7f5eSAndroid Build Coastguard Worker vec_add(vector unsigned short __a, vector unsigned short __b) {
215*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
216*344a7f5eSAndroid Build Coastguard Worker }
217*344a7f5eSAndroid Build Coastguard Worker 
218*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_add(vector bool short __a,vector unsigned short __b)219*344a7f5eSAndroid Build Coastguard Worker vec_add(vector bool short __a, vector unsigned short __b) {
220*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__a + __b;
221*344a7f5eSAndroid Build Coastguard Worker }
222*344a7f5eSAndroid Build Coastguard Worker 
223*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_add(vector unsigned short __a,vector bool short __b)224*344a7f5eSAndroid Build Coastguard Worker vec_add(vector unsigned short __a, vector bool short __b) {
225*344a7f5eSAndroid Build Coastguard Worker   return __a + (vector unsigned short)__b;
226*344a7f5eSAndroid Build Coastguard Worker }
227*344a7f5eSAndroid Build Coastguard Worker 
vec_add(vector int __a,vector int __b)228*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
229*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
230*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
231*344a7f5eSAndroid Build Coastguard Worker }
232*344a7f5eSAndroid Build Coastguard Worker 
vec_add(vector bool int __a,vector int __b)233*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_add(vector bool int __a,
234*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
235*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__a + __b;
236*344a7f5eSAndroid Build Coastguard Worker }
237*344a7f5eSAndroid Build Coastguard Worker 
vec_add(vector int __a,vector bool int __b)238*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_add(vector int __a,
239*344a7f5eSAndroid Build Coastguard Worker                                                   vector bool int __b) {
240*344a7f5eSAndroid Build Coastguard Worker   return __a + (vector int)__b;
241*344a7f5eSAndroid Build Coastguard Worker }
242*344a7f5eSAndroid Build Coastguard Worker 
243*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_add(vector unsigned int __a,vector unsigned int __b)244*344a7f5eSAndroid Build Coastguard Worker vec_add(vector unsigned int __a, vector unsigned int __b) {
245*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
246*344a7f5eSAndroid Build Coastguard Worker }
247*344a7f5eSAndroid Build Coastguard Worker 
248*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_add(vector bool int __a,vector unsigned int __b)249*344a7f5eSAndroid Build Coastguard Worker vec_add(vector bool int __a, vector unsigned int __b) {
250*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__a + __b;
251*344a7f5eSAndroid Build Coastguard Worker }
252*344a7f5eSAndroid Build Coastguard Worker 
253*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_add(vector unsigned int __a,vector bool int __b)254*344a7f5eSAndroid Build Coastguard Worker vec_add(vector unsigned int __a, vector bool int __b) {
255*344a7f5eSAndroid Build Coastguard Worker   return __a + (vector unsigned int)__b;
256*344a7f5eSAndroid Build Coastguard Worker }
257*344a7f5eSAndroid Build Coastguard Worker 
258*344a7f5eSAndroid Build Coastguard Worker #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
259*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_add(vector signed long long __a,vector signed long long __b)260*344a7f5eSAndroid Build Coastguard Worker vec_add(vector signed long long __a, vector signed long long __b) {
261*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
262*344a7f5eSAndroid Build Coastguard Worker }
263*344a7f5eSAndroid Build Coastguard Worker 
264*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_add(vector unsigned long long __a,vector unsigned long long __b)265*344a7f5eSAndroid Build Coastguard Worker vec_add(vector unsigned long long __a, vector unsigned long long __b) {
266*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
267*344a7f5eSAndroid Build Coastguard Worker }
268*344a7f5eSAndroid Build Coastguard Worker 
269*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_add(vector signed __int128 __a,vector signed __int128 __b)270*344a7f5eSAndroid Build Coastguard Worker vec_add(vector signed __int128 __a, vector signed __int128 __b) {
271*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
272*344a7f5eSAndroid Build Coastguard Worker }
273*344a7f5eSAndroid Build Coastguard Worker 
274*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_add(vector unsigned __int128 __a,vector unsigned __int128 __b)275*344a7f5eSAndroid Build Coastguard Worker vec_add(vector unsigned __int128 __a, vector unsigned __int128 __b) {
276*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
277*344a7f5eSAndroid Build Coastguard Worker }
278*344a7f5eSAndroid Build Coastguard Worker #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
279*344a7f5eSAndroid Build Coastguard Worker 
vec_add(vector float __a,vector float __b)280*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_add(vector float __a,
281*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
282*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
283*344a7f5eSAndroid Build Coastguard Worker }
284*344a7f5eSAndroid Build Coastguard Worker 
285*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_add(vector double __a,vector double __b)286*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_add(vector double __a,
287*344a7f5eSAndroid Build Coastguard Worker                                                      vector double __b) {
288*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
289*344a7f5eSAndroid Build Coastguard Worker }
290*344a7f5eSAndroid Build Coastguard Worker #endif // __VSX__
291*344a7f5eSAndroid Build Coastguard Worker 
292*344a7f5eSAndroid Build Coastguard Worker /* vec_adde */
293*344a7f5eSAndroid Build Coastguard Worker 
294*344a7f5eSAndroid Build Coastguard Worker #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
295*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_adde(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)296*344a7f5eSAndroid Build Coastguard Worker vec_adde(vector signed __int128 __a, vector signed __int128 __b,
297*344a7f5eSAndroid Build Coastguard Worker          vector signed __int128 __c) {
298*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddeuqm(__a, __b, __c);
299*344a7f5eSAndroid Build Coastguard Worker }
300*344a7f5eSAndroid Build Coastguard Worker 
301*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_adde(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)302*344a7f5eSAndroid Build Coastguard Worker vec_adde(vector unsigned __int128 __a, vector unsigned __int128 __b,
303*344a7f5eSAndroid Build Coastguard Worker          vector unsigned __int128 __c) {
304*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddeuqm(__a, __b, __c);
305*344a7f5eSAndroid Build Coastguard Worker }
306*344a7f5eSAndroid Build Coastguard Worker #endif
307*344a7f5eSAndroid Build Coastguard Worker 
308*344a7f5eSAndroid Build Coastguard Worker /* vec_addec */
309*344a7f5eSAndroid Build Coastguard Worker 
310*344a7f5eSAndroid Build Coastguard Worker #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
311*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_addec(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)312*344a7f5eSAndroid Build Coastguard Worker vec_addec(vector signed __int128 __a, vector signed __int128 __b,
313*344a7f5eSAndroid Build Coastguard Worker           vector signed __int128 __c) {
314*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddecuq(__a, __b, __c);
315*344a7f5eSAndroid Build Coastguard Worker }
316*344a7f5eSAndroid Build Coastguard Worker 
317*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_addec(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)318*344a7f5eSAndroid Build Coastguard Worker vec_addec(vector unsigned __int128 __a, vector unsigned __int128 __b,
319*344a7f5eSAndroid Build Coastguard Worker           vector unsigned __int128 __c) {
320*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddecuq(__a, __b, __c);
321*344a7f5eSAndroid Build Coastguard Worker }
322*344a7f5eSAndroid Build Coastguard Worker #endif
323*344a7f5eSAndroid Build Coastguard Worker 
324*344a7f5eSAndroid Build Coastguard Worker /* vec_vaddubm */
325*344a7f5eSAndroid Build Coastguard Worker 
326*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vaddubm vec_vaddubm
327*344a7f5eSAndroid Build Coastguard Worker 
328*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vaddubm(vector signed char __a,vector signed char __b)329*344a7f5eSAndroid Build Coastguard Worker vec_vaddubm(vector signed char __a, vector signed char __b) {
330*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
331*344a7f5eSAndroid Build Coastguard Worker }
332*344a7f5eSAndroid Build Coastguard Worker 
333*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vaddubm(vector bool char __a,vector signed char __b)334*344a7f5eSAndroid Build Coastguard Worker vec_vaddubm(vector bool char __a, vector signed char __b) {
335*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__a + __b;
336*344a7f5eSAndroid Build Coastguard Worker }
337*344a7f5eSAndroid Build Coastguard Worker 
338*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vaddubm(vector signed char __a,vector bool char __b)339*344a7f5eSAndroid Build Coastguard Worker vec_vaddubm(vector signed char __a, vector bool char __b) {
340*344a7f5eSAndroid Build Coastguard Worker   return __a + (vector signed char)__b;
341*344a7f5eSAndroid Build Coastguard Worker }
342*344a7f5eSAndroid Build Coastguard Worker 
343*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubm(vector unsigned char __a,vector unsigned char __b)344*344a7f5eSAndroid Build Coastguard Worker vec_vaddubm(vector unsigned char __a, vector unsigned char __b) {
345*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
346*344a7f5eSAndroid Build Coastguard Worker }
347*344a7f5eSAndroid Build Coastguard Worker 
348*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubm(vector bool char __a,vector unsigned char __b)349*344a7f5eSAndroid Build Coastguard Worker vec_vaddubm(vector bool char __a, vector unsigned char __b) {
350*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__a + __b;
351*344a7f5eSAndroid Build Coastguard Worker }
352*344a7f5eSAndroid Build Coastguard Worker 
353*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubm(vector unsigned char __a,vector bool char __b)354*344a7f5eSAndroid Build Coastguard Worker vec_vaddubm(vector unsigned char __a, vector bool char __b) {
355*344a7f5eSAndroid Build Coastguard Worker   return __a + (vector unsigned char)__b;
356*344a7f5eSAndroid Build Coastguard Worker }
357*344a7f5eSAndroid Build Coastguard Worker 
358*344a7f5eSAndroid Build Coastguard Worker /* vec_vadduhm */
359*344a7f5eSAndroid Build Coastguard Worker 
360*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vadduhm vec_vadduhm
361*344a7f5eSAndroid Build Coastguard Worker 
vec_vadduhm(vector short __a,vector short __b)362*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
363*344a7f5eSAndroid Build Coastguard Worker                                                         vector short __b) {
364*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
365*344a7f5eSAndroid Build Coastguard Worker }
366*344a7f5eSAndroid Build Coastguard Worker 
vec_vadduhm(vector bool short __a,vector short __b)367*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector bool short __a,
368*344a7f5eSAndroid Build Coastguard Worker                                                         vector short __b) {
369*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a + __b;
370*344a7f5eSAndroid Build Coastguard Worker }
371*344a7f5eSAndroid Build Coastguard Worker 
vec_vadduhm(vector short __a,vector bool short __b)372*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vadduhm(vector short __a,
373*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool short __b) {
374*344a7f5eSAndroid Build Coastguard Worker   return __a + (vector short)__b;
375*344a7f5eSAndroid Build Coastguard Worker }
376*344a7f5eSAndroid Build Coastguard Worker 
377*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhm(vector unsigned short __a,vector unsigned short __b)378*344a7f5eSAndroid Build Coastguard Worker vec_vadduhm(vector unsigned short __a, vector unsigned short __b) {
379*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
380*344a7f5eSAndroid Build Coastguard Worker }
381*344a7f5eSAndroid Build Coastguard Worker 
382*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhm(vector bool short __a,vector unsigned short __b)383*344a7f5eSAndroid Build Coastguard Worker vec_vadduhm(vector bool short __a, vector unsigned short __b) {
384*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__a + __b;
385*344a7f5eSAndroid Build Coastguard Worker }
386*344a7f5eSAndroid Build Coastguard Worker 
387*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhm(vector unsigned short __a,vector bool short __b)388*344a7f5eSAndroid Build Coastguard Worker vec_vadduhm(vector unsigned short __a, vector bool short __b) {
389*344a7f5eSAndroid Build Coastguard Worker   return __a + (vector unsigned short)__b;
390*344a7f5eSAndroid Build Coastguard Worker }
391*344a7f5eSAndroid Build Coastguard Worker 
392*344a7f5eSAndroid Build Coastguard Worker /* vec_vadduwm */
393*344a7f5eSAndroid Build Coastguard Worker 
394*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vadduwm vec_vadduwm
395*344a7f5eSAndroid Build Coastguard Worker 
vec_vadduwm(vector int __a,vector int __b)396*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
397*344a7f5eSAndroid Build Coastguard Worker                                                       vector int __b) {
398*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
399*344a7f5eSAndroid Build Coastguard Worker }
400*344a7f5eSAndroid Build Coastguard Worker 
vec_vadduwm(vector bool int __a,vector int __b)401*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector bool int __a,
402*344a7f5eSAndroid Build Coastguard Worker                                                       vector int __b) {
403*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__a + __b;
404*344a7f5eSAndroid Build Coastguard Worker }
405*344a7f5eSAndroid Build Coastguard Worker 
vec_vadduwm(vector int __a,vector bool int __b)406*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vadduwm(vector int __a,
407*344a7f5eSAndroid Build Coastguard Worker                                                       vector bool int __b) {
408*344a7f5eSAndroid Build Coastguard Worker   return __a + (vector int)__b;
409*344a7f5eSAndroid Build Coastguard Worker }
410*344a7f5eSAndroid Build Coastguard Worker 
411*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduwm(vector unsigned int __a,vector unsigned int __b)412*344a7f5eSAndroid Build Coastguard Worker vec_vadduwm(vector unsigned int __a, vector unsigned int __b) {
413*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
414*344a7f5eSAndroid Build Coastguard Worker }
415*344a7f5eSAndroid Build Coastguard Worker 
416*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduwm(vector bool int __a,vector unsigned int __b)417*344a7f5eSAndroid Build Coastguard Worker vec_vadduwm(vector bool int __a, vector unsigned int __b) {
418*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__a + __b;
419*344a7f5eSAndroid Build Coastguard Worker }
420*344a7f5eSAndroid Build Coastguard Worker 
421*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduwm(vector unsigned int __a,vector bool int __b)422*344a7f5eSAndroid Build Coastguard Worker vec_vadduwm(vector unsigned int __a, vector bool int __b) {
423*344a7f5eSAndroid Build Coastguard Worker   return __a + (vector unsigned int)__b;
424*344a7f5eSAndroid Build Coastguard Worker }
425*344a7f5eSAndroid Build Coastguard Worker 
426*344a7f5eSAndroid Build Coastguard Worker /* vec_vaddfp */
427*344a7f5eSAndroid Build Coastguard Worker 
428*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vaddfp vec_vaddfp
429*344a7f5eSAndroid Build Coastguard Worker 
430*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vaddfp(vector float __a,vector float __b)431*344a7f5eSAndroid Build Coastguard Worker vec_vaddfp(vector float __a, vector float __b) {
432*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
433*344a7f5eSAndroid Build Coastguard Worker }
434*344a7f5eSAndroid Build Coastguard Worker 
435*344a7f5eSAndroid Build Coastguard Worker /* vec_addc */
436*344a7f5eSAndroid Build Coastguard Worker 
437*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_addc(vector signed int __a,vector signed int __b)438*344a7f5eSAndroid Build Coastguard Worker vec_addc(vector signed int __a, vector signed int __b) {
439*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)__builtin_altivec_vaddcuw((vector unsigned int)__a,
440*344a7f5eSAndroid Build Coastguard Worker                                                       (vector unsigned int)__b);
441*344a7f5eSAndroid Build Coastguard Worker }
442*344a7f5eSAndroid Build Coastguard Worker 
443*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_addc(vector unsigned int __a,vector unsigned int __b)444*344a7f5eSAndroid Build Coastguard Worker vec_addc(vector unsigned int __a, vector unsigned int __b) {
445*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddcuw(__a, __b);
446*344a7f5eSAndroid Build Coastguard Worker }
447*344a7f5eSAndroid Build Coastguard Worker 
448*344a7f5eSAndroid Build Coastguard Worker #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
449*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_addc(vector signed __int128 __a,vector signed __int128 __b)450*344a7f5eSAndroid Build Coastguard Worker vec_addc(vector signed __int128 __a, vector signed __int128 __b) {
451*344a7f5eSAndroid Build Coastguard Worker   return (vector signed __int128)__builtin_altivec_vaddcuq(
452*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned __int128)__a, (vector unsigned __int128)__b);
453*344a7f5eSAndroid Build Coastguard Worker }
454*344a7f5eSAndroid Build Coastguard Worker 
455*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_addc(vector unsigned __int128 __a,vector unsigned __int128 __b)456*344a7f5eSAndroid Build Coastguard Worker vec_addc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
457*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddcuq(__a, __b);
458*344a7f5eSAndroid Build Coastguard Worker }
459*344a7f5eSAndroid Build Coastguard Worker #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
460*344a7f5eSAndroid Build Coastguard Worker 
461*344a7f5eSAndroid Build Coastguard Worker /* vec_vaddcuw */
462*344a7f5eSAndroid Build Coastguard Worker 
463*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vaddcuw(vector unsigned int __a,vector unsigned int __b)464*344a7f5eSAndroid Build Coastguard Worker vec_vaddcuw(vector unsigned int __a, vector unsigned int __b) {
465*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddcuw(__a, __b);
466*344a7f5eSAndroid Build Coastguard Worker }
467*344a7f5eSAndroid Build Coastguard Worker 
468*344a7f5eSAndroid Build Coastguard Worker /* vec_adds */
469*344a7f5eSAndroid Build Coastguard Worker 
470*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_adds(vector signed char __a,vector signed char __b)471*344a7f5eSAndroid Build Coastguard Worker vec_adds(vector signed char __a, vector signed char __b) {
472*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddsbs(__a, __b);
473*344a7f5eSAndroid Build Coastguard Worker }
474*344a7f5eSAndroid Build Coastguard Worker 
475*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_adds(vector bool char __a,vector signed char __b)476*344a7f5eSAndroid Build Coastguard Worker vec_adds(vector bool char __a, vector signed char __b) {
477*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
478*344a7f5eSAndroid Build Coastguard Worker }
479*344a7f5eSAndroid Build Coastguard Worker 
480*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_adds(vector signed char __a,vector bool char __b)481*344a7f5eSAndroid Build Coastguard Worker vec_adds(vector signed char __a, vector bool char __b) {
482*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
483*344a7f5eSAndroid Build Coastguard Worker }
484*344a7f5eSAndroid Build Coastguard Worker 
485*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_adds(vector unsigned char __a,vector unsigned char __b)486*344a7f5eSAndroid Build Coastguard Worker vec_adds(vector unsigned char __a, vector unsigned char __b) {
487*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddubs(__a, __b);
488*344a7f5eSAndroid Build Coastguard Worker }
489*344a7f5eSAndroid Build Coastguard Worker 
490*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_adds(vector bool char __a,vector unsigned char __b)491*344a7f5eSAndroid Build Coastguard Worker vec_adds(vector bool char __a, vector unsigned char __b) {
492*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
493*344a7f5eSAndroid Build Coastguard Worker }
494*344a7f5eSAndroid Build Coastguard Worker 
495*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_adds(vector unsigned char __a,vector bool char __b)496*344a7f5eSAndroid Build Coastguard Worker vec_adds(vector unsigned char __a, vector bool char __b) {
497*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
498*344a7f5eSAndroid Build Coastguard Worker }
499*344a7f5eSAndroid Build Coastguard Worker 
vec_adds(vector short __a,vector short __b)500*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
501*344a7f5eSAndroid Build Coastguard Worker                                                      vector short __b) {
502*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddshs(__a, __b);
503*344a7f5eSAndroid Build Coastguard Worker }
504*344a7f5eSAndroid Build Coastguard Worker 
vec_adds(vector bool short __a,vector short __b)505*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_adds(vector bool short __a,
506*344a7f5eSAndroid Build Coastguard Worker                                                      vector short __b) {
507*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddshs((vector short)__a, __b);
508*344a7f5eSAndroid Build Coastguard Worker }
509*344a7f5eSAndroid Build Coastguard Worker 
vec_adds(vector short __a,vector bool short __b)510*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_adds(vector short __a,
511*344a7f5eSAndroid Build Coastguard Worker                                                      vector bool short __b) {
512*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddshs(__a, (vector short)__b);
513*344a7f5eSAndroid Build Coastguard Worker }
514*344a7f5eSAndroid Build Coastguard Worker 
515*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_adds(vector unsigned short __a,vector unsigned short __b)516*344a7f5eSAndroid Build Coastguard Worker vec_adds(vector unsigned short __a, vector unsigned short __b) {
517*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vadduhs(__a, __b);
518*344a7f5eSAndroid Build Coastguard Worker }
519*344a7f5eSAndroid Build Coastguard Worker 
520*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_adds(vector bool short __a,vector unsigned short __b)521*344a7f5eSAndroid Build Coastguard Worker vec_adds(vector bool short __a, vector unsigned short __b) {
522*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
523*344a7f5eSAndroid Build Coastguard Worker }
524*344a7f5eSAndroid Build Coastguard Worker 
525*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_adds(vector unsigned short __a,vector bool short __b)526*344a7f5eSAndroid Build Coastguard Worker vec_adds(vector unsigned short __a, vector bool short __b) {
527*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
528*344a7f5eSAndroid Build Coastguard Worker }
529*344a7f5eSAndroid Build Coastguard Worker 
vec_adds(vector int __a,vector int __b)530*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
531*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b) {
532*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddsws(__a, __b);
533*344a7f5eSAndroid Build Coastguard Worker }
534*344a7f5eSAndroid Build Coastguard Worker 
vec_adds(vector bool int __a,vector int __b)535*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_adds(vector bool int __a,
536*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b) {
537*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddsws((vector int)__a, __b);
538*344a7f5eSAndroid Build Coastguard Worker }
539*344a7f5eSAndroid Build Coastguard Worker 
vec_adds(vector int __a,vector bool int __b)540*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_adds(vector int __a,
541*344a7f5eSAndroid Build Coastguard Worker                                                    vector bool int __b) {
542*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddsws(__a, (vector int)__b);
543*344a7f5eSAndroid Build Coastguard Worker }
544*344a7f5eSAndroid Build Coastguard Worker 
545*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_adds(vector unsigned int __a,vector unsigned int __b)546*344a7f5eSAndroid Build Coastguard Worker vec_adds(vector unsigned int __a, vector unsigned int __b) {
547*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vadduws(__a, __b);
548*344a7f5eSAndroid Build Coastguard Worker }
549*344a7f5eSAndroid Build Coastguard Worker 
550*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_adds(vector bool int __a,vector unsigned int __b)551*344a7f5eSAndroid Build Coastguard Worker vec_adds(vector bool int __a, vector unsigned int __b) {
552*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
553*344a7f5eSAndroid Build Coastguard Worker }
554*344a7f5eSAndroid Build Coastguard Worker 
555*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_adds(vector unsigned int __a,vector bool int __b)556*344a7f5eSAndroid Build Coastguard Worker vec_adds(vector unsigned int __a, vector bool int __b) {
557*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
558*344a7f5eSAndroid Build Coastguard Worker }
559*344a7f5eSAndroid Build Coastguard Worker 
560*344a7f5eSAndroid Build Coastguard Worker /* vec_vaddsbs */
561*344a7f5eSAndroid Build Coastguard Worker 
562*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vaddsbs(vector signed char __a,vector signed char __b)563*344a7f5eSAndroid Build Coastguard Worker vec_vaddsbs(vector signed char __a, vector signed char __b) {
564*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddsbs(__a, __b);
565*344a7f5eSAndroid Build Coastguard Worker }
566*344a7f5eSAndroid Build Coastguard Worker 
567*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vaddsbs(vector bool char __a,vector signed char __b)568*344a7f5eSAndroid Build Coastguard Worker vec_vaddsbs(vector bool char __a, vector signed char __b) {
569*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddsbs((vector signed char)__a, __b);
570*344a7f5eSAndroid Build Coastguard Worker }
571*344a7f5eSAndroid Build Coastguard Worker 
572*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vaddsbs(vector signed char __a,vector bool char __b)573*344a7f5eSAndroid Build Coastguard Worker vec_vaddsbs(vector signed char __a, vector bool char __b) {
574*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddsbs(__a, (vector signed char)__b);
575*344a7f5eSAndroid Build Coastguard Worker }
576*344a7f5eSAndroid Build Coastguard Worker 
577*344a7f5eSAndroid Build Coastguard Worker /* vec_vaddubs */
578*344a7f5eSAndroid Build Coastguard Worker 
579*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubs(vector unsigned char __a,vector unsigned char __b)580*344a7f5eSAndroid Build Coastguard Worker vec_vaddubs(vector unsigned char __a, vector unsigned char __b) {
581*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddubs(__a, __b);
582*344a7f5eSAndroid Build Coastguard Worker }
583*344a7f5eSAndroid Build Coastguard Worker 
584*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubs(vector bool char __a,vector unsigned char __b)585*344a7f5eSAndroid Build Coastguard Worker vec_vaddubs(vector bool char __a, vector unsigned char __b) {
586*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddubs((vector unsigned char)__a, __b);
587*344a7f5eSAndroid Build Coastguard Worker }
588*344a7f5eSAndroid Build Coastguard Worker 
589*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vaddubs(vector unsigned char __a,vector bool char __b)590*344a7f5eSAndroid Build Coastguard Worker vec_vaddubs(vector unsigned char __a, vector bool char __b) {
591*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddubs(__a, (vector unsigned char)__b);
592*344a7f5eSAndroid Build Coastguard Worker }
593*344a7f5eSAndroid Build Coastguard Worker 
594*344a7f5eSAndroid Build Coastguard Worker /* vec_vaddshs */
595*344a7f5eSAndroid Build Coastguard Worker 
vec_vaddshs(vector short __a,vector short __b)596*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
597*344a7f5eSAndroid Build Coastguard Worker                                                         vector short __b) {
598*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddshs(__a, __b);
599*344a7f5eSAndroid Build Coastguard Worker }
600*344a7f5eSAndroid Build Coastguard Worker 
vec_vaddshs(vector bool short __a,vector short __b)601*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector bool short __a,
602*344a7f5eSAndroid Build Coastguard Worker                                                         vector short __b) {
603*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddshs((vector short)__a, __b);
604*344a7f5eSAndroid Build Coastguard Worker }
605*344a7f5eSAndroid Build Coastguard Worker 
vec_vaddshs(vector short __a,vector bool short __b)606*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vaddshs(vector short __a,
607*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool short __b) {
608*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddshs(__a, (vector short)__b);
609*344a7f5eSAndroid Build Coastguard Worker }
610*344a7f5eSAndroid Build Coastguard Worker 
611*344a7f5eSAndroid Build Coastguard Worker /* vec_vadduhs */
612*344a7f5eSAndroid Build Coastguard Worker 
613*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhs(vector unsigned short __a,vector unsigned short __b)614*344a7f5eSAndroid Build Coastguard Worker vec_vadduhs(vector unsigned short __a, vector unsigned short __b) {
615*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vadduhs(__a, __b);
616*344a7f5eSAndroid Build Coastguard Worker }
617*344a7f5eSAndroid Build Coastguard Worker 
618*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhs(vector bool short __a,vector unsigned short __b)619*344a7f5eSAndroid Build Coastguard Worker vec_vadduhs(vector bool short __a, vector unsigned short __b) {
620*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vadduhs((vector unsigned short)__a, __b);
621*344a7f5eSAndroid Build Coastguard Worker }
622*344a7f5eSAndroid Build Coastguard Worker 
623*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vadduhs(vector unsigned short __a,vector bool short __b)624*344a7f5eSAndroid Build Coastguard Worker vec_vadduhs(vector unsigned short __a, vector bool short __b) {
625*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vadduhs(__a, (vector unsigned short)__b);
626*344a7f5eSAndroid Build Coastguard Worker }
627*344a7f5eSAndroid Build Coastguard Worker 
628*344a7f5eSAndroid Build Coastguard Worker /* vec_vaddsws */
629*344a7f5eSAndroid Build Coastguard Worker 
vec_vaddsws(vector int __a,vector int __b)630*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
631*344a7f5eSAndroid Build Coastguard Worker                                                       vector int __b) {
632*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddsws(__a, __b);
633*344a7f5eSAndroid Build Coastguard Worker }
634*344a7f5eSAndroid Build Coastguard Worker 
vec_vaddsws(vector bool int __a,vector int __b)635*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector bool int __a,
636*344a7f5eSAndroid Build Coastguard Worker                                                       vector int __b) {
637*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddsws((vector int)__a, __b);
638*344a7f5eSAndroid Build Coastguard Worker }
639*344a7f5eSAndroid Build Coastguard Worker 
vec_vaddsws(vector int __a,vector bool int __b)640*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vaddsws(vector int __a,
641*344a7f5eSAndroid Build Coastguard Worker                                                       vector bool int __b) {
642*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddsws(__a, (vector int)__b);
643*344a7f5eSAndroid Build Coastguard Worker }
644*344a7f5eSAndroid Build Coastguard Worker 
645*344a7f5eSAndroid Build Coastguard Worker /* vec_vadduws */
646*344a7f5eSAndroid Build Coastguard Worker 
647*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduws(vector unsigned int __a,vector unsigned int __b)648*344a7f5eSAndroid Build Coastguard Worker vec_vadduws(vector unsigned int __a, vector unsigned int __b) {
649*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vadduws(__a, __b);
650*344a7f5eSAndroid Build Coastguard Worker }
651*344a7f5eSAndroid Build Coastguard Worker 
652*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduws(vector bool int __a,vector unsigned int __b)653*344a7f5eSAndroid Build Coastguard Worker vec_vadduws(vector bool int __a, vector unsigned int __b) {
654*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vadduws((vector unsigned int)__a, __b);
655*344a7f5eSAndroid Build Coastguard Worker }
656*344a7f5eSAndroid Build Coastguard Worker 
657*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vadduws(vector unsigned int __a,vector bool int __b)658*344a7f5eSAndroid Build Coastguard Worker vec_vadduws(vector unsigned int __a, vector bool int __b) {
659*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vadduws(__a, (vector unsigned int)__b);
660*344a7f5eSAndroid Build Coastguard Worker }
661*344a7f5eSAndroid Build Coastguard Worker 
662*344a7f5eSAndroid Build Coastguard Worker #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
663*344a7f5eSAndroid Build Coastguard Worker /* vec_vadduqm */
664*344a7f5eSAndroid Build Coastguard Worker 
665*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vadduqm(vector signed __int128 __a,vector signed __int128 __b)666*344a7f5eSAndroid Build Coastguard Worker vec_vadduqm(vector signed __int128 __a, vector signed __int128 __b) {
667*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
668*344a7f5eSAndroid Build Coastguard Worker }
669*344a7f5eSAndroid Build Coastguard Worker 
670*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vadduqm(vector unsigned __int128 __a,vector unsigned __int128 __b)671*344a7f5eSAndroid Build Coastguard Worker vec_vadduqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
672*344a7f5eSAndroid Build Coastguard Worker   return __a + __b;
673*344a7f5eSAndroid Build Coastguard Worker }
674*344a7f5eSAndroid Build Coastguard Worker 
675*344a7f5eSAndroid Build Coastguard Worker /* vec_vaddeuqm */
676*344a7f5eSAndroid Build Coastguard Worker 
677*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vaddeuqm(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)678*344a7f5eSAndroid Build Coastguard Worker vec_vaddeuqm(vector signed __int128 __a, vector signed __int128 __b,
679*344a7f5eSAndroid Build Coastguard Worker              vector signed __int128 __c) {
680*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddeuqm(__a, __b, __c);
681*344a7f5eSAndroid Build Coastguard Worker }
682*344a7f5eSAndroid Build Coastguard Worker 
683*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vaddeuqm(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)684*344a7f5eSAndroid Build Coastguard Worker vec_vaddeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
685*344a7f5eSAndroid Build Coastguard Worker              vector unsigned __int128 __c) {
686*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddeuqm(__a, __b, __c);
687*344a7f5eSAndroid Build Coastguard Worker }
688*344a7f5eSAndroid Build Coastguard Worker 
689*344a7f5eSAndroid Build Coastguard Worker /* vec_vaddcuq */
690*344a7f5eSAndroid Build Coastguard Worker 
691*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vaddcuq(vector signed __int128 __a,vector signed __int128 __b)692*344a7f5eSAndroid Build Coastguard Worker vec_vaddcuq(vector signed __int128 __a, vector signed __int128 __b) {
693*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddcuq(__a, __b);
694*344a7f5eSAndroid Build Coastguard Worker }
695*344a7f5eSAndroid Build Coastguard Worker 
696*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vaddcuq(vector unsigned __int128 __a,vector unsigned __int128 __b)697*344a7f5eSAndroid Build Coastguard Worker vec_vaddcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
698*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddcuq(__a, __b);
699*344a7f5eSAndroid Build Coastguard Worker }
700*344a7f5eSAndroid Build Coastguard Worker 
701*344a7f5eSAndroid Build Coastguard Worker /* vec_vaddecuq */
702*344a7f5eSAndroid Build Coastguard Worker 
703*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vaddecuq(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)704*344a7f5eSAndroid Build Coastguard Worker vec_vaddecuq(vector signed __int128 __a, vector signed __int128 __b,
705*344a7f5eSAndroid Build Coastguard Worker              vector signed __int128 __c) {
706*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddecuq(__a, __b, __c);
707*344a7f5eSAndroid Build Coastguard Worker }
708*344a7f5eSAndroid Build Coastguard Worker 
709*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vaddecuq(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)710*344a7f5eSAndroid Build Coastguard Worker vec_vaddecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
711*344a7f5eSAndroid Build Coastguard Worker              vector unsigned __int128 __c) {
712*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vaddecuq(__a, __b, __c);
713*344a7f5eSAndroid Build Coastguard Worker }
714*344a7f5eSAndroid Build Coastguard Worker #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
715*344a7f5eSAndroid Build Coastguard Worker 
716*344a7f5eSAndroid Build Coastguard Worker /* vec_and */
717*344a7f5eSAndroid Build Coastguard Worker 
718*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vand vec_and
719*344a7f5eSAndroid Build Coastguard Worker 
720*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_and(vector signed char __a,vector signed char __b)721*344a7f5eSAndroid Build Coastguard Worker vec_and(vector signed char __a, vector signed char __b) {
722*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
723*344a7f5eSAndroid Build Coastguard Worker }
724*344a7f5eSAndroid Build Coastguard Worker 
725*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_and(vector bool char __a,vector signed char __b)726*344a7f5eSAndroid Build Coastguard Worker vec_and(vector bool char __a, vector signed char __b) {
727*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__a & __b;
728*344a7f5eSAndroid Build Coastguard Worker }
729*344a7f5eSAndroid Build Coastguard Worker 
730*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_and(vector signed char __a,vector bool char __b)731*344a7f5eSAndroid Build Coastguard Worker vec_and(vector signed char __a, vector bool char __b) {
732*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector signed char)__b;
733*344a7f5eSAndroid Build Coastguard Worker }
734*344a7f5eSAndroid Build Coastguard Worker 
735*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_and(vector unsigned char __a,vector unsigned char __b)736*344a7f5eSAndroid Build Coastguard Worker vec_and(vector unsigned char __a, vector unsigned char __b) {
737*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
738*344a7f5eSAndroid Build Coastguard Worker }
739*344a7f5eSAndroid Build Coastguard Worker 
740*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_and(vector bool char __a,vector unsigned char __b)741*344a7f5eSAndroid Build Coastguard Worker vec_and(vector bool char __a, vector unsigned char __b) {
742*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__a & __b;
743*344a7f5eSAndroid Build Coastguard Worker }
744*344a7f5eSAndroid Build Coastguard Worker 
745*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_and(vector unsigned char __a,vector bool char __b)746*344a7f5eSAndroid Build Coastguard Worker vec_and(vector unsigned char __a, vector bool char __b) {
747*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector unsigned char)__b;
748*344a7f5eSAndroid Build Coastguard Worker }
749*344a7f5eSAndroid Build Coastguard Worker 
vec_and(vector bool char __a,vector bool char __b)750*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_and(vector bool char __a,
751*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool char __b) {
752*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
753*344a7f5eSAndroid Build Coastguard Worker }
754*344a7f5eSAndroid Build Coastguard Worker 
vec_and(vector short __a,vector short __b)755*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
756*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
757*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
758*344a7f5eSAndroid Build Coastguard Worker }
759*344a7f5eSAndroid Build Coastguard Worker 
vec_and(vector bool short __a,vector short __b)760*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_and(vector bool short __a,
761*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
762*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a & __b;
763*344a7f5eSAndroid Build Coastguard Worker }
764*344a7f5eSAndroid Build Coastguard Worker 
vec_and(vector short __a,vector bool short __b)765*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_and(vector short __a,
766*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool short __b) {
767*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector short)__b;
768*344a7f5eSAndroid Build Coastguard Worker }
769*344a7f5eSAndroid Build Coastguard Worker 
770*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_and(vector unsigned short __a,vector unsigned short __b)771*344a7f5eSAndroid Build Coastguard Worker vec_and(vector unsigned short __a, vector unsigned short __b) {
772*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
773*344a7f5eSAndroid Build Coastguard Worker }
774*344a7f5eSAndroid Build Coastguard Worker 
775*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_and(vector bool short __a,vector unsigned short __b)776*344a7f5eSAndroid Build Coastguard Worker vec_and(vector bool short __a, vector unsigned short __b) {
777*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__a & __b;
778*344a7f5eSAndroid Build Coastguard Worker }
779*344a7f5eSAndroid Build Coastguard Worker 
780*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_and(vector unsigned short __a,vector bool short __b)781*344a7f5eSAndroid Build Coastguard Worker vec_and(vector unsigned short __a, vector bool short __b) {
782*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector unsigned short)__b;
783*344a7f5eSAndroid Build Coastguard Worker }
784*344a7f5eSAndroid Build Coastguard Worker 
785*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_and(vector bool short __a,vector bool short __b)786*344a7f5eSAndroid Build Coastguard Worker vec_and(vector bool short __a, vector bool short __b) {
787*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
788*344a7f5eSAndroid Build Coastguard Worker }
789*344a7f5eSAndroid Build Coastguard Worker 
vec_and(vector int __a,vector int __b)790*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
791*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
792*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
793*344a7f5eSAndroid Build Coastguard Worker }
794*344a7f5eSAndroid Build Coastguard Worker 
vec_and(vector bool int __a,vector int __b)795*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_and(vector bool int __a,
796*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
797*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__a & __b;
798*344a7f5eSAndroid Build Coastguard Worker }
799*344a7f5eSAndroid Build Coastguard Worker 
vec_and(vector int __a,vector bool int __b)800*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_and(vector int __a,
801*344a7f5eSAndroid Build Coastguard Worker                                                   vector bool int __b) {
802*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector int)__b;
803*344a7f5eSAndroid Build Coastguard Worker }
804*344a7f5eSAndroid Build Coastguard Worker 
805*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_and(vector unsigned int __a,vector unsigned int __b)806*344a7f5eSAndroid Build Coastguard Worker vec_and(vector unsigned int __a, vector unsigned int __b) {
807*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
808*344a7f5eSAndroid Build Coastguard Worker }
809*344a7f5eSAndroid Build Coastguard Worker 
810*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_and(vector bool int __a,vector unsigned int __b)811*344a7f5eSAndroid Build Coastguard Worker vec_and(vector bool int __a, vector unsigned int __b) {
812*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__a & __b;
813*344a7f5eSAndroid Build Coastguard Worker }
814*344a7f5eSAndroid Build Coastguard Worker 
815*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_and(vector unsigned int __a,vector bool int __b)816*344a7f5eSAndroid Build Coastguard Worker vec_and(vector unsigned int __a, vector bool int __b) {
817*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector unsigned int)__b;
818*344a7f5eSAndroid Build Coastguard Worker }
819*344a7f5eSAndroid Build Coastguard Worker 
vec_and(vector bool int __a,vector bool int __b)820*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_and(vector bool int __a,
821*344a7f5eSAndroid Build Coastguard Worker                                                        vector bool int __b) {
822*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
823*344a7f5eSAndroid Build Coastguard Worker }
824*344a7f5eSAndroid Build Coastguard Worker 
vec_and(vector float __a,vector float __b)825*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
826*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
827*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
828*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & (vector unsigned int)__b;
829*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
830*344a7f5eSAndroid Build Coastguard Worker }
831*344a7f5eSAndroid Build Coastguard Worker 
vec_and(vector bool int __a,vector float __b)832*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_and(vector bool int __a,
833*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
834*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
835*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & (vector unsigned int)__b;
836*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
837*344a7f5eSAndroid Build Coastguard Worker }
838*344a7f5eSAndroid Build Coastguard Worker 
vec_and(vector float __a,vector bool int __b)839*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_and(vector float __a,
840*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool int __b) {
841*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
842*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & (vector unsigned int)__b;
843*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
844*344a7f5eSAndroid Build Coastguard Worker }
845*344a7f5eSAndroid Build Coastguard Worker 
846*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_and(vector bool long long __a,vector double __b)847*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_and(vector bool long long __a,
848*344a7f5eSAndroid Build Coastguard Worker                                                      vector double __b) {
849*344a7f5eSAndroid Build Coastguard Worker   vector unsigned long long __res =
850*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned long long)__a & (vector unsigned long long)__b;
851*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__res;
852*344a7f5eSAndroid Build Coastguard Worker }
853*344a7f5eSAndroid Build Coastguard Worker 
854*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_and(vector double __a,vector bool long long __b)855*344a7f5eSAndroid Build Coastguard Worker vec_and(vector double __a, vector bool long long __b) {
856*344a7f5eSAndroid Build Coastguard Worker   vector unsigned long long __res =
857*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned long long)__a & (vector unsigned long long)__b;
858*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__res;
859*344a7f5eSAndroid Build Coastguard Worker }
860*344a7f5eSAndroid Build Coastguard Worker 
vec_and(vector double __a,vector double __b)861*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_and(vector double __a,
862*344a7f5eSAndroid Build Coastguard Worker                                                      vector double __b) {
863*344a7f5eSAndroid Build Coastguard Worker   vector unsigned long long __res =
864*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned long long)__a & (vector unsigned long long)__b;
865*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__res;
866*344a7f5eSAndroid Build Coastguard Worker }
867*344a7f5eSAndroid Build Coastguard Worker 
868*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_and(vector signed long long __a,vector signed long long __b)869*344a7f5eSAndroid Build Coastguard Worker vec_and(vector signed long long __a, vector signed long long __b) {
870*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
871*344a7f5eSAndroid Build Coastguard Worker }
872*344a7f5eSAndroid Build Coastguard Worker 
873*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_and(vector bool long long __a,vector signed long long __b)874*344a7f5eSAndroid Build Coastguard Worker vec_and(vector bool long long __a, vector signed long long __b) {
875*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__a & __b;
876*344a7f5eSAndroid Build Coastguard Worker }
877*344a7f5eSAndroid Build Coastguard Worker 
878*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_and(vector signed long long __a,vector bool long long __b)879*344a7f5eSAndroid Build Coastguard Worker vec_and(vector signed long long __a, vector bool long long __b) {
880*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector signed long long)__b;
881*344a7f5eSAndroid Build Coastguard Worker }
882*344a7f5eSAndroid Build Coastguard Worker 
883*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_and(vector unsigned long long __a,vector unsigned long long __b)884*344a7f5eSAndroid Build Coastguard Worker vec_and(vector unsigned long long __a, vector unsigned long long __b) {
885*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
886*344a7f5eSAndroid Build Coastguard Worker }
887*344a7f5eSAndroid Build Coastguard Worker 
888*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_and(vector bool long long __a,vector unsigned long long __b)889*344a7f5eSAndroid Build Coastguard Worker vec_and(vector bool long long __a, vector unsigned long long __b) {
890*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__a & __b;
891*344a7f5eSAndroid Build Coastguard Worker }
892*344a7f5eSAndroid Build Coastguard Worker 
893*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_and(vector unsigned long long __a,vector bool long long __b)894*344a7f5eSAndroid Build Coastguard Worker vec_and(vector unsigned long long __a, vector bool long long __b) {
895*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector unsigned long long)__b;
896*344a7f5eSAndroid Build Coastguard Worker }
897*344a7f5eSAndroid Build Coastguard Worker 
898*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_and(vector bool long long __a,vector bool long long __b)899*344a7f5eSAndroid Build Coastguard Worker vec_and(vector bool long long __a, vector bool long long __b) {
900*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
901*344a7f5eSAndroid Build Coastguard Worker }
902*344a7f5eSAndroid Build Coastguard Worker #endif
903*344a7f5eSAndroid Build Coastguard Worker 
904*344a7f5eSAndroid Build Coastguard Worker /* vec_vand */
905*344a7f5eSAndroid Build Coastguard Worker 
906*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vand(vector signed char __a,vector signed char __b)907*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector signed char __a, vector signed char __b) {
908*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
909*344a7f5eSAndroid Build Coastguard Worker }
910*344a7f5eSAndroid Build Coastguard Worker 
911*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vand(vector bool char __a,vector signed char __b)912*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector bool char __a, vector signed char __b) {
913*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__a & __b;
914*344a7f5eSAndroid Build Coastguard Worker }
915*344a7f5eSAndroid Build Coastguard Worker 
916*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vand(vector signed char __a,vector bool char __b)917*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector signed char __a, vector bool char __b) {
918*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector signed char)__b;
919*344a7f5eSAndroid Build Coastguard Worker }
920*344a7f5eSAndroid Build Coastguard Worker 
921*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vand(vector unsigned char __a,vector unsigned char __b)922*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector unsigned char __a, vector unsigned char __b) {
923*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
924*344a7f5eSAndroid Build Coastguard Worker }
925*344a7f5eSAndroid Build Coastguard Worker 
926*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vand(vector bool char __a,vector unsigned char __b)927*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector bool char __a, vector unsigned char __b) {
928*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__a & __b;
929*344a7f5eSAndroid Build Coastguard Worker }
930*344a7f5eSAndroid Build Coastguard Worker 
931*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vand(vector unsigned char __a,vector bool char __b)932*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector unsigned char __a, vector bool char __b) {
933*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector unsigned char)__b;
934*344a7f5eSAndroid Build Coastguard Worker }
935*344a7f5eSAndroid Build Coastguard Worker 
vec_vand(vector bool char __a,vector bool char __b)936*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_vand(vector bool char __a,
937*344a7f5eSAndroid Build Coastguard Worker                                                          vector bool char __b) {
938*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
939*344a7f5eSAndroid Build Coastguard Worker }
940*344a7f5eSAndroid Build Coastguard Worker 
vec_vand(vector short __a,vector short __b)941*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
942*344a7f5eSAndroid Build Coastguard Worker                                                      vector short __b) {
943*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
944*344a7f5eSAndroid Build Coastguard Worker }
945*344a7f5eSAndroid Build Coastguard Worker 
vec_vand(vector bool short __a,vector short __b)946*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vand(vector bool short __a,
947*344a7f5eSAndroid Build Coastguard Worker                                                      vector short __b) {
948*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a & __b;
949*344a7f5eSAndroid Build Coastguard Worker }
950*344a7f5eSAndroid Build Coastguard Worker 
vec_vand(vector short __a,vector bool short __b)951*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vand(vector short __a,
952*344a7f5eSAndroid Build Coastguard Worker                                                      vector bool short __b) {
953*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector short)__b;
954*344a7f5eSAndroid Build Coastguard Worker }
955*344a7f5eSAndroid Build Coastguard Worker 
956*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vand(vector unsigned short __a,vector unsigned short __b)957*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector unsigned short __a, vector unsigned short __b) {
958*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
959*344a7f5eSAndroid Build Coastguard Worker }
960*344a7f5eSAndroid Build Coastguard Worker 
961*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vand(vector bool short __a,vector unsigned short __b)962*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector bool short __a, vector unsigned short __b) {
963*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__a & __b;
964*344a7f5eSAndroid Build Coastguard Worker }
965*344a7f5eSAndroid Build Coastguard Worker 
966*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vand(vector unsigned short __a,vector bool short __b)967*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector unsigned short __a, vector bool short __b) {
968*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector unsigned short)__b;
969*344a7f5eSAndroid Build Coastguard Worker }
970*344a7f5eSAndroid Build Coastguard Worker 
971*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vand(vector bool short __a,vector bool short __b)972*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector bool short __a, vector bool short __b) {
973*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
974*344a7f5eSAndroid Build Coastguard Worker }
975*344a7f5eSAndroid Build Coastguard Worker 
vec_vand(vector int __a,vector int __b)976*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
977*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b) {
978*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
979*344a7f5eSAndroid Build Coastguard Worker }
980*344a7f5eSAndroid Build Coastguard Worker 
vec_vand(vector bool int __a,vector int __b)981*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vand(vector bool int __a,
982*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b) {
983*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__a & __b;
984*344a7f5eSAndroid Build Coastguard Worker }
985*344a7f5eSAndroid Build Coastguard Worker 
vec_vand(vector int __a,vector bool int __b)986*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vand(vector int __a,
987*344a7f5eSAndroid Build Coastguard Worker                                                    vector bool int __b) {
988*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector int)__b;
989*344a7f5eSAndroid Build Coastguard Worker }
990*344a7f5eSAndroid Build Coastguard Worker 
991*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vand(vector unsigned int __a,vector unsigned int __b)992*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector unsigned int __a, vector unsigned int __b) {
993*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
994*344a7f5eSAndroid Build Coastguard Worker }
995*344a7f5eSAndroid Build Coastguard Worker 
996*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vand(vector bool int __a,vector unsigned int __b)997*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector bool int __a, vector unsigned int __b) {
998*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__a & __b;
999*344a7f5eSAndroid Build Coastguard Worker }
1000*344a7f5eSAndroid Build Coastguard Worker 
1001*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vand(vector unsigned int __a,vector bool int __b)1002*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector unsigned int __a, vector bool int __b) {
1003*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector unsigned int)__b;
1004*344a7f5eSAndroid Build Coastguard Worker }
1005*344a7f5eSAndroid Build Coastguard Worker 
vec_vand(vector bool int __a,vector bool int __b)1006*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_vand(vector bool int __a,
1007*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool int __b) {
1008*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
1009*344a7f5eSAndroid Build Coastguard Worker }
1010*344a7f5eSAndroid Build Coastguard Worker 
vec_vand(vector float __a,vector float __b)1011*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
1012*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b) {
1013*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
1014*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & (vector unsigned int)__b;
1015*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
1016*344a7f5eSAndroid Build Coastguard Worker }
1017*344a7f5eSAndroid Build Coastguard Worker 
vec_vand(vector bool int __a,vector float __b)1018*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vand(vector bool int __a,
1019*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b) {
1020*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
1021*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & (vector unsigned int)__b;
1022*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
1023*344a7f5eSAndroid Build Coastguard Worker }
1024*344a7f5eSAndroid Build Coastguard Worker 
vec_vand(vector float __a,vector bool int __b)1025*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vand(vector float __a,
1026*344a7f5eSAndroid Build Coastguard Worker                                                      vector bool int __b) {
1027*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
1028*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & (vector unsigned int)__b;
1029*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
1030*344a7f5eSAndroid Build Coastguard Worker }
1031*344a7f5eSAndroid Build Coastguard Worker 
1032*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1033*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vand(vector signed long long __a,vector signed long long __b)1034*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector signed long long __a, vector signed long long __b) {
1035*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
1036*344a7f5eSAndroid Build Coastguard Worker }
1037*344a7f5eSAndroid Build Coastguard Worker 
1038*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vand(vector bool long long __a,vector signed long long __b)1039*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector bool long long __a, vector signed long long __b) {
1040*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__a & __b;
1041*344a7f5eSAndroid Build Coastguard Worker }
1042*344a7f5eSAndroid Build Coastguard Worker 
1043*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vand(vector signed long long __a,vector bool long long __b)1044*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector signed long long __a, vector bool long long __b) {
1045*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector signed long long)__b;
1046*344a7f5eSAndroid Build Coastguard Worker }
1047*344a7f5eSAndroid Build Coastguard Worker 
1048*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vand(vector unsigned long long __a,vector unsigned long long __b)1049*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector unsigned long long __a, vector unsigned long long __b) {
1050*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
1051*344a7f5eSAndroid Build Coastguard Worker }
1052*344a7f5eSAndroid Build Coastguard Worker 
1053*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vand(vector bool long long __a,vector unsigned long long __b)1054*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector bool long long __a, vector unsigned long long __b) {
1055*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__a & __b;
1056*344a7f5eSAndroid Build Coastguard Worker }
1057*344a7f5eSAndroid Build Coastguard Worker 
1058*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vand(vector unsigned long long __a,vector bool long long __b)1059*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector unsigned long long __a, vector bool long long __b) {
1060*344a7f5eSAndroid Build Coastguard Worker   return __a & (vector unsigned long long)__b;
1061*344a7f5eSAndroid Build Coastguard Worker }
1062*344a7f5eSAndroid Build Coastguard Worker 
1063*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_vand(vector bool long long __a,vector bool long long __b)1064*344a7f5eSAndroid Build Coastguard Worker vec_vand(vector bool long long __a, vector bool long long __b) {
1065*344a7f5eSAndroid Build Coastguard Worker   return __a & __b;
1066*344a7f5eSAndroid Build Coastguard Worker }
1067*344a7f5eSAndroid Build Coastguard Worker #endif
1068*344a7f5eSAndroid Build Coastguard Worker 
1069*344a7f5eSAndroid Build Coastguard Worker /* vec_andc */
1070*344a7f5eSAndroid Build Coastguard Worker 
1071*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vandc vec_andc
1072*344a7f5eSAndroid Build Coastguard Worker 
1073*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_andc(vector signed char __a,vector signed char __b)1074*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector signed char __a, vector signed char __b) {
1075*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1076*344a7f5eSAndroid Build Coastguard Worker }
1077*344a7f5eSAndroid Build Coastguard Worker 
1078*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_andc(vector bool char __a,vector signed char __b)1079*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector bool char __a, vector signed char __b) {
1080*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__a & ~__b;
1081*344a7f5eSAndroid Build Coastguard Worker }
1082*344a7f5eSAndroid Build Coastguard Worker 
1083*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_andc(vector signed char __a,vector bool char __b)1084*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector signed char __a, vector bool char __b) {
1085*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector signed char)__b;
1086*344a7f5eSAndroid Build Coastguard Worker }
1087*344a7f5eSAndroid Build Coastguard Worker 
1088*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_andc(vector unsigned char __a,vector unsigned char __b)1089*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector unsigned char __a, vector unsigned char __b) {
1090*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1091*344a7f5eSAndroid Build Coastguard Worker }
1092*344a7f5eSAndroid Build Coastguard Worker 
1093*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_andc(vector bool char __a,vector unsigned char __b)1094*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector bool char __a, vector unsigned char __b) {
1095*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__a & ~__b;
1096*344a7f5eSAndroid Build Coastguard Worker }
1097*344a7f5eSAndroid Build Coastguard Worker 
1098*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_andc(vector unsigned char __a,vector bool char __b)1099*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector unsigned char __a, vector bool char __b) {
1100*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector unsigned char)__b;
1101*344a7f5eSAndroid Build Coastguard Worker }
1102*344a7f5eSAndroid Build Coastguard Worker 
vec_andc(vector bool char __a,vector bool char __b)1103*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_andc(vector bool char __a,
1104*344a7f5eSAndroid Build Coastguard Worker                                                          vector bool char __b) {
1105*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1106*344a7f5eSAndroid Build Coastguard Worker }
1107*344a7f5eSAndroid Build Coastguard Worker 
vec_andc(vector short __a,vector short __b)1108*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
1109*344a7f5eSAndroid Build Coastguard Worker                                                      vector short __b) {
1110*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1111*344a7f5eSAndroid Build Coastguard Worker }
1112*344a7f5eSAndroid Build Coastguard Worker 
vec_andc(vector bool short __a,vector short __b)1113*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_andc(vector bool short __a,
1114*344a7f5eSAndroid Build Coastguard Worker                                                      vector short __b) {
1115*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a & ~__b;
1116*344a7f5eSAndroid Build Coastguard Worker }
1117*344a7f5eSAndroid Build Coastguard Worker 
vec_andc(vector short __a,vector bool short __b)1118*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_andc(vector short __a,
1119*344a7f5eSAndroid Build Coastguard Worker                                                      vector bool short __b) {
1120*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector short)__b;
1121*344a7f5eSAndroid Build Coastguard Worker }
1122*344a7f5eSAndroid Build Coastguard Worker 
1123*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_andc(vector unsigned short __a,vector unsigned short __b)1124*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector unsigned short __a, vector unsigned short __b) {
1125*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1126*344a7f5eSAndroid Build Coastguard Worker }
1127*344a7f5eSAndroid Build Coastguard Worker 
1128*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_andc(vector bool short __a,vector unsigned short __b)1129*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector bool short __a, vector unsigned short __b) {
1130*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__a & ~__b;
1131*344a7f5eSAndroid Build Coastguard Worker }
1132*344a7f5eSAndroid Build Coastguard Worker 
1133*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_andc(vector unsigned short __a,vector bool short __b)1134*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector unsigned short __a, vector bool short __b) {
1135*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector unsigned short)__b;
1136*344a7f5eSAndroid Build Coastguard Worker }
1137*344a7f5eSAndroid Build Coastguard Worker 
1138*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_andc(vector bool short __a,vector bool short __b)1139*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector bool short __a, vector bool short __b) {
1140*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1141*344a7f5eSAndroid Build Coastguard Worker }
1142*344a7f5eSAndroid Build Coastguard Worker 
vec_andc(vector int __a,vector int __b)1143*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
1144*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b) {
1145*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1146*344a7f5eSAndroid Build Coastguard Worker }
1147*344a7f5eSAndroid Build Coastguard Worker 
vec_andc(vector bool int __a,vector int __b)1148*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_andc(vector bool int __a,
1149*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b) {
1150*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__a & ~__b;
1151*344a7f5eSAndroid Build Coastguard Worker }
1152*344a7f5eSAndroid Build Coastguard Worker 
vec_andc(vector int __a,vector bool int __b)1153*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_andc(vector int __a,
1154*344a7f5eSAndroid Build Coastguard Worker                                                    vector bool int __b) {
1155*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector int)__b;
1156*344a7f5eSAndroid Build Coastguard Worker }
1157*344a7f5eSAndroid Build Coastguard Worker 
1158*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_andc(vector unsigned int __a,vector unsigned int __b)1159*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector unsigned int __a, vector unsigned int __b) {
1160*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1161*344a7f5eSAndroid Build Coastguard Worker }
1162*344a7f5eSAndroid Build Coastguard Worker 
1163*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_andc(vector bool int __a,vector unsigned int __b)1164*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector bool int __a, vector unsigned int __b) {
1165*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__a & ~__b;
1166*344a7f5eSAndroid Build Coastguard Worker }
1167*344a7f5eSAndroid Build Coastguard Worker 
1168*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_andc(vector unsigned int __a,vector bool int __b)1169*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector unsigned int __a, vector bool int __b) {
1170*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector unsigned int)__b;
1171*344a7f5eSAndroid Build Coastguard Worker }
1172*344a7f5eSAndroid Build Coastguard Worker 
vec_andc(vector bool int __a,vector bool int __b)1173*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_andc(vector bool int __a,
1174*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool int __b) {
1175*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1176*344a7f5eSAndroid Build Coastguard Worker }
1177*344a7f5eSAndroid Build Coastguard Worker 
vec_andc(vector float __a,vector float __b)1178*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
1179*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b) {
1180*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
1181*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & ~(vector unsigned int)__b;
1182*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
1183*344a7f5eSAndroid Build Coastguard Worker }
1184*344a7f5eSAndroid Build Coastguard Worker 
vec_andc(vector bool int __a,vector float __b)1185*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_andc(vector bool int __a,
1186*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b) {
1187*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
1188*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & ~(vector unsigned int)__b;
1189*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
1190*344a7f5eSAndroid Build Coastguard Worker }
1191*344a7f5eSAndroid Build Coastguard Worker 
vec_andc(vector float __a,vector bool int __b)1192*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_andc(vector float __a,
1193*344a7f5eSAndroid Build Coastguard Worker                                                      vector bool int __b) {
1194*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
1195*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & ~(vector unsigned int)__b;
1196*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
1197*344a7f5eSAndroid Build Coastguard Worker }
1198*344a7f5eSAndroid Build Coastguard Worker 
1199*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_andc(vector bool long long __a,vector double __b)1200*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_andc(vector bool long long __a,
1201*344a7f5eSAndroid Build Coastguard Worker                                                       vector double __b) {
1202*344a7f5eSAndroid Build Coastguard Worker   vector unsigned long long __res =
1203*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1204*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__res;
1205*344a7f5eSAndroid Build Coastguard Worker }
1206*344a7f5eSAndroid Build Coastguard Worker 
1207*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_andc(vector double __a,vector bool long long __b)1208*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector double __a, vector bool long long __b) {
1209*344a7f5eSAndroid Build Coastguard Worker   vector unsigned long long __res =
1210*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1211*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__res;
1212*344a7f5eSAndroid Build Coastguard Worker }
1213*344a7f5eSAndroid Build Coastguard Worker 
vec_andc(vector double __a,vector double __b)1214*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_andc(vector double __a,
1215*344a7f5eSAndroid Build Coastguard Worker                                                       vector double __b) {
1216*344a7f5eSAndroid Build Coastguard Worker   vector unsigned long long __res =
1217*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned long long)__a & ~(vector unsigned long long)__b;
1218*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__res;
1219*344a7f5eSAndroid Build Coastguard Worker }
1220*344a7f5eSAndroid Build Coastguard Worker 
1221*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_andc(vector signed long long __a,vector signed long long __b)1222*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector signed long long __a, vector signed long long __b) {
1223*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1224*344a7f5eSAndroid Build Coastguard Worker }
1225*344a7f5eSAndroid Build Coastguard Worker 
1226*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_andc(vector bool long long __a,vector signed long long __b)1227*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector bool long long __a, vector signed long long __b) {
1228*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__a & ~__b;
1229*344a7f5eSAndroid Build Coastguard Worker }
1230*344a7f5eSAndroid Build Coastguard Worker 
1231*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_andc(vector signed long long __a,vector bool long long __b)1232*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector signed long long __a, vector bool long long __b) {
1233*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector signed long long)__b;
1234*344a7f5eSAndroid Build Coastguard Worker }
1235*344a7f5eSAndroid Build Coastguard Worker 
1236*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_andc(vector unsigned long long __a,vector unsigned long long __b)1237*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector unsigned long long __a, vector unsigned long long __b) {
1238*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1239*344a7f5eSAndroid Build Coastguard Worker }
1240*344a7f5eSAndroid Build Coastguard Worker 
1241*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_andc(vector bool long long __a,vector unsigned long long __b)1242*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector bool long long __a, vector unsigned long long __b) {
1243*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__a & ~__b;
1244*344a7f5eSAndroid Build Coastguard Worker }
1245*344a7f5eSAndroid Build Coastguard Worker 
1246*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_andc(vector unsigned long long __a,vector bool long long __b)1247*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector unsigned long long __a, vector bool long long __b) {
1248*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector unsigned long long)__b;
1249*344a7f5eSAndroid Build Coastguard Worker }
1250*344a7f5eSAndroid Build Coastguard Worker 
1251*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_andc(vector bool long long __a,vector bool long long __b)1252*344a7f5eSAndroid Build Coastguard Worker vec_andc(vector bool long long __a, vector bool long long __b) {
1253*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1254*344a7f5eSAndroid Build Coastguard Worker }
1255*344a7f5eSAndroid Build Coastguard Worker #endif
1256*344a7f5eSAndroid Build Coastguard Worker 
1257*344a7f5eSAndroid Build Coastguard Worker /* vec_vandc */
1258*344a7f5eSAndroid Build Coastguard Worker 
1259*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vandc(vector signed char __a,vector signed char __b)1260*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector signed char __a, vector signed char __b) {
1261*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1262*344a7f5eSAndroid Build Coastguard Worker }
1263*344a7f5eSAndroid Build Coastguard Worker 
1264*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vandc(vector bool char __a,vector signed char __b)1265*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector bool char __a, vector signed char __b) {
1266*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__a & ~__b;
1267*344a7f5eSAndroid Build Coastguard Worker }
1268*344a7f5eSAndroid Build Coastguard Worker 
1269*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vandc(vector signed char __a,vector bool char __b)1270*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector signed char __a, vector bool char __b) {
1271*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector signed char)__b;
1272*344a7f5eSAndroid Build Coastguard Worker }
1273*344a7f5eSAndroid Build Coastguard Worker 
1274*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vandc(vector unsigned char __a,vector unsigned char __b)1275*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector unsigned char __a, vector unsigned char __b) {
1276*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1277*344a7f5eSAndroid Build Coastguard Worker }
1278*344a7f5eSAndroid Build Coastguard Worker 
1279*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vandc(vector bool char __a,vector unsigned char __b)1280*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector bool char __a, vector unsigned char __b) {
1281*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__a & ~__b;
1282*344a7f5eSAndroid Build Coastguard Worker }
1283*344a7f5eSAndroid Build Coastguard Worker 
1284*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vandc(vector unsigned char __a,vector bool char __b)1285*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector unsigned char __a, vector bool char __b) {
1286*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector unsigned char)__b;
1287*344a7f5eSAndroid Build Coastguard Worker }
1288*344a7f5eSAndroid Build Coastguard Worker 
1289*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_vandc(vector bool char __a,vector bool char __b)1290*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector bool char __a, vector bool char __b) {
1291*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1292*344a7f5eSAndroid Build Coastguard Worker }
1293*344a7f5eSAndroid Build Coastguard Worker 
vec_vandc(vector short __a,vector short __b)1294*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
1295*344a7f5eSAndroid Build Coastguard Worker                                                       vector short __b) {
1296*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1297*344a7f5eSAndroid Build Coastguard Worker }
1298*344a7f5eSAndroid Build Coastguard Worker 
vec_vandc(vector bool short __a,vector short __b)1299*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vandc(vector bool short __a,
1300*344a7f5eSAndroid Build Coastguard Worker                                                       vector short __b) {
1301*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a & ~__b;
1302*344a7f5eSAndroid Build Coastguard Worker }
1303*344a7f5eSAndroid Build Coastguard Worker 
vec_vandc(vector short __a,vector bool short __b)1304*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vandc(vector short __a,
1305*344a7f5eSAndroid Build Coastguard Worker                                                       vector bool short __b) {
1306*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector short)__b;
1307*344a7f5eSAndroid Build Coastguard Worker }
1308*344a7f5eSAndroid Build Coastguard Worker 
1309*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vandc(vector unsigned short __a,vector unsigned short __b)1310*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector unsigned short __a, vector unsigned short __b) {
1311*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1312*344a7f5eSAndroid Build Coastguard Worker }
1313*344a7f5eSAndroid Build Coastguard Worker 
1314*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vandc(vector bool short __a,vector unsigned short __b)1315*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector bool short __a, vector unsigned short __b) {
1316*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__a & ~__b;
1317*344a7f5eSAndroid Build Coastguard Worker }
1318*344a7f5eSAndroid Build Coastguard Worker 
1319*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vandc(vector unsigned short __a,vector bool short __b)1320*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector unsigned short __a, vector bool short __b) {
1321*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector unsigned short)__b;
1322*344a7f5eSAndroid Build Coastguard Worker }
1323*344a7f5eSAndroid Build Coastguard Worker 
1324*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vandc(vector bool short __a,vector bool short __b)1325*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector bool short __a, vector bool short __b) {
1326*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1327*344a7f5eSAndroid Build Coastguard Worker }
1328*344a7f5eSAndroid Build Coastguard Worker 
vec_vandc(vector int __a,vector int __b)1329*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
1330*344a7f5eSAndroid Build Coastguard Worker                                                     vector int __b) {
1331*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1332*344a7f5eSAndroid Build Coastguard Worker }
1333*344a7f5eSAndroid Build Coastguard Worker 
vec_vandc(vector bool int __a,vector int __b)1334*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vandc(vector bool int __a,
1335*344a7f5eSAndroid Build Coastguard Worker                                                     vector int __b) {
1336*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__a & ~__b;
1337*344a7f5eSAndroid Build Coastguard Worker }
1338*344a7f5eSAndroid Build Coastguard Worker 
vec_vandc(vector int __a,vector bool int __b)1339*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vandc(vector int __a,
1340*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool int __b) {
1341*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector int)__b;
1342*344a7f5eSAndroid Build Coastguard Worker }
1343*344a7f5eSAndroid Build Coastguard Worker 
1344*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vandc(vector unsigned int __a,vector unsigned int __b)1345*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector unsigned int __a, vector unsigned int __b) {
1346*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1347*344a7f5eSAndroid Build Coastguard Worker }
1348*344a7f5eSAndroid Build Coastguard Worker 
1349*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vandc(vector bool int __a,vector unsigned int __b)1350*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector bool int __a, vector unsigned int __b) {
1351*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__a & ~__b;
1352*344a7f5eSAndroid Build Coastguard Worker }
1353*344a7f5eSAndroid Build Coastguard Worker 
1354*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vandc(vector unsigned int __a,vector bool int __b)1355*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector unsigned int __a, vector bool int __b) {
1356*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector unsigned int)__b;
1357*344a7f5eSAndroid Build Coastguard Worker }
1358*344a7f5eSAndroid Build Coastguard Worker 
vec_vandc(vector bool int __a,vector bool int __b)1359*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_vandc(vector bool int __a,
1360*344a7f5eSAndroid Build Coastguard Worker                                                          vector bool int __b) {
1361*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1362*344a7f5eSAndroid Build Coastguard Worker }
1363*344a7f5eSAndroid Build Coastguard Worker 
vec_vandc(vector float __a,vector float __b)1364*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
1365*344a7f5eSAndroid Build Coastguard Worker                                                       vector float __b) {
1366*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
1367*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & ~(vector unsigned int)__b;
1368*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
1369*344a7f5eSAndroid Build Coastguard Worker }
1370*344a7f5eSAndroid Build Coastguard Worker 
vec_vandc(vector bool int __a,vector float __b)1371*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vandc(vector bool int __a,
1372*344a7f5eSAndroid Build Coastguard Worker                                                       vector float __b) {
1373*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
1374*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & ~(vector unsigned int)__b;
1375*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
1376*344a7f5eSAndroid Build Coastguard Worker }
1377*344a7f5eSAndroid Build Coastguard Worker 
vec_vandc(vector float __a,vector bool int __b)1378*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vandc(vector float __a,
1379*344a7f5eSAndroid Build Coastguard Worker                                                       vector bool int __b) {
1380*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
1381*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a & ~(vector unsigned int)__b;
1382*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
1383*344a7f5eSAndroid Build Coastguard Worker }
1384*344a7f5eSAndroid Build Coastguard Worker 
1385*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1386*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vandc(vector signed long long __a,vector signed long long __b)1387*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector signed long long __a, vector signed long long __b) {
1388*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1389*344a7f5eSAndroid Build Coastguard Worker }
1390*344a7f5eSAndroid Build Coastguard Worker 
1391*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vandc(vector bool long long __a,vector signed long long __b)1392*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector bool long long __a, vector signed long long __b) {
1393*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__a & ~__b;
1394*344a7f5eSAndroid Build Coastguard Worker }
1395*344a7f5eSAndroid Build Coastguard Worker 
1396*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vandc(vector signed long long __a,vector bool long long __b)1397*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector signed long long __a, vector bool long long __b) {
1398*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector signed long long)__b;
1399*344a7f5eSAndroid Build Coastguard Worker }
1400*344a7f5eSAndroid Build Coastguard Worker 
1401*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vandc(vector unsigned long long __a,vector unsigned long long __b)1402*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector unsigned long long __a, vector unsigned long long __b) {
1403*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1404*344a7f5eSAndroid Build Coastguard Worker }
1405*344a7f5eSAndroid Build Coastguard Worker 
1406*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vandc(vector bool long long __a,vector unsigned long long __b)1407*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector bool long long __a, vector unsigned long long __b) {
1408*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__a & ~__b;
1409*344a7f5eSAndroid Build Coastguard Worker }
1410*344a7f5eSAndroid Build Coastguard Worker 
1411*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vandc(vector unsigned long long __a,vector bool long long __b)1412*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector unsigned long long __a, vector bool long long __b) {
1413*344a7f5eSAndroid Build Coastguard Worker   return __a & ~(vector unsigned long long)__b;
1414*344a7f5eSAndroid Build Coastguard Worker }
1415*344a7f5eSAndroid Build Coastguard Worker 
1416*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_vandc(vector bool long long __a,vector bool long long __b)1417*344a7f5eSAndroid Build Coastguard Worker vec_vandc(vector bool long long __a, vector bool long long __b) {
1418*344a7f5eSAndroid Build Coastguard Worker   return __a & ~__b;
1419*344a7f5eSAndroid Build Coastguard Worker }
1420*344a7f5eSAndroid Build Coastguard Worker #endif
1421*344a7f5eSAndroid Build Coastguard Worker 
1422*344a7f5eSAndroid Build Coastguard Worker /* vec_avg */
1423*344a7f5eSAndroid Build Coastguard Worker 
1424*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_avg(vector signed char __a,vector signed char __b)1425*344a7f5eSAndroid Build Coastguard Worker vec_avg(vector signed char __a, vector signed char __b) {
1426*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vavgsb(__a, __b);
1427*344a7f5eSAndroid Build Coastguard Worker }
1428*344a7f5eSAndroid Build Coastguard Worker 
1429*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_avg(vector unsigned char __a,vector unsigned char __b)1430*344a7f5eSAndroid Build Coastguard Worker vec_avg(vector unsigned char __a, vector unsigned char __b) {
1431*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vavgub(__a, __b);
1432*344a7f5eSAndroid Build Coastguard Worker }
1433*344a7f5eSAndroid Build Coastguard Worker 
vec_avg(vector short __a,vector short __b)1434*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_avg(vector short __a,
1435*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
1436*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vavgsh(__a, __b);
1437*344a7f5eSAndroid Build Coastguard Worker }
1438*344a7f5eSAndroid Build Coastguard Worker 
1439*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_avg(vector unsigned short __a,vector unsigned short __b)1440*344a7f5eSAndroid Build Coastguard Worker vec_avg(vector unsigned short __a, vector unsigned short __b) {
1441*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vavguh(__a, __b);
1442*344a7f5eSAndroid Build Coastguard Worker }
1443*344a7f5eSAndroid Build Coastguard Worker 
vec_avg(vector int __a,vector int __b)1444*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_avg(vector int __a,
1445*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
1446*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vavgsw(__a, __b);
1447*344a7f5eSAndroid Build Coastguard Worker }
1448*344a7f5eSAndroid Build Coastguard Worker 
1449*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_avg(vector unsigned int __a,vector unsigned int __b)1450*344a7f5eSAndroid Build Coastguard Worker vec_avg(vector unsigned int __a, vector unsigned int __b) {
1451*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vavguw(__a, __b);
1452*344a7f5eSAndroid Build Coastguard Worker }
1453*344a7f5eSAndroid Build Coastguard Worker 
1454*344a7f5eSAndroid Build Coastguard Worker /* vec_vavgsb */
1455*344a7f5eSAndroid Build Coastguard Worker 
1456*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __attribute__((__always_inline__))
vec_vavgsb(vector signed char __a,vector signed char __b)1457*344a7f5eSAndroid Build Coastguard Worker vec_vavgsb(vector signed char __a, vector signed char __b) {
1458*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vavgsb(__a, __b);
1459*344a7f5eSAndroid Build Coastguard Worker }
1460*344a7f5eSAndroid Build Coastguard Worker 
1461*344a7f5eSAndroid Build Coastguard Worker /* vec_vavgub */
1462*344a7f5eSAndroid Build Coastguard Worker 
1463*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __attribute__((__always_inline__))
vec_vavgub(vector unsigned char __a,vector unsigned char __b)1464*344a7f5eSAndroid Build Coastguard Worker vec_vavgub(vector unsigned char __a, vector unsigned char __b) {
1465*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vavgub(__a, __b);
1466*344a7f5eSAndroid Build Coastguard Worker }
1467*344a7f5eSAndroid Build Coastguard Worker 
1468*344a7f5eSAndroid Build Coastguard Worker /* vec_vavgsh */
1469*344a7f5eSAndroid Build Coastguard Worker 
1470*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __attribute__((__always_inline__))
vec_vavgsh(vector short __a,vector short __b)1471*344a7f5eSAndroid Build Coastguard Worker vec_vavgsh(vector short __a, vector short __b) {
1472*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vavgsh(__a, __b);
1473*344a7f5eSAndroid Build Coastguard Worker }
1474*344a7f5eSAndroid Build Coastguard Worker 
1475*344a7f5eSAndroid Build Coastguard Worker /* vec_vavguh */
1476*344a7f5eSAndroid Build Coastguard Worker 
1477*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_vavguh(vector unsigned short __a,vector unsigned short __b)1478*344a7f5eSAndroid Build Coastguard Worker vec_vavguh(vector unsigned short __a, vector unsigned short __b) {
1479*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vavguh(__a, __b);
1480*344a7f5eSAndroid Build Coastguard Worker }
1481*344a7f5eSAndroid Build Coastguard Worker 
1482*344a7f5eSAndroid Build Coastguard Worker /* vec_vavgsw */
1483*344a7f5eSAndroid Build Coastguard Worker 
1484*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __attribute__((__always_inline__))
vec_vavgsw(vector int __a,vector int __b)1485*344a7f5eSAndroid Build Coastguard Worker vec_vavgsw(vector int __a, vector int __b) {
1486*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vavgsw(__a, __b);
1487*344a7f5eSAndroid Build Coastguard Worker }
1488*344a7f5eSAndroid Build Coastguard Worker 
1489*344a7f5eSAndroid Build Coastguard Worker /* vec_vavguw */
1490*344a7f5eSAndroid Build Coastguard Worker 
1491*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vavguw(vector unsigned int __a,vector unsigned int __b)1492*344a7f5eSAndroid Build Coastguard Worker vec_vavguw(vector unsigned int __a, vector unsigned int __b) {
1493*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vavguw(__a, __b);
1494*344a7f5eSAndroid Build Coastguard Worker }
1495*344a7f5eSAndroid Build Coastguard Worker 
1496*344a7f5eSAndroid Build Coastguard Worker /* vec_ceil */
1497*344a7f5eSAndroid Build Coastguard Worker 
vec_ceil(vector float __a)1498*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_ceil(vector float __a) {
1499*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1500*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrspip(__a);
1501*344a7f5eSAndroid Build Coastguard Worker #else
1502*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrfip(__a);
1503*344a7f5eSAndroid Build Coastguard Worker #endif
1504*344a7f5eSAndroid Build Coastguard Worker }
1505*344a7f5eSAndroid Build Coastguard Worker 
1506*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_ceil(vector double __a)1507*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_ceil(vector double __a) {
1508*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrdpip(__a);
1509*344a7f5eSAndroid Build Coastguard Worker }
1510*344a7f5eSAndroid Build Coastguard Worker #endif
1511*344a7f5eSAndroid Build Coastguard Worker 
1512*344a7f5eSAndroid Build Coastguard Worker /* vec_vrfip */
1513*344a7f5eSAndroid Build Coastguard Worker 
1514*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vrfip(vector float __a)1515*344a7f5eSAndroid Build Coastguard Worker vec_vrfip(vector float __a) {
1516*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrfip(__a);
1517*344a7f5eSAndroid Build Coastguard Worker }
1518*344a7f5eSAndroid Build Coastguard Worker 
1519*344a7f5eSAndroid Build Coastguard Worker /* vec_cmpb */
1520*344a7f5eSAndroid Build Coastguard Worker 
1521*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __attribute__((__always_inline__))
vec_cmpb(vector float __a,vector float __b)1522*344a7f5eSAndroid Build Coastguard Worker vec_cmpb(vector float __a, vector float __b) {
1523*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpbfp(__a, __b);
1524*344a7f5eSAndroid Build Coastguard Worker }
1525*344a7f5eSAndroid Build Coastguard Worker 
1526*344a7f5eSAndroid Build Coastguard Worker /* vec_vcmpbfp */
1527*344a7f5eSAndroid Build Coastguard Worker 
1528*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __attribute__((__always_inline__))
vec_vcmpbfp(vector float __a,vector float __b)1529*344a7f5eSAndroid Build Coastguard Worker vec_vcmpbfp(vector float __a, vector float __b) {
1530*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpbfp(__a, __b);
1531*344a7f5eSAndroid Build Coastguard Worker }
1532*344a7f5eSAndroid Build Coastguard Worker 
1533*344a7f5eSAndroid Build Coastguard Worker /* vec_cmpeq */
1534*344a7f5eSAndroid Build Coastguard Worker 
1535*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_cmpeq(vector signed char __a,vector signed char __b)1536*344a7f5eSAndroid Build Coastguard Worker vec_cmpeq(vector signed char __a, vector signed char __b) {
1537*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1538*344a7f5eSAndroid Build Coastguard Worker                                                       (vector char)__b);
1539*344a7f5eSAndroid Build Coastguard Worker }
1540*344a7f5eSAndroid Build Coastguard Worker 
1541*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_cmpeq(vector unsigned char __a,vector unsigned char __b)1542*344a7f5eSAndroid Build Coastguard Worker vec_cmpeq(vector unsigned char __a, vector unsigned char __b) {
1543*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vcmpequb((vector char)__a,
1544*344a7f5eSAndroid Build Coastguard Worker                                                       (vector char)__b);
1545*344a7f5eSAndroid Build Coastguard Worker }
1546*344a7f5eSAndroid Build Coastguard Worker 
vec_cmpeq(vector short __a,vector short __b)1547*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai vec_cmpeq(vector short __a,
1548*344a7f5eSAndroid Build Coastguard Worker                                                            vector short __b) {
1549*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vcmpequh(__a, __b);
1550*344a7f5eSAndroid Build Coastguard Worker }
1551*344a7f5eSAndroid Build Coastguard Worker 
1552*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_cmpeq(vector unsigned short __a,vector unsigned short __b)1553*344a7f5eSAndroid Build Coastguard Worker vec_cmpeq(vector unsigned short __a, vector unsigned short __b) {
1554*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vcmpequh((vector short)__a,
1555*344a7f5eSAndroid Build Coastguard Worker                                                        (vector short)__b);
1556*344a7f5eSAndroid Build Coastguard Worker }
1557*344a7f5eSAndroid Build Coastguard Worker 
vec_cmpeq(vector int __a,vector int __b)1558*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector int __a,
1559*344a7f5eSAndroid Build Coastguard Worker                                                          vector int __b) {
1560*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vcmpequw(__a, __b);
1561*344a7f5eSAndroid Build Coastguard Worker }
1562*344a7f5eSAndroid Build Coastguard Worker 
1563*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_cmpeq(vector unsigned int __a,vector unsigned int __b)1564*344a7f5eSAndroid Build Coastguard Worker vec_cmpeq(vector unsigned int __a, vector unsigned int __b) {
1565*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vcmpequw((vector int)__a,
1566*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
1567*344a7f5eSAndroid Build Coastguard Worker }
1568*344a7f5eSAndroid Build Coastguard Worker 
1569*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
1570*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpeq(vector signed long long __a,vector signed long long __b)1571*344a7f5eSAndroid Build Coastguard Worker vec_cmpeq(vector signed long long __a, vector signed long long __b) {
1572*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vcmpequd(__a, __b);
1573*344a7f5eSAndroid Build Coastguard Worker }
1574*344a7f5eSAndroid Build Coastguard Worker 
1575*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpeq(vector unsigned long long __a,vector unsigned long long __b)1576*344a7f5eSAndroid Build Coastguard Worker vec_cmpeq(vector unsigned long long __a, vector unsigned long long __b) {
1577*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vcmpequd(
1578*344a7f5eSAndroid Build Coastguard Worker       (vector long long)__a, (vector long long)__b);
1579*344a7f5eSAndroid Build Coastguard Worker }
1580*344a7f5eSAndroid Build Coastguard Worker #endif
1581*344a7f5eSAndroid Build Coastguard Worker 
vec_cmpeq(vector float __a,vector float __b)1582*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_cmpeq(vector float __a,
1583*344a7f5eSAndroid Build Coastguard Worker                                                          vector float __b) {
1584*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1585*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_vsx_xvcmpeqsp(__a, __b);
1586*344a7f5eSAndroid Build Coastguard Worker #else
1587*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vcmpeqfp(__a, __b);
1588*344a7f5eSAndroid Build Coastguard Worker #endif
1589*344a7f5eSAndroid Build Coastguard Worker }
1590*344a7f5eSAndroid Build Coastguard Worker 
1591*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1592*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpeq(vector double __a,vector double __b)1593*344a7f5eSAndroid Build Coastguard Worker vec_cmpeq(vector double __a, vector double __b) {
1594*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_vsx_xvcmpeqdp(__a, __b);
1595*344a7f5eSAndroid Build Coastguard Worker }
1596*344a7f5eSAndroid Build Coastguard Worker #endif
1597*344a7f5eSAndroid Build Coastguard Worker 
1598*344a7f5eSAndroid Build Coastguard Worker /* vec_cmpgt */
1599*344a7f5eSAndroid Build Coastguard Worker 
1600*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_cmpgt(vector signed char __a,vector signed char __b)1601*344a7f5eSAndroid Build Coastguard Worker vec_cmpgt(vector signed char __a, vector signed char __b) {
1602*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
1603*344a7f5eSAndroid Build Coastguard Worker }
1604*344a7f5eSAndroid Build Coastguard Worker 
1605*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_cmpgt(vector unsigned char __a,vector unsigned char __b)1606*344a7f5eSAndroid Build Coastguard Worker vec_cmpgt(vector unsigned char __a, vector unsigned char __b) {
1607*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
1608*344a7f5eSAndroid Build Coastguard Worker }
1609*344a7f5eSAndroid Build Coastguard Worker 
vec_cmpgt(vector short __a,vector short __b)1610*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai vec_cmpgt(vector short __a,
1611*344a7f5eSAndroid Build Coastguard Worker                                                            vector short __b) {
1612*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
1613*344a7f5eSAndroid Build Coastguard Worker }
1614*344a7f5eSAndroid Build Coastguard Worker 
1615*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_cmpgt(vector unsigned short __a,vector unsigned short __b)1616*344a7f5eSAndroid Build Coastguard Worker vec_cmpgt(vector unsigned short __a, vector unsigned short __b) {
1617*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
1618*344a7f5eSAndroid Build Coastguard Worker }
1619*344a7f5eSAndroid Build Coastguard Worker 
vec_cmpgt(vector int __a,vector int __b)1620*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector int __a,
1621*344a7f5eSAndroid Build Coastguard Worker                                                          vector int __b) {
1622*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
1623*344a7f5eSAndroid Build Coastguard Worker }
1624*344a7f5eSAndroid Build Coastguard Worker 
1625*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_cmpgt(vector unsigned int __a,vector unsigned int __b)1626*344a7f5eSAndroid Build Coastguard Worker vec_cmpgt(vector unsigned int __a, vector unsigned int __b) {
1627*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
1628*344a7f5eSAndroid Build Coastguard Worker }
1629*344a7f5eSAndroid Build Coastguard Worker 
1630*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
1631*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpgt(vector signed long long __a,vector signed long long __b)1632*344a7f5eSAndroid Build Coastguard Worker vec_cmpgt(vector signed long long __a, vector signed long long __b) {
1633*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vcmpgtsd(__a, __b);
1634*344a7f5eSAndroid Build Coastguard Worker }
1635*344a7f5eSAndroid Build Coastguard Worker 
1636*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpgt(vector unsigned long long __a,vector unsigned long long __b)1637*344a7f5eSAndroid Build Coastguard Worker vec_cmpgt(vector unsigned long long __a, vector unsigned long long __b) {
1638*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vcmpgtud(__a, __b);
1639*344a7f5eSAndroid Build Coastguard Worker }
1640*344a7f5eSAndroid Build Coastguard Worker #endif
1641*344a7f5eSAndroid Build Coastguard Worker 
vec_cmpgt(vector float __a,vector float __b)1642*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_cmpgt(vector float __a,
1643*344a7f5eSAndroid Build Coastguard Worker                                                          vector float __b) {
1644*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1645*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_vsx_xvcmpgtsp(__a, __b);
1646*344a7f5eSAndroid Build Coastguard Worker #else
1647*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
1648*344a7f5eSAndroid Build Coastguard Worker #endif
1649*344a7f5eSAndroid Build Coastguard Worker }
1650*344a7f5eSAndroid Build Coastguard Worker 
1651*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1652*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpgt(vector double __a,vector double __b)1653*344a7f5eSAndroid Build Coastguard Worker vec_cmpgt(vector double __a, vector double __b) {
1654*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_vsx_xvcmpgtdp(__a, __b);
1655*344a7f5eSAndroid Build Coastguard Worker }
1656*344a7f5eSAndroid Build Coastguard Worker #endif
1657*344a7f5eSAndroid Build Coastguard Worker 
1658*344a7f5eSAndroid Build Coastguard Worker /* vec_cmpge */
1659*344a7f5eSAndroid Build Coastguard Worker 
1660*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_cmpge(vector signed char __a,vector signed char __b)1661*344a7f5eSAndroid Build Coastguard Worker vec_cmpge(vector signed char __a, vector signed char __b) {
1662*344a7f5eSAndroid Build Coastguard Worker   return ~(vec_cmpgt(__b, __a));
1663*344a7f5eSAndroid Build Coastguard Worker }
1664*344a7f5eSAndroid Build Coastguard Worker 
1665*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_cmpge(vector unsigned char __a,vector unsigned char __b)1666*344a7f5eSAndroid Build Coastguard Worker vec_cmpge(vector unsigned char __a, vector unsigned char __b) {
1667*344a7f5eSAndroid Build Coastguard Worker   return ~(vec_cmpgt(__b, __a));
1668*344a7f5eSAndroid Build Coastguard Worker }
1669*344a7f5eSAndroid Build Coastguard Worker 
1670*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_cmpge(vector signed short __a,vector signed short __b)1671*344a7f5eSAndroid Build Coastguard Worker vec_cmpge(vector signed short __a, vector signed short __b) {
1672*344a7f5eSAndroid Build Coastguard Worker   return ~(vec_cmpgt(__b, __a));
1673*344a7f5eSAndroid Build Coastguard Worker }
1674*344a7f5eSAndroid Build Coastguard Worker 
1675*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_cmpge(vector unsigned short __a,vector unsigned short __b)1676*344a7f5eSAndroid Build Coastguard Worker vec_cmpge(vector unsigned short __a, vector unsigned short __b) {
1677*344a7f5eSAndroid Build Coastguard Worker   return ~(vec_cmpgt(__b, __a));
1678*344a7f5eSAndroid Build Coastguard Worker }
1679*344a7f5eSAndroid Build Coastguard Worker 
1680*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_cmpge(vector signed int __a,vector signed int __b)1681*344a7f5eSAndroid Build Coastguard Worker vec_cmpge(vector signed int __a, vector signed int __b) {
1682*344a7f5eSAndroid Build Coastguard Worker   return ~(vec_cmpgt(__b, __a));
1683*344a7f5eSAndroid Build Coastguard Worker }
1684*344a7f5eSAndroid Build Coastguard Worker 
1685*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_cmpge(vector unsigned int __a,vector unsigned int __b)1686*344a7f5eSAndroid Build Coastguard Worker vec_cmpge(vector unsigned int __a, vector unsigned int __b) {
1687*344a7f5eSAndroid Build Coastguard Worker   return ~(vec_cmpgt(__b, __a));
1688*344a7f5eSAndroid Build Coastguard Worker }
1689*344a7f5eSAndroid Build Coastguard Worker 
vec_cmpge(vector float __a,vector float __b)1690*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_cmpge(vector float __a,
1691*344a7f5eSAndroid Build Coastguard Worker                                                          vector float __b) {
1692*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1693*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_vsx_xvcmpgesp(__a, __b);
1694*344a7f5eSAndroid Build Coastguard Worker #else
1695*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
1696*344a7f5eSAndroid Build Coastguard Worker #endif
1697*344a7f5eSAndroid Build Coastguard Worker }
1698*344a7f5eSAndroid Build Coastguard Worker 
1699*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1700*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpge(vector double __a,vector double __b)1701*344a7f5eSAndroid Build Coastguard Worker vec_cmpge(vector double __a, vector double __b) {
1702*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_vsx_xvcmpgedp(__a, __b);
1703*344a7f5eSAndroid Build Coastguard Worker }
1704*344a7f5eSAndroid Build Coastguard Worker #endif
1705*344a7f5eSAndroid Build Coastguard Worker 
1706*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
1707*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpge(vector signed long long __a,vector signed long long __b)1708*344a7f5eSAndroid Build Coastguard Worker vec_cmpge(vector signed long long __a, vector signed long long __b) {
1709*344a7f5eSAndroid Build Coastguard Worker   return ~(vec_cmpgt(__b, __a));
1710*344a7f5eSAndroid Build Coastguard Worker }
1711*344a7f5eSAndroid Build Coastguard Worker 
1712*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmpge(vector unsigned long long __a,vector unsigned long long __b)1713*344a7f5eSAndroid Build Coastguard Worker vec_cmpge(vector unsigned long long __a, vector unsigned long long __b) {
1714*344a7f5eSAndroid Build Coastguard Worker   return ~(vec_cmpgt(__b, __a));
1715*344a7f5eSAndroid Build Coastguard Worker }
1716*344a7f5eSAndroid Build Coastguard Worker #endif
1717*344a7f5eSAndroid Build Coastguard Worker 
1718*344a7f5eSAndroid Build Coastguard Worker /* vec_vcmpgefp */
1719*344a7f5eSAndroid Build Coastguard Worker 
1720*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __attribute__((__always_inline__))
vec_vcmpgefp(vector float __a,vector float __b)1721*344a7f5eSAndroid Build Coastguard Worker vec_vcmpgefp(vector float __a, vector float __b) {
1722*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vcmpgefp(__a, __b);
1723*344a7f5eSAndroid Build Coastguard Worker }
1724*344a7f5eSAndroid Build Coastguard Worker 
1725*344a7f5eSAndroid Build Coastguard Worker /* vec_vcmpgtsb */
1726*344a7f5eSAndroid Build Coastguard Worker 
1727*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __attribute__((__always_inline__))
vec_vcmpgtsb(vector signed char __a,vector signed char __b)1728*344a7f5eSAndroid Build Coastguard Worker vec_vcmpgtsb(vector signed char __a, vector signed char __b) {
1729*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vcmpgtsb(__a, __b);
1730*344a7f5eSAndroid Build Coastguard Worker }
1731*344a7f5eSAndroid Build Coastguard Worker 
1732*344a7f5eSAndroid Build Coastguard Worker /* vec_vcmpgtub */
1733*344a7f5eSAndroid Build Coastguard Worker 
1734*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __attribute__((__always_inline__))
vec_vcmpgtub(vector unsigned char __a,vector unsigned char __b)1735*344a7f5eSAndroid Build Coastguard Worker vec_vcmpgtub(vector unsigned char __a, vector unsigned char __b) {
1736*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vcmpgtub(__a, __b);
1737*344a7f5eSAndroid Build Coastguard Worker }
1738*344a7f5eSAndroid Build Coastguard Worker 
1739*344a7f5eSAndroid Build Coastguard Worker /* vec_vcmpgtsh */
1740*344a7f5eSAndroid Build Coastguard Worker 
1741*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __attribute__((__always_inline__))
vec_vcmpgtsh(vector short __a,vector short __b)1742*344a7f5eSAndroid Build Coastguard Worker vec_vcmpgtsh(vector short __a, vector short __b) {
1743*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vcmpgtsh(__a, __b);
1744*344a7f5eSAndroid Build Coastguard Worker }
1745*344a7f5eSAndroid Build Coastguard Worker 
1746*344a7f5eSAndroid Build Coastguard Worker /* vec_vcmpgtuh */
1747*344a7f5eSAndroid Build Coastguard Worker 
1748*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __attribute__((__always_inline__))
vec_vcmpgtuh(vector unsigned short __a,vector unsigned short __b)1749*344a7f5eSAndroid Build Coastguard Worker vec_vcmpgtuh(vector unsigned short __a, vector unsigned short __b) {
1750*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vcmpgtuh(__a, __b);
1751*344a7f5eSAndroid Build Coastguard Worker }
1752*344a7f5eSAndroid Build Coastguard Worker 
1753*344a7f5eSAndroid Build Coastguard Worker /* vec_vcmpgtsw */
1754*344a7f5eSAndroid Build Coastguard Worker 
1755*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __attribute__((__always_inline__))
vec_vcmpgtsw(vector int __a,vector int __b)1756*344a7f5eSAndroid Build Coastguard Worker vec_vcmpgtsw(vector int __a, vector int __b) {
1757*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vcmpgtsw(__a, __b);
1758*344a7f5eSAndroid Build Coastguard Worker }
1759*344a7f5eSAndroid Build Coastguard Worker 
1760*344a7f5eSAndroid Build Coastguard Worker /* vec_vcmpgtuw */
1761*344a7f5eSAndroid Build Coastguard Worker 
1762*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __attribute__((__always_inline__))
vec_vcmpgtuw(vector unsigned int __a,vector unsigned int __b)1763*344a7f5eSAndroid Build Coastguard Worker vec_vcmpgtuw(vector unsigned int __a, vector unsigned int __b) {
1764*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vcmpgtuw(__a, __b);
1765*344a7f5eSAndroid Build Coastguard Worker }
1766*344a7f5eSAndroid Build Coastguard Worker 
1767*344a7f5eSAndroid Build Coastguard Worker /* vec_vcmpgtfp */
1768*344a7f5eSAndroid Build Coastguard Worker 
1769*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __attribute__((__always_inline__))
vec_vcmpgtfp(vector float __a,vector float __b)1770*344a7f5eSAndroid Build Coastguard Worker vec_vcmpgtfp(vector float __a, vector float __b) {
1771*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vcmpgtfp(__a, __b);
1772*344a7f5eSAndroid Build Coastguard Worker }
1773*344a7f5eSAndroid Build Coastguard Worker 
1774*344a7f5eSAndroid Build Coastguard Worker /* vec_cmple */
1775*344a7f5eSAndroid Build Coastguard Worker 
1776*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_cmple(vector signed char __a,vector signed char __b)1777*344a7f5eSAndroid Build Coastguard Worker vec_cmple(vector signed char __a, vector signed char __b) {
1778*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpge(__b, __a);
1779*344a7f5eSAndroid Build Coastguard Worker }
1780*344a7f5eSAndroid Build Coastguard Worker 
1781*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_cmple(vector unsigned char __a,vector unsigned char __b)1782*344a7f5eSAndroid Build Coastguard Worker vec_cmple(vector unsigned char __a, vector unsigned char __b) {
1783*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpge(__b, __a);
1784*344a7f5eSAndroid Build Coastguard Worker }
1785*344a7f5eSAndroid Build Coastguard Worker 
1786*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_cmple(vector signed short __a,vector signed short __b)1787*344a7f5eSAndroid Build Coastguard Worker vec_cmple(vector signed short __a, vector signed short __b) {
1788*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpge(__b, __a);
1789*344a7f5eSAndroid Build Coastguard Worker }
1790*344a7f5eSAndroid Build Coastguard Worker 
1791*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_cmple(vector unsigned short __a,vector unsigned short __b)1792*344a7f5eSAndroid Build Coastguard Worker vec_cmple(vector unsigned short __a, vector unsigned short __b) {
1793*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpge(__b, __a);
1794*344a7f5eSAndroid Build Coastguard Worker }
1795*344a7f5eSAndroid Build Coastguard Worker 
1796*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_cmple(vector signed int __a,vector signed int __b)1797*344a7f5eSAndroid Build Coastguard Worker vec_cmple(vector signed int __a, vector signed int __b) {
1798*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpge(__b, __a);
1799*344a7f5eSAndroid Build Coastguard Worker }
1800*344a7f5eSAndroid Build Coastguard Worker 
1801*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_cmple(vector unsigned int __a,vector unsigned int __b)1802*344a7f5eSAndroid Build Coastguard Worker vec_cmple(vector unsigned int __a, vector unsigned int __b) {
1803*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpge(__b, __a);
1804*344a7f5eSAndroid Build Coastguard Worker }
1805*344a7f5eSAndroid Build Coastguard Worker 
vec_cmple(vector float __a,vector float __b)1806*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_cmple(vector float __a,
1807*344a7f5eSAndroid Build Coastguard Worker                                                          vector float __b) {
1808*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpge(__b, __a);
1809*344a7f5eSAndroid Build Coastguard Worker }
1810*344a7f5eSAndroid Build Coastguard Worker 
1811*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1812*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmple(vector double __a,vector double __b)1813*344a7f5eSAndroid Build Coastguard Worker vec_cmple(vector double __a, vector double __b) {
1814*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpge(__b, __a);
1815*344a7f5eSAndroid Build Coastguard Worker }
1816*344a7f5eSAndroid Build Coastguard Worker #endif
1817*344a7f5eSAndroid Build Coastguard Worker 
1818*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
1819*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmple(vector signed long long __a,vector signed long long __b)1820*344a7f5eSAndroid Build Coastguard Worker vec_cmple(vector signed long long __a, vector signed long long __b) {
1821*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpge(__b, __a);
1822*344a7f5eSAndroid Build Coastguard Worker }
1823*344a7f5eSAndroid Build Coastguard Worker 
1824*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmple(vector unsigned long long __a,vector unsigned long long __b)1825*344a7f5eSAndroid Build Coastguard Worker vec_cmple(vector unsigned long long __a, vector unsigned long long __b) {
1826*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpge(__b, __a);
1827*344a7f5eSAndroid Build Coastguard Worker }
1828*344a7f5eSAndroid Build Coastguard Worker #endif
1829*344a7f5eSAndroid Build Coastguard Worker 
1830*344a7f5eSAndroid Build Coastguard Worker /* vec_cmplt */
1831*344a7f5eSAndroid Build Coastguard Worker 
1832*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_cmplt(vector signed char __a,vector signed char __b)1833*344a7f5eSAndroid Build Coastguard Worker vec_cmplt(vector signed char __a, vector signed char __b) {
1834*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpgt(__b, __a);
1835*344a7f5eSAndroid Build Coastguard Worker }
1836*344a7f5eSAndroid Build Coastguard Worker 
1837*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_cmplt(vector unsigned char __a,vector unsigned char __b)1838*344a7f5eSAndroid Build Coastguard Worker vec_cmplt(vector unsigned char __a, vector unsigned char __b) {
1839*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpgt(__b, __a);
1840*344a7f5eSAndroid Build Coastguard Worker }
1841*344a7f5eSAndroid Build Coastguard Worker 
vec_cmplt(vector short __a,vector short __b)1842*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai vec_cmplt(vector short __a,
1843*344a7f5eSAndroid Build Coastguard Worker                                                            vector short __b) {
1844*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpgt(__b, __a);
1845*344a7f5eSAndroid Build Coastguard Worker }
1846*344a7f5eSAndroid Build Coastguard Worker 
1847*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_cmplt(vector unsigned short __a,vector unsigned short __b)1848*344a7f5eSAndroid Build Coastguard Worker vec_cmplt(vector unsigned short __a, vector unsigned short __b) {
1849*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpgt(__b, __a);
1850*344a7f5eSAndroid Build Coastguard Worker }
1851*344a7f5eSAndroid Build Coastguard Worker 
vec_cmplt(vector int __a,vector int __b)1852*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector int __a,
1853*344a7f5eSAndroid Build Coastguard Worker                                                          vector int __b) {
1854*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpgt(__b, __a);
1855*344a7f5eSAndroid Build Coastguard Worker }
1856*344a7f5eSAndroid Build Coastguard Worker 
1857*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_cmplt(vector unsigned int __a,vector unsigned int __b)1858*344a7f5eSAndroid Build Coastguard Worker vec_cmplt(vector unsigned int __a, vector unsigned int __b) {
1859*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpgt(__b, __a);
1860*344a7f5eSAndroid Build Coastguard Worker }
1861*344a7f5eSAndroid Build Coastguard Worker 
vec_cmplt(vector float __a,vector float __b)1862*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_cmplt(vector float __a,
1863*344a7f5eSAndroid Build Coastguard Worker                                                          vector float __b) {
1864*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpgt(__b, __a);
1865*344a7f5eSAndroid Build Coastguard Worker }
1866*344a7f5eSAndroid Build Coastguard Worker 
1867*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1868*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmplt(vector double __a,vector double __b)1869*344a7f5eSAndroid Build Coastguard Worker vec_cmplt(vector double __a, vector double __b) {
1870*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpgt(__b, __a);
1871*344a7f5eSAndroid Build Coastguard Worker }
1872*344a7f5eSAndroid Build Coastguard Worker #endif
1873*344a7f5eSAndroid Build Coastguard Worker 
1874*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
1875*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmplt(vector signed long long __a,vector signed long long __b)1876*344a7f5eSAndroid Build Coastguard Worker vec_cmplt(vector signed long long __a, vector signed long long __b) {
1877*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpgt(__b, __a);
1878*344a7f5eSAndroid Build Coastguard Worker }
1879*344a7f5eSAndroid Build Coastguard Worker 
1880*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_cmplt(vector unsigned long long __a,vector unsigned long long __b)1881*344a7f5eSAndroid Build Coastguard Worker vec_cmplt(vector unsigned long long __a, vector unsigned long long __b) {
1882*344a7f5eSAndroid Build Coastguard Worker   return vec_cmpgt(__b, __a);
1883*344a7f5eSAndroid Build Coastguard Worker }
1884*344a7f5eSAndroid Build Coastguard Worker 
1885*344a7f5eSAndroid Build Coastguard Worker /* vec_cntlz */
1886*344a7f5eSAndroid Build Coastguard Worker 
1887*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_cntlz(vector signed char __a)1888*344a7f5eSAndroid Build Coastguard Worker vec_cntlz(vector signed char __a) {
1889*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vclzb(__a);
1890*344a7f5eSAndroid Build Coastguard Worker }
1891*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_cntlz(vector unsigned char __a)1892*344a7f5eSAndroid Build Coastguard Worker vec_cntlz(vector unsigned char __a) {
1893*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vclzb(__a);
1894*344a7f5eSAndroid Build Coastguard Worker }
1895*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_cntlz(vector signed short __a)1896*344a7f5eSAndroid Build Coastguard Worker vec_cntlz(vector signed short __a) {
1897*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vclzh(__a);
1898*344a7f5eSAndroid Build Coastguard Worker }
1899*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_cntlz(vector unsigned short __a)1900*344a7f5eSAndroid Build Coastguard Worker vec_cntlz(vector unsigned short __a) {
1901*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vclzh(__a);
1902*344a7f5eSAndroid Build Coastguard Worker }
1903*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_cntlz(vector signed int __a)1904*344a7f5eSAndroid Build Coastguard Worker vec_cntlz(vector signed int __a) {
1905*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vclzw(__a);
1906*344a7f5eSAndroid Build Coastguard Worker }
1907*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_cntlz(vector unsigned int __a)1908*344a7f5eSAndroid Build Coastguard Worker vec_cntlz(vector unsigned int __a) {
1909*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vclzw(__a);
1910*344a7f5eSAndroid Build Coastguard Worker }
1911*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_cntlz(vector signed long long __a)1912*344a7f5eSAndroid Build Coastguard Worker vec_cntlz(vector signed long long __a) {
1913*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vclzd(__a);
1914*344a7f5eSAndroid Build Coastguard Worker }
1915*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_cntlz(vector unsigned long long __a)1916*344a7f5eSAndroid Build Coastguard Worker vec_cntlz(vector unsigned long long __a) {
1917*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vclzd(__a);
1918*344a7f5eSAndroid Build Coastguard Worker }
1919*344a7f5eSAndroid Build Coastguard Worker #endif
1920*344a7f5eSAndroid Build Coastguard Worker 
1921*344a7f5eSAndroid Build Coastguard Worker /* vec_cpsgn */
1922*344a7f5eSAndroid Build Coastguard Worker 
1923*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_cpsgn(vector float __a,vector float __b)1924*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_cpsgn(vector float __a,
1925*344a7f5eSAndroid Build Coastguard Worker                                                       vector float __b) {
1926*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcpsgnsp(__a, __b);
1927*344a7f5eSAndroid Build Coastguard Worker }
1928*344a7f5eSAndroid Build Coastguard Worker 
vec_cpsgn(vector double __a,vector double __b)1929*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_cpsgn(vector double __a,
1930*344a7f5eSAndroid Build Coastguard Worker                                                        vector double __b) {
1931*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcpsgndp(__a, __b);
1932*344a7f5eSAndroid Build Coastguard Worker }
1933*344a7f5eSAndroid Build Coastguard Worker #endif
1934*344a7f5eSAndroid Build Coastguard Worker 
1935*344a7f5eSAndroid Build Coastguard Worker /* vec_ctf */
1936*344a7f5eSAndroid Build Coastguard Worker 
vec_ctf(vector int __a,int __b)1937*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_ctf(vector int __a, int __b) {
1938*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcfsx(__a, __b);
1939*344a7f5eSAndroid Build Coastguard Worker }
1940*344a7f5eSAndroid Build Coastguard Worker 
vec_ctf(vector unsigned int __a,int __b)1941*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_ctf(vector unsigned int __a,
1942*344a7f5eSAndroid Build Coastguard Worker                                                     int __b) {
1943*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcfux((vector int)__a, __b);
1944*344a7f5eSAndroid Build Coastguard Worker }
1945*344a7f5eSAndroid Build Coastguard Worker 
1946*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1947*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_ctf(vector unsigned long long __a,int __b)1948*344a7f5eSAndroid Build Coastguard Worker vec_ctf(vector unsigned long long __a, int __b) {
1949*344a7f5eSAndroid Build Coastguard Worker   vector double __ret = __builtin_convertvector(__a, vector double);
1950*344a7f5eSAndroid Build Coastguard Worker   __ret *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
1951*344a7f5eSAndroid Build Coastguard Worker   return __ret;
1952*344a7f5eSAndroid Build Coastguard Worker }
1953*344a7f5eSAndroid Build Coastguard Worker 
1954*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_ctf(vector signed long long __a,int __b)1955*344a7f5eSAndroid Build Coastguard Worker vec_ctf(vector signed long long __a, int __b) {
1956*344a7f5eSAndroid Build Coastguard Worker   vector double __ret = __builtin_convertvector(__a, vector double);
1957*344a7f5eSAndroid Build Coastguard Worker   __ret *= (vector double)(vector unsigned long long)((0x3ffULL - __b) << 52);
1958*344a7f5eSAndroid Build Coastguard Worker   return __ret;
1959*344a7f5eSAndroid Build Coastguard Worker }
1960*344a7f5eSAndroid Build Coastguard Worker #endif
1961*344a7f5eSAndroid Build Coastguard Worker 
1962*344a7f5eSAndroid Build Coastguard Worker /* vec_vcfsx */
1963*344a7f5eSAndroid Build Coastguard Worker 
1964*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vcfsx(vector int __a,int __b)1965*344a7f5eSAndroid Build Coastguard Worker vec_vcfsx(vector int __a, int __b) {
1966*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcfsx(__a, __b);
1967*344a7f5eSAndroid Build Coastguard Worker }
1968*344a7f5eSAndroid Build Coastguard Worker 
1969*344a7f5eSAndroid Build Coastguard Worker /* vec_vcfux */
1970*344a7f5eSAndroid Build Coastguard Worker 
1971*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vcfux(vector unsigned int __a,int __b)1972*344a7f5eSAndroid Build Coastguard Worker vec_vcfux(vector unsigned int __a, int __b) {
1973*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcfux((vector int)__a, __b);
1974*344a7f5eSAndroid Build Coastguard Worker }
1975*344a7f5eSAndroid Build Coastguard Worker 
1976*344a7f5eSAndroid Build Coastguard Worker /* vec_cts */
1977*344a7f5eSAndroid Build Coastguard Worker 
vec_cts(vector float __a,int __b)1978*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_cts(vector float __a, int __b) {
1979*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vctsxs(__a, __b);
1980*344a7f5eSAndroid Build Coastguard Worker }
1981*344a7f5eSAndroid Build Coastguard Worker 
1982*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
1983*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_cts(vector double __a,int __b)1984*344a7f5eSAndroid Build Coastguard Worker vec_cts(vector double __a, int __b) {
1985*344a7f5eSAndroid Build Coastguard Worker   __a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
1986*344a7f5eSAndroid Build Coastguard Worker   return __builtin_convertvector(__a, vector signed long long);
1987*344a7f5eSAndroid Build Coastguard Worker }
1988*344a7f5eSAndroid Build Coastguard Worker #endif
1989*344a7f5eSAndroid Build Coastguard Worker 
1990*344a7f5eSAndroid Build Coastguard Worker /* vec_vctsxs */
1991*344a7f5eSAndroid Build Coastguard Worker 
1992*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __attribute__((__always_inline__))
vec_vctsxs(vector float __a,int __b)1993*344a7f5eSAndroid Build Coastguard Worker vec_vctsxs(vector float __a, int __b) {
1994*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vctsxs(__a, __b);
1995*344a7f5eSAndroid Build Coastguard Worker }
1996*344a7f5eSAndroid Build Coastguard Worker 
1997*344a7f5eSAndroid Build Coastguard Worker /* vec_ctu */
1998*344a7f5eSAndroid Build Coastguard Worker 
vec_ctu(vector float __a,int __b)1999*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai vec_ctu(vector float __a,
2000*344a7f5eSAndroid Build Coastguard Worker                                                            int __b) {
2001*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vctuxs(__a, __b);
2002*344a7f5eSAndroid Build Coastguard Worker }
2003*344a7f5eSAndroid Build Coastguard Worker 
2004*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
2005*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_ctu(vector double __a,int __b)2006*344a7f5eSAndroid Build Coastguard Worker vec_ctu(vector double __a, int __b) {
2007*344a7f5eSAndroid Build Coastguard Worker   __a *= (vector double)(vector unsigned long long)((0x3ffULL + __b) << 52);
2008*344a7f5eSAndroid Build Coastguard Worker   return __builtin_convertvector(__a, vector unsigned long long);
2009*344a7f5eSAndroid Build Coastguard Worker }
2010*344a7f5eSAndroid Build Coastguard Worker #endif
2011*344a7f5eSAndroid Build Coastguard Worker 
2012*344a7f5eSAndroid Build Coastguard Worker /* vec_vctuxs */
2013*344a7f5eSAndroid Build Coastguard Worker 
2014*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vctuxs(vector float __a,int __b)2015*344a7f5eSAndroid Build Coastguard Worker vec_vctuxs(vector float __a, int __b) {
2016*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vctuxs(__a, __b);
2017*344a7f5eSAndroid Build Coastguard Worker }
2018*344a7f5eSAndroid Build Coastguard Worker 
2019*344a7f5eSAndroid Build Coastguard Worker /* vec_double */
2020*344a7f5eSAndroid Build Coastguard Worker 
2021*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
2022*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_double(vector signed long long __a)2023*344a7f5eSAndroid Build Coastguard Worker vec_double(vector signed long long __a) {
2024*344a7f5eSAndroid Build Coastguard Worker   vector double __ret = {__a[0], __a[1]};
2025*344a7f5eSAndroid Build Coastguard Worker   return __ret;
2026*344a7f5eSAndroid Build Coastguard Worker }
2027*344a7f5eSAndroid Build Coastguard Worker 
2028*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_double(vector unsigned long long __a)2029*344a7f5eSAndroid Build Coastguard Worker vec_double(vector unsigned long long __a) {
2030*344a7f5eSAndroid Build Coastguard Worker   vector double __ret = {__a[0], __a[1]};
2031*344a7f5eSAndroid Build Coastguard Worker   return __ret;
2032*344a7f5eSAndroid Build Coastguard Worker }
2033*344a7f5eSAndroid Build Coastguard Worker #endif
2034*344a7f5eSAndroid Build Coastguard Worker 
2035*344a7f5eSAndroid Build Coastguard Worker /* vec_div */
2036*344a7f5eSAndroid Build Coastguard Worker 
2037*344a7f5eSAndroid Build Coastguard Worker /* Integer vector divides (vectors are scalarized, elements divided
2038*344a7f5eSAndroid Build Coastguard Worker    and the vectors reassembled).
2039*344a7f5eSAndroid Build Coastguard Worker */
2040*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_div(vector signed char __a,vector signed char __b)2041*344a7f5eSAndroid Build Coastguard Worker vec_div(vector signed char __a, vector signed char __b) {
2042*344a7f5eSAndroid Build Coastguard Worker   return __a / __b;
2043*344a7f5eSAndroid Build Coastguard Worker }
2044*344a7f5eSAndroid Build Coastguard Worker 
2045*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_div(vector unsigned char __a,vector unsigned char __b)2046*344a7f5eSAndroid Build Coastguard Worker vec_div(vector unsigned char __a, vector unsigned char __b) {
2047*344a7f5eSAndroid Build Coastguard Worker   return __a / __b;
2048*344a7f5eSAndroid Build Coastguard Worker }
2049*344a7f5eSAndroid Build Coastguard Worker 
2050*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_div(vector signed short __a,vector signed short __b)2051*344a7f5eSAndroid Build Coastguard Worker vec_div(vector signed short __a, vector signed short __b) {
2052*344a7f5eSAndroid Build Coastguard Worker   return __a / __b;
2053*344a7f5eSAndroid Build Coastguard Worker }
2054*344a7f5eSAndroid Build Coastguard Worker 
2055*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_div(vector unsigned short __a,vector unsigned short __b)2056*344a7f5eSAndroid Build Coastguard Worker vec_div(vector unsigned short __a, vector unsigned short __b) {
2057*344a7f5eSAndroid Build Coastguard Worker   return __a / __b;
2058*344a7f5eSAndroid Build Coastguard Worker }
2059*344a7f5eSAndroid Build Coastguard Worker 
2060*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_div(vector signed int __a,vector signed int __b)2061*344a7f5eSAndroid Build Coastguard Worker vec_div(vector signed int __a, vector signed int __b) {
2062*344a7f5eSAndroid Build Coastguard Worker   return __a / __b;
2063*344a7f5eSAndroid Build Coastguard Worker }
2064*344a7f5eSAndroid Build Coastguard Worker 
2065*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_div(vector unsigned int __a,vector unsigned int __b)2066*344a7f5eSAndroid Build Coastguard Worker vec_div(vector unsigned int __a, vector unsigned int __b) {
2067*344a7f5eSAndroid Build Coastguard Worker   return __a / __b;
2068*344a7f5eSAndroid Build Coastguard Worker }
2069*344a7f5eSAndroid Build Coastguard Worker 
2070*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
2071*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_div(vector signed long long __a,vector signed long long __b)2072*344a7f5eSAndroid Build Coastguard Worker vec_div(vector signed long long __a, vector signed long long __b) {
2073*344a7f5eSAndroid Build Coastguard Worker   return __a / __b;
2074*344a7f5eSAndroid Build Coastguard Worker }
2075*344a7f5eSAndroid Build Coastguard Worker 
2076*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_div(vector unsigned long long __a,vector unsigned long long __b)2077*344a7f5eSAndroid Build Coastguard Worker vec_div(vector unsigned long long __a, vector unsigned long long __b) {
2078*344a7f5eSAndroid Build Coastguard Worker   return __a / __b;
2079*344a7f5eSAndroid Build Coastguard Worker }
2080*344a7f5eSAndroid Build Coastguard Worker 
vec_div(vector float __a,vector float __b)2081*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_div(vector float __a,
2082*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
2083*344a7f5eSAndroid Build Coastguard Worker   return __a / __b;
2084*344a7f5eSAndroid Build Coastguard Worker }
2085*344a7f5eSAndroid Build Coastguard Worker 
vec_div(vector double __a,vector double __b)2086*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_div(vector double __a,
2087*344a7f5eSAndroid Build Coastguard Worker                                                      vector double __b) {
2088*344a7f5eSAndroid Build Coastguard Worker   return __a / __b;
2089*344a7f5eSAndroid Build Coastguard Worker }
2090*344a7f5eSAndroid Build Coastguard Worker #endif
2091*344a7f5eSAndroid Build Coastguard Worker 
2092*344a7f5eSAndroid Build Coastguard Worker /* vec_dss */
2093*344a7f5eSAndroid Build Coastguard Worker 
vec_dss(int __a)2094*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __attribute__((__always_inline__)) vec_dss(int __a) {
2095*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_dss(__a);
2096*344a7f5eSAndroid Build Coastguard Worker }
2097*344a7f5eSAndroid Build Coastguard Worker 
2098*344a7f5eSAndroid Build Coastguard Worker /* vec_dssall */
2099*344a7f5eSAndroid Build Coastguard Worker 
vec_dssall(void)2100*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __attribute__((__always_inline__)) vec_dssall(void) {
2101*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_dssall();
2102*344a7f5eSAndroid Build Coastguard Worker }
2103*344a7f5eSAndroid Build Coastguard Worker 
2104*344a7f5eSAndroid Build Coastguard Worker /* vec_dst */
2105*344a7f5eSAndroid Build Coastguard Worker #define vec_dst(__PTR, __CW, __STR) \
2106*344a7f5eSAndroid Build Coastguard Worker   __extension__(                    \
2107*344a7f5eSAndroid Build Coastguard Worker       { __builtin_altivec_dst((const void *)(__PTR), (__CW), (__STR)); })
2108*344a7f5eSAndroid Build Coastguard Worker 
2109*344a7f5eSAndroid Build Coastguard Worker /* vec_dstst */
2110*344a7f5eSAndroid Build Coastguard Worker #define vec_dstst(__PTR, __CW, __STR) \
2111*344a7f5eSAndroid Build Coastguard Worker   __extension__(                      \
2112*344a7f5eSAndroid Build Coastguard Worker       { __builtin_altivec_dstst((const void *)(__PTR), (__CW), (__STR)); })
2113*344a7f5eSAndroid Build Coastguard Worker 
2114*344a7f5eSAndroid Build Coastguard Worker /* vec_dststt */
2115*344a7f5eSAndroid Build Coastguard Worker #define vec_dststt(__PTR, __CW, __STR) \
2116*344a7f5eSAndroid Build Coastguard Worker   __extension__(                       \
2117*344a7f5eSAndroid Build Coastguard Worker       { __builtin_altivec_dststt((const void *)(__PTR), (__CW), (__STR)); })
2118*344a7f5eSAndroid Build Coastguard Worker 
2119*344a7f5eSAndroid Build Coastguard Worker /* vec_dstt */
2120*344a7f5eSAndroid Build Coastguard Worker #define vec_dstt(__PTR, __CW, __STR) \
2121*344a7f5eSAndroid Build Coastguard Worker   __extension__(                     \
2122*344a7f5eSAndroid Build Coastguard Worker       { __builtin_altivec_dstt((const void *)(__PTR), (__CW), (__STR)); })
2123*344a7f5eSAndroid Build Coastguard Worker 
2124*344a7f5eSAndroid Build Coastguard Worker /* vec_eqv */
2125*344a7f5eSAndroid Build Coastguard Worker 
2126*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
2127*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_eqv(vector signed char __a,vector signed char __b)2128*344a7f5eSAndroid Build Coastguard Worker vec_eqv(vector signed char __a, vector signed char __b) {
2129*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_vsx_xxleqv((vector unsigned int)__a,
2130*344a7f5eSAndroid Build Coastguard Worker                                                   (vector unsigned int)__b);
2131*344a7f5eSAndroid Build Coastguard Worker }
2132*344a7f5eSAndroid Build Coastguard Worker 
2133*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_eqv(vector unsigned char __a,vector unsigned char __b)2134*344a7f5eSAndroid Build Coastguard Worker vec_eqv(vector unsigned char __a, vector unsigned char __b) {
2135*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_vsx_xxleqv((vector unsigned int)__a,
2136*344a7f5eSAndroid Build Coastguard Worker                                                     (vector unsigned int)__b);
2137*344a7f5eSAndroid Build Coastguard Worker }
2138*344a7f5eSAndroid Build Coastguard Worker 
vec_eqv(vector bool char __a,vector bool char __b)2139*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_eqv(vector bool char __a,
2140*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool char __b) {
2141*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_vsx_xxleqv((vector unsigned int)__a,
2142*344a7f5eSAndroid Build Coastguard Worker                                                 (vector unsigned int)__b);
2143*344a7f5eSAndroid Build Coastguard Worker }
2144*344a7f5eSAndroid Build Coastguard Worker 
2145*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_eqv(vector signed short __a,vector signed short __b)2146*344a7f5eSAndroid Build Coastguard Worker vec_eqv(vector signed short __a, vector signed short __b) {
2147*344a7f5eSAndroid Build Coastguard Worker   return (vector signed short)__builtin_vsx_xxleqv((vector unsigned int)__a,
2148*344a7f5eSAndroid Build Coastguard Worker                                                    (vector unsigned int)__b);
2149*344a7f5eSAndroid Build Coastguard Worker }
2150*344a7f5eSAndroid Build Coastguard Worker 
2151*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_eqv(vector unsigned short __a,vector unsigned short __b)2152*344a7f5eSAndroid Build Coastguard Worker vec_eqv(vector unsigned short __a, vector unsigned short __b) {
2153*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_vsx_xxleqv((vector unsigned int)__a,
2154*344a7f5eSAndroid Build Coastguard Worker                                                      (vector unsigned int)__b);
2155*344a7f5eSAndroid Build Coastguard Worker }
2156*344a7f5eSAndroid Build Coastguard Worker 
2157*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_eqv(vector bool short __a,vector bool short __b)2158*344a7f5eSAndroid Build Coastguard Worker vec_eqv(vector bool short __a, vector bool short __b) {
2159*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_vsx_xxleqv((vector unsigned int)__a,
2160*344a7f5eSAndroid Build Coastguard Worker                                                  (vector unsigned int)__b);
2161*344a7f5eSAndroid Build Coastguard Worker }
2162*344a7f5eSAndroid Build Coastguard Worker 
2163*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_eqv(vector signed int __a,vector signed int __b)2164*344a7f5eSAndroid Build Coastguard Worker vec_eqv(vector signed int __a, vector signed int __b) {
2165*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)__builtin_vsx_xxleqv((vector unsigned int)__a,
2166*344a7f5eSAndroid Build Coastguard Worker                                                  (vector unsigned int)__b);
2167*344a7f5eSAndroid Build Coastguard Worker }
2168*344a7f5eSAndroid Build Coastguard Worker 
2169*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_eqv(vector unsigned int __a,vector unsigned int __b)2170*344a7f5eSAndroid Build Coastguard Worker vec_eqv(vector unsigned int __a, vector unsigned int __b) {
2171*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xxleqv(__a, __b);
2172*344a7f5eSAndroid Build Coastguard Worker }
2173*344a7f5eSAndroid Build Coastguard Worker 
vec_eqv(vector bool int __a,vector bool int __b)2174*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_eqv(vector bool int __a,
2175*344a7f5eSAndroid Build Coastguard Worker                                                        vector bool int __b) {
2176*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_vsx_xxleqv((vector unsigned int)__a,
2177*344a7f5eSAndroid Build Coastguard Worker                                                (vector unsigned int)__b);
2178*344a7f5eSAndroid Build Coastguard Worker }
2179*344a7f5eSAndroid Build Coastguard Worker 
2180*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_eqv(vector signed long long __a,vector signed long long __b)2181*344a7f5eSAndroid Build Coastguard Worker vec_eqv(vector signed long long __a, vector signed long long __b) {
2182*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__builtin_vsx_xxleqv(
2183*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a, (vector unsigned int)__b);
2184*344a7f5eSAndroid Build Coastguard Worker }
2185*344a7f5eSAndroid Build Coastguard Worker 
2186*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_eqv(vector unsigned long long __a,vector unsigned long long __b)2187*344a7f5eSAndroid Build Coastguard Worker vec_eqv(vector unsigned long long __a, vector unsigned long long __b) {
2188*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__builtin_vsx_xxleqv(
2189*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a, (vector unsigned int)__b);
2190*344a7f5eSAndroid Build Coastguard Worker }
2191*344a7f5eSAndroid Build Coastguard Worker 
2192*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_eqv(vector bool long long __a,vector bool long long __b)2193*344a7f5eSAndroid Build Coastguard Worker vec_eqv(vector bool long long __a, vector bool long long __b) {
2194*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_vsx_xxleqv((vector unsigned int)__a,
2195*344a7f5eSAndroid Build Coastguard Worker                                                      (vector unsigned int)__b);
2196*344a7f5eSAndroid Build Coastguard Worker }
2197*344a7f5eSAndroid Build Coastguard Worker 
vec_eqv(vector float __a,vector float __b)2198*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_eqv(vector float __a,
2199*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
2200*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_vsx_xxleqv((vector unsigned int)__a,
2201*344a7f5eSAndroid Build Coastguard Worker                                             (vector unsigned int)__b);
2202*344a7f5eSAndroid Build Coastguard Worker }
2203*344a7f5eSAndroid Build Coastguard Worker 
vec_eqv(vector double __a,vector double __b)2204*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_eqv(vector double __a,
2205*344a7f5eSAndroid Build Coastguard Worker                                                      vector double __b) {
2206*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__builtin_vsx_xxleqv((vector unsigned int)__a,
2207*344a7f5eSAndroid Build Coastguard Worker                                              (vector unsigned int)__b);
2208*344a7f5eSAndroid Build Coastguard Worker }
2209*344a7f5eSAndroid Build Coastguard Worker #endif
2210*344a7f5eSAndroid Build Coastguard Worker 
2211*344a7f5eSAndroid Build Coastguard Worker /* vec_expte */
2212*344a7f5eSAndroid Build Coastguard Worker 
2213*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_expte(vector float __a)2214*344a7f5eSAndroid Build Coastguard Worker vec_expte(vector float __a) {
2215*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vexptefp(__a);
2216*344a7f5eSAndroid Build Coastguard Worker }
2217*344a7f5eSAndroid Build Coastguard Worker 
2218*344a7f5eSAndroid Build Coastguard Worker /* vec_vexptefp */
2219*344a7f5eSAndroid Build Coastguard Worker 
2220*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vexptefp(vector float __a)2221*344a7f5eSAndroid Build Coastguard Worker vec_vexptefp(vector float __a) {
2222*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vexptefp(__a);
2223*344a7f5eSAndroid Build Coastguard Worker }
2224*344a7f5eSAndroid Build Coastguard Worker 
2225*344a7f5eSAndroid Build Coastguard Worker /* vec_floor */
2226*344a7f5eSAndroid Build Coastguard Worker 
vec_floor(vector float __a)2227*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_floor(vector float __a) {
2228*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
2229*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrspim(__a);
2230*344a7f5eSAndroid Build Coastguard Worker #else
2231*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrfim(__a);
2232*344a7f5eSAndroid Build Coastguard Worker #endif
2233*344a7f5eSAndroid Build Coastguard Worker }
2234*344a7f5eSAndroid Build Coastguard Worker 
2235*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_floor(vector double __a)2236*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_floor(vector double __a) {
2237*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrdpim(__a);
2238*344a7f5eSAndroid Build Coastguard Worker }
2239*344a7f5eSAndroid Build Coastguard Worker #endif
2240*344a7f5eSAndroid Build Coastguard Worker 
2241*344a7f5eSAndroid Build Coastguard Worker /* vec_vrfim */
2242*344a7f5eSAndroid Build Coastguard Worker 
2243*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vrfim(vector float __a)2244*344a7f5eSAndroid Build Coastguard Worker vec_vrfim(vector float __a) {
2245*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrfim(__a);
2246*344a7f5eSAndroid Build Coastguard Worker }
2247*344a7f5eSAndroid Build Coastguard Worker 
2248*344a7f5eSAndroid Build Coastguard Worker /* vec_ld */
2249*344a7f5eSAndroid Build Coastguard Worker 
2250*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_ld(int __a,const vector signed char * __b)2251*344a7f5eSAndroid Build Coastguard Worker vec_ld(int __a, const vector signed char *__b) {
2252*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_lvx(__a, __b);
2253*344a7f5eSAndroid Build Coastguard Worker }
2254*344a7f5eSAndroid Build Coastguard Worker 
2255*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_ld(int __a,const signed char * __b)2256*344a7f5eSAndroid Build Coastguard Worker vec_ld(int __a, const signed char *__b) {
2257*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_lvx(__a, __b);
2258*344a7f5eSAndroid Build Coastguard Worker }
2259*344a7f5eSAndroid Build Coastguard Worker 
2260*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_ld(int __a,const vector unsigned char * __b)2261*344a7f5eSAndroid Build Coastguard Worker vec_ld(int __a, const vector unsigned char *__b) {
2262*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2263*344a7f5eSAndroid Build Coastguard Worker }
2264*344a7f5eSAndroid Build Coastguard Worker 
2265*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_ld(int __a,const unsigned char * __b)2266*344a7f5eSAndroid Build Coastguard Worker vec_ld(int __a, const unsigned char *__b) {
2267*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2268*344a7f5eSAndroid Build Coastguard Worker }
2269*344a7f5eSAndroid Build Coastguard Worker 
2270*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_ld(int __a,const vector bool char * __b)2271*344a7f5eSAndroid Build Coastguard Worker vec_ld(int __a, const vector bool char *__b) {
2272*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_lvx(__a, __b);
2273*344a7f5eSAndroid Build Coastguard Worker }
2274*344a7f5eSAndroid Build Coastguard Worker 
vec_ld(int __a,const vector short * __b)2275*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_ld(int __a,
2276*344a7f5eSAndroid Build Coastguard Worker                                                    const vector short *__b) {
2277*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_lvx(__a, __b);
2278*344a7f5eSAndroid Build Coastguard Worker }
2279*344a7f5eSAndroid Build Coastguard Worker 
vec_ld(int __a,const short * __b)2280*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_ld(int __a, const short *__b) {
2281*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_lvx(__a, __b);
2282*344a7f5eSAndroid Build Coastguard Worker }
2283*344a7f5eSAndroid Build Coastguard Worker 
2284*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_ld(int __a,const vector unsigned short * __b)2285*344a7f5eSAndroid Build Coastguard Worker vec_ld(int __a, const vector unsigned short *__b) {
2286*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2287*344a7f5eSAndroid Build Coastguard Worker }
2288*344a7f5eSAndroid Build Coastguard Worker 
2289*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_ld(int __a,const unsigned short * __b)2290*344a7f5eSAndroid Build Coastguard Worker vec_ld(int __a, const unsigned short *__b) {
2291*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2292*344a7f5eSAndroid Build Coastguard Worker }
2293*344a7f5eSAndroid Build Coastguard Worker 
2294*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_ld(int __a,const vector bool short * __b)2295*344a7f5eSAndroid Build Coastguard Worker vec_ld(int __a, const vector bool short *__b) {
2296*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_lvx(__a, __b);
2297*344a7f5eSAndroid Build Coastguard Worker }
2298*344a7f5eSAndroid Build Coastguard Worker 
vec_ld(int __a,const vector pixel * __b)2299*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_ld(int __a,
2300*344a7f5eSAndroid Build Coastguard Worker                                                    const vector pixel *__b) {
2301*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_lvx(__a, __b);
2302*344a7f5eSAndroid Build Coastguard Worker }
2303*344a7f5eSAndroid Build Coastguard Worker 
vec_ld(int __a,const vector int * __b)2304*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_ld(int __a,
2305*344a7f5eSAndroid Build Coastguard Worker                                                  const vector int *__b) {
2306*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_lvx(__a, __b);
2307*344a7f5eSAndroid Build Coastguard Worker }
2308*344a7f5eSAndroid Build Coastguard Worker 
vec_ld(int __a,const int * __b)2309*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_ld(int __a, const int *__b) {
2310*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_lvx(__a, __b);
2311*344a7f5eSAndroid Build Coastguard Worker }
2312*344a7f5eSAndroid Build Coastguard Worker 
2313*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_ld(int __a,const vector unsigned int * __b)2314*344a7f5eSAndroid Build Coastguard Worker vec_ld(int __a, const vector unsigned int *__b) {
2315*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2316*344a7f5eSAndroid Build Coastguard Worker }
2317*344a7f5eSAndroid Build Coastguard Worker 
2318*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_ld(int __a,const unsigned int * __b)2319*344a7f5eSAndroid Build Coastguard Worker vec_ld(int __a, const unsigned int *__b) {
2320*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2321*344a7f5eSAndroid Build Coastguard Worker }
2322*344a7f5eSAndroid Build Coastguard Worker 
2323*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_ld(int __a,const vector bool int * __b)2324*344a7f5eSAndroid Build Coastguard Worker vec_ld(int __a, const vector bool int *__b) {
2325*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_lvx(__a, __b);
2326*344a7f5eSAndroid Build Coastguard Worker }
2327*344a7f5eSAndroid Build Coastguard Worker 
vec_ld(int __a,const vector float * __b)2328*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_ld(int __a,
2329*344a7f5eSAndroid Build Coastguard Worker                                                    const vector float *__b) {
2330*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_lvx(__a, __b);
2331*344a7f5eSAndroid Build Coastguard Worker }
2332*344a7f5eSAndroid Build Coastguard Worker 
vec_ld(int __a,const float * __b)2333*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_ld(int __a, const float *__b) {
2334*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_lvx(__a, __b);
2335*344a7f5eSAndroid Build Coastguard Worker }
2336*344a7f5eSAndroid Build Coastguard Worker 
2337*344a7f5eSAndroid Build Coastguard Worker /* vec_lvx */
2338*344a7f5eSAndroid Build Coastguard Worker 
2339*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvx(int __a,const vector signed char * __b)2340*344a7f5eSAndroid Build Coastguard Worker vec_lvx(int __a, const vector signed char *__b) {
2341*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_lvx(__a, __b);
2342*344a7f5eSAndroid Build Coastguard Worker }
2343*344a7f5eSAndroid Build Coastguard Worker 
2344*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvx(int __a,const signed char * __b)2345*344a7f5eSAndroid Build Coastguard Worker vec_lvx(int __a, const signed char *__b) {
2346*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_lvx(__a, __b);
2347*344a7f5eSAndroid Build Coastguard Worker }
2348*344a7f5eSAndroid Build Coastguard Worker 
2349*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvx(int __a,const vector unsigned char * __b)2350*344a7f5eSAndroid Build Coastguard Worker vec_lvx(int __a, const vector unsigned char *__b) {
2351*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2352*344a7f5eSAndroid Build Coastguard Worker }
2353*344a7f5eSAndroid Build Coastguard Worker 
2354*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvx(int __a,const unsigned char * __b)2355*344a7f5eSAndroid Build Coastguard Worker vec_lvx(int __a, const unsigned char *__b) {
2356*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvx(__a, __b);
2357*344a7f5eSAndroid Build Coastguard Worker }
2358*344a7f5eSAndroid Build Coastguard Worker 
2359*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_lvx(int __a,const vector bool char * __b)2360*344a7f5eSAndroid Build Coastguard Worker vec_lvx(int __a, const vector bool char *__b) {
2361*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_lvx(__a, __b);
2362*344a7f5eSAndroid Build Coastguard Worker }
2363*344a7f5eSAndroid Build Coastguard Worker 
vec_lvx(int __a,const vector short * __b)2364*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a,
2365*344a7f5eSAndroid Build Coastguard Worker                                                     const vector short *__b) {
2366*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_lvx(__a, __b);
2367*344a7f5eSAndroid Build Coastguard Worker }
2368*344a7f5eSAndroid Build Coastguard Worker 
vec_lvx(int __a,const short * __b)2369*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvx(int __a, const short *__b) {
2370*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_lvx(__a, __b);
2371*344a7f5eSAndroid Build Coastguard Worker }
2372*344a7f5eSAndroid Build Coastguard Worker 
2373*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvx(int __a,const vector unsigned short * __b)2374*344a7f5eSAndroid Build Coastguard Worker vec_lvx(int __a, const vector unsigned short *__b) {
2375*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2376*344a7f5eSAndroid Build Coastguard Worker }
2377*344a7f5eSAndroid Build Coastguard Worker 
2378*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvx(int __a,const unsigned short * __b)2379*344a7f5eSAndroid Build Coastguard Worker vec_lvx(int __a, const unsigned short *__b) {
2380*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_lvx(__a, __b);
2381*344a7f5eSAndroid Build Coastguard Worker }
2382*344a7f5eSAndroid Build Coastguard Worker 
2383*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_lvx(int __a,const vector bool short * __b)2384*344a7f5eSAndroid Build Coastguard Worker vec_lvx(int __a, const vector bool short *__b) {
2385*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_lvx(__a, __b);
2386*344a7f5eSAndroid Build Coastguard Worker }
2387*344a7f5eSAndroid Build Coastguard Worker 
vec_lvx(int __a,const vector pixel * __b)2388*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_lvx(int __a,
2389*344a7f5eSAndroid Build Coastguard Worker                                                     const vector pixel *__b) {
2390*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_lvx(__a, __b);
2391*344a7f5eSAndroid Build Coastguard Worker }
2392*344a7f5eSAndroid Build Coastguard Worker 
vec_lvx(int __a,const vector int * __b)2393*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a,
2394*344a7f5eSAndroid Build Coastguard Worker                                                   const vector int *__b) {
2395*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_lvx(__a, __b);
2396*344a7f5eSAndroid Build Coastguard Worker }
2397*344a7f5eSAndroid Build Coastguard Worker 
vec_lvx(int __a,const int * __b)2398*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvx(int __a, const int *__b) {
2399*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_lvx(__a, __b);
2400*344a7f5eSAndroid Build Coastguard Worker }
2401*344a7f5eSAndroid Build Coastguard Worker 
2402*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvx(int __a,const vector unsigned int * __b)2403*344a7f5eSAndroid Build Coastguard Worker vec_lvx(int __a, const vector unsigned int *__b) {
2404*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2405*344a7f5eSAndroid Build Coastguard Worker }
2406*344a7f5eSAndroid Build Coastguard Worker 
2407*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvx(int __a,const unsigned int * __b)2408*344a7f5eSAndroid Build Coastguard Worker vec_lvx(int __a, const unsigned int *__b) {
2409*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_lvx(__a, __b);
2410*344a7f5eSAndroid Build Coastguard Worker }
2411*344a7f5eSAndroid Build Coastguard Worker 
2412*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_lvx(int __a,const vector bool int * __b)2413*344a7f5eSAndroid Build Coastguard Worker vec_lvx(int __a, const vector bool int *__b) {
2414*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_lvx(__a, __b);
2415*344a7f5eSAndroid Build Coastguard Worker }
2416*344a7f5eSAndroid Build Coastguard Worker 
vec_lvx(int __a,const vector float * __b)2417*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a,
2418*344a7f5eSAndroid Build Coastguard Worker                                                     const vector float *__b) {
2419*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_lvx(__a, __b);
2420*344a7f5eSAndroid Build Coastguard Worker }
2421*344a7f5eSAndroid Build Coastguard Worker 
vec_lvx(int __a,const float * __b)2422*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvx(int __a, const float *__b) {
2423*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_lvx(__a, __b);
2424*344a7f5eSAndroid Build Coastguard Worker }
2425*344a7f5eSAndroid Build Coastguard Worker 
2426*344a7f5eSAndroid Build Coastguard Worker /* vec_lde */
2427*344a7f5eSAndroid Build Coastguard Worker 
2428*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lde(int __a,const signed char * __b)2429*344a7f5eSAndroid Build Coastguard Worker vec_lde(int __a, const signed char *__b) {
2430*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_lvebx(__a, __b);
2431*344a7f5eSAndroid Build Coastguard Worker }
2432*344a7f5eSAndroid Build Coastguard Worker 
2433*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lde(int __a,const unsigned char * __b)2434*344a7f5eSAndroid Build Coastguard Worker vec_lde(int __a, const unsigned char *__b) {
2435*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
2436*344a7f5eSAndroid Build Coastguard Worker }
2437*344a7f5eSAndroid Build Coastguard Worker 
vec_lde(int __a,const short * __b)2438*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lde(int __a, const short *__b) {
2439*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_lvehx(__a, __b);
2440*344a7f5eSAndroid Build Coastguard Worker }
2441*344a7f5eSAndroid Build Coastguard Worker 
2442*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lde(int __a,const unsigned short * __b)2443*344a7f5eSAndroid Build Coastguard Worker vec_lde(int __a, const unsigned short *__b) {
2444*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
2445*344a7f5eSAndroid Build Coastguard Worker }
2446*344a7f5eSAndroid Build Coastguard Worker 
vec_lde(int __a,const int * __b)2447*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lde(int __a, const int *__b) {
2448*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_lvewx(__a, __b);
2449*344a7f5eSAndroid Build Coastguard Worker }
2450*344a7f5eSAndroid Build Coastguard Worker 
2451*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lde(int __a,const unsigned int * __b)2452*344a7f5eSAndroid Build Coastguard Worker vec_lde(int __a, const unsigned int *__b) {
2453*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
2454*344a7f5eSAndroid Build Coastguard Worker }
2455*344a7f5eSAndroid Build Coastguard Worker 
vec_lde(int __a,const float * __b)2456*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lde(int __a, const float *__b) {
2457*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_lvewx(__a, __b);
2458*344a7f5eSAndroid Build Coastguard Worker }
2459*344a7f5eSAndroid Build Coastguard Worker 
2460*344a7f5eSAndroid Build Coastguard Worker /* vec_lvebx */
2461*344a7f5eSAndroid Build Coastguard Worker 
2462*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvebx(int __a,const signed char * __b)2463*344a7f5eSAndroid Build Coastguard Worker vec_lvebx(int __a, const signed char *__b) {
2464*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_lvebx(__a, __b);
2465*344a7f5eSAndroid Build Coastguard Worker }
2466*344a7f5eSAndroid Build Coastguard Worker 
2467*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvebx(int __a,const unsigned char * __b)2468*344a7f5eSAndroid Build Coastguard Worker vec_lvebx(int __a, const unsigned char *__b) {
2469*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvebx(__a, __b);
2470*344a7f5eSAndroid Build Coastguard Worker }
2471*344a7f5eSAndroid Build Coastguard Worker 
2472*344a7f5eSAndroid Build Coastguard Worker /* vec_lvehx */
2473*344a7f5eSAndroid Build Coastguard Worker 
vec_lvehx(int __a,const short * __b)2474*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvehx(int __a,
2475*344a7f5eSAndroid Build Coastguard Worker                                                       const short *__b) {
2476*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_lvehx(__a, __b);
2477*344a7f5eSAndroid Build Coastguard Worker }
2478*344a7f5eSAndroid Build Coastguard Worker 
2479*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvehx(int __a,const unsigned short * __b)2480*344a7f5eSAndroid Build Coastguard Worker vec_lvehx(int __a, const unsigned short *__b) {
2481*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_lvehx(__a, __b);
2482*344a7f5eSAndroid Build Coastguard Worker }
2483*344a7f5eSAndroid Build Coastguard Worker 
2484*344a7f5eSAndroid Build Coastguard Worker /* vec_lvewx */
2485*344a7f5eSAndroid Build Coastguard Worker 
vec_lvewx(int __a,const int * __b)2486*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvewx(int __a, const int *__b) {
2487*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_lvewx(__a, __b);
2488*344a7f5eSAndroid Build Coastguard Worker }
2489*344a7f5eSAndroid Build Coastguard Worker 
2490*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvewx(int __a,const unsigned int * __b)2491*344a7f5eSAndroid Build Coastguard Worker vec_lvewx(int __a, const unsigned int *__b) {
2492*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_lvewx(__a, __b);
2493*344a7f5eSAndroid Build Coastguard Worker }
2494*344a7f5eSAndroid Build Coastguard Worker 
vec_lvewx(int __a,const float * __b)2495*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvewx(int __a,
2496*344a7f5eSAndroid Build Coastguard Worker                                                       const float *__b) {
2497*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_lvewx(__a, __b);
2498*344a7f5eSAndroid Build Coastguard Worker }
2499*344a7f5eSAndroid Build Coastguard Worker 
2500*344a7f5eSAndroid Build Coastguard Worker /* vec_ldl */
2501*344a7f5eSAndroid Build Coastguard Worker 
2502*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_ldl(int __a,const vector signed char * __b)2503*344a7f5eSAndroid Build Coastguard Worker vec_ldl(int __a, const vector signed char *__b) {
2504*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2505*344a7f5eSAndroid Build Coastguard Worker }
2506*344a7f5eSAndroid Build Coastguard Worker 
2507*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_ldl(int __a,const signed char * __b)2508*344a7f5eSAndroid Build Coastguard Worker vec_ldl(int __a, const signed char *__b) {
2509*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2510*344a7f5eSAndroid Build Coastguard Worker }
2511*344a7f5eSAndroid Build Coastguard Worker 
2512*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_ldl(int __a,const vector unsigned char * __b)2513*344a7f5eSAndroid Build Coastguard Worker vec_ldl(int __a, const vector unsigned char *__b) {
2514*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2515*344a7f5eSAndroid Build Coastguard Worker }
2516*344a7f5eSAndroid Build Coastguard Worker 
2517*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_ldl(int __a,const unsigned char * __b)2518*344a7f5eSAndroid Build Coastguard Worker vec_ldl(int __a, const unsigned char *__b) {
2519*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2520*344a7f5eSAndroid Build Coastguard Worker }
2521*344a7f5eSAndroid Build Coastguard Worker 
2522*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_ldl(int __a,const vector bool char * __b)2523*344a7f5eSAndroid Build Coastguard Worker vec_ldl(int __a, const vector bool char *__b) {
2524*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_lvxl(__a, __b);
2525*344a7f5eSAndroid Build Coastguard Worker }
2526*344a7f5eSAndroid Build Coastguard Worker 
vec_ldl(int __a,const vector short * __b)2527*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a,
2528*344a7f5eSAndroid Build Coastguard Worker                                                     const vector short *__b) {
2529*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_lvxl(__a, __b);
2530*344a7f5eSAndroid Build Coastguard Worker }
2531*344a7f5eSAndroid Build Coastguard Worker 
vec_ldl(int __a,const short * __b)2532*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_ldl(int __a, const short *__b) {
2533*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_lvxl(__a, __b);
2534*344a7f5eSAndroid Build Coastguard Worker }
2535*344a7f5eSAndroid Build Coastguard Worker 
2536*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_ldl(int __a,const vector unsigned short * __b)2537*344a7f5eSAndroid Build Coastguard Worker vec_ldl(int __a, const vector unsigned short *__b) {
2538*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2539*344a7f5eSAndroid Build Coastguard Worker }
2540*344a7f5eSAndroid Build Coastguard Worker 
2541*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_ldl(int __a,const unsigned short * __b)2542*344a7f5eSAndroid Build Coastguard Worker vec_ldl(int __a, const unsigned short *__b) {
2543*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2544*344a7f5eSAndroid Build Coastguard Worker }
2545*344a7f5eSAndroid Build Coastguard Worker 
2546*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_ldl(int __a,const vector bool short * __b)2547*344a7f5eSAndroid Build Coastguard Worker vec_ldl(int __a, const vector bool short *__b) {
2548*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_lvxl(__a, __b);
2549*344a7f5eSAndroid Build Coastguard Worker }
2550*344a7f5eSAndroid Build Coastguard Worker 
vec_ldl(int __a,const vector pixel * __b)2551*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_ldl(int __a,
2552*344a7f5eSAndroid Build Coastguard Worker                                                     const vector pixel *__b) {
2553*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel short)__builtin_altivec_lvxl(__a, __b);
2554*344a7f5eSAndroid Build Coastguard Worker }
2555*344a7f5eSAndroid Build Coastguard Worker 
vec_ldl(int __a,const vector int * __b)2556*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a,
2557*344a7f5eSAndroid Build Coastguard Worker                                                   const vector int *__b) {
2558*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_lvxl(__a, __b);
2559*344a7f5eSAndroid Build Coastguard Worker }
2560*344a7f5eSAndroid Build Coastguard Worker 
vec_ldl(int __a,const int * __b)2561*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_ldl(int __a, const int *__b) {
2562*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_lvxl(__a, __b);
2563*344a7f5eSAndroid Build Coastguard Worker }
2564*344a7f5eSAndroid Build Coastguard Worker 
2565*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_ldl(int __a,const vector unsigned int * __b)2566*344a7f5eSAndroid Build Coastguard Worker vec_ldl(int __a, const vector unsigned int *__b) {
2567*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2568*344a7f5eSAndroid Build Coastguard Worker }
2569*344a7f5eSAndroid Build Coastguard Worker 
2570*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_ldl(int __a,const unsigned int * __b)2571*344a7f5eSAndroid Build Coastguard Worker vec_ldl(int __a, const unsigned int *__b) {
2572*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2573*344a7f5eSAndroid Build Coastguard Worker }
2574*344a7f5eSAndroid Build Coastguard Worker 
2575*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_ldl(int __a,const vector bool int * __b)2576*344a7f5eSAndroid Build Coastguard Worker vec_ldl(int __a, const vector bool int *__b) {
2577*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_lvxl(__a, __b);
2578*344a7f5eSAndroid Build Coastguard Worker }
2579*344a7f5eSAndroid Build Coastguard Worker 
vec_ldl(int __a,const vector float * __b)2580*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a,
2581*344a7f5eSAndroid Build Coastguard Worker                                                     const vector float *__b) {
2582*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_lvxl(__a, __b);
2583*344a7f5eSAndroid Build Coastguard Worker }
2584*344a7f5eSAndroid Build Coastguard Worker 
vec_ldl(int __a,const float * __b)2585*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_ldl(int __a, const float *__b) {
2586*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_lvxl(__a, __b);
2587*344a7f5eSAndroid Build Coastguard Worker }
2588*344a7f5eSAndroid Build Coastguard Worker 
2589*344a7f5eSAndroid Build Coastguard Worker /* vec_lvxl */
2590*344a7f5eSAndroid Build Coastguard Worker 
2591*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvxl(int __a,const vector signed char * __b)2592*344a7f5eSAndroid Build Coastguard Worker vec_lvxl(int __a, const vector signed char *__b) {
2593*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2594*344a7f5eSAndroid Build Coastguard Worker }
2595*344a7f5eSAndroid Build Coastguard Worker 
2596*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvxl(int __a,const signed char * __b)2597*344a7f5eSAndroid Build Coastguard Worker vec_lvxl(int __a, const signed char *__b) {
2598*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_lvxl(__a, __b);
2599*344a7f5eSAndroid Build Coastguard Worker }
2600*344a7f5eSAndroid Build Coastguard Worker 
2601*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvxl(int __a,const vector unsigned char * __b)2602*344a7f5eSAndroid Build Coastguard Worker vec_lvxl(int __a, const vector unsigned char *__b) {
2603*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2604*344a7f5eSAndroid Build Coastguard Worker }
2605*344a7f5eSAndroid Build Coastguard Worker 
2606*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvxl(int __a,const unsigned char * __b)2607*344a7f5eSAndroid Build Coastguard Worker vec_lvxl(int __a, const unsigned char *__b) {
2608*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvxl(__a, __b);
2609*344a7f5eSAndroid Build Coastguard Worker }
2610*344a7f5eSAndroid Build Coastguard Worker 
2611*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_lvxl(int __a,const vector bool char * __b)2612*344a7f5eSAndroid Build Coastguard Worker vec_lvxl(int __a, const vector bool char *__b) {
2613*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_lvxl(__a, __b);
2614*344a7f5eSAndroid Build Coastguard Worker }
2615*344a7f5eSAndroid Build Coastguard Worker 
vec_lvxl(int __a,const vector short * __b)2616*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
2617*344a7f5eSAndroid Build Coastguard Worker                                                      const vector short *__b) {
2618*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_lvxl(__a, __b);
2619*344a7f5eSAndroid Build Coastguard Worker }
2620*344a7f5eSAndroid Build Coastguard Worker 
vec_lvxl(int __a,const short * __b)2621*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvxl(int __a,
2622*344a7f5eSAndroid Build Coastguard Worker                                                      const short *__b) {
2623*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_lvxl(__a, __b);
2624*344a7f5eSAndroid Build Coastguard Worker }
2625*344a7f5eSAndroid Build Coastguard Worker 
2626*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvxl(int __a,const vector unsigned short * __b)2627*344a7f5eSAndroid Build Coastguard Worker vec_lvxl(int __a, const vector unsigned short *__b) {
2628*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2629*344a7f5eSAndroid Build Coastguard Worker }
2630*344a7f5eSAndroid Build Coastguard Worker 
2631*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvxl(int __a,const unsigned short * __b)2632*344a7f5eSAndroid Build Coastguard Worker vec_lvxl(int __a, const unsigned short *__b) {
2633*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_lvxl(__a, __b);
2634*344a7f5eSAndroid Build Coastguard Worker }
2635*344a7f5eSAndroid Build Coastguard Worker 
2636*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_lvxl(int __a,const vector bool short * __b)2637*344a7f5eSAndroid Build Coastguard Worker vec_lvxl(int __a, const vector bool short *__b) {
2638*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_lvxl(__a, __b);
2639*344a7f5eSAndroid Build Coastguard Worker }
2640*344a7f5eSAndroid Build Coastguard Worker 
vec_lvxl(int __a,const vector pixel * __b)2641*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_lvxl(int __a,
2642*344a7f5eSAndroid Build Coastguard Worker                                                      const vector pixel *__b) {
2643*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_lvxl(__a, __b);
2644*344a7f5eSAndroid Build Coastguard Worker }
2645*344a7f5eSAndroid Build Coastguard Worker 
vec_lvxl(int __a,const vector int * __b)2646*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a,
2647*344a7f5eSAndroid Build Coastguard Worker                                                    const vector int *__b) {
2648*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_lvxl(__a, __b);
2649*344a7f5eSAndroid Build Coastguard Worker }
2650*344a7f5eSAndroid Build Coastguard Worker 
vec_lvxl(int __a,const int * __b)2651*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvxl(int __a, const int *__b) {
2652*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_lvxl(__a, __b);
2653*344a7f5eSAndroid Build Coastguard Worker }
2654*344a7f5eSAndroid Build Coastguard Worker 
2655*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvxl(int __a,const vector unsigned int * __b)2656*344a7f5eSAndroid Build Coastguard Worker vec_lvxl(int __a, const vector unsigned int *__b) {
2657*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2658*344a7f5eSAndroid Build Coastguard Worker }
2659*344a7f5eSAndroid Build Coastguard Worker 
2660*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvxl(int __a,const unsigned int * __b)2661*344a7f5eSAndroid Build Coastguard Worker vec_lvxl(int __a, const unsigned int *__b) {
2662*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_lvxl(__a, __b);
2663*344a7f5eSAndroid Build Coastguard Worker }
2664*344a7f5eSAndroid Build Coastguard Worker 
2665*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_lvxl(int __a,const vector bool int * __b)2666*344a7f5eSAndroid Build Coastguard Worker vec_lvxl(int __a, const vector bool int *__b) {
2667*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_lvxl(__a, __b);
2668*344a7f5eSAndroid Build Coastguard Worker }
2669*344a7f5eSAndroid Build Coastguard Worker 
vec_lvxl(int __a,const vector float * __b)2670*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
2671*344a7f5eSAndroid Build Coastguard Worker                                                      const vector float *__b) {
2672*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_lvxl(__a, __b);
2673*344a7f5eSAndroid Build Coastguard Worker }
2674*344a7f5eSAndroid Build Coastguard Worker 
vec_lvxl(int __a,const float * __b)2675*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvxl(int __a,
2676*344a7f5eSAndroid Build Coastguard Worker                                                      const float *__b) {
2677*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_lvxl(__a, __b);
2678*344a7f5eSAndroid Build Coastguard Worker }
2679*344a7f5eSAndroid Build Coastguard Worker 
2680*344a7f5eSAndroid Build Coastguard Worker /* vec_loge */
2681*344a7f5eSAndroid Build Coastguard Worker 
2682*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_loge(vector float __a)2683*344a7f5eSAndroid Build Coastguard Worker vec_loge(vector float __a) {
2684*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vlogefp(__a);
2685*344a7f5eSAndroid Build Coastguard Worker }
2686*344a7f5eSAndroid Build Coastguard Worker 
2687*344a7f5eSAndroid Build Coastguard Worker /* vec_vlogefp */
2688*344a7f5eSAndroid Build Coastguard Worker 
2689*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vlogefp(vector float __a)2690*344a7f5eSAndroid Build Coastguard Worker vec_vlogefp(vector float __a) {
2691*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vlogefp(__a);
2692*344a7f5eSAndroid Build Coastguard Worker }
2693*344a7f5eSAndroid Build Coastguard Worker 
2694*344a7f5eSAndroid Build Coastguard Worker /* vec_lvsl */
2695*344a7f5eSAndroid Build Coastguard Worker 
2696*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2697*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2698*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const signed char * __b)2699*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsl(int __a, const signed char *__b) {
2700*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2701*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2702*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2703*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2704*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2705*344a7f5eSAndroid Build Coastguard Worker }
2706*344a7f5eSAndroid Build Coastguard Worker #else
2707*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsl(int __a,const signed char * __b)2708*344a7f5eSAndroid Build Coastguard Worker vec_lvsl(int __a, const signed char *__b) {
2709*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2710*344a7f5eSAndroid Build Coastguard Worker }
2711*344a7f5eSAndroid Build Coastguard Worker #endif
2712*344a7f5eSAndroid Build Coastguard Worker 
2713*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2714*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2715*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const unsigned char * __b)2716*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsl(int __a, const unsigned char *__b) {
2717*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2718*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2719*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2720*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2721*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2722*344a7f5eSAndroid Build Coastguard Worker }
2723*344a7f5eSAndroid Build Coastguard Worker #else
2724*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsl(int __a,const unsigned char * __b)2725*344a7f5eSAndroid Build Coastguard Worker vec_lvsl(int __a, const unsigned char *__b) {
2726*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2727*344a7f5eSAndroid Build Coastguard Worker }
2728*344a7f5eSAndroid Build Coastguard Worker #endif
2729*344a7f5eSAndroid Build Coastguard Worker 
2730*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2731*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2732*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const short * __b)2733*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsl(int __a, const short *__b) {
2734*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2735*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2736*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2737*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2738*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2739*344a7f5eSAndroid Build Coastguard Worker }
2740*344a7f5eSAndroid Build Coastguard Worker #else
vec_lvsl(int __a,const short * __b)2741*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2742*344a7f5eSAndroid Build Coastguard Worker                                                              const short *__b) {
2743*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2744*344a7f5eSAndroid Build Coastguard Worker }
2745*344a7f5eSAndroid Build Coastguard Worker #endif
2746*344a7f5eSAndroid Build Coastguard Worker 
2747*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2748*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2749*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const unsigned short * __b)2750*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsl(int __a, const unsigned short *__b) {
2751*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2752*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2753*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2754*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2755*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2756*344a7f5eSAndroid Build Coastguard Worker }
2757*344a7f5eSAndroid Build Coastguard Worker #else
2758*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsl(int __a,const unsigned short * __b)2759*344a7f5eSAndroid Build Coastguard Worker vec_lvsl(int __a, const unsigned short *__b) {
2760*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2761*344a7f5eSAndroid Build Coastguard Worker }
2762*344a7f5eSAndroid Build Coastguard Worker #endif
2763*344a7f5eSAndroid Build Coastguard Worker 
2764*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2765*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2766*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const int * __b)2767*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsl(int __a, const int *__b) {
2768*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2769*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2770*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2771*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2772*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2773*344a7f5eSAndroid Build Coastguard Worker }
2774*344a7f5eSAndroid Build Coastguard Worker #else
vec_lvsl(int __a,const int * __b)2775*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2776*344a7f5eSAndroid Build Coastguard Worker                                                              const int *__b) {
2777*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2778*344a7f5eSAndroid Build Coastguard Worker }
2779*344a7f5eSAndroid Build Coastguard Worker #endif
2780*344a7f5eSAndroid Build Coastguard Worker 
2781*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2782*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2783*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const unsigned int * __b)2784*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsl(int __a, const unsigned int *__b) {
2785*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2786*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2787*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2788*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2789*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2790*344a7f5eSAndroid Build Coastguard Worker }
2791*344a7f5eSAndroid Build Coastguard Worker #else
2792*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsl(int __a,const unsigned int * __b)2793*344a7f5eSAndroid Build Coastguard Worker vec_lvsl(int __a, const unsigned int *__b) {
2794*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2795*344a7f5eSAndroid Build Coastguard Worker }
2796*344a7f5eSAndroid Build Coastguard Worker #endif
2797*344a7f5eSAndroid Build Coastguard Worker 
2798*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2799*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2800*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsl(int __a,const float * __b)2801*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsl(int __a, const float *__b) {
2802*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2803*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2804*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2805*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2806*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2807*344a7f5eSAndroid Build Coastguard Worker }
2808*344a7f5eSAndroid Build Coastguard Worker #else
vec_lvsl(int __a,const float * __b)2809*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsl(int __a,
2810*344a7f5eSAndroid Build Coastguard Worker                                                              const float *__b) {
2811*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsl(__a, __b);
2812*344a7f5eSAndroid Build Coastguard Worker }
2813*344a7f5eSAndroid Build Coastguard Worker #endif
2814*344a7f5eSAndroid Build Coastguard Worker 
2815*344a7f5eSAndroid Build Coastguard Worker /* vec_lvsr */
2816*344a7f5eSAndroid Build Coastguard Worker 
2817*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2818*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2819*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const signed char * __b)2820*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsr(int __a, const signed char *__b) {
2821*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2822*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2823*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2824*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2825*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2826*344a7f5eSAndroid Build Coastguard Worker }
2827*344a7f5eSAndroid Build Coastguard Worker #else
2828*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsr(int __a,const signed char * __b)2829*344a7f5eSAndroid Build Coastguard Worker vec_lvsr(int __a, const signed char *__b) {
2830*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2831*344a7f5eSAndroid Build Coastguard Worker }
2832*344a7f5eSAndroid Build Coastguard Worker #endif
2833*344a7f5eSAndroid Build Coastguard Worker 
2834*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2835*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2836*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const unsigned char * __b)2837*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsr(int __a, const unsigned char *__b) {
2838*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2839*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2840*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2841*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2842*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2843*344a7f5eSAndroid Build Coastguard Worker }
2844*344a7f5eSAndroid Build Coastguard Worker #else
2845*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsr(int __a,const unsigned char * __b)2846*344a7f5eSAndroid Build Coastguard Worker vec_lvsr(int __a, const unsigned char *__b) {
2847*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2848*344a7f5eSAndroid Build Coastguard Worker }
2849*344a7f5eSAndroid Build Coastguard Worker #endif
2850*344a7f5eSAndroid Build Coastguard Worker 
2851*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2852*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2853*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const short * __b)2854*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsr(int __a, const short *__b) {
2855*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2856*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2857*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2858*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2859*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2860*344a7f5eSAndroid Build Coastguard Worker }
2861*344a7f5eSAndroid Build Coastguard Worker #else
vec_lvsr(int __a,const short * __b)2862*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2863*344a7f5eSAndroid Build Coastguard Worker                                                              const short *__b) {
2864*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2865*344a7f5eSAndroid Build Coastguard Worker }
2866*344a7f5eSAndroid Build Coastguard Worker #endif
2867*344a7f5eSAndroid Build Coastguard Worker 
2868*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2869*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2870*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const unsigned short * __b)2871*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsr(int __a, const unsigned short *__b) {
2872*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2873*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2874*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2875*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2876*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2877*344a7f5eSAndroid Build Coastguard Worker }
2878*344a7f5eSAndroid Build Coastguard Worker #else
2879*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsr(int __a,const unsigned short * __b)2880*344a7f5eSAndroid Build Coastguard Worker vec_lvsr(int __a, const unsigned short *__b) {
2881*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2882*344a7f5eSAndroid Build Coastguard Worker }
2883*344a7f5eSAndroid Build Coastguard Worker #endif
2884*344a7f5eSAndroid Build Coastguard Worker 
2885*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2886*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2887*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const int * __b)2888*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsr(int __a, const int *__b) {
2889*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2890*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2891*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2892*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2893*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2894*344a7f5eSAndroid Build Coastguard Worker }
2895*344a7f5eSAndroid Build Coastguard Worker #else
vec_lvsr(int __a,const int * __b)2896*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2897*344a7f5eSAndroid Build Coastguard Worker                                                              const int *__b) {
2898*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2899*344a7f5eSAndroid Build Coastguard Worker }
2900*344a7f5eSAndroid Build Coastguard Worker #endif
2901*344a7f5eSAndroid Build Coastguard Worker 
2902*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2903*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2904*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const unsigned int * __b)2905*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsr(int __a, const unsigned int *__b) {
2906*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2907*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2908*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2909*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2910*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2911*344a7f5eSAndroid Build Coastguard Worker }
2912*344a7f5eSAndroid Build Coastguard Worker #else
2913*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvsr(int __a,const unsigned int * __b)2914*344a7f5eSAndroid Build Coastguard Worker vec_lvsr(int __a, const unsigned int *__b) {
2915*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2916*344a7f5eSAndroid Build Coastguard Worker }
2917*344a7f5eSAndroid Build Coastguard Worker #endif
2918*344a7f5eSAndroid Build Coastguard Worker 
2919*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
2920*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
2921*344a7f5eSAndroid Build Coastguard Worker     __attribute__((__deprecated__("use assignment for unaligned little endian \
vec_lvsr(int __a,const float * __b)2922*344a7f5eSAndroid Build Coastguard Worker loads/stores"))) vec_lvsr(int __a, const float *__b) {
2923*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char mask =
2924*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2925*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char reverse = {15, 14, 13, 12, 11, 10, 9, 8,
2926*344a7f5eSAndroid Build Coastguard Worker                                   7,  6,  5,  4,  3,  2,  1, 0};
2927*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(mask, mask, reverse);
2928*344a7f5eSAndroid Build Coastguard Worker }
2929*344a7f5eSAndroid Build Coastguard Worker #else
vec_lvsr(int __a,const float * __b)2930*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai vec_lvsr(int __a,
2931*344a7f5eSAndroid Build Coastguard Worker                                                              const float *__b) {
2932*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_lvsr(__a, __b);
2933*344a7f5eSAndroid Build Coastguard Worker }
2934*344a7f5eSAndroid Build Coastguard Worker #endif
2935*344a7f5eSAndroid Build Coastguard Worker 
2936*344a7f5eSAndroid Build Coastguard Worker /* vec_madd */
2937*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
2938*344a7f5eSAndroid Build Coastguard Worker vec_mladd(vector signed short, vector signed short, vector signed short);
2939*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
2940*344a7f5eSAndroid Build Coastguard Worker vec_mladd(vector signed short, vector unsigned short, vector unsigned short);
2941*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
2942*344a7f5eSAndroid Build Coastguard Worker vec_mladd(vector unsigned short, vector signed short, vector signed short);
2943*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
2944*344a7f5eSAndroid Build Coastguard Worker vec_mladd(vector unsigned short, vector unsigned short, vector unsigned short);
2945*344a7f5eSAndroid Build Coastguard Worker 
vec_madd(vector signed short __a,vector signed short __b,vector signed short __c)2946*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai vec_madd(
2947*344a7f5eSAndroid Build Coastguard Worker     vector signed short __a, vector signed short __b, vector signed short __c) {
2948*344a7f5eSAndroid Build Coastguard Worker   return vec_mladd(__a, __b, __c);
2949*344a7f5eSAndroid Build Coastguard Worker }
2950*344a7f5eSAndroid Build Coastguard Worker 
2951*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_madd(vector signed short __a,vector unsigned short __b,vector unsigned short __c)2952*344a7f5eSAndroid Build Coastguard Worker vec_madd(vector signed short __a, vector unsigned short __b,
2953*344a7f5eSAndroid Build Coastguard Worker          vector unsigned short __c) {
2954*344a7f5eSAndroid Build Coastguard Worker   return vec_mladd(__a, __b, __c);
2955*344a7f5eSAndroid Build Coastguard Worker }
2956*344a7f5eSAndroid Build Coastguard Worker 
2957*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_madd(vector unsigned short __a,vector signed short __b,vector signed short __c)2958*344a7f5eSAndroid Build Coastguard Worker vec_madd(vector unsigned short __a, vector signed short __b,
2959*344a7f5eSAndroid Build Coastguard Worker          vector signed short __c) {
2960*344a7f5eSAndroid Build Coastguard Worker   return vec_mladd(__a, __b, __c);
2961*344a7f5eSAndroid Build Coastguard Worker }
2962*344a7f5eSAndroid Build Coastguard Worker 
2963*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_madd(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)2964*344a7f5eSAndroid Build Coastguard Worker vec_madd(vector unsigned short __a, vector unsigned short __b,
2965*344a7f5eSAndroid Build Coastguard Worker          vector unsigned short __c) {
2966*344a7f5eSAndroid Build Coastguard Worker   return vec_mladd(__a, __b, __c);
2967*344a7f5eSAndroid Build Coastguard Worker }
2968*344a7f5eSAndroid Build Coastguard Worker 
vec_madd(vector float __a,vector float __b,vector float __c)2969*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_madd(vector float __a,
2970*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b,
2971*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __c) {
2972*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
2973*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvmaddasp(__a, __b, __c);
2974*344a7f5eSAndroid Build Coastguard Worker #else
2975*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaddfp(__a, __b, __c);
2976*344a7f5eSAndroid Build Coastguard Worker #endif
2977*344a7f5eSAndroid Build Coastguard Worker }
2978*344a7f5eSAndroid Build Coastguard Worker 
2979*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_madd(vector double __a,vector double __b,vector double __c)2980*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_madd(vector double __a,
2981*344a7f5eSAndroid Build Coastguard Worker                                                       vector double __b,
2982*344a7f5eSAndroid Build Coastguard Worker                                                       vector double __c) {
2983*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvmaddadp(__a, __b, __c);
2984*344a7f5eSAndroid Build Coastguard Worker }
2985*344a7f5eSAndroid Build Coastguard Worker #endif
2986*344a7f5eSAndroid Build Coastguard Worker 
2987*344a7f5eSAndroid Build Coastguard Worker /* vec_vmaddfp */
2988*344a7f5eSAndroid Build Coastguard Worker 
2989*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vmaddfp(vector float __a,vector float __b,vector float __c)2990*344a7f5eSAndroid Build Coastguard Worker vec_vmaddfp(vector float __a, vector float __b, vector float __c) {
2991*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaddfp(__a, __b, __c);
2992*344a7f5eSAndroid Build Coastguard Worker }
2993*344a7f5eSAndroid Build Coastguard Worker 
2994*344a7f5eSAndroid Build Coastguard Worker /* vec_madds */
2995*344a7f5eSAndroid Build Coastguard Worker 
2996*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __attribute__((__always_inline__))
vec_madds(vector signed short __a,vector signed short __b,vector signed short __c)2997*344a7f5eSAndroid Build Coastguard Worker vec_madds(vector signed short __a, vector signed short __b,
2998*344a7f5eSAndroid Build Coastguard Worker           vector signed short __c) {
2999*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmhaddshs(__a, __b, __c);
3000*344a7f5eSAndroid Build Coastguard Worker }
3001*344a7f5eSAndroid Build Coastguard Worker 
3002*344a7f5eSAndroid Build Coastguard Worker /* vec_vmhaddshs */
3003*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __attribute__((__always_inline__))
vec_vmhaddshs(vector signed short __a,vector signed short __b,vector signed short __c)3004*344a7f5eSAndroid Build Coastguard Worker vec_vmhaddshs(vector signed short __a, vector signed short __b,
3005*344a7f5eSAndroid Build Coastguard Worker               vector signed short __c) {
3006*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmhaddshs(__a, __b, __c);
3007*344a7f5eSAndroid Build Coastguard Worker }
3008*344a7f5eSAndroid Build Coastguard Worker 
3009*344a7f5eSAndroid Build Coastguard Worker /* vec_msub */
3010*344a7f5eSAndroid Build Coastguard Worker 
3011*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_msub(vector float __a,vector float __b,vector float __c)3012*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_msub(vector float __a,
3013*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b,
3014*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __c) {
3015*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvmsubasp(__a, __b, __c);
3016*344a7f5eSAndroid Build Coastguard Worker }
3017*344a7f5eSAndroid Build Coastguard Worker 
vec_msub(vector double __a,vector double __b,vector double __c)3018*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_msub(vector double __a,
3019*344a7f5eSAndroid Build Coastguard Worker                                                       vector double __b,
3020*344a7f5eSAndroid Build Coastguard Worker                                                       vector double __c) {
3021*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvmsubadp(__a, __b, __c);
3022*344a7f5eSAndroid Build Coastguard Worker }
3023*344a7f5eSAndroid Build Coastguard Worker #endif
3024*344a7f5eSAndroid Build Coastguard Worker 
3025*344a7f5eSAndroid Build Coastguard Worker /* vec_max */
3026*344a7f5eSAndroid Build Coastguard Worker 
3027*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_max(vector signed char __a,vector signed char __b)3028*344a7f5eSAndroid Build Coastguard Worker vec_max(vector signed char __a, vector signed char __b) {
3029*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsb(__a, __b);
3030*344a7f5eSAndroid Build Coastguard Worker }
3031*344a7f5eSAndroid Build Coastguard Worker 
3032*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_max(vector bool char __a,vector signed char __b)3033*344a7f5eSAndroid Build Coastguard Worker vec_max(vector bool char __a, vector signed char __b) {
3034*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
3035*344a7f5eSAndroid Build Coastguard Worker }
3036*344a7f5eSAndroid Build Coastguard Worker 
3037*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_max(vector signed char __a,vector bool char __b)3038*344a7f5eSAndroid Build Coastguard Worker vec_max(vector signed char __a, vector bool char __b) {
3039*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
3040*344a7f5eSAndroid Build Coastguard Worker }
3041*344a7f5eSAndroid Build Coastguard Worker 
3042*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_max(vector unsigned char __a,vector unsigned char __b)3043*344a7f5eSAndroid Build Coastguard Worker vec_max(vector unsigned char __a, vector unsigned char __b) {
3044*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxub(__a, __b);
3045*344a7f5eSAndroid Build Coastguard Worker }
3046*344a7f5eSAndroid Build Coastguard Worker 
3047*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_max(vector bool char __a,vector unsigned char __b)3048*344a7f5eSAndroid Build Coastguard Worker vec_max(vector bool char __a, vector unsigned char __b) {
3049*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
3050*344a7f5eSAndroid Build Coastguard Worker }
3051*344a7f5eSAndroid Build Coastguard Worker 
3052*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_max(vector unsigned char __a,vector bool char __b)3053*344a7f5eSAndroid Build Coastguard Worker vec_max(vector unsigned char __a, vector bool char __b) {
3054*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
3055*344a7f5eSAndroid Build Coastguard Worker }
3056*344a7f5eSAndroid Build Coastguard Worker 
vec_max(vector short __a,vector short __b)3057*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
3058*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
3059*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsh(__a, __b);
3060*344a7f5eSAndroid Build Coastguard Worker }
3061*344a7f5eSAndroid Build Coastguard Worker 
vec_max(vector bool short __a,vector short __b)3062*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_max(vector bool short __a,
3063*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
3064*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsh((vector short)__a, __b);
3065*344a7f5eSAndroid Build Coastguard Worker }
3066*344a7f5eSAndroid Build Coastguard Worker 
vec_max(vector short __a,vector bool short __b)3067*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_max(vector short __a,
3068*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool short __b) {
3069*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsh(__a, (vector short)__b);
3070*344a7f5eSAndroid Build Coastguard Worker }
3071*344a7f5eSAndroid Build Coastguard Worker 
3072*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_max(vector unsigned short __a,vector unsigned short __b)3073*344a7f5eSAndroid Build Coastguard Worker vec_max(vector unsigned short __a, vector unsigned short __b) {
3074*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxuh(__a, __b);
3075*344a7f5eSAndroid Build Coastguard Worker }
3076*344a7f5eSAndroid Build Coastguard Worker 
3077*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_max(vector bool short __a,vector unsigned short __b)3078*344a7f5eSAndroid Build Coastguard Worker vec_max(vector bool short __a, vector unsigned short __b) {
3079*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
3080*344a7f5eSAndroid Build Coastguard Worker }
3081*344a7f5eSAndroid Build Coastguard Worker 
3082*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_max(vector unsigned short __a,vector bool short __b)3083*344a7f5eSAndroid Build Coastguard Worker vec_max(vector unsigned short __a, vector bool short __b) {
3084*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
3085*344a7f5eSAndroid Build Coastguard Worker }
3086*344a7f5eSAndroid Build Coastguard Worker 
vec_max(vector int __a,vector int __b)3087*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
3088*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
3089*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsw(__a, __b);
3090*344a7f5eSAndroid Build Coastguard Worker }
3091*344a7f5eSAndroid Build Coastguard Worker 
vec_max(vector bool int __a,vector int __b)3092*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_max(vector bool int __a,
3093*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
3094*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsw((vector int)__a, __b);
3095*344a7f5eSAndroid Build Coastguard Worker }
3096*344a7f5eSAndroid Build Coastguard Worker 
vec_max(vector int __a,vector bool int __b)3097*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_max(vector int __a,
3098*344a7f5eSAndroid Build Coastguard Worker                                                   vector bool int __b) {
3099*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsw(__a, (vector int)__b);
3100*344a7f5eSAndroid Build Coastguard Worker }
3101*344a7f5eSAndroid Build Coastguard Worker 
3102*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_max(vector unsigned int __a,vector unsigned int __b)3103*344a7f5eSAndroid Build Coastguard Worker vec_max(vector unsigned int __a, vector unsigned int __b) {
3104*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxuw(__a, __b);
3105*344a7f5eSAndroid Build Coastguard Worker }
3106*344a7f5eSAndroid Build Coastguard Worker 
3107*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_max(vector bool int __a,vector unsigned int __b)3108*344a7f5eSAndroid Build Coastguard Worker vec_max(vector bool int __a, vector unsigned int __b) {
3109*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
3110*344a7f5eSAndroid Build Coastguard Worker }
3111*344a7f5eSAndroid Build Coastguard Worker 
3112*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_max(vector unsigned int __a,vector bool int __b)3113*344a7f5eSAndroid Build Coastguard Worker vec_max(vector unsigned int __a, vector bool int __b) {
3114*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
3115*344a7f5eSAndroid Build Coastguard Worker }
3116*344a7f5eSAndroid Build Coastguard Worker 
3117*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
3118*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_max(vector signed long long __a,vector signed long long __b)3119*344a7f5eSAndroid Build Coastguard Worker vec_max(vector signed long long __a, vector signed long long __b) {
3120*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsd(__a, __b);
3121*344a7f5eSAndroid Build Coastguard Worker }
3122*344a7f5eSAndroid Build Coastguard Worker 
3123*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_max(vector bool long long __a,vector signed long long __b)3124*344a7f5eSAndroid Build Coastguard Worker vec_max(vector bool long long __a, vector signed long long __b) {
3125*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsd((vector signed long long)__a, __b);
3126*344a7f5eSAndroid Build Coastguard Worker }
3127*344a7f5eSAndroid Build Coastguard Worker 
3128*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_max(vector signed long long __a,vector bool long long __b)3129*344a7f5eSAndroid Build Coastguard Worker vec_max(vector signed long long __a, vector bool long long __b) {
3130*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsd(__a, (vector signed long long)__b);
3131*344a7f5eSAndroid Build Coastguard Worker }
3132*344a7f5eSAndroid Build Coastguard Worker 
3133*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_max(vector unsigned long long __a,vector unsigned long long __b)3134*344a7f5eSAndroid Build Coastguard Worker vec_max(vector unsigned long long __a, vector unsigned long long __b) {
3135*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxud(__a, __b);
3136*344a7f5eSAndroid Build Coastguard Worker }
3137*344a7f5eSAndroid Build Coastguard Worker 
3138*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_max(vector bool long long __a,vector unsigned long long __b)3139*344a7f5eSAndroid Build Coastguard Worker vec_max(vector bool long long __a, vector unsigned long long __b) {
3140*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxud((vector unsigned long long)__a, __b);
3141*344a7f5eSAndroid Build Coastguard Worker }
3142*344a7f5eSAndroid Build Coastguard Worker 
3143*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_max(vector unsigned long long __a,vector bool long long __b)3144*344a7f5eSAndroid Build Coastguard Worker vec_max(vector unsigned long long __a, vector bool long long __b) {
3145*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxud(__a, (vector unsigned long long)__b);
3146*344a7f5eSAndroid Build Coastguard Worker }
3147*344a7f5eSAndroid Build Coastguard Worker #endif
3148*344a7f5eSAndroid Build Coastguard Worker 
vec_max(vector float __a,vector float __b)3149*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_max(vector float __a,
3150*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
3151*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
3152*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvmaxsp(__a, __b);
3153*344a7f5eSAndroid Build Coastguard Worker #else
3154*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxfp(__a, __b);
3155*344a7f5eSAndroid Build Coastguard Worker #endif
3156*344a7f5eSAndroid Build Coastguard Worker }
3157*344a7f5eSAndroid Build Coastguard Worker 
3158*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_max(vector double __a,vector double __b)3159*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_max(vector double __a,
3160*344a7f5eSAndroid Build Coastguard Worker                                                      vector double __b) {
3161*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvmaxdp(__a, __b);
3162*344a7f5eSAndroid Build Coastguard Worker }
3163*344a7f5eSAndroid Build Coastguard Worker #endif
3164*344a7f5eSAndroid Build Coastguard Worker 
3165*344a7f5eSAndroid Build Coastguard Worker /* vec_vmaxsb */
3166*344a7f5eSAndroid Build Coastguard Worker 
3167*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vmaxsb(vector signed char __a,vector signed char __b)3168*344a7f5eSAndroid Build Coastguard Worker vec_vmaxsb(vector signed char __a, vector signed char __b) {
3169*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsb(__a, __b);
3170*344a7f5eSAndroid Build Coastguard Worker }
3171*344a7f5eSAndroid Build Coastguard Worker 
3172*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vmaxsb(vector bool char __a,vector signed char __b)3173*344a7f5eSAndroid Build Coastguard Worker vec_vmaxsb(vector bool char __a, vector signed char __b) {
3174*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsb((vector signed char)__a, __b);
3175*344a7f5eSAndroid Build Coastguard Worker }
3176*344a7f5eSAndroid Build Coastguard Worker 
3177*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vmaxsb(vector signed char __a,vector bool char __b)3178*344a7f5eSAndroid Build Coastguard Worker vec_vmaxsb(vector signed char __a, vector bool char __b) {
3179*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsb(__a, (vector signed char)__b);
3180*344a7f5eSAndroid Build Coastguard Worker }
3181*344a7f5eSAndroid Build Coastguard Worker 
3182*344a7f5eSAndroid Build Coastguard Worker /* vec_vmaxub */
3183*344a7f5eSAndroid Build Coastguard Worker 
3184*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmaxub(vector unsigned char __a,vector unsigned char __b)3185*344a7f5eSAndroid Build Coastguard Worker vec_vmaxub(vector unsigned char __a, vector unsigned char __b) {
3186*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxub(__a, __b);
3187*344a7f5eSAndroid Build Coastguard Worker }
3188*344a7f5eSAndroid Build Coastguard Worker 
3189*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmaxub(vector bool char __a,vector unsigned char __b)3190*344a7f5eSAndroid Build Coastguard Worker vec_vmaxub(vector bool char __a, vector unsigned char __b) {
3191*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxub((vector unsigned char)__a, __b);
3192*344a7f5eSAndroid Build Coastguard Worker }
3193*344a7f5eSAndroid Build Coastguard Worker 
3194*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmaxub(vector unsigned char __a,vector bool char __b)3195*344a7f5eSAndroid Build Coastguard Worker vec_vmaxub(vector unsigned char __a, vector bool char __b) {
3196*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxub(__a, (vector unsigned char)__b);
3197*344a7f5eSAndroid Build Coastguard Worker }
3198*344a7f5eSAndroid Build Coastguard Worker 
3199*344a7f5eSAndroid Build Coastguard Worker /* vec_vmaxsh */
3200*344a7f5eSAndroid Build Coastguard Worker 
vec_vmaxsh(vector short __a,vector short __b)3201*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
3202*344a7f5eSAndroid Build Coastguard Worker                                                        vector short __b) {
3203*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsh(__a, __b);
3204*344a7f5eSAndroid Build Coastguard Worker }
3205*344a7f5eSAndroid Build Coastguard Worker 
vec_vmaxsh(vector bool short __a,vector short __b)3206*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector bool short __a,
3207*344a7f5eSAndroid Build Coastguard Worker                                                        vector short __b) {
3208*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsh((vector short)__a, __b);
3209*344a7f5eSAndroid Build Coastguard Worker }
3210*344a7f5eSAndroid Build Coastguard Worker 
vec_vmaxsh(vector short __a,vector bool short __b)3211*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vmaxsh(vector short __a,
3212*344a7f5eSAndroid Build Coastguard Worker                                                        vector bool short __b) {
3213*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsh(__a, (vector short)__b);
3214*344a7f5eSAndroid Build Coastguard Worker }
3215*344a7f5eSAndroid Build Coastguard Worker 
3216*344a7f5eSAndroid Build Coastguard Worker /* vec_vmaxuh */
3217*344a7f5eSAndroid Build Coastguard Worker 
3218*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmaxuh(vector unsigned short __a,vector unsigned short __b)3219*344a7f5eSAndroid Build Coastguard Worker vec_vmaxuh(vector unsigned short __a, vector unsigned short __b) {
3220*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxuh(__a, __b);
3221*344a7f5eSAndroid Build Coastguard Worker }
3222*344a7f5eSAndroid Build Coastguard Worker 
3223*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmaxuh(vector bool short __a,vector unsigned short __b)3224*344a7f5eSAndroid Build Coastguard Worker vec_vmaxuh(vector bool short __a, vector unsigned short __b) {
3225*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxuh((vector unsigned short)__a, __b);
3226*344a7f5eSAndroid Build Coastguard Worker }
3227*344a7f5eSAndroid Build Coastguard Worker 
3228*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmaxuh(vector unsigned short __a,vector bool short __b)3229*344a7f5eSAndroid Build Coastguard Worker vec_vmaxuh(vector unsigned short __a, vector bool short __b) {
3230*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxuh(__a, (vector unsigned short)__b);
3231*344a7f5eSAndroid Build Coastguard Worker }
3232*344a7f5eSAndroid Build Coastguard Worker 
3233*344a7f5eSAndroid Build Coastguard Worker /* vec_vmaxsw */
3234*344a7f5eSAndroid Build Coastguard Worker 
vec_vmaxsw(vector int __a,vector int __b)3235*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
3236*344a7f5eSAndroid Build Coastguard Worker                                                      vector int __b) {
3237*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsw(__a, __b);
3238*344a7f5eSAndroid Build Coastguard Worker }
3239*344a7f5eSAndroid Build Coastguard Worker 
vec_vmaxsw(vector bool int __a,vector int __b)3240*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector bool int __a,
3241*344a7f5eSAndroid Build Coastguard Worker                                                      vector int __b) {
3242*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsw((vector int)__a, __b);
3243*344a7f5eSAndroid Build Coastguard Worker }
3244*344a7f5eSAndroid Build Coastguard Worker 
vec_vmaxsw(vector int __a,vector bool int __b)3245*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vmaxsw(vector int __a,
3246*344a7f5eSAndroid Build Coastguard Worker                                                      vector bool int __b) {
3247*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxsw(__a, (vector int)__b);
3248*344a7f5eSAndroid Build Coastguard Worker }
3249*344a7f5eSAndroid Build Coastguard Worker 
3250*344a7f5eSAndroid Build Coastguard Worker /* vec_vmaxuw */
3251*344a7f5eSAndroid Build Coastguard Worker 
3252*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmaxuw(vector unsigned int __a,vector unsigned int __b)3253*344a7f5eSAndroid Build Coastguard Worker vec_vmaxuw(vector unsigned int __a, vector unsigned int __b) {
3254*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxuw(__a, __b);
3255*344a7f5eSAndroid Build Coastguard Worker }
3256*344a7f5eSAndroid Build Coastguard Worker 
3257*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmaxuw(vector bool int __a,vector unsigned int __b)3258*344a7f5eSAndroid Build Coastguard Worker vec_vmaxuw(vector bool int __a, vector unsigned int __b) {
3259*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxuw((vector unsigned int)__a, __b);
3260*344a7f5eSAndroid Build Coastguard Worker }
3261*344a7f5eSAndroid Build Coastguard Worker 
3262*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmaxuw(vector unsigned int __a,vector bool int __b)3263*344a7f5eSAndroid Build Coastguard Worker vec_vmaxuw(vector unsigned int __a, vector bool int __b) {
3264*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxuw(__a, (vector unsigned int)__b);
3265*344a7f5eSAndroid Build Coastguard Worker }
3266*344a7f5eSAndroid Build Coastguard Worker 
3267*344a7f5eSAndroid Build Coastguard Worker /* vec_vmaxfp */
3268*344a7f5eSAndroid Build Coastguard Worker 
3269*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vmaxfp(vector float __a,vector float __b)3270*344a7f5eSAndroid Build Coastguard Worker vec_vmaxfp(vector float __a, vector float __b) {
3271*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
3272*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvmaxsp(__a, __b);
3273*344a7f5eSAndroid Build Coastguard Worker #else
3274*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmaxfp(__a, __b);
3275*344a7f5eSAndroid Build Coastguard Worker #endif
3276*344a7f5eSAndroid Build Coastguard Worker }
3277*344a7f5eSAndroid Build Coastguard Worker 
3278*344a7f5eSAndroid Build Coastguard Worker /* vec_mergeh */
3279*344a7f5eSAndroid Build Coastguard Worker 
3280*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_mergeh(vector signed char __a,vector signed char __b)3281*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector signed char __a, vector signed char __b) {
3282*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3283*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3284*344a7f5eSAndroid Build Coastguard Worker                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3285*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x16, 0x07, 0x17));
3286*344a7f5eSAndroid Build Coastguard Worker }
3287*344a7f5eSAndroid Build Coastguard Worker 
3288*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_mergeh(vector unsigned char __a,vector unsigned char __b)3289*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector unsigned char __a, vector unsigned char __b) {
3290*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3291*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3292*344a7f5eSAndroid Build Coastguard Worker                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3293*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x16, 0x07, 0x17));
3294*344a7f5eSAndroid Build Coastguard Worker }
3295*344a7f5eSAndroid Build Coastguard Worker 
3296*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_mergeh(vector bool char __a,vector bool char __b)3297*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector bool char __a, vector bool char __b) {
3298*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3299*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3300*344a7f5eSAndroid Build Coastguard Worker                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3301*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x16, 0x07, 0x17));
3302*344a7f5eSAndroid Build Coastguard Worker }
3303*344a7f5eSAndroid Build Coastguard Worker 
vec_mergeh(vector short __a,vector short __b)3304*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_mergeh(vector short __a,
3305*344a7f5eSAndroid Build Coastguard Worker                                                        vector short __b) {
3306*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3307*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3308*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3309*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x16, 0x17));
3310*344a7f5eSAndroid Build Coastguard Worker }
3311*344a7f5eSAndroid Build Coastguard Worker 
3312*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_mergeh(vector unsigned short __a,vector unsigned short __b)3313*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector unsigned short __a, vector unsigned short __b) {
3314*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3315*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3316*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3317*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x16, 0x17));
3318*344a7f5eSAndroid Build Coastguard Worker }
3319*344a7f5eSAndroid Build Coastguard Worker 
3320*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_mergeh(vector bool short __a,vector bool short __b)3321*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector bool short __a, vector bool short __b) {
3322*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3323*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3324*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3325*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x16, 0x17));
3326*344a7f5eSAndroid Build Coastguard Worker }
3327*344a7f5eSAndroid Build Coastguard Worker 
vec_mergeh(vector pixel __a,vector pixel __b)3328*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_mergeh(vector pixel __a,
3329*344a7f5eSAndroid Build Coastguard Worker                                                        vector pixel __b) {
3330*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3331*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3332*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3333*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x16, 0x17));
3334*344a7f5eSAndroid Build Coastguard Worker }
3335*344a7f5eSAndroid Build Coastguard Worker 
vec_mergeh(vector int __a,vector int __b)3336*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_mergeh(vector int __a,
3337*344a7f5eSAndroid Build Coastguard Worker                                                      vector int __b) {
3338*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3339*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3340*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3341*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3342*344a7f5eSAndroid Build Coastguard Worker }
3343*344a7f5eSAndroid Build Coastguard Worker 
3344*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_mergeh(vector unsigned int __a,vector unsigned int __b)3345*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector unsigned int __a, vector unsigned int __b) {
3346*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3347*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3348*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3349*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3350*344a7f5eSAndroid Build Coastguard Worker }
3351*344a7f5eSAndroid Build Coastguard Worker 
vec_mergeh(vector bool int __a,vector bool int __b)3352*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_mergeh(vector bool int __a,
3353*344a7f5eSAndroid Build Coastguard Worker                                                           vector bool int __b) {
3354*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3355*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3356*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3357*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3358*344a7f5eSAndroid Build Coastguard Worker }
3359*344a7f5eSAndroid Build Coastguard Worker 
vec_mergeh(vector float __a,vector float __b)3360*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_mergeh(vector float __a,
3361*344a7f5eSAndroid Build Coastguard Worker                                                        vector float __b) {
3362*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3363*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3364*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3365*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3366*344a7f5eSAndroid Build Coastguard Worker }
3367*344a7f5eSAndroid Build Coastguard Worker 
3368*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
3369*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_mergeh(vector signed long long __a,vector signed long long __b)3370*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector signed long long __a, vector signed long long __b) {
3371*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3372*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3373*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3374*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3375*344a7f5eSAndroid Build Coastguard Worker }
3376*344a7f5eSAndroid Build Coastguard Worker 
3377*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_mergeh(vector signed long long __a,vector bool long long __b)3378*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector signed long long __a, vector bool long long __b) {
3379*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, (vector signed long long)__b,
3380*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3381*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3382*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3383*344a7f5eSAndroid Build Coastguard Worker }
3384*344a7f5eSAndroid Build Coastguard Worker 
3385*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_mergeh(vector bool long long __a,vector signed long long __b)3386*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector bool long long __a, vector signed long long __b) {
3387*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector signed long long)__a, __b,
3388*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3389*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3390*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3391*344a7f5eSAndroid Build Coastguard Worker }
3392*344a7f5eSAndroid Build Coastguard Worker 
3393*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergeh(vector unsigned long long __a,vector unsigned long long __b)3394*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector unsigned long long __a, vector unsigned long long __b) {
3395*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3396*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3397*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3398*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3399*344a7f5eSAndroid Build Coastguard Worker }
3400*344a7f5eSAndroid Build Coastguard Worker 
3401*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergeh(vector unsigned long long __a,vector bool long long __b)3402*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector unsigned long long __a, vector bool long long __b) {
3403*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, (vector unsigned long long)__b,
3404*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3405*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3406*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3407*344a7f5eSAndroid Build Coastguard Worker }
3408*344a7f5eSAndroid Build Coastguard Worker 
3409*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergeh(vector bool long long __a,vector unsigned long long __b)3410*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector bool long long __a, vector unsigned long long __b) {
3411*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned long long)__a, __b,
3412*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3413*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3414*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3415*344a7f5eSAndroid Build Coastguard Worker }
3416*344a7f5eSAndroid Build Coastguard Worker 
3417*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_mergeh(vector bool long long __a,vector bool long long __b)3418*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector bool long long __a, vector bool long long __b) {
3419*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3420*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3421*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3422*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3423*344a7f5eSAndroid Build Coastguard Worker }
3424*344a7f5eSAndroid Build Coastguard Worker 
vec_mergeh(vector double __a,vector double __b)3425*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_mergeh(vector double __a,
3426*344a7f5eSAndroid Build Coastguard Worker                                                         vector double __b) {
3427*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3428*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3429*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3430*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3431*344a7f5eSAndroid Build Coastguard Worker }
3432*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_mergeh(vector double __a,vector bool long long __b)3433*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector double __a, vector bool long long __b) {
3434*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, (vector double)__b,
3435*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3436*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3437*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3438*344a7f5eSAndroid Build Coastguard Worker }
3439*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_mergeh(vector bool long long __a,vector double __b)3440*344a7f5eSAndroid Build Coastguard Worker vec_mergeh(vector bool long long __a, vector double __b) {
3441*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector double)__a, __b,
3442*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
3443*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x10, 0x11, 0x12, 0x13,
3444*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3445*344a7f5eSAndroid Build Coastguard Worker }
3446*344a7f5eSAndroid Build Coastguard Worker #endif
3447*344a7f5eSAndroid Build Coastguard Worker 
3448*344a7f5eSAndroid Build Coastguard Worker /* vec_vmrghb */
3449*344a7f5eSAndroid Build Coastguard Worker 
3450*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vmrghb vec_vmrghb
3451*344a7f5eSAndroid Build Coastguard Worker 
3452*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vmrghb(vector signed char __a,vector signed char __b)3453*344a7f5eSAndroid Build Coastguard Worker vec_vmrghb(vector signed char __a, vector signed char __b) {
3454*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3455*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3456*344a7f5eSAndroid Build Coastguard Worker                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3457*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x16, 0x07, 0x17));
3458*344a7f5eSAndroid Build Coastguard Worker }
3459*344a7f5eSAndroid Build Coastguard Worker 
3460*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmrghb(vector unsigned char __a,vector unsigned char __b)3461*344a7f5eSAndroid Build Coastguard Worker vec_vmrghb(vector unsigned char __a, vector unsigned char __b) {
3462*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3463*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3464*344a7f5eSAndroid Build Coastguard Worker                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3465*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x16, 0x07, 0x17));
3466*344a7f5eSAndroid Build Coastguard Worker }
3467*344a7f5eSAndroid Build Coastguard Worker 
3468*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_vmrghb(vector bool char __a,vector bool char __b)3469*344a7f5eSAndroid Build Coastguard Worker vec_vmrghb(vector bool char __a, vector bool char __b) {
3470*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3471*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x10, 0x01, 0x11, 0x02, 0x12,
3472*344a7f5eSAndroid Build Coastguard Worker                                          0x03, 0x13, 0x04, 0x14, 0x05, 0x15,
3473*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x16, 0x07, 0x17));
3474*344a7f5eSAndroid Build Coastguard Worker }
3475*344a7f5eSAndroid Build Coastguard Worker 
3476*344a7f5eSAndroid Build Coastguard Worker /* vec_vmrghh */
3477*344a7f5eSAndroid Build Coastguard Worker 
3478*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vmrghh vec_vmrghh
3479*344a7f5eSAndroid Build Coastguard Worker 
vec_vmrghh(vector short __a,vector short __b)3480*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vmrghh(vector short __a,
3481*344a7f5eSAndroid Build Coastguard Worker                                                        vector short __b) {
3482*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3483*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3484*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3485*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x16, 0x17));
3486*344a7f5eSAndroid Build Coastguard Worker }
3487*344a7f5eSAndroid Build Coastguard Worker 
3488*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmrghh(vector unsigned short __a,vector unsigned short __b)3489*344a7f5eSAndroid Build Coastguard Worker vec_vmrghh(vector unsigned short __a, vector unsigned short __b) {
3490*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3491*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3492*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3493*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x16, 0x17));
3494*344a7f5eSAndroid Build Coastguard Worker }
3495*344a7f5eSAndroid Build Coastguard Worker 
3496*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vmrghh(vector bool short __a,vector bool short __b)3497*344a7f5eSAndroid Build Coastguard Worker vec_vmrghh(vector bool short __a, vector bool short __b) {
3498*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3499*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3500*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3501*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x16, 0x17));
3502*344a7f5eSAndroid Build Coastguard Worker }
3503*344a7f5eSAndroid Build Coastguard Worker 
vec_vmrghh(vector pixel __a,vector pixel __b)3504*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vmrghh(vector pixel __a,
3505*344a7f5eSAndroid Build Coastguard Worker                                                        vector pixel __b) {
3506*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3507*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x10, 0x11, 0x02, 0x03,
3508*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x14, 0x15,
3509*344a7f5eSAndroid Build Coastguard Worker                                          0x06, 0x07, 0x16, 0x17));
3510*344a7f5eSAndroid Build Coastguard Worker }
3511*344a7f5eSAndroid Build Coastguard Worker 
3512*344a7f5eSAndroid Build Coastguard Worker /* vec_vmrghw */
3513*344a7f5eSAndroid Build Coastguard Worker 
3514*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vmrghw vec_vmrghw
3515*344a7f5eSAndroid Build Coastguard Worker 
vec_vmrghw(vector int __a,vector int __b)3516*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vmrghw(vector int __a,
3517*344a7f5eSAndroid Build Coastguard Worker                                                      vector int __b) {
3518*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3519*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3520*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3521*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3522*344a7f5eSAndroid Build Coastguard Worker }
3523*344a7f5eSAndroid Build Coastguard Worker 
3524*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmrghw(vector unsigned int __a,vector unsigned int __b)3525*344a7f5eSAndroid Build Coastguard Worker vec_vmrghw(vector unsigned int __a, vector unsigned int __b) {
3526*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3527*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3528*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3529*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3530*344a7f5eSAndroid Build Coastguard Worker }
3531*344a7f5eSAndroid Build Coastguard Worker 
vec_vmrghw(vector bool int __a,vector bool int __b)3532*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_vmrghw(vector bool int __a,
3533*344a7f5eSAndroid Build Coastguard Worker                                                           vector bool int __b) {
3534*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3535*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3536*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3537*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3538*344a7f5eSAndroid Build Coastguard Worker }
3539*344a7f5eSAndroid Build Coastguard Worker 
vec_vmrghw(vector float __a,vector float __b)3540*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vmrghw(vector float __a,
3541*344a7f5eSAndroid Build Coastguard Worker                                                        vector float __b) {
3542*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3543*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3544*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x04, 0x05, 0x06, 0x07,
3545*344a7f5eSAndroid Build Coastguard Worker                                          0x14, 0x15, 0x16, 0x17));
3546*344a7f5eSAndroid Build Coastguard Worker }
3547*344a7f5eSAndroid Build Coastguard Worker 
3548*344a7f5eSAndroid Build Coastguard Worker /* vec_mergel */
3549*344a7f5eSAndroid Build Coastguard Worker 
3550*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_mergel(vector signed char __a,vector signed char __b)3551*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector signed char __a, vector signed char __b) {
3552*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3553*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3554*344a7f5eSAndroid Build Coastguard Worker                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3555*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x1E, 0x0F, 0x1F));
3556*344a7f5eSAndroid Build Coastguard Worker }
3557*344a7f5eSAndroid Build Coastguard Worker 
3558*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_mergel(vector unsigned char __a,vector unsigned char __b)3559*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector unsigned char __a, vector unsigned char __b) {
3560*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3561*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3562*344a7f5eSAndroid Build Coastguard Worker                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3563*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x1E, 0x0F, 0x1F));
3564*344a7f5eSAndroid Build Coastguard Worker }
3565*344a7f5eSAndroid Build Coastguard Worker 
3566*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_mergel(vector bool char __a,vector bool char __b)3567*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector bool char __a, vector bool char __b) {
3568*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3569*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3570*344a7f5eSAndroid Build Coastguard Worker                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3571*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x1E, 0x0F, 0x1F));
3572*344a7f5eSAndroid Build Coastguard Worker }
3573*344a7f5eSAndroid Build Coastguard Worker 
vec_mergel(vector short __a,vector short __b)3574*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_mergel(vector short __a,
3575*344a7f5eSAndroid Build Coastguard Worker                                                        vector short __b) {
3576*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3577*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3578*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3579*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x1E, 0x1F));
3580*344a7f5eSAndroid Build Coastguard Worker }
3581*344a7f5eSAndroid Build Coastguard Worker 
3582*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_mergel(vector unsigned short __a,vector unsigned short __b)3583*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector unsigned short __a, vector unsigned short __b) {
3584*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3585*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3586*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3587*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x1E, 0x1F));
3588*344a7f5eSAndroid Build Coastguard Worker }
3589*344a7f5eSAndroid Build Coastguard Worker 
3590*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_mergel(vector bool short __a,vector bool short __b)3591*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector bool short __a, vector bool short __b) {
3592*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3593*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3594*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3595*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x1E, 0x1F));
3596*344a7f5eSAndroid Build Coastguard Worker }
3597*344a7f5eSAndroid Build Coastguard Worker 
vec_mergel(vector pixel __a,vector pixel __b)3598*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_mergel(vector pixel __a,
3599*344a7f5eSAndroid Build Coastguard Worker                                                        vector pixel __b) {
3600*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3601*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3602*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3603*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x1E, 0x1F));
3604*344a7f5eSAndroid Build Coastguard Worker }
3605*344a7f5eSAndroid Build Coastguard Worker 
vec_mergel(vector int __a,vector int __b)3606*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_mergel(vector int __a,
3607*344a7f5eSAndroid Build Coastguard Worker                                                      vector int __b) {
3608*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3609*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3610*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3611*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3612*344a7f5eSAndroid Build Coastguard Worker }
3613*344a7f5eSAndroid Build Coastguard Worker 
3614*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_mergel(vector unsigned int __a,vector unsigned int __b)3615*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector unsigned int __a, vector unsigned int __b) {
3616*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3617*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3618*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3619*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3620*344a7f5eSAndroid Build Coastguard Worker }
3621*344a7f5eSAndroid Build Coastguard Worker 
vec_mergel(vector bool int __a,vector bool int __b)3622*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_mergel(vector bool int __a,
3623*344a7f5eSAndroid Build Coastguard Worker                                                           vector bool int __b) {
3624*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3625*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3626*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3627*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3628*344a7f5eSAndroid Build Coastguard Worker }
3629*344a7f5eSAndroid Build Coastguard Worker 
vec_mergel(vector float __a,vector float __b)3630*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_mergel(vector float __a,
3631*344a7f5eSAndroid Build Coastguard Worker                                                        vector float __b) {
3632*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3633*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3634*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3635*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3636*344a7f5eSAndroid Build Coastguard Worker }
3637*344a7f5eSAndroid Build Coastguard Worker 
3638*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
3639*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_mergel(vector signed long long __a,vector signed long long __b)3640*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector signed long long __a, vector signed long long __b) {
3641*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3642*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3643*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3644*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3645*344a7f5eSAndroid Build Coastguard Worker }
3646*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_mergel(vector signed long long __a,vector bool long long __b)3647*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector signed long long __a, vector bool long long __b) {
3648*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, (vector signed long long)__b,
3649*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3650*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3651*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3652*344a7f5eSAndroid Build Coastguard Worker }
3653*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_mergel(vector bool long long __a,vector signed long long __b)3654*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector bool long long __a, vector signed long long __b) {
3655*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector signed long long)__a, __b,
3656*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3657*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3658*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3659*344a7f5eSAndroid Build Coastguard Worker }
3660*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergel(vector unsigned long long __a,vector unsigned long long __b)3661*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector unsigned long long __a, vector unsigned long long __b) {
3662*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3663*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3664*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3665*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3666*344a7f5eSAndroid Build Coastguard Worker }
3667*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergel(vector unsigned long long __a,vector bool long long __b)3668*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector unsigned long long __a, vector bool long long __b) {
3669*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, (vector unsigned long long)__b,
3670*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3671*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3672*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3673*344a7f5eSAndroid Build Coastguard Worker }
3674*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mergel(vector bool long long __a,vector unsigned long long __b)3675*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector bool long long __a, vector unsigned long long __b) {
3676*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned long long)__a, __b,
3677*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3678*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3679*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3680*344a7f5eSAndroid Build Coastguard Worker }
3681*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_mergel(vector bool long long __a,vector bool long long __b)3682*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector bool long long __a, vector bool long long __b) {
3683*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3684*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3685*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3686*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3687*344a7f5eSAndroid Build Coastguard Worker }
vec_mergel(vector double __a,vector double __b)3688*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_mergel(vector double __a,
3689*344a7f5eSAndroid Build Coastguard Worker                                                         vector double __b) {
3690*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3691*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3692*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3693*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3694*344a7f5eSAndroid Build Coastguard Worker }
3695*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_mergel(vector double __a,vector bool long long __b)3696*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector double __a, vector bool long long __b) {
3697*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, (vector double)__b,
3698*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3699*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3700*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3701*344a7f5eSAndroid Build Coastguard Worker }
3702*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_mergel(vector bool long long __a,vector double __b)3703*344a7f5eSAndroid Build Coastguard Worker vec_mergel(vector bool long long __a, vector double __b) {
3704*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector double)__a, __b,
3705*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D,
3706*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x18, 0X19, 0x1A, 0x1B,
3707*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3708*344a7f5eSAndroid Build Coastguard Worker }
3709*344a7f5eSAndroid Build Coastguard Worker #endif
3710*344a7f5eSAndroid Build Coastguard Worker 
3711*344a7f5eSAndroid Build Coastguard Worker /* vec_vmrglb */
3712*344a7f5eSAndroid Build Coastguard Worker 
3713*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vmrglb vec_vmrglb
3714*344a7f5eSAndroid Build Coastguard Worker 
3715*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vmrglb(vector signed char __a,vector signed char __b)3716*344a7f5eSAndroid Build Coastguard Worker vec_vmrglb(vector signed char __a, vector signed char __b) {
3717*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3718*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3719*344a7f5eSAndroid Build Coastguard Worker                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3720*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x1E, 0x0F, 0x1F));
3721*344a7f5eSAndroid Build Coastguard Worker }
3722*344a7f5eSAndroid Build Coastguard Worker 
3723*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vmrglb(vector unsigned char __a,vector unsigned char __b)3724*344a7f5eSAndroid Build Coastguard Worker vec_vmrglb(vector unsigned char __a, vector unsigned char __b) {
3725*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3726*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3727*344a7f5eSAndroid Build Coastguard Worker                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3728*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x1E, 0x0F, 0x1F));
3729*344a7f5eSAndroid Build Coastguard Worker }
3730*344a7f5eSAndroid Build Coastguard Worker 
3731*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_vmrglb(vector bool char __a,vector bool char __b)3732*344a7f5eSAndroid Build Coastguard Worker vec_vmrglb(vector bool char __a, vector bool char __b) {
3733*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3734*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x18, 0x09, 0x19, 0x0A, 0x1A,
3735*344a7f5eSAndroid Build Coastguard Worker                                          0x0B, 0x1B, 0x0C, 0x1C, 0x0D, 0x1D,
3736*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x1E, 0x0F, 0x1F));
3737*344a7f5eSAndroid Build Coastguard Worker }
3738*344a7f5eSAndroid Build Coastguard Worker 
3739*344a7f5eSAndroid Build Coastguard Worker /* vec_vmrglh */
3740*344a7f5eSAndroid Build Coastguard Worker 
3741*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vmrglh vec_vmrglh
3742*344a7f5eSAndroid Build Coastguard Worker 
vec_vmrglh(vector short __a,vector short __b)3743*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vmrglh(vector short __a,
3744*344a7f5eSAndroid Build Coastguard Worker                                                        vector short __b) {
3745*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3746*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3747*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3748*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x1E, 0x1F));
3749*344a7f5eSAndroid Build Coastguard Worker }
3750*344a7f5eSAndroid Build Coastguard Worker 
3751*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmrglh(vector unsigned short __a,vector unsigned short __b)3752*344a7f5eSAndroid Build Coastguard Worker vec_vmrglh(vector unsigned short __a, vector unsigned short __b) {
3753*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3754*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3755*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3756*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x1E, 0x1F));
3757*344a7f5eSAndroid Build Coastguard Worker }
3758*344a7f5eSAndroid Build Coastguard Worker 
3759*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vmrglh(vector bool short __a,vector bool short __b)3760*344a7f5eSAndroid Build Coastguard Worker vec_vmrglh(vector bool short __a, vector bool short __b) {
3761*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3762*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3763*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3764*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x1E, 0x1F));
3765*344a7f5eSAndroid Build Coastguard Worker }
3766*344a7f5eSAndroid Build Coastguard Worker 
vec_vmrglh(vector pixel __a,vector pixel __b)3767*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vmrglh(vector pixel __a,
3768*344a7f5eSAndroid Build Coastguard Worker                                                        vector pixel __b) {
3769*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3770*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x18, 0x19, 0x0A, 0x0B,
3771*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x1C, 0x1D,
3772*344a7f5eSAndroid Build Coastguard Worker                                          0x0E, 0x0F, 0x1E, 0x1F));
3773*344a7f5eSAndroid Build Coastguard Worker }
3774*344a7f5eSAndroid Build Coastguard Worker 
3775*344a7f5eSAndroid Build Coastguard Worker /* vec_vmrglw */
3776*344a7f5eSAndroid Build Coastguard Worker 
3777*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vmrglw vec_vmrglw
3778*344a7f5eSAndroid Build Coastguard Worker 
vec_vmrglw(vector int __a,vector int __b)3779*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vmrglw(vector int __a,
3780*344a7f5eSAndroid Build Coastguard Worker                                                      vector int __b) {
3781*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3782*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3783*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3784*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3785*344a7f5eSAndroid Build Coastguard Worker }
3786*344a7f5eSAndroid Build Coastguard Worker 
3787*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vmrglw(vector unsigned int __a,vector unsigned int __b)3788*344a7f5eSAndroid Build Coastguard Worker vec_vmrglw(vector unsigned int __a, vector unsigned int __b) {
3789*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3790*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3791*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3792*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3793*344a7f5eSAndroid Build Coastguard Worker }
3794*344a7f5eSAndroid Build Coastguard Worker 
vec_vmrglw(vector bool int __a,vector bool int __b)3795*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_vmrglw(vector bool int __a,
3796*344a7f5eSAndroid Build Coastguard Worker                                                           vector bool int __b) {
3797*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3798*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3799*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3800*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3801*344a7f5eSAndroid Build Coastguard Worker }
3802*344a7f5eSAndroid Build Coastguard Worker 
vec_vmrglw(vector float __a,vector float __b)3803*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vmrglw(vector float __a,
3804*344a7f5eSAndroid Build Coastguard Worker                                                        vector float __b) {
3805*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3806*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x08, 0x09, 0x0A, 0x0B, 0x18, 0x19,
3807*344a7f5eSAndroid Build Coastguard Worker                                          0x1A, 0x1B, 0x0C, 0x0D, 0x0E, 0x0F,
3808*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3809*344a7f5eSAndroid Build Coastguard Worker }
3810*344a7f5eSAndroid Build Coastguard Worker 
3811*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
3812*344a7f5eSAndroid Build Coastguard Worker /* vec_mergee */
3813*344a7f5eSAndroid Build Coastguard Worker 
vec_mergee(vector bool int __a,vector bool int __b)3814*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_mergee(vector bool int __a,
3815*344a7f5eSAndroid Build Coastguard Worker                                                           vector bool int __b) {
3816*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3817*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3818*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
3819*344a7f5eSAndroid Build Coastguard Worker                                          0x18, 0x19, 0x1A, 0x1B));
3820*344a7f5eSAndroid Build Coastguard Worker }
3821*344a7f5eSAndroid Build Coastguard Worker 
3822*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_mergee(vector signed int __a,vector signed int __b)3823*344a7f5eSAndroid Build Coastguard Worker vec_mergee(vector signed int __a, vector signed int __b) {
3824*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3825*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3826*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
3827*344a7f5eSAndroid Build Coastguard Worker                                          0x18, 0x19, 0x1A, 0x1B));
3828*344a7f5eSAndroid Build Coastguard Worker }
3829*344a7f5eSAndroid Build Coastguard Worker 
3830*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_mergee(vector unsigned int __a,vector unsigned int __b)3831*344a7f5eSAndroid Build Coastguard Worker vec_mergee(vector unsigned int __a, vector unsigned int __b) {
3832*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3833*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x10, 0x11,
3834*344a7f5eSAndroid Build Coastguard Worker                                          0x12, 0x13, 0x08, 0x09, 0x0A, 0x0B,
3835*344a7f5eSAndroid Build Coastguard Worker                                          0x18, 0x19, 0x1A, 0x1B));
3836*344a7f5eSAndroid Build Coastguard Worker }
3837*344a7f5eSAndroid Build Coastguard Worker 
3838*344a7f5eSAndroid Build Coastguard Worker /* vec_mergeo */
3839*344a7f5eSAndroid Build Coastguard Worker 
vec_mergeo(vector bool int __a,vector bool int __b)3840*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_mergeo(vector bool int __a,
3841*344a7f5eSAndroid Build Coastguard Worker                                                           vector bool int __b) {
3842*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3843*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
3844*344a7f5eSAndroid Build Coastguard Worker                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
3845*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3846*344a7f5eSAndroid Build Coastguard Worker }
3847*344a7f5eSAndroid Build Coastguard Worker 
3848*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_mergeo(vector signed int __a,vector signed int __b)3849*344a7f5eSAndroid Build Coastguard Worker vec_mergeo(vector signed int __a, vector signed int __b) {
3850*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3851*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
3852*344a7f5eSAndroid Build Coastguard Worker                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
3853*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3854*344a7f5eSAndroid Build Coastguard Worker }
3855*344a7f5eSAndroid Build Coastguard Worker 
3856*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_mergeo(vector unsigned int __a,vector unsigned int __b)3857*344a7f5eSAndroid Build Coastguard Worker vec_mergeo(vector unsigned int __a, vector unsigned int __b) {
3858*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b,
3859*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x14, 0x15,
3860*344a7f5eSAndroid Build Coastguard Worker                                          0x16, 0x17, 0x0C, 0x0D, 0x0E, 0x0F,
3861*344a7f5eSAndroid Build Coastguard Worker                                          0x1C, 0x1D, 0x1E, 0x1F));
3862*344a7f5eSAndroid Build Coastguard Worker }
3863*344a7f5eSAndroid Build Coastguard Worker 
3864*344a7f5eSAndroid Build Coastguard Worker #endif
3865*344a7f5eSAndroid Build Coastguard Worker 
3866*344a7f5eSAndroid Build Coastguard Worker /* vec_mfvscr */
3867*344a7f5eSAndroid Build Coastguard Worker 
3868*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_mfvscr(void)3869*344a7f5eSAndroid Build Coastguard Worker vec_mfvscr(void) {
3870*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_mfvscr();
3871*344a7f5eSAndroid Build Coastguard Worker }
3872*344a7f5eSAndroid Build Coastguard Worker 
3873*344a7f5eSAndroid Build Coastguard Worker /* vec_min */
3874*344a7f5eSAndroid Build Coastguard Worker 
3875*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_min(vector signed char __a,vector signed char __b)3876*344a7f5eSAndroid Build Coastguard Worker vec_min(vector signed char __a, vector signed char __b) {
3877*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsb(__a, __b);
3878*344a7f5eSAndroid Build Coastguard Worker }
3879*344a7f5eSAndroid Build Coastguard Worker 
3880*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_min(vector bool char __a,vector signed char __b)3881*344a7f5eSAndroid Build Coastguard Worker vec_min(vector bool char __a, vector signed char __b) {
3882*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsb((vector signed char)__a, __b);
3883*344a7f5eSAndroid Build Coastguard Worker }
3884*344a7f5eSAndroid Build Coastguard Worker 
3885*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_min(vector signed char __a,vector bool char __b)3886*344a7f5eSAndroid Build Coastguard Worker vec_min(vector signed char __a, vector bool char __b) {
3887*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsb(__a, (vector signed char)__b);
3888*344a7f5eSAndroid Build Coastguard Worker }
3889*344a7f5eSAndroid Build Coastguard Worker 
3890*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_min(vector unsigned char __a,vector unsigned char __b)3891*344a7f5eSAndroid Build Coastguard Worker vec_min(vector unsigned char __a, vector unsigned char __b) {
3892*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminub(__a, __b);
3893*344a7f5eSAndroid Build Coastguard Worker }
3894*344a7f5eSAndroid Build Coastguard Worker 
3895*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_min(vector bool char __a,vector unsigned char __b)3896*344a7f5eSAndroid Build Coastguard Worker vec_min(vector bool char __a, vector unsigned char __b) {
3897*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminub((vector unsigned char)__a, __b);
3898*344a7f5eSAndroid Build Coastguard Worker }
3899*344a7f5eSAndroid Build Coastguard Worker 
3900*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_min(vector unsigned char __a,vector bool char __b)3901*344a7f5eSAndroid Build Coastguard Worker vec_min(vector unsigned char __a, vector bool char __b) {
3902*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
3903*344a7f5eSAndroid Build Coastguard Worker }
3904*344a7f5eSAndroid Build Coastguard Worker 
vec_min(vector short __a,vector short __b)3905*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
3906*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
3907*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsh(__a, __b);
3908*344a7f5eSAndroid Build Coastguard Worker }
3909*344a7f5eSAndroid Build Coastguard Worker 
vec_min(vector bool short __a,vector short __b)3910*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_min(vector bool short __a,
3911*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
3912*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsh((vector short)__a, __b);
3913*344a7f5eSAndroid Build Coastguard Worker }
3914*344a7f5eSAndroid Build Coastguard Worker 
vec_min(vector short __a,vector bool short __b)3915*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_min(vector short __a,
3916*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool short __b) {
3917*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsh(__a, (vector short)__b);
3918*344a7f5eSAndroid Build Coastguard Worker }
3919*344a7f5eSAndroid Build Coastguard Worker 
3920*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_min(vector unsigned short __a,vector unsigned short __b)3921*344a7f5eSAndroid Build Coastguard Worker vec_min(vector unsigned short __a, vector unsigned short __b) {
3922*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminuh(__a, __b);
3923*344a7f5eSAndroid Build Coastguard Worker }
3924*344a7f5eSAndroid Build Coastguard Worker 
3925*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_min(vector bool short __a,vector unsigned short __b)3926*344a7f5eSAndroid Build Coastguard Worker vec_min(vector bool short __a, vector unsigned short __b) {
3927*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
3928*344a7f5eSAndroid Build Coastguard Worker }
3929*344a7f5eSAndroid Build Coastguard Worker 
3930*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_min(vector unsigned short __a,vector bool short __b)3931*344a7f5eSAndroid Build Coastguard Worker vec_min(vector unsigned short __a, vector bool short __b) {
3932*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
3933*344a7f5eSAndroid Build Coastguard Worker }
3934*344a7f5eSAndroid Build Coastguard Worker 
vec_min(vector int __a,vector int __b)3935*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
3936*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
3937*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsw(__a, __b);
3938*344a7f5eSAndroid Build Coastguard Worker }
3939*344a7f5eSAndroid Build Coastguard Worker 
vec_min(vector bool int __a,vector int __b)3940*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_min(vector bool int __a,
3941*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
3942*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsw((vector int)__a, __b);
3943*344a7f5eSAndroid Build Coastguard Worker }
3944*344a7f5eSAndroid Build Coastguard Worker 
vec_min(vector int __a,vector bool int __b)3945*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_min(vector int __a,
3946*344a7f5eSAndroid Build Coastguard Worker                                                   vector bool int __b) {
3947*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsw(__a, (vector int)__b);
3948*344a7f5eSAndroid Build Coastguard Worker }
3949*344a7f5eSAndroid Build Coastguard Worker 
3950*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_min(vector unsigned int __a,vector unsigned int __b)3951*344a7f5eSAndroid Build Coastguard Worker vec_min(vector unsigned int __a, vector unsigned int __b) {
3952*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminuw(__a, __b);
3953*344a7f5eSAndroid Build Coastguard Worker }
3954*344a7f5eSAndroid Build Coastguard Worker 
3955*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_min(vector bool int __a,vector unsigned int __b)3956*344a7f5eSAndroid Build Coastguard Worker vec_min(vector bool int __a, vector unsigned int __b) {
3957*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
3958*344a7f5eSAndroid Build Coastguard Worker }
3959*344a7f5eSAndroid Build Coastguard Worker 
3960*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_min(vector unsigned int __a,vector bool int __b)3961*344a7f5eSAndroid Build Coastguard Worker vec_min(vector unsigned int __a, vector bool int __b) {
3962*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
3963*344a7f5eSAndroid Build Coastguard Worker }
3964*344a7f5eSAndroid Build Coastguard Worker 
3965*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
3966*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_min(vector signed long long __a,vector signed long long __b)3967*344a7f5eSAndroid Build Coastguard Worker vec_min(vector signed long long __a, vector signed long long __b) {
3968*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsd(__a, __b);
3969*344a7f5eSAndroid Build Coastguard Worker }
3970*344a7f5eSAndroid Build Coastguard Worker 
3971*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_min(vector bool long long __a,vector signed long long __b)3972*344a7f5eSAndroid Build Coastguard Worker vec_min(vector bool long long __a, vector signed long long __b) {
3973*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsd((vector signed long long)__a, __b);
3974*344a7f5eSAndroid Build Coastguard Worker }
3975*344a7f5eSAndroid Build Coastguard Worker 
3976*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_min(vector signed long long __a,vector bool long long __b)3977*344a7f5eSAndroid Build Coastguard Worker vec_min(vector signed long long __a, vector bool long long __b) {
3978*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsd(__a, (vector signed long long)__b);
3979*344a7f5eSAndroid Build Coastguard Worker }
3980*344a7f5eSAndroid Build Coastguard Worker 
3981*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_min(vector unsigned long long __a,vector unsigned long long __b)3982*344a7f5eSAndroid Build Coastguard Worker vec_min(vector unsigned long long __a, vector unsigned long long __b) {
3983*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminud(__a, __b);
3984*344a7f5eSAndroid Build Coastguard Worker }
3985*344a7f5eSAndroid Build Coastguard Worker 
3986*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_min(vector bool long long __a,vector unsigned long long __b)3987*344a7f5eSAndroid Build Coastguard Worker vec_min(vector bool long long __a, vector unsigned long long __b) {
3988*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminud((vector unsigned long long)__a, __b);
3989*344a7f5eSAndroid Build Coastguard Worker }
3990*344a7f5eSAndroid Build Coastguard Worker 
3991*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_min(vector unsigned long long __a,vector bool long long __b)3992*344a7f5eSAndroid Build Coastguard Worker vec_min(vector unsigned long long __a, vector bool long long __b) {
3993*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminud(__a, (vector unsigned long long)__b);
3994*344a7f5eSAndroid Build Coastguard Worker }
3995*344a7f5eSAndroid Build Coastguard Worker #endif
3996*344a7f5eSAndroid Build Coastguard Worker 
vec_min(vector float __a,vector float __b)3997*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_min(vector float __a,
3998*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
3999*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
4000*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvminsp(__a, __b);
4001*344a7f5eSAndroid Build Coastguard Worker #else
4002*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminfp(__a, __b);
4003*344a7f5eSAndroid Build Coastguard Worker #endif
4004*344a7f5eSAndroid Build Coastguard Worker }
4005*344a7f5eSAndroid Build Coastguard Worker 
4006*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_min(vector double __a,vector double __b)4007*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_min(vector double __a,
4008*344a7f5eSAndroid Build Coastguard Worker                                                      vector double __b) {
4009*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvmindp(__a, __b);
4010*344a7f5eSAndroid Build Coastguard Worker }
4011*344a7f5eSAndroid Build Coastguard Worker #endif
4012*344a7f5eSAndroid Build Coastguard Worker 
4013*344a7f5eSAndroid Build Coastguard Worker /* vec_vminsb */
4014*344a7f5eSAndroid Build Coastguard Worker 
4015*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vminsb(vector signed char __a,vector signed char __b)4016*344a7f5eSAndroid Build Coastguard Worker vec_vminsb(vector signed char __a, vector signed char __b) {
4017*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsb(__a, __b);
4018*344a7f5eSAndroid Build Coastguard Worker }
4019*344a7f5eSAndroid Build Coastguard Worker 
4020*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vminsb(vector bool char __a,vector signed char __b)4021*344a7f5eSAndroid Build Coastguard Worker vec_vminsb(vector bool char __a, vector signed char __b) {
4022*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsb((vector signed char)__a, __b);
4023*344a7f5eSAndroid Build Coastguard Worker }
4024*344a7f5eSAndroid Build Coastguard Worker 
4025*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vminsb(vector signed char __a,vector bool char __b)4026*344a7f5eSAndroid Build Coastguard Worker vec_vminsb(vector signed char __a, vector bool char __b) {
4027*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsb(__a, (vector signed char)__b);
4028*344a7f5eSAndroid Build Coastguard Worker }
4029*344a7f5eSAndroid Build Coastguard Worker 
4030*344a7f5eSAndroid Build Coastguard Worker /* vec_vminub */
4031*344a7f5eSAndroid Build Coastguard Worker 
4032*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vminub(vector unsigned char __a,vector unsigned char __b)4033*344a7f5eSAndroid Build Coastguard Worker vec_vminub(vector unsigned char __a, vector unsigned char __b) {
4034*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminub(__a, __b);
4035*344a7f5eSAndroid Build Coastguard Worker }
4036*344a7f5eSAndroid Build Coastguard Worker 
4037*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vminub(vector bool char __a,vector unsigned char __b)4038*344a7f5eSAndroid Build Coastguard Worker vec_vminub(vector bool char __a, vector unsigned char __b) {
4039*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminub((vector unsigned char)__a, __b);
4040*344a7f5eSAndroid Build Coastguard Worker }
4041*344a7f5eSAndroid Build Coastguard Worker 
4042*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vminub(vector unsigned char __a,vector bool char __b)4043*344a7f5eSAndroid Build Coastguard Worker vec_vminub(vector unsigned char __a, vector bool char __b) {
4044*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminub(__a, (vector unsigned char)__b);
4045*344a7f5eSAndroid Build Coastguard Worker }
4046*344a7f5eSAndroid Build Coastguard Worker 
4047*344a7f5eSAndroid Build Coastguard Worker /* vec_vminsh */
4048*344a7f5eSAndroid Build Coastguard Worker 
vec_vminsh(vector short __a,vector short __b)4049*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
4050*344a7f5eSAndroid Build Coastguard Worker                                                        vector short __b) {
4051*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsh(__a, __b);
4052*344a7f5eSAndroid Build Coastguard Worker }
4053*344a7f5eSAndroid Build Coastguard Worker 
vec_vminsh(vector bool short __a,vector short __b)4054*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector bool short __a,
4055*344a7f5eSAndroid Build Coastguard Worker                                                        vector short __b) {
4056*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsh((vector short)__a, __b);
4057*344a7f5eSAndroid Build Coastguard Worker }
4058*344a7f5eSAndroid Build Coastguard Worker 
vec_vminsh(vector short __a,vector bool short __b)4059*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vminsh(vector short __a,
4060*344a7f5eSAndroid Build Coastguard Worker                                                        vector bool short __b) {
4061*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsh(__a, (vector short)__b);
4062*344a7f5eSAndroid Build Coastguard Worker }
4063*344a7f5eSAndroid Build Coastguard Worker 
4064*344a7f5eSAndroid Build Coastguard Worker /* vec_vminuh */
4065*344a7f5eSAndroid Build Coastguard Worker 
4066*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vminuh(vector unsigned short __a,vector unsigned short __b)4067*344a7f5eSAndroid Build Coastguard Worker vec_vminuh(vector unsigned short __a, vector unsigned short __b) {
4068*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminuh(__a, __b);
4069*344a7f5eSAndroid Build Coastguard Worker }
4070*344a7f5eSAndroid Build Coastguard Worker 
4071*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vminuh(vector bool short __a,vector unsigned short __b)4072*344a7f5eSAndroid Build Coastguard Worker vec_vminuh(vector bool short __a, vector unsigned short __b) {
4073*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminuh((vector unsigned short)__a, __b);
4074*344a7f5eSAndroid Build Coastguard Worker }
4075*344a7f5eSAndroid Build Coastguard Worker 
4076*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vminuh(vector unsigned short __a,vector bool short __b)4077*344a7f5eSAndroid Build Coastguard Worker vec_vminuh(vector unsigned short __a, vector bool short __b) {
4078*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminuh(__a, (vector unsigned short)__b);
4079*344a7f5eSAndroid Build Coastguard Worker }
4080*344a7f5eSAndroid Build Coastguard Worker 
4081*344a7f5eSAndroid Build Coastguard Worker /* vec_vminsw */
4082*344a7f5eSAndroid Build Coastguard Worker 
vec_vminsw(vector int __a,vector int __b)4083*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
4084*344a7f5eSAndroid Build Coastguard Worker                                                      vector int __b) {
4085*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsw(__a, __b);
4086*344a7f5eSAndroid Build Coastguard Worker }
4087*344a7f5eSAndroid Build Coastguard Worker 
vec_vminsw(vector bool int __a,vector int __b)4088*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector bool int __a,
4089*344a7f5eSAndroid Build Coastguard Worker                                                      vector int __b) {
4090*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsw((vector int)__a, __b);
4091*344a7f5eSAndroid Build Coastguard Worker }
4092*344a7f5eSAndroid Build Coastguard Worker 
vec_vminsw(vector int __a,vector bool int __b)4093*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vminsw(vector int __a,
4094*344a7f5eSAndroid Build Coastguard Worker                                                      vector bool int __b) {
4095*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminsw(__a, (vector int)__b);
4096*344a7f5eSAndroid Build Coastguard Worker }
4097*344a7f5eSAndroid Build Coastguard Worker 
4098*344a7f5eSAndroid Build Coastguard Worker /* vec_vminuw */
4099*344a7f5eSAndroid Build Coastguard Worker 
4100*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vminuw(vector unsigned int __a,vector unsigned int __b)4101*344a7f5eSAndroid Build Coastguard Worker vec_vminuw(vector unsigned int __a, vector unsigned int __b) {
4102*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminuw(__a, __b);
4103*344a7f5eSAndroid Build Coastguard Worker }
4104*344a7f5eSAndroid Build Coastguard Worker 
4105*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vminuw(vector bool int __a,vector unsigned int __b)4106*344a7f5eSAndroid Build Coastguard Worker vec_vminuw(vector bool int __a, vector unsigned int __b) {
4107*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminuw((vector unsigned int)__a, __b);
4108*344a7f5eSAndroid Build Coastguard Worker }
4109*344a7f5eSAndroid Build Coastguard Worker 
4110*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vminuw(vector unsigned int __a,vector bool int __b)4111*344a7f5eSAndroid Build Coastguard Worker vec_vminuw(vector unsigned int __a, vector bool int __b) {
4112*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminuw(__a, (vector unsigned int)__b);
4113*344a7f5eSAndroid Build Coastguard Worker }
4114*344a7f5eSAndroid Build Coastguard Worker 
4115*344a7f5eSAndroid Build Coastguard Worker /* vec_vminfp */
4116*344a7f5eSAndroid Build Coastguard Worker 
4117*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vminfp(vector float __a,vector float __b)4118*344a7f5eSAndroid Build Coastguard Worker vec_vminfp(vector float __a, vector float __b) {
4119*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
4120*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvminsp(__a, __b);
4121*344a7f5eSAndroid Build Coastguard Worker #else
4122*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vminfp(__a, __b);
4123*344a7f5eSAndroid Build Coastguard Worker #endif
4124*344a7f5eSAndroid Build Coastguard Worker }
4125*344a7f5eSAndroid Build Coastguard Worker 
4126*344a7f5eSAndroid Build Coastguard Worker /* vec_mladd */
4127*344a7f5eSAndroid Build Coastguard Worker 
4128*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vmladduhm vec_mladd
4129*344a7f5eSAndroid Build Coastguard Worker 
vec_mladd(vector short __a,vector short __b,vector short __c)4130*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_mladd(vector short __a,
4131*344a7f5eSAndroid Build Coastguard Worker                                                       vector short __b,
4132*344a7f5eSAndroid Build Coastguard Worker                                                       vector short __c) {
4133*344a7f5eSAndroid Build Coastguard Worker   return __a * __b + __c;
4134*344a7f5eSAndroid Build Coastguard Worker }
4135*344a7f5eSAndroid Build Coastguard Worker 
vec_mladd(vector short __a,vector unsigned short __b,vector unsigned short __c)4136*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_mladd(
4137*344a7f5eSAndroid Build Coastguard Worker     vector short __a, vector unsigned short __b, vector unsigned short __c) {
4138*344a7f5eSAndroid Build Coastguard Worker   return __a * (vector short)__b + (vector short)__c;
4139*344a7f5eSAndroid Build Coastguard Worker }
4140*344a7f5eSAndroid Build Coastguard Worker 
vec_mladd(vector unsigned short __a,vector short __b,vector short __c)4141*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_mladd(vector unsigned short __a,
4142*344a7f5eSAndroid Build Coastguard Worker                                                       vector short __b,
4143*344a7f5eSAndroid Build Coastguard Worker                                                       vector short __c) {
4144*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a * __b + __c;
4145*344a7f5eSAndroid Build Coastguard Worker }
4146*344a7f5eSAndroid Build Coastguard Worker 
4147*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_mladd(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)4148*344a7f5eSAndroid Build Coastguard Worker vec_mladd(vector unsigned short __a, vector unsigned short __b,
4149*344a7f5eSAndroid Build Coastguard Worker           vector unsigned short __c) {
4150*344a7f5eSAndroid Build Coastguard Worker   return __a * __b + __c;
4151*344a7f5eSAndroid Build Coastguard Worker }
4152*344a7f5eSAndroid Build Coastguard Worker 
4153*344a7f5eSAndroid Build Coastguard Worker /* vec_vmladduhm */
4154*344a7f5eSAndroid Build Coastguard Worker 
vec_vmladduhm(vector short __a,vector short __b,vector short __c)4155*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(vector short __a,
4156*344a7f5eSAndroid Build Coastguard Worker                                                           vector short __b,
4157*344a7f5eSAndroid Build Coastguard Worker                                                           vector short __c) {
4158*344a7f5eSAndroid Build Coastguard Worker   return __a * __b + __c;
4159*344a7f5eSAndroid Build Coastguard Worker }
4160*344a7f5eSAndroid Build Coastguard Worker 
vec_vmladduhm(vector short __a,vector unsigned short __b,vector unsigned short __c)4161*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vmladduhm(
4162*344a7f5eSAndroid Build Coastguard Worker     vector short __a, vector unsigned short __b, vector unsigned short __c) {
4163*344a7f5eSAndroid Build Coastguard Worker   return __a * (vector short)__b + (vector short)__c;
4164*344a7f5eSAndroid Build Coastguard Worker }
4165*344a7f5eSAndroid Build Coastguard Worker 
4166*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai
vec_vmladduhm(vector unsigned short __a,vector short __b,vector short __c)4167*344a7f5eSAndroid Build Coastguard Worker vec_vmladduhm(vector unsigned short __a, vector short __b, vector short __c) {
4168*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a * __b + __c;
4169*344a7f5eSAndroid Build Coastguard Worker }
4170*344a7f5eSAndroid Build Coastguard Worker 
4171*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vmladduhm(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)4172*344a7f5eSAndroid Build Coastguard Worker vec_vmladduhm(vector unsigned short __a, vector unsigned short __b,
4173*344a7f5eSAndroid Build Coastguard Worker               vector unsigned short __c) {
4174*344a7f5eSAndroid Build Coastguard Worker   return __a * __b + __c;
4175*344a7f5eSAndroid Build Coastguard Worker }
4176*344a7f5eSAndroid Build Coastguard Worker 
4177*344a7f5eSAndroid Build Coastguard Worker /* vec_mradds */
4178*344a7f5eSAndroid Build Coastguard Worker 
4179*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __attribute__((__always_inline__))
vec_mradds(vector short __a,vector short __b,vector short __c)4180*344a7f5eSAndroid Build Coastguard Worker vec_mradds(vector short __a, vector short __b, vector short __c) {
4181*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmhraddshs(__a, __b, __c);
4182*344a7f5eSAndroid Build Coastguard Worker }
4183*344a7f5eSAndroid Build Coastguard Worker 
4184*344a7f5eSAndroid Build Coastguard Worker /* vec_vmhraddshs */
4185*344a7f5eSAndroid Build Coastguard Worker 
4186*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __attribute__((__always_inline__))
vec_vmhraddshs(vector short __a,vector short __b,vector short __c)4187*344a7f5eSAndroid Build Coastguard Worker vec_vmhraddshs(vector short __a, vector short __b, vector short __c) {
4188*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmhraddshs(__a, __b, __c);
4189*344a7f5eSAndroid Build Coastguard Worker }
4190*344a7f5eSAndroid Build Coastguard Worker 
4191*344a7f5eSAndroid Build Coastguard Worker /* vec_msum */
4192*344a7f5eSAndroid Build Coastguard Worker 
vec_msum(vector signed char __a,vector unsigned char __b,vector int __c)4193*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_msum(vector signed char __a,
4194*344a7f5eSAndroid Build Coastguard Worker                                                    vector unsigned char __b,
4195*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __c) {
4196*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmsummbm(__a, __b, __c);
4197*344a7f5eSAndroid Build Coastguard Worker }
4198*344a7f5eSAndroid Build Coastguard Worker 
4199*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_msum(vector unsigned char __a,vector unsigned char __b,vector unsigned int __c)4200*344a7f5eSAndroid Build Coastguard Worker vec_msum(vector unsigned char __a, vector unsigned char __b,
4201*344a7f5eSAndroid Build Coastguard Worker          vector unsigned int __c) {
4202*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmsumubm(__a, __b, __c);
4203*344a7f5eSAndroid Build Coastguard Worker }
4204*344a7f5eSAndroid Build Coastguard Worker 
vec_msum(vector short __a,vector short __b,vector int __c)4205*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_msum(vector short __a,
4206*344a7f5eSAndroid Build Coastguard Worker                                                    vector short __b,
4207*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __c) {
4208*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmsumshm(__a, __b, __c);
4209*344a7f5eSAndroid Build Coastguard Worker }
4210*344a7f5eSAndroid Build Coastguard Worker 
4211*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_msum(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)4212*344a7f5eSAndroid Build Coastguard Worker vec_msum(vector unsigned short __a, vector unsigned short __b,
4213*344a7f5eSAndroid Build Coastguard Worker          vector unsigned int __c) {
4214*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmsumuhm(__a, __b, __c);
4215*344a7f5eSAndroid Build Coastguard Worker }
4216*344a7f5eSAndroid Build Coastguard Worker 
4217*344a7f5eSAndroid Build Coastguard Worker /* vec_vmsummbm */
4218*344a7f5eSAndroid Build Coastguard Worker 
4219*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __attribute__((__always_inline__))
vec_vmsummbm(vector signed char __a,vector unsigned char __b,vector int __c)4220*344a7f5eSAndroid Build Coastguard Worker vec_vmsummbm(vector signed char __a, vector unsigned char __b, vector int __c) {
4221*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmsummbm(__a, __b, __c);
4222*344a7f5eSAndroid Build Coastguard Worker }
4223*344a7f5eSAndroid Build Coastguard Worker 
4224*344a7f5eSAndroid Build Coastguard Worker /* vec_vmsumubm */
4225*344a7f5eSAndroid Build Coastguard Worker 
4226*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmsumubm(vector unsigned char __a,vector unsigned char __b,vector unsigned int __c)4227*344a7f5eSAndroid Build Coastguard Worker vec_vmsumubm(vector unsigned char __a, vector unsigned char __b,
4228*344a7f5eSAndroid Build Coastguard Worker              vector unsigned int __c) {
4229*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmsumubm(__a, __b, __c);
4230*344a7f5eSAndroid Build Coastguard Worker }
4231*344a7f5eSAndroid Build Coastguard Worker 
4232*344a7f5eSAndroid Build Coastguard Worker /* vec_vmsumshm */
4233*344a7f5eSAndroid Build Coastguard Worker 
4234*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __attribute__((__always_inline__))
vec_vmsumshm(vector short __a,vector short __b,vector int __c)4235*344a7f5eSAndroid Build Coastguard Worker vec_vmsumshm(vector short __a, vector short __b, vector int __c) {
4236*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmsumshm(__a, __b, __c);
4237*344a7f5eSAndroid Build Coastguard Worker }
4238*344a7f5eSAndroid Build Coastguard Worker 
4239*344a7f5eSAndroid Build Coastguard Worker /* vec_vmsumuhm */
4240*344a7f5eSAndroid Build Coastguard Worker 
4241*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmsumuhm(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)4242*344a7f5eSAndroid Build Coastguard Worker vec_vmsumuhm(vector unsigned short __a, vector unsigned short __b,
4243*344a7f5eSAndroid Build Coastguard Worker              vector unsigned int __c) {
4244*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmsumuhm(__a, __b, __c);
4245*344a7f5eSAndroid Build Coastguard Worker }
4246*344a7f5eSAndroid Build Coastguard Worker 
4247*344a7f5eSAndroid Build Coastguard Worker /* vec_msums */
4248*344a7f5eSAndroid Build Coastguard Worker 
vec_msums(vector short __a,vector short __b,vector int __c)4249*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_msums(vector short __a,
4250*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b,
4251*344a7f5eSAndroid Build Coastguard Worker                                                     vector int __c) {
4252*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmsumshs(__a, __b, __c);
4253*344a7f5eSAndroid Build Coastguard Worker }
4254*344a7f5eSAndroid Build Coastguard Worker 
4255*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_msums(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)4256*344a7f5eSAndroid Build Coastguard Worker vec_msums(vector unsigned short __a, vector unsigned short __b,
4257*344a7f5eSAndroid Build Coastguard Worker           vector unsigned int __c) {
4258*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmsumuhs(__a, __b, __c);
4259*344a7f5eSAndroid Build Coastguard Worker }
4260*344a7f5eSAndroid Build Coastguard Worker 
4261*344a7f5eSAndroid Build Coastguard Worker /* vec_vmsumshs */
4262*344a7f5eSAndroid Build Coastguard Worker 
4263*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __attribute__((__always_inline__))
vec_vmsumshs(vector short __a,vector short __b,vector int __c)4264*344a7f5eSAndroid Build Coastguard Worker vec_vmsumshs(vector short __a, vector short __b, vector int __c) {
4265*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmsumshs(__a, __b, __c);
4266*344a7f5eSAndroid Build Coastguard Worker }
4267*344a7f5eSAndroid Build Coastguard Worker 
4268*344a7f5eSAndroid Build Coastguard Worker /* vec_vmsumuhs */
4269*344a7f5eSAndroid Build Coastguard Worker 
4270*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmsumuhs(vector unsigned short __a,vector unsigned short __b,vector unsigned int __c)4271*344a7f5eSAndroid Build Coastguard Worker vec_vmsumuhs(vector unsigned short __a, vector unsigned short __b,
4272*344a7f5eSAndroid Build Coastguard Worker              vector unsigned int __c) {
4273*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmsumuhs(__a, __b, __c);
4274*344a7f5eSAndroid Build Coastguard Worker }
4275*344a7f5eSAndroid Build Coastguard Worker 
4276*344a7f5eSAndroid Build Coastguard Worker /* vec_mtvscr */
4277*344a7f5eSAndroid Build Coastguard Worker 
vec_mtvscr(vector signed char __a)4278*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_mtvscr(vector signed char __a) {
4279*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_mtvscr((vector int)__a);
4280*344a7f5eSAndroid Build Coastguard Worker }
4281*344a7f5eSAndroid Build Coastguard Worker 
vec_mtvscr(vector unsigned char __a)4282*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned char __a) {
4283*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_mtvscr((vector int)__a);
4284*344a7f5eSAndroid Build Coastguard Worker }
4285*344a7f5eSAndroid Build Coastguard Worker 
vec_mtvscr(vector bool char __a)4286*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool char __a) {
4287*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_mtvscr((vector int)__a);
4288*344a7f5eSAndroid Build Coastguard Worker }
4289*344a7f5eSAndroid Build Coastguard Worker 
vec_mtvscr(vector short __a)4290*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_mtvscr(vector short __a) {
4291*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_mtvscr((vector int)__a);
4292*344a7f5eSAndroid Build Coastguard Worker }
4293*344a7f5eSAndroid Build Coastguard Worker 
vec_mtvscr(vector unsigned short __a)4294*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned short __a) {
4295*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_mtvscr((vector int)__a);
4296*344a7f5eSAndroid Build Coastguard Worker }
4297*344a7f5eSAndroid Build Coastguard Worker 
vec_mtvscr(vector bool short __a)4298*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool short __a) {
4299*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_mtvscr((vector int)__a);
4300*344a7f5eSAndroid Build Coastguard Worker }
4301*344a7f5eSAndroid Build Coastguard Worker 
vec_mtvscr(vector pixel __a)4302*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_mtvscr(vector pixel __a) {
4303*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_mtvscr((vector int)__a);
4304*344a7f5eSAndroid Build Coastguard Worker }
4305*344a7f5eSAndroid Build Coastguard Worker 
vec_mtvscr(vector int __a)4306*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_mtvscr(vector int __a) {
4307*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_mtvscr((vector int)__a);
4308*344a7f5eSAndroid Build Coastguard Worker }
4309*344a7f5eSAndroid Build Coastguard Worker 
vec_mtvscr(vector unsigned int __a)4310*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_mtvscr(vector unsigned int __a) {
4311*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_mtvscr((vector int)__a);
4312*344a7f5eSAndroid Build Coastguard Worker }
4313*344a7f5eSAndroid Build Coastguard Worker 
vec_mtvscr(vector bool int __a)4314*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_mtvscr(vector bool int __a) {
4315*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_mtvscr((vector int)__a);
4316*344a7f5eSAndroid Build Coastguard Worker }
4317*344a7f5eSAndroid Build Coastguard Worker 
vec_mtvscr(vector float __a)4318*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_mtvscr(vector float __a) {
4319*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_mtvscr((vector int)__a);
4320*344a7f5eSAndroid Build Coastguard Worker }
4321*344a7f5eSAndroid Build Coastguard Worker 
4322*344a7f5eSAndroid Build Coastguard Worker /* vec_mul */
4323*344a7f5eSAndroid Build Coastguard Worker 
4324*344a7f5eSAndroid Build Coastguard Worker /* Integer vector multiplication will involve multiplication of the odd/even
4325*344a7f5eSAndroid Build Coastguard Worker    elements separately, then truncating the results and moving to the
4326*344a7f5eSAndroid Build Coastguard Worker    result vector.
4327*344a7f5eSAndroid Build Coastguard Worker */
4328*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_mul(vector signed char __a,vector signed char __b)4329*344a7f5eSAndroid Build Coastguard Worker vec_mul(vector signed char __a, vector signed char __b) {
4330*344a7f5eSAndroid Build Coastguard Worker   return __a * __b;
4331*344a7f5eSAndroid Build Coastguard Worker }
4332*344a7f5eSAndroid Build Coastguard Worker 
4333*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_mul(vector unsigned char __a,vector unsigned char __b)4334*344a7f5eSAndroid Build Coastguard Worker vec_mul(vector unsigned char __a, vector unsigned char __b) {
4335*344a7f5eSAndroid Build Coastguard Worker   return __a * __b;
4336*344a7f5eSAndroid Build Coastguard Worker }
4337*344a7f5eSAndroid Build Coastguard Worker 
4338*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_mul(vector signed short __a,vector signed short __b)4339*344a7f5eSAndroid Build Coastguard Worker vec_mul(vector signed short __a, vector signed short __b) {
4340*344a7f5eSAndroid Build Coastguard Worker   return __a * __b;
4341*344a7f5eSAndroid Build Coastguard Worker }
4342*344a7f5eSAndroid Build Coastguard Worker 
4343*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_mul(vector unsigned short __a,vector unsigned short __b)4344*344a7f5eSAndroid Build Coastguard Worker vec_mul(vector unsigned short __a, vector unsigned short __b) {
4345*344a7f5eSAndroid Build Coastguard Worker   return __a * __b;
4346*344a7f5eSAndroid Build Coastguard Worker }
4347*344a7f5eSAndroid Build Coastguard Worker 
4348*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_mul(vector signed int __a,vector signed int __b)4349*344a7f5eSAndroid Build Coastguard Worker vec_mul(vector signed int __a, vector signed int __b) {
4350*344a7f5eSAndroid Build Coastguard Worker   return __a * __b;
4351*344a7f5eSAndroid Build Coastguard Worker }
4352*344a7f5eSAndroid Build Coastguard Worker 
4353*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_mul(vector unsigned int __a,vector unsigned int __b)4354*344a7f5eSAndroid Build Coastguard Worker vec_mul(vector unsigned int __a, vector unsigned int __b) {
4355*344a7f5eSAndroid Build Coastguard Worker   return __a * __b;
4356*344a7f5eSAndroid Build Coastguard Worker }
4357*344a7f5eSAndroid Build Coastguard Worker 
4358*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
4359*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_mul(vector signed long long __a,vector signed long long __b)4360*344a7f5eSAndroid Build Coastguard Worker vec_mul(vector signed long long __a, vector signed long long __b) {
4361*344a7f5eSAndroid Build Coastguard Worker   return __a * __b;
4362*344a7f5eSAndroid Build Coastguard Worker }
4363*344a7f5eSAndroid Build Coastguard Worker 
4364*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mul(vector unsigned long long __a,vector unsigned long long __b)4365*344a7f5eSAndroid Build Coastguard Worker vec_mul(vector unsigned long long __a, vector unsigned long long __b) {
4366*344a7f5eSAndroid Build Coastguard Worker   return __a * __b;
4367*344a7f5eSAndroid Build Coastguard Worker }
4368*344a7f5eSAndroid Build Coastguard Worker #endif
4369*344a7f5eSAndroid Build Coastguard Worker 
vec_mul(vector float __a,vector float __b)4370*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_mul(vector float __a,
4371*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
4372*344a7f5eSAndroid Build Coastguard Worker   return __a * __b;
4373*344a7f5eSAndroid Build Coastguard Worker }
4374*344a7f5eSAndroid Build Coastguard Worker 
4375*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_mul(vector double __a,vector double __b)4376*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_mul(vector double __a,
4377*344a7f5eSAndroid Build Coastguard Worker                                                      vector double __b) {
4378*344a7f5eSAndroid Build Coastguard Worker   return __a * __b;
4379*344a7f5eSAndroid Build Coastguard Worker }
4380*344a7f5eSAndroid Build Coastguard Worker #endif
4381*344a7f5eSAndroid Build Coastguard Worker 
4382*344a7f5eSAndroid Build Coastguard Worker /* The vmulos* and vmules* instructions have a big endian bias, so
4383*344a7f5eSAndroid Build Coastguard Worker    we must reverse the meaning of "even" and "odd" for little endian.  */
4384*344a7f5eSAndroid Build Coastguard Worker 
4385*344a7f5eSAndroid Build Coastguard Worker /* vec_mule */
4386*344a7f5eSAndroid Build Coastguard Worker 
vec_mule(vector signed char __a,vector signed char __b)4387*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_mule(vector signed char __a,
4388*344a7f5eSAndroid Build Coastguard Worker                                                      vector signed char __b) {
4389*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4390*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulosb(__a, __b);
4391*344a7f5eSAndroid Build Coastguard Worker #else
4392*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulesb(__a, __b);
4393*344a7f5eSAndroid Build Coastguard Worker #endif
4394*344a7f5eSAndroid Build Coastguard Worker }
4395*344a7f5eSAndroid Build Coastguard Worker 
4396*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_mule(vector unsigned char __a,vector unsigned char __b)4397*344a7f5eSAndroid Build Coastguard Worker vec_mule(vector unsigned char __a, vector unsigned char __b) {
4398*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4399*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuloub(__a, __b);
4400*344a7f5eSAndroid Build Coastguard Worker #else
4401*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuleub(__a, __b);
4402*344a7f5eSAndroid Build Coastguard Worker #endif
4403*344a7f5eSAndroid Build Coastguard Worker }
4404*344a7f5eSAndroid Build Coastguard Worker 
vec_mule(vector short __a,vector short __b)4405*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_mule(vector short __a,
4406*344a7f5eSAndroid Build Coastguard Worker                                                    vector short __b) {
4407*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4408*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulosh(__a, __b);
4409*344a7f5eSAndroid Build Coastguard Worker #else
4410*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulesh(__a, __b);
4411*344a7f5eSAndroid Build Coastguard Worker #endif
4412*344a7f5eSAndroid Build Coastguard Worker }
4413*344a7f5eSAndroid Build Coastguard Worker 
4414*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_mule(vector unsigned short __a,vector unsigned short __b)4415*344a7f5eSAndroid Build Coastguard Worker vec_mule(vector unsigned short __a, vector unsigned short __b) {
4416*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4417*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulouh(__a, __b);
4418*344a7f5eSAndroid Build Coastguard Worker #else
4419*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuleuh(__a, __b);
4420*344a7f5eSAndroid Build Coastguard Worker #endif
4421*344a7f5eSAndroid Build Coastguard Worker }
4422*344a7f5eSAndroid Build Coastguard Worker 
4423*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
4424*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_mule(vector signed int __a,vector signed int __b)4425*344a7f5eSAndroid Build Coastguard Worker vec_mule(vector signed int __a, vector signed int __b) {
4426*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4427*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulosw(__a, __b);
4428*344a7f5eSAndroid Build Coastguard Worker #else
4429*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulesw(__a, __b);
4430*344a7f5eSAndroid Build Coastguard Worker #endif
4431*344a7f5eSAndroid Build Coastguard Worker }
4432*344a7f5eSAndroid Build Coastguard Worker 
4433*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mule(vector unsigned int __a,vector unsigned int __b)4434*344a7f5eSAndroid Build Coastguard Worker vec_mule(vector unsigned int __a, vector unsigned int __b) {
4435*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4436*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulouw(__a, __b);
4437*344a7f5eSAndroid Build Coastguard Worker #else
4438*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuleuw(__a, __b);
4439*344a7f5eSAndroid Build Coastguard Worker #endif
4440*344a7f5eSAndroid Build Coastguard Worker }
4441*344a7f5eSAndroid Build Coastguard Worker #endif
4442*344a7f5eSAndroid Build Coastguard Worker 
4443*344a7f5eSAndroid Build Coastguard Worker /* vec_vmulesb */
4444*344a7f5eSAndroid Build Coastguard Worker 
4445*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __attribute__((__always_inline__))
vec_vmulesb(vector signed char __a,vector signed char __b)4446*344a7f5eSAndroid Build Coastguard Worker vec_vmulesb(vector signed char __a, vector signed char __b) {
4447*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4448*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulosb(__a, __b);
4449*344a7f5eSAndroid Build Coastguard Worker #else
4450*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulesb(__a, __b);
4451*344a7f5eSAndroid Build Coastguard Worker #endif
4452*344a7f5eSAndroid Build Coastguard Worker }
4453*344a7f5eSAndroid Build Coastguard Worker 
4454*344a7f5eSAndroid Build Coastguard Worker /* vec_vmuleub */
4455*344a7f5eSAndroid Build Coastguard Worker 
4456*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_vmuleub(vector unsigned char __a,vector unsigned char __b)4457*344a7f5eSAndroid Build Coastguard Worker vec_vmuleub(vector unsigned char __a, vector unsigned char __b) {
4458*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4459*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuloub(__a, __b);
4460*344a7f5eSAndroid Build Coastguard Worker #else
4461*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuleub(__a, __b);
4462*344a7f5eSAndroid Build Coastguard Worker #endif
4463*344a7f5eSAndroid Build Coastguard Worker }
4464*344a7f5eSAndroid Build Coastguard Worker 
4465*344a7f5eSAndroid Build Coastguard Worker /* vec_vmulesh */
4466*344a7f5eSAndroid Build Coastguard Worker 
4467*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __attribute__((__always_inline__))
vec_vmulesh(vector short __a,vector short __b)4468*344a7f5eSAndroid Build Coastguard Worker vec_vmulesh(vector short __a, vector short __b) {
4469*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4470*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulosh(__a, __b);
4471*344a7f5eSAndroid Build Coastguard Worker #else
4472*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulesh(__a, __b);
4473*344a7f5eSAndroid Build Coastguard Worker #endif
4474*344a7f5eSAndroid Build Coastguard Worker }
4475*344a7f5eSAndroid Build Coastguard Worker 
4476*344a7f5eSAndroid Build Coastguard Worker /* vec_vmuleuh */
4477*344a7f5eSAndroid Build Coastguard Worker 
4478*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmuleuh(vector unsigned short __a,vector unsigned short __b)4479*344a7f5eSAndroid Build Coastguard Worker vec_vmuleuh(vector unsigned short __a, vector unsigned short __b) {
4480*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4481*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulouh(__a, __b);
4482*344a7f5eSAndroid Build Coastguard Worker #else
4483*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuleuh(__a, __b);
4484*344a7f5eSAndroid Build Coastguard Worker #endif
4485*344a7f5eSAndroid Build Coastguard Worker }
4486*344a7f5eSAndroid Build Coastguard Worker 
4487*344a7f5eSAndroid Build Coastguard Worker /* vec_mulo */
4488*344a7f5eSAndroid Build Coastguard Worker 
vec_mulo(vector signed char __a,vector signed char __b)4489*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_mulo(vector signed char __a,
4490*344a7f5eSAndroid Build Coastguard Worker                                                      vector signed char __b) {
4491*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4492*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulesb(__a, __b);
4493*344a7f5eSAndroid Build Coastguard Worker #else
4494*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulosb(__a, __b);
4495*344a7f5eSAndroid Build Coastguard Worker #endif
4496*344a7f5eSAndroid Build Coastguard Worker }
4497*344a7f5eSAndroid Build Coastguard Worker 
4498*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_mulo(vector unsigned char __a,vector unsigned char __b)4499*344a7f5eSAndroid Build Coastguard Worker vec_mulo(vector unsigned char __a, vector unsigned char __b) {
4500*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4501*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuleub(__a, __b);
4502*344a7f5eSAndroid Build Coastguard Worker #else
4503*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuloub(__a, __b);
4504*344a7f5eSAndroid Build Coastguard Worker #endif
4505*344a7f5eSAndroid Build Coastguard Worker }
4506*344a7f5eSAndroid Build Coastguard Worker 
vec_mulo(vector short __a,vector short __b)4507*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_mulo(vector short __a,
4508*344a7f5eSAndroid Build Coastguard Worker                                                    vector short __b) {
4509*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4510*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulesh(__a, __b);
4511*344a7f5eSAndroid Build Coastguard Worker #else
4512*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulosh(__a, __b);
4513*344a7f5eSAndroid Build Coastguard Worker #endif
4514*344a7f5eSAndroid Build Coastguard Worker }
4515*344a7f5eSAndroid Build Coastguard Worker 
4516*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_mulo(vector unsigned short __a,vector unsigned short __b)4517*344a7f5eSAndroid Build Coastguard Worker vec_mulo(vector unsigned short __a, vector unsigned short __b) {
4518*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4519*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuleuh(__a, __b);
4520*344a7f5eSAndroid Build Coastguard Worker #else
4521*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulouh(__a, __b);
4522*344a7f5eSAndroid Build Coastguard Worker #endif
4523*344a7f5eSAndroid Build Coastguard Worker }
4524*344a7f5eSAndroid Build Coastguard Worker 
4525*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
4526*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_mulo(vector signed int __a,vector signed int __b)4527*344a7f5eSAndroid Build Coastguard Worker vec_mulo(vector signed int __a, vector signed int __b) {
4528*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4529*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulesw(__a, __b);
4530*344a7f5eSAndroid Build Coastguard Worker #else
4531*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulosw(__a, __b);
4532*344a7f5eSAndroid Build Coastguard Worker #endif
4533*344a7f5eSAndroid Build Coastguard Worker }
4534*344a7f5eSAndroid Build Coastguard Worker 
4535*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_mulo(vector unsigned int __a,vector unsigned int __b)4536*344a7f5eSAndroid Build Coastguard Worker vec_mulo(vector unsigned int __a, vector unsigned int __b) {
4537*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4538*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuleuw(__a, __b);
4539*344a7f5eSAndroid Build Coastguard Worker #else
4540*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulouw(__a, __b);
4541*344a7f5eSAndroid Build Coastguard Worker #endif
4542*344a7f5eSAndroid Build Coastguard Worker }
4543*344a7f5eSAndroid Build Coastguard Worker #endif
4544*344a7f5eSAndroid Build Coastguard Worker 
4545*344a7f5eSAndroid Build Coastguard Worker /* vec_vmulosb */
4546*344a7f5eSAndroid Build Coastguard Worker 
4547*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __attribute__((__always_inline__))
vec_vmulosb(vector signed char __a,vector signed char __b)4548*344a7f5eSAndroid Build Coastguard Worker vec_vmulosb(vector signed char __a, vector signed char __b) {
4549*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4550*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulesb(__a, __b);
4551*344a7f5eSAndroid Build Coastguard Worker #else
4552*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulosb(__a, __b);
4553*344a7f5eSAndroid Build Coastguard Worker #endif
4554*344a7f5eSAndroid Build Coastguard Worker }
4555*344a7f5eSAndroid Build Coastguard Worker 
4556*344a7f5eSAndroid Build Coastguard Worker /* vec_vmuloub */
4557*344a7f5eSAndroid Build Coastguard Worker 
4558*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_vmuloub(vector unsigned char __a,vector unsigned char __b)4559*344a7f5eSAndroid Build Coastguard Worker vec_vmuloub(vector unsigned char __a, vector unsigned char __b) {
4560*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4561*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuleub(__a, __b);
4562*344a7f5eSAndroid Build Coastguard Worker #else
4563*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuloub(__a, __b);
4564*344a7f5eSAndroid Build Coastguard Worker #endif
4565*344a7f5eSAndroid Build Coastguard Worker }
4566*344a7f5eSAndroid Build Coastguard Worker 
4567*344a7f5eSAndroid Build Coastguard Worker /* vec_vmulosh */
4568*344a7f5eSAndroid Build Coastguard Worker 
4569*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __attribute__((__always_inline__))
vec_vmulosh(vector short __a,vector short __b)4570*344a7f5eSAndroid Build Coastguard Worker vec_vmulosh(vector short __a, vector short __b) {
4571*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4572*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulesh(__a, __b);
4573*344a7f5eSAndroid Build Coastguard Worker #else
4574*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulosh(__a, __b);
4575*344a7f5eSAndroid Build Coastguard Worker #endif
4576*344a7f5eSAndroid Build Coastguard Worker }
4577*344a7f5eSAndroid Build Coastguard Worker 
4578*344a7f5eSAndroid Build Coastguard Worker /* vec_vmulouh */
4579*344a7f5eSAndroid Build Coastguard Worker 
4580*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vmulouh(vector unsigned short __a,vector unsigned short __b)4581*344a7f5eSAndroid Build Coastguard Worker vec_vmulouh(vector unsigned short __a, vector unsigned short __b) {
4582*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
4583*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmuleuh(__a, __b);
4584*344a7f5eSAndroid Build Coastguard Worker #else
4585*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vmulouh(__a, __b);
4586*344a7f5eSAndroid Build Coastguard Worker #endif
4587*344a7f5eSAndroid Build Coastguard Worker }
4588*344a7f5eSAndroid Build Coastguard Worker 
4589*344a7f5eSAndroid Build Coastguard Worker /*  vec_nand */
4590*344a7f5eSAndroid Build Coastguard Worker 
4591*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
4592*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_nand(vector signed char __a,vector signed char __b)4593*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector signed char __a, vector signed char __b) {
4594*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4595*344a7f5eSAndroid Build Coastguard Worker }
4596*344a7f5eSAndroid Build Coastguard Worker 
4597*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_nand(vector signed char __a,vector bool char __b)4598*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector signed char __a, vector bool char __b) {
4599*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4600*344a7f5eSAndroid Build Coastguard Worker }
4601*344a7f5eSAndroid Build Coastguard Worker 
4602*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_nand(vector bool char __a,vector signed char __b)4603*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector bool char __a, vector signed char __b) {
4604*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4605*344a7f5eSAndroid Build Coastguard Worker }
4606*344a7f5eSAndroid Build Coastguard Worker 
4607*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_nand(vector unsigned char __a,vector unsigned char __b)4608*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector unsigned char __a, vector unsigned char __b) {
4609*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4610*344a7f5eSAndroid Build Coastguard Worker }
4611*344a7f5eSAndroid Build Coastguard Worker 
4612*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_nand(vector unsigned char __a,vector bool char __b)4613*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector unsigned char __a, vector bool char __b) {
4614*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4615*344a7f5eSAndroid Build Coastguard Worker }
4616*344a7f5eSAndroid Build Coastguard Worker 
4617*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_nand(vector bool char __a,vector unsigned char __b)4618*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector bool char __a, vector unsigned char __b) {
4619*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4620*344a7f5eSAndroid Build Coastguard Worker }
4621*344a7f5eSAndroid Build Coastguard Worker 
vec_nand(vector bool char __a,vector bool char __b)4622*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_nand(vector bool char __a,
4623*344a7f5eSAndroid Build Coastguard Worker                                                          vector bool char __b) {
4624*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4625*344a7f5eSAndroid Build Coastguard Worker }
4626*344a7f5eSAndroid Build Coastguard Worker 
4627*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_nand(vector signed short __a,vector signed short __b)4628*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector signed short __a, vector signed short __b) {
4629*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4630*344a7f5eSAndroid Build Coastguard Worker }
4631*344a7f5eSAndroid Build Coastguard Worker 
4632*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_nand(vector signed short __a,vector bool short __b)4633*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector signed short __a, vector bool short __b) {
4634*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4635*344a7f5eSAndroid Build Coastguard Worker }
4636*344a7f5eSAndroid Build Coastguard Worker 
4637*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_nand(vector bool short __a,vector signed short __b)4638*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector bool short __a, vector signed short __b) {
4639*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4640*344a7f5eSAndroid Build Coastguard Worker }
4641*344a7f5eSAndroid Build Coastguard Worker 
4642*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_nand(vector unsigned short __a,vector unsigned short __b)4643*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector unsigned short __a, vector unsigned short __b) {
4644*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4645*344a7f5eSAndroid Build Coastguard Worker }
4646*344a7f5eSAndroid Build Coastguard Worker 
4647*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_nand(vector unsigned short __a,vector bool short __b)4648*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector unsigned short __a, vector bool short __b) {
4649*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4650*344a7f5eSAndroid Build Coastguard Worker }
4651*344a7f5eSAndroid Build Coastguard Worker 
4652*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_nand(vector bool short __a,vector bool short __b)4653*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector bool short __a, vector bool short __b) {
4654*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4655*344a7f5eSAndroid Build Coastguard Worker }
4656*344a7f5eSAndroid Build Coastguard Worker 
4657*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_nand(vector signed int __a,vector signed int __b)4658*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector signed int __a, vector signed int __b) {
4659*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4660*344a7f5eSAndroid Build Coastguard Worker }
4661*344a7f5eSAndroid Build Coastguard Worker 
vec_nand(vector signed int __a,vector bool int __b)4662*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai vec_nand(vector signed int __a,
4663*344a7f5eSAndroid Build Coastguard Worker                                                           vector bool int __b) {
4664*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4665*344a7f5eSAndroid Build Coastguard Worker }
4666*344a7f5eSAndroid Build Coastguard Worker 
4667*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_nand(vector bool int __a,vector signed int __b)4668*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector bool int __a, vector signed int __b) {
4669*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4670*344a7f5eSAndroid Build Coastguard Worker }
4671*344a7f5eSAndroid Build Coastguard Worker 
4672*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_nand(vector unsigned int __a,vector unsigned int __b)4673*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector unsigned int __a, vector unsigned int __b) {
4674*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4675*344a7f5eSAndroid Build Coastguard Worker }
4676*344a7f5eSAndroid Build Coastguard Worker 
4677*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_nand(vector unsigned int __a,vector bool int __b)4678*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector unsigned int __a, vector bool int __b) {
4679*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4680*344a7f5eSAndroid Build Coastguard Worker }
4681*344a7f5eSAndroid Build Coastguard Worker 
4682*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_nand(vector bool int __a,vector unsigned int __b)4683*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector bool int __a, vector unsigned int __b) {
4684*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4685*344a7f5eSAndroid Build Coastguard Worker }
4686*344a7f5eSAndroid Build Coastguard Worker 
vec_nand(vector bool int __a,vector bool int __b)4687*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_nand(vector bool int __a,
4688*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool int __b) {
4689*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4690*344a7f5eSAndroid Build Coastguard Worker }
4691*344a7f5eSAndroid Build Coastguard Worker 
4692*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_nand(vector signed long long __a,vector signed long long __b)4693*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector signed long long __a, vector signed long long __b) {
4694*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4695*344a7f5eSAndroid Build Coastguard Worker }
4696*344a7f5eSAndroid Build Coastguard Worker 
4697*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_nand(vector signed long long __a,vector bool long long __b)4698*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector signed long long __a, vector bool long long __b) {
4699*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4700*344a7f5eSAndroid Build Coastguard Worker }
4701*344a7f5eSAndroid Build Coastguard Worker 
4702*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_nand(vector bool long long __a,vector signed long long __b)4703*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector bool long long __a, vector signed long long __b) {
4704*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4705*344a7f5eSAndroid Build Coastguard Worker }
4706*344a7f5eSAndroid Build Coastguard Worker 
4707*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_nand(vector unsigned long long __a,vector unsigned long long __b)4708*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector unsigned long long __a, vector unsigned long long __b) {
4709*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4710*344a7f5eSAndroid Build Coastguard Worker }
4711*344a7f5eSAndroid Build Coastguard Worker 
4712*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_nand(vector unsigned long long __a,vector bool long long __b)4713*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector unsigned long long __a, vector bool long long __b) {
4714*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4715*344a7f5eSAndroid Build Coastguard Worker }
4716*344a7f5eSAndroid Build Coastguard Worker 
4717*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_nand(vector bool long long __a,vector unsigned long long __b)4718*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector bool long long __a, vector unsigned long long __b) {
4719*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4720*344a7f5eSAndroid Build Coastguard Worker }
4721*344a7f5eSAndroid Build Coastguard Worker 
4722*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_nand(vector bool long long __a,vector bool long long __b)4723*344a7f5eSAndroid Build Coastguard Worker vec_nand(vector bool long long __a, vector bool long long __b) {
4724*344a7f5eSAndroid Build Coastguard Worker   return ~(__a & __b);
4725*344a7f5eSAndroid Build Coastguard Worker }
4726*344a7f5eSAndroid Build Coastguard Worker 
4727*344a7f5eSAndroid Build Coastguard Worker #endif
4728*344a7f5eSAndroid Build Coastguard Worker 
4729*344a7f5eSAndroid Build Coastguard Worker /* vec_nmadd */
4730*344a7f5eSAndroid Build Coastguard Worker 
4731*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_nmadd(vector float __a,vector float __b,vector float __c)4732*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_nmadd(vector float __a,
4733*344a7f5eSAndroid Build Coastguard Worker                                                       vector float __b,
4734*344a7f5eSAndroid Build Coastguard Worker                                                       vector float __c) {
4735*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvnmaddasp(__a, __b, __c);
4736*344a7f5eSAndroid Build Coastguard Worker }
4737*344a7f5eSAndroid Build Coastguard Worker 
vec_nmadd(vector double __a,vector double __b,vector double __c)4738*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_nmadd(vector double __a,
4739*344a7f5eSAndroid Build Coastguard Worker                                                        vector double __b,
4740*344a7f5eSAndroid Build Coastguard Worker                                                        vector double __c) {
4741*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvnmaddadp(__a, __b, __c);
4742*344a7f5eSAndroid Build Coastguard Worker }
4743*344a7f5eSAndroid Build Coastguard Worker #endif
4744*344a7f5eSAndroid Build Coastguard Worker 
4745*344a7f5eSAndroid Build Coastguard Worker /* vec_nmsub */
4746*344a7f5eSAndroid Build Coastguard Worker 
vec_nmsub(vector float __a,vector float __b,vector float __c)4747*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_nmsub(vector float __a,
4748*344a7f5eSAndroid Build Coastguard Worker                                                       vector float __b,
4749*344a7f5eSAndroid Build Coastguard Worker                                                       vector float __c) {
4750*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
4751*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvnmsubasp(__a, __b, __c);
4752*344a7f5eSAndroid Build Coastguard Worker #else
4753*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vnmsubfp(__a, __b, __c);
4754*344a7f5eSAndroid Build Coastguard Worker #endif
4755*344a7f5eSAndroid Build Coastguard Worker }
4756*344a7f5eSAndroid Build Coastguard Worker 
4757*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_nmsub(vector double __a,vector double __b,vector double __c)4758*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_nmsub(vector double __a,
4759*344a7f5eSAndroid Build Coastguard Worker                                                        vector double __b,
4760*344a7f5eSAndroid Build Coastguard Worker                                                        vector double __c) {
4761*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvnmsubadp(__a, __b, __c);
4762*344a7f5eSAndroid Build Coastguard Worker }
4763*344a7f5eSAndroid Build Coastguard Worker #endif
4764*344a7f5eSAndroid Build Coastguard Worker 
4765*344a7f5eSAndroid Build Coastguard Worker /* vec_vnmsubfp */
4766*344a7f5eSAndroid Build Coastguard Worker 
4767*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vnmsubfp(vector float __a,vector float __b,vector float __c)4768*344a7f5eSAndroid Build Coastguard Worker vec_vnmsubfp(vector float __a, vector float __b, vector float __c) {
4769*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vnmsubfp(__a, __b, __c);
4770*344a7f5eSAndroid Build Coastguard Worker }
4771*344a7f5eSAndroid Build Coastguard Worker 
4772*344a7f5eSAndroid Build Coastguard Worker /* vec_nor */
4773*344a7f5eSAndroid Build Coastguard Worker 
4774*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vnor vec_nor
4775*344a7f5eSAndroid Build Coastguard Worker 
4776*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_nor(vector signed char __a,vector signed char __b)4777*344a7f5eSAndroid Build Coastguard Worker vec_nor(vector signed char __a, vector signed char __b) {
4778*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4779*344a7f5eSAndroid Build Coastguard Worker }
4780*344a7f5eSAndroid Build Coastguard Worker 
4781*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_nor(vector unsigned char __a,vector unsigned char __b)4782*344a7f5eSAndroid Build Coastguard Worker vec_nor(vector unsigned char __a, vector unsigned char __b) {
4783*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4784*344a7f5eSAndroid Build Coastguard Worker }
4785*344a7f5eSAndroid Build Coastguard Worker 
vec_nor(vector bool char __a,vector bool char __b)4786*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_nor(vector bool char __a,
4787*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool char __b) {
4788*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4789*344a7f5eSAndroid Build Coastguard Worker }
4790*344a7f5eSAndroid Build Coastguard Worker 
vec_nor(vector short __a,vector short __b)4791*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_nor(vector short __a,
4792*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
4793*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4794*344a7f5eSAndroid Build Coastguard Worker }
4795*344a7f5eSAndroid Build Coastguard Worker 
4796*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_nor(vector unsigned short __a,vector unsigned short __b)4797*344a7f5eSAndroid Build Coastguard Worker vec_nor(vector unsigned short __a, vector unsigned short __b) {
4798*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4799*344a7f5eSAndroid Build Coastguard Worker }
4800*344a7f5eSAndroid Build Coastguard Worker 
4801*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_nor(vector bool short __a,vector bool short __b)4802*344a7f5eSAndroid Build Coastguard Worker vec_nor(vector bool short __a, vector bool short __b) {
4803*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4804*344a7f5eSAndroid Build Coastguard Worker }
4805*344a7f5eSAndroid Build Coastguard Worker 
vec_nor(vector int __a,vector int __b)4806*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_nor(vector int __a,
4807*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
4808*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4809*344a7f5eSAndroid Build Coastguard Worker }
4810*344a7f5eSAndroid Build Coastguard Worker 
4811*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_nor(vector unsigned int __a,vector unsigned int __b)4812*344a7f5eSAndroid Build Coastguard Worker vec_nor(vector unsigned int __a, vector unsigned int __b) {
4813*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4814*344a7f5eSAndroid Build Coastguard Worker }
4815*344a7f5eSAndroid Build Coastguard Worker 
vec_nor(vector bool int __a,vector bool int __b)4816*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_nor(vector bool int __a,
4817*344a7f5eSAndroid Build Coastguard Worker                                                        vector bool int __b) {
4818*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4819*344a7f5eSAndroid Build Coastguard Worker }
4820*344a7f5eSAndroid Build Coastguard Worker 
vec_nor(vector float __a,vector float __b)4821*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_nor(vector float __a,
4822*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
4823*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
4824*344a7f5eSAndroid Build Coastguard Worker       ~((vector unsigned int)__a | (vector unsigned int)__b);
4825*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
4826*344a7f5eSAndroid Build Coastguard Worker }
4827*344a7f5eSAndroid Build Coastguard Worker 
4828*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_nor(vector double __a,vector double __b)4829*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_nor(vector double __a,
4830*344a7f5eSAndroid Build Coastguard Worker                                                      vector double __b) {
4831*344a7f5eSAndroid Build Coastguard Worker   vector unsigned long long __res =
4832*344a7f5eSAndroid Build Coastguard Worker       ~((vector unsigned long long)__a | (vector unsigned long long)__b);
4833*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__res;
4834*344a7f5eSAndroid Build Coastguard Worker }
4835*344a7f5eSAndroid Build Coastguard Worker #endif
4836*344a7f5eSAndroid Build Coastguard Worker 
4837*344a7f5eSAndroid Build Coastguard Worker /* vec_vnor */
4838*344a7f5eSAndroid Build Coastguard Worker 
4839*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vnor(vector signed char __a,vector signed char __b)4840*344a7f5eSAndroid Build Coastguard Worker vec_vnor(vector signed char __a, vector signed char __b) {
4841*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4842*344a7f5eSAndroid Build Coastguard Worker }
4843*344a7f5eSAndroid Build Coastguard Worker 
4844*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vnor(vector unsigned char __a,vector unsigned char __b)4845*344a7f5eSAndroid Build Coastguard Worker vec_vnor(vector unsigned char __a, vector unsigned char __b) {
4846*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4847*344a7f5eSAndroid Build Coastguard Worker }
4848*344a7f5eSAndroid Build Coastguard Worker 
vec_vnor(vector bool char __a,vector bool char __b)4849*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_vnor(vector bool char __a,
4850*344a7f5eSAndroid Build Coastguard Worker                                                          vector bool char __b) {
4851*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4852*344a7f5eSAndroid Build Coastguard Worker }
4853*344a7f5eSAndroid Build Coastguard Worker 
vec_vnor(vector short __a,vector short __b)4854*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vnor(vector short __a,
4855*344a7f5eSAndroid Build Coastguard Worker                                                      vector short __b) {
4856*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4857*344a7f5eSAndroid Build Coastguard Worker }
4858*344a7f5eSAndroid Build Coastguard Worker 
4859*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vnor(vector unsigned short __a,vector unsigned short __b)4860*344a7f5eSAndroid Build Coastguard Worker vec_vnor(vector unsigned short __a, vector unsigned short __b) {
4861*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4862*344a7f5eSAndroid Build Coastguard Worker }
4863*344a7f5eSAndroid Build Coastguard Worker 
4864*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vnor(vector bool short __a,vector bool short __b)4865*344a7f5eSAndroid Build Coastguard Worker vec_vnor(vector bool short __a, vector bool short __b) {
4866*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4867*344a7f5eSAndroid Build Coastguard Worker }
4868*344a7f5eSAndroid Build Coastguard Worker 
vec_vnor(vector int __a,vector int __b)4869*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vnor(vector int __a,
4870*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b) {
4871*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4872*344a7f5eSAndroid Build Coastguard Worker }
4873*344a7f5eSAndroid Build Coastguard Worker 
4874*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vnor(vector unsigned int __a,vector unsigned int __b)4875*344a7f5eSAndroid Build Coastguard Worker vec_vnor(vector unsigned int __a, vector unsigned int __b) {
4876*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4877*344a7f5eSAndroid Build Coastguard Worker }
4878*344a7f5eSAndroid Build Coastguard Worker 
vec_vnor(vector bool int __a,vector bool int __b)4879*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_vnor(vector bool int __a,
4880*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool int __b) {
4881*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4882*344a7f5eSAndroid Build Coastguard Worker }
4883*344a7f5eSAndroid Build Coastguard Worker 
vec_vnor(vector float __a,vector float __b)4884*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vnor(vector float __a,
4885*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b) {
4886*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
4887*344a7f5eSAndroid Build Coastguard Worker       ~((vector unsigned int)__a | (vector unsigned int)__b);
4888*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
4889*344a7f5eSAndroid Build Coastguard Worker }
4890*344a7f5eSAndroid Build Coastguard Worker 
4891*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
4892*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_nor(vector signed long long __a,vector signed long long __b)4893*344a7f5eSAndroid Build Coastguard Worker vec_nor(vector signed long long __a, vector signed long long __b) {
4894*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4895*344a7f5eSAndroid Build Coastguard Worker }
4896*344a7f5eSAndroid Build Coastguard Worker 
4897*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_nor(vector unsigned long long __a,vector unsigned long long __b)4898*344a7f5eSAndroid Build Coastguard Worker vec_nor(vector unsigned long long __a, vector unsigned long long __b) {
4899*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4900*344a7f5eSAndroid Build Coastguard Worker }
4901*344a7f5eSAndroid Build Coastguard Worker 
4902*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_nor(vector bool long long __a,vector bool long long __b)4903*344a7f5eSAndroid Build Coastguard Worker vec_nor(vector bool long long __a, vector bool long long __b) {
4904*344a7f5eSAndroid Build Coastguard Worker   return ~(__a | __b);
4905*344a7f5eSAndroid Build Coastguard Worker }
4906*344a7f5eSAndroid Build Coastguard Worker #endif
4907*344a7f5eSAndroid Build Coastguard Worker 
4908*344a7f5eSAndroid Build Coastguard Worker /* vec_or */
4909*344a7f5eSAndroid Build Coastguard Worker 
4910*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vor vec_or
4911*344a7f5eSAndroid Build Coastguard Worker 
4912*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_or(vector signed char __a,vector signed char __b)4913*344a7f5eSAndroid Build Coastguard Worker vec_or(vector signed char __a, vector signed char __b) {
4914*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
4915*344a7f5eSAndroid Build Coastguard Worker }
4916*344a7f5eSAndroid Build Coastguard Worker 
4917*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_or(vector bool char __a,vector signed char __b)4918*344a7f5eSAndroid Build Coastguard Worker vec_or(vector bool char __a, vector signed char __b) {
4919*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__a | __b;
4920*344a7f5eSAndroid Build Coastguard Worker }
4921*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector signed char __a,vector bool char __b)4922*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai vec_or(vector signed char __a,
4923*344a7f5eSAndroid Build Coastguard Worker                                                          vector bool char __b) {
4924*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector signed char)__b;
4925*344a7f5eSAndroid Build Coastguard Worker }
4926*344a7f5eSAndroid Build Coastguard Worker 
4927*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_or(vector unsigned char __a,vector unsigned char __b)4928*344a7f5eSAndroid Build Coastguard Worker vec_or(vector unsigned char __a, vector unsigned char __b) {
4929*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
4930*344a7f5eSAndroid Build Coastguard Worker }
4931*344a7f5eSAndroid Build Coastguard Worker 
4932*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_or(vector bool char __a,vector unsigned char __b)4933*344a7f5eSAndroid Build Coastguard Worker vec_or(vector bool char __a, vector unsigned char __b) {
4934*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__a | __b;
4935*344a7f5eSAndroid Build Coastguard Worker }
4936*344a7f5eSAndroid Build Coastguard Worker 
4937*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_or(vector unsigned char __a,vector bool char __b)4938*344a7f5eSAndroid Build Coastguard Worker vec_or(vector unsigned char __a, vector bool char __b) {
4939*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector unsigned char)__b;
4940*344a7f5eSAndroid Build Coastguard Worker }
4941*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector bool char __a,vector bool char __b)4942*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_or(vector bool char __a,
4943*344a7f5eSAndroid Build Coastguard Worker                                                        vector bool char __b) {
4944*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
4945*344a7f5eSAndroid Build Coastguard Worker }
4946*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector short __a,vector short __b)4947*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
4948*344a7f5eSAndroid Build Coastguard Worker                                                    vector short __b) {
4949*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
4950*344a7f5eSAndroid Build Coastguard Worker }
4951*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector bool short __a,vector short __b)4952*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_or(vector bool short __a,
4953*344a7f5eSAndroid Build Coastguard Worker                                                    vector short __b) {
4954*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a | __b;
4955*344a7f5eSAndroid Build Coastguard Worker }
4956*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector short __a,vector bool short __b)4957*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_or(vector short __a,
4958*344a7f5eSAndroid Build Coastguard Worker                                                    vector bool short __b) {
4959*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector short)__b;
4960*344a7f5eSAndroid Build Coastguard Worker }
4961*344a7f5eSAndroid Build Coastguard Worker 
4962*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_or(vector unsigned short __a,vector unsigned short __b)4963*344a7f5eSAndroid Build Coastguard Worker vec_or(vector unsigned short __a, vector unsigned short __b) {
4964*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
4965*344a7f5eSAndroid Build Coastguard Worker }
4966*344a7f5eSAndroid Build Coastguard Worker 
4967*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_or(vector bool short __a,vector unsigned short __b)4968*344a7f5eSAndroid Build Coastguard Worker vec_or(vector bool short __a, vector unsigned short __b) {
4969*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__a | __b;
4970*344a7f5eSAndroid Build Coastguard Worker }
4971*344a7f5eSAndroid Build Coastguard Worker 
4972*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_or(vector unsigned short __a,vector bool short __b)4973*344a7f5eSAndroid Build Coastguard Worker vec_or(vector unsigned short __a, vector bool short __b) {
4974*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector unsigned short)__b;
4975*344a7f5eSAndroid Build Coastguard Worker }
4976*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector bool short __a,vector bool short __b)4977*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai vec_or(vector bool short __a,
4978*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool short __b) {
4979*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
4980*344a7f5eSAndroid Build Coastguard Worker }
4981*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector int __a,vector int __b)4982*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
4983*344a7f5eSAndroid Build Coastguard Worker                                                  vector int __b) {
4984*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
4985*344a7f5eSAndroid Build Coastguard Worker }
4986*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector bool int __a,vector int __b)4987*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_or(vector bool int __a,
4988*344a7f5eSAndroid Build Coastguard Worker                                                  vector int __b) {
4989*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__a | __b;
4990*344a7f5eSAndroid Build Coastguard Worker }
4991*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector int __a,vector bool int __b)4992*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_or(vector int __a,
4993*344a7f5eSAndroid Build Coastguard Worker                                                  vector bool int __b) {
4994*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector int)__b;
4995*344a7f5eSAndroid Build Coastguard Worker }
4996*344a7f5eSAndroid Build Coastguard Worker 
4997*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_or(vector unsigned int __a,vector unsigned int __b)4998*344a7f5eSAndroid Build Coastguard Worker vec_or(vector unsigned int __a, vector unsigned int __b) {
4999*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5000*344a7f5eSAndroid Build Coastguard Worker }
5001*344a7f5eSAndroid Build Coastguard Worker 
5002*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_or(vector bool int __a,vector unsigned int __b)5003*344a7f5eSAndroid Build Coastguard Worker vec_or(vector bool int __a, vector unsigned int __b) {
5004*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__a | __b;
5005*344a7f5eSAndroid Build Coastguard Worker }
5006*344a7f5eSAndroid Build Coastguard Worker 
5007*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_or(vector unsigned int __a,vector bool int __b)5008*344a7f5eSAndroid Build Coastguard Worker vec_or(vector unsigned int __a, vector bool int __b) {
5009*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector unsigned int)__b;
5010*344a7f5eSAndroid Build Coastguard Worker }
5011*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector bool int __a,vector bool int __b)5012*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_or(vector bool int __a,
5013*344a7f5eSAndroid Build Coastguard Worker                                                       vector bool int __b) {
5014*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5015*344a7f5eSAndroid Build Coastguard Worker }
5016*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector float __a,vector float __b)5017*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
5018*344a7f5eSAndroid Build Coastguard Worker                                                    vector float __b) {
5019*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
5020*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a | (vector unsigned int)__b;
5021*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
5022*344a7f5eSAndroid Build Coastguard Worker }
5023*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector bool int __a,vector float __b)5024*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_or(vector bool int __a,
5025*344a7f5eSAndroid Build Coastguard Worker                                                    vector float __b) {
5026*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
5027*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a | (vector unsigned int)__b;
5028*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
5029*344a7f5eSAndroid Build Coastguard Worker }
5030*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector float __a,vector bool int __b)5031*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_or(vector float __a,
5032*344a7f5eSAndroid Build Coastguard Worker                                                    vector bool int __b) {
5033*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
5034*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a | (vector unsigned int)__b;
5035*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
5036*344a7f5eSAndroid Build Coastguard Worker }
5037*344a7f5eSAndroid Build Coastguard Worker 
5038*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_or(vector bool long long __a,vector double __b)5039*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_or(vector bool long long __a,
5040*344a7f5eSAndroid Build Coastguard Worker                                                     vector double __b) {
5041*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__a | (vector unsigned long long)__b;
5042*344a7f5eSAndroid Build Coastguard Worker }
5043*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector double __a,vector bool long long __b)5044*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
5045*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool long long __b) {
5046*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__a | (vector unsigned long long)__b;
5047*344a7f5eSAndroid Build Coastguard Worker }
5048*344a7f5eSAndroid Build Coastguard Worker 
vec_or(vector double __a,vector double __b)5049*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_or(vector double __a,
5050*344a7f5eSAndroid Build Coastguard Worker                                                     vector double __b) {
5051*344a7f5eSAndroid Build Coastguard Worker   vector unsigned long long __res =
5052*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned long long)__a | (vector unsigned long long)__b;
5053*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__res;
5054*344a7f5eSAndroid Build Coastguard Worker }
5055*344a7f5eSAndroid Build Coastguard Worker 
5056*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_or(vector signed long long __a,vector signed long long __b)5057*344a7f5eSAndroid Build Coastguard Worker vec_or(vector signed long long __a, vector signed long long __b) {
5058*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5059*344a7f5eSAndroid Build Coastguard Worker }
5060*344a7f5eSAndroid Build Coastguard Worker 
5061*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_or(vector bool long long __a,vector signed long long __b)5062*344a7f5eSAndroid Build Coastguard Worker vec_or(vector bool long long __a, vector signed long long __b) {
5063*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__a | __b;
5064*344a7f5eSAndroid Build Coastguard Worker }
5065*344a7f5eSAndroid Build Coastguard Worker 
5066*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_or(vector signed long long __a,vector bool long long __b)5067*344a7f5eSAndroid Build Coastguard Worker vec_or(vector signed long long __a, vector bool long long __b) {
5068*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector signed long long)__b;
5069*344a7f5eSAndroid Build Coastguard Worker }
5070*344a7f5eSAndroid Build Coastguard Worker 
5071*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_or(vector unsigned long long __a,vector unsigned long long __b)5072*344a7f5eSAndroid Build Coastguard Worker vec_or(vector unsigned long long __a, vector unsigned long long __b) {
5073*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5074*344a7f5eSAndroid Build Coastguard Worker }
5075*344a7f5eSAndroid Build Coastguard Worker 
5076*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_or(vector bool long long __a,vector unsigned long long __b)5077*344a7f5eSAndroid Build Coastguard Worker vec_or(vector bool long long __a, vector unsigned long long __b) {
5078*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__a | __b;
5079*344a7f5eSAndroid Build Coastguard Worker }
5080*344a7f5eSAndroid Build Coastguard Worker 
5081*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_or(vector unsigned long long __a,vector bool long long __b)5082*344a7f5eSAndroid Build Coastguard Worker vec_or(vector unsigned long long __a, vector bool long long __b) {
5083*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector unsigned long long)__b;
5084*344a7f5eSAndroid Build Coastguard Worker }
5085*344a7f5eSAndroid Build Coastguard Worker 
5086*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_or(vector bool long long __a,vector bool long long __b)5087*344a7f5eSAndroid Build Coastguard Worker vec_or(vector bool long long __a, vector bool long long __b) {
5088*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5089*344a7f5eSAndroid Build Coastguard Worker }
5090*344a7f5eSAndroid Build Coastguard Worker #endif
5091*344a7f5eSAndroid Build Coastguard Worker 
5092*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
5093*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_orc(vector signed char __a,vector signed char __b)5094*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector signed char __a, vector signed char __b) {
5095*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5096*344a7f5eSAndroid Build Coastguard Worker }
5097*344a7f5eSAndroid Build Coastguard Worker 
5098*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_orc(vector signed char __a,vector bool char __b)5099*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector signed char __a, vector bool char __b) {
5100*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5101*344a7f5eSAndroid Build Coastguard Worker }
5102*344a7f5eSAndroid Build Coastguard Worker 
5103*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_orc(vector bool char __a,vector signed char __b)5104*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector bool char __a, vector signed char __b) {
5105*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5106*344a7f5eSAndroid Build Coastguard Worker }
5107*344a7f5eSAndroid Build Coastguard Worker 
5108*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_orc(vector unsigned char __a,vector unsigned char __b)5109*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector unsigned char __a, vector unsigned char __b) {
5110*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5111*344a7f5eSAndroid Build Coastguard Worker }
5112*344a7f5eSAndroid Build Coastguard Worker 
5113*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_orc(vector unsigned char __a,vector bool char __b)5114*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector unsigned char __a, vector bool char __b) {
5115*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5116*344a7f5eSAndroid Build Coastguard Worker }
5117*344a7f5eSAndroid Build Coastguard Worker 
5118*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_orc(vector bool char __a,vector unsigned char __b)5119*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector bool char __a, vector unsigned char __b) {
5120*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5121*344a7f5eSAndroid Build Coastguard Worker }
5122*344a7f5eSAndroid Build Coastguard Worker 
vec_orc(vector bool char __a,vector bool char __b)5123*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_orc(vector bool char __a,
5124*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool char __b) {
5125*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5126*344a7f5eSAndroid Build Coastguard Worker }
5127*344a7f5eSAndroid Build Coastguard Worker 
5128*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_orc(vector signed short __a,vector signed short __b)5129*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector signed short __a, vector signed short __b) {
5130*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5131*344a7f5eSAndroid Build Coastguard Worker }
5132*344a7f5eSAndroid Build Coastguard Worker 
5133*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_orc(vector signed short __a,vector bool short __b)5134*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector signed short __a, vector bool short __b) {
5135*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5136*344a7f5eSAndroid Build Coastguard Worker }
5137*344a7f5eSAndroid Build Coastguard Worker 
5138*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_orc(vector bool short __a,vector signed short __b)5139*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector bool short __a, vector signed short __b) {
5140*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5141*344a7f5eSAndroid Build Coastguard Worker }
5142*344a7f5eSAndroid Build Coastguard Worker 
5143*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_orc(vector unsigned short __a,vector unsigned short __b)5144*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector unsigned short __a, vector unsigned short __b) {
5145*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5146*344a7f5eSAndroid Build Coastguard Worker }
5147*344a7f5eSAndroid Build Coastguard Worker 
5148*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_orc(vector unsigned short __a,vector bool short __b)5149*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector unsigned short __a, vector bool short __b) {
5150*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5151*344a7f5eSAndroid Build Coastguard Worker }
5152*344a7f5eSAndroid Build Coastguard Worker 
5153*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_orc(vector bool short __a,vector unsigned short __b)5154*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector bool short __a, vector unsigned short __b) {
5155*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5156*344a7f5eSAndroid Build Coastguard Worker }
5157*344a7f5eSAndroid Build Coastguard Worker 
5158*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_orc(vector bool short __a,vector bool short __b)5159*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector bool short __a, vector bool short __b) {
5160*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5161*344a7f5eSAndroid Build Coastguard Worker }
5162*344a7f5eSAndroid Build Coastguard Worker 
5163*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_orc(vector signed int __a,vector signed int __b)5164*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector signed int __a, vector signed int __b) {
5165*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5166*344a7f5eSAndroid Build Coastguard Worker }
5167*344a7f5eSAndroid Build Coastguard Worker 
vec_orc(vector signed int __a,vector bool int __b)5168*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai vec_orc(vector signed int __a,
5169*344a7f5eSAndroid Build Coastguard Worker                                                          vector bool int __b) {
5170*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5171*344a7f5eSAndroid Build Coastguard Worker }
5172*344a7f5eSAndroid Build Coastguard Worker 
5173*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_orc(vector bool int __a,vector signed int __b)5174*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector bool int __a, vector signed int __b) {
5175*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5176*344a7f5eSAndroid Build Coastguard Worker }
5177*344a7f5eSAndroid Build Coastguard Worker 
5178*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_orc(vector unsigned int __a,vector unsigned int __b)5179*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector unsigned int __a, vector unsigned int __b) {
5180*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5181*344a7f5eSAndroid Build Coastguard Worker }
5182*344a7f5eSAndroid Build Coastguard Worker 
5183*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_orc(vector unsigned int __a,vector bool int __b)5184*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector unsigned int __a, vector bool int __b) {
5185*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5186*344a7f5eSAndroid Build Coastguard Worker }
5187*344a7f5eSAndroid Build Coastguard Worker 
5188*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_orc(vector bool int __a,vector unsigned int __b)5189*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector bool int __a, vector unsigned int __b) {
5190*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5191*344a7f5eSAndroid Build Coastguard Worker }
5192*344a7f5eSAndroid Build Coastguard Worker 
vec_orc(vector bool int __a,vector bool int __b)5193*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_orc(vector bool int __a,
5194*344a7f5eSAndroid Build Coastguard Worker                                                        vector bool int __b) {
5195*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5196*344a7f5eSAndroid Build Coastguard Worker }
5197*344a7f5eSAndroid Build Coastguard Worker 
5198*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_orc(vector signed long long __a,vector signed long long __b)5199*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector signed long long __a, vector signed long long __b) {
5200*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5201*344a7f5eSAndroid Build Coastguard Worker }
5202*344a7f5eSAndroid Build Coastguard Worker 
5203*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_orc(vector signed long long __a,vector bool long long __b)5204*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector signed long long __a, vector bool long long __b) {
5205*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5206*344a7f5eSAndroid Build Coastguard Worker }
5207*344a7f5eSAndroid Build Coastguard Worker 
5208*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_orc(vector bool long long __a,vector signed long long __b)5209*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector bool long long __a, vector signed long long __b) {
5210*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5211*344a7f5eSAndroid Build Coastguard Worker }
5212*344a7f5eSAndroid Build Coastguard Worker 
5213*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_orc(vector unsigned long long __a,vector unsigned long long __b)5214*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector unsigned long long __a, vector unsigned long long __b) {
5215*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5216*344a7f5eSAndroid Build Coastguard Worker }
5217*344a7f5eSAndroid Build Coastguard Worker 
5218*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_orc(vector unsigned long long __a,vector bool long long __b)5219*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector unsigned long long __a, vector bool long long __b) {
5220*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5221*344a7f5eSAndroid Build Coastguard Worker }
5222*344a7f5eSAndroid Build Coastguard Worker 
5223*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_orc(vector bool long long __a,vector unsigned long long __b)5224*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector bool long long __a, vector unsigned long long __b) {
5225*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5226*344a7f5eSAndroid Build Coastguard Worker }
5227*344a7f5eSAndroid Build Coastguard Worker 
5228*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_orc(vector bool long long __a,vector bool long long __b)5229*344a7f5eSAndroid Build Coastguard Worker vec_orc(vector bool long long __a, vector bool long long __b) {
5230*344a7f5eSAndroid Build Coastguard Worker   return __a | ~__b;
5231*344a7f5eSAndroid Build Coastguard Worker }
5232*344a7f5eSAndroid Build Coastguard Worker #endif
5233*344a7f5eSAndroid Build Coastguard Worker 
5234*344a7f5eSAndroid Build Coastguard Worker /* vec_vor */
5235*344a7f5eSAndroid Build Coastguard Worker 
5236*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vor(vector signed char __a,vector signed char __b)5237*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector signed char __a, vector signed char __b) {
5238*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5239*344a7f5eSAndroid Build Coastguard Worker }
5240*344a7f5eSAndroid Build Coastguard Worker 
5241*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vor(vector bool char __a,vector signed char __b)5242*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector bool char __a, vector signed char __b) {
5243*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__a | __b;
5244*344a7f5eSAndroid Build Coastguard Worker }
5245*344a7f5eSAndroid Build Coastguard Worker 
5246*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vor(vector signed char __a,vector bool char __b)5247*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector signed char __a, vector bool char __b) {
5248*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector signed char)__b;
5249*344a7f5eSAndroid Build Coastguard Worker }
5250*344a7f5eSAndroid Build Coastguard Worker 
5251*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vor(vector unsigned char __a,vector unsigned char __b)5252*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector unsigned char __a, vector unsigned char __b) {
5253*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5254*344a7f5eSAndroid Build Coastguard Worker }
5255*344a7f5eSAndroid Build Coastguard Worker 
5256*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vor(vector bool char __a,vector unsigned char __b)5257*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector bool char __a, vector unsigned char __b) {
5258*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__a | __b;
5259*344a7f5eSAndroid Build Coastguard Worker }
5260*344a7f5eSAndroid Build Coastguard Worker 
5261*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vor(vector unsigned char __a,vector bool char __b)5262*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector unsigned char __a, vector bool char __b) {
5263*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector unsigned char)__b;
5264*344a7f5eSAndroid Build Coastguard Worker }
5265*344a7f5eSAndroid Build Coastguard Worker 
vec_vor(vector bool char __a,vector bool char __b)5266*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_vor(vector bool char __a,
5267*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool char __b) {
5268*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5269*344a7f5eSAndroid Build Coastguard Worker }
5270*344a7f5eSAndroid Build Coastguard Worker 
vec_vor(vector short __a,vector short __b)5271*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
5272*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
5273*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5274*344a7f5eSAndroid Build Coastguard Worker }
5275*344a7f5eSAndroid Build Coastguard Worker 
vec_vor(vector bool short __a,vector short __b)5276*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vor(vector bool short __a,
5277*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
5278*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a | __b;
5279*344a7f5eSAndroid Build Coastguard Worker }
5280*344a7f5eSAndroid Build Coastguard Worker 
vec_vor(vector short __a,vector bool short __b)5281*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vor(vector short __a,
5282*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool short __b) {
5283*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector short)__b;
5284*344a7f5eSAndroid Build Coastguard Worker }
5285*344a7f5eSAndroid Build Coastguard Worker 
5286*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vor(vector unsigned short __a,vector unsigned short __b)5287*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector unsigned short __a, vector unsigned short __b) {
5288*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5289*344a7f5eSAndroid Build Coastguard Worker }
5290*344a7f5eSAndroid Build Coastguard Worker 
5291*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vor(vector bool short __a,vector unsigned short __b)5292*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector bool short __a, vector unsigned short __b) {
5293*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__a | __b;
5294*344a7f5eSAndroid Build Coastguard Worker }
5295*344a7f5eSAndroid Build Coastguard Worker 
5296*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vor(vector unsigned short __a,vector bool short __b)5297*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector unsigned short __a, vector bool short __b) {
5298*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector unsigned short)__b;
5299*344a7f5eSAndroid Build Coastguard Worker }
5300*344a7f5eSAndroid Build Coastguard Worker 
5301*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vor(vector bool short __a,vector bool short __b)5302*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector bool short __a, vector bool short __b) {
5303*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5304*344a7f5eSAndroid Build Coastguard Worker }
5305*344a7f5eSAndroid Build Coastguard Worker 
vec_vor(vector int __a,vector int __b)5306*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
5307*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
5308*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5309*344a7f5eSAndroid Build Coastguard Worker }
5310*344a7f5eSAndroid Build Coastguard Worker 
vec_vor(vector bool int __a,vector int __b)5311*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vor(vector bool int __a,
5312*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
5313*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__a | __b;
5314*344a7f5eSAndroid Build Coastguard Worker }
5315*344a7f5eSAndroid Build Coastguard Worker 
vec_vor(vector int __a,vector bool int __b)5316*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vor(vector int __a,
5317*344a7f5eSAndroid Build Coastguard Worker                                                   vector bool int __b) {
5318*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector int)__b;
5319*344a7f5eSAndroid Build Coastguard Worker }
5320*344a7f5eSAndroid Build Coastguard Worker 
5321*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vor(vector unsigned int __a,vector unsigned int __b)5322*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector unsigned int __a, vector unsigned int __b) {
5323*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5324*344a7f5eSAndroid Build Coastguard Worker }
5325*344a7f5eSAndroid Build Coastguard Worker 
5326*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vor(vector bool int __a,vector unsigned int __b)5327*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector bool int __a, vector unsigned int __b) {
5328*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__a | __b;
5329*344a7f5eSAndroid Build Coastguard Worker }
5330*344a7f5eSAndroid Build Coastguard Worker 
5331*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vor(vector unsigned int __a,vector bool int __b)5332*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector unsigned int __a, vector bool int __b) {
5333*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector unsigned int)__b;
5334*344a7f5eSAndroid Build Coastguard Worker }
5335*344a7f5eSAndroid Build Coastguard Worker 
vec_vor(vector bool int __a,vector bool int __b)5336*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_vor(vector bool int __a,
5337*344a7f5eSAndroid Build Coastguard Worker                                                        vector bool int __b) {
5338*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5339*344a7f5eSAndroid Build Coastguard Worker }
5340*344a7f5eSAndroid Build Coastguard Worker 
vec_vor(vector float __a,vector float __b)5341*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
5342*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
5343*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
5344*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a | (vector unsigned int)__b;
5345*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
5346*344a7f5eSAndroid Build Coastguard Worker }
5347*344a7f5eSAndroid Build Coastguard Worker 
vec_vor(vector bool int __a,vector float __b)5348*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vor(vector bool int __a,
5349*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
5350*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
5351*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a | (vector unsigned int)__b;
5352*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
5353*344a7f5eSAndroid Build Coastguard Worker }
5354*344a7f5eSAndroid Build Coastguard Worker 
vec_vor(vector float __a,vector bool int __b)5355*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vor(vector float __a,
5356*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool int __b) {
5357*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
5358*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a | (vector unsigned int)__b;
5359*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
5360*344a7f5eSAndroid Build Coastguard Worker }
5361*344a7f5eSAndroid Build Coastguard Worker 
5362*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
5363*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vor(vector signed long long __a,vector signed long long __b)5364*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector signed long long __a, vector signed long long __b) {
5365*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5366*344a7f5eSAndroid Build Coastguard Worker }
5367*344a7f5eSAndroid Build Coastguard Worker 
5368*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vor(vector bool long long __a,vector signed long long __b)5369*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector bool long long __a, vector signed long long __b) {
5370*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__a | __b;
5371*344a7f5eSAndroid Build Coastguard Worker }
5372*344a7f5eSAndroid Build Coastguard Worker 
5373*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vor(vector signed long long __a,vector bool long long __b)5374*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector signed long long __a, vector bool long long __b) {
5375*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector signed long long)__b;
5376*344a7f5eSAndroid Build Coastguard Worker }
5377*344a7f5eSAndroid Build Coastguard Worker 
5378*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vor(vector unsigned long long __a,vector unsigned long long __b)5379*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector unsigned long long __a, vector unsigned long long __b) {
5380*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5381*344a7f5eSAndroid Build Coastguard Worker }
5382*344a7f5eSAndroid Build Coastguard Worker 
5383*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vor(vector bool long long __a,vector unsigned long long __b)5384*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector bool long long __a, vector unsigned long long __b) {
5385*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__a | __b;
5386*344a7f5eSAndroid Build Coastguard Worker }
5387*344a7f5eSAndroid Build Coastguard Worker 
5388*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vor(vector unsigned long long __a,vector bool long long __b)5389*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector unsigned long long __a, vector bool long long __b) {
5390*344a7f5eSAndroid Build Coastguard Worker   return __a | (vector unsigned long long)__b;
5391*344a7f5eSAndroid Build Coastguard Worker }
5392*344a7f5eSAndroid Build Coastguard Worker 
5393*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_vor(vector bool long long __a,vector bool long long __b)5394*344a7f5eSAndroid Build Coastguard Worker vec_vor(vector bool long long __a, vector bool long long __b) {
5395*344a7f5eSAndroid Build Coastguard Worker   return __a | __b;
5396*344a7f5eSAndroid Build Coastguard Worker }
5397*344a7f5eSAndroid Build Coastguard Worker #endif
5398*344a7f5eSAndroid Build Coastguard Worker 
5399*344a7f5eSAndroid Build Coastguard Worker /* vec_pack */
5400*344a7f5eSAndroid Build Coastguard Worker 
5401*344a7f5eSAndroid Build Coastguard Worker /* The various vector pack instructions have a big-endian bias, so for
5402*344a7f5eSAndroid Build Coastguard Worker    little endian we must handle reversed element numbering.  */
5403*344a7f5eSAndroid Build Coastguard Worker 
5404*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_pack(vector signed short __a,vector signed short __b)5405*344a7f5eSAndroid Build Coastguard Worker vec_pack(vector signed short __a, vector signed short __b) {
5406*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5407*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)vec_perm(
5408*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5409*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5410*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5411*344a7f5eSAndroid Build Coastguard Worker #else
5412*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)vec_perm(
5413*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5414*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5415*344a7f5eSAndroid Build Coastguard Worker                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5416*344a7f5eSAndroid Build Coastguard Worker #endif
5417*344a7f5eSAndroid Build Coastguard Worker }
5418*344a7f5eSAndroid Build Coastguard Worker 
5419*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_pack(vector unsigned short __a,vector unsigned short __b)5420*344a7f5eSAndroid Build Coastguard Worker vec_pack(vector unsigned short __a, vector unsigned short __b) {
5421*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5422*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)vec_perm(
5423*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5424*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5425*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5426*344a7f5eSAndroid Build Coastguard Worker #else
5427*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)vec_perm(
5428*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5429*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5430*344a7f5eSAndroid Build Coastguard Worker                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5431*344a7f5eSAndroid Build Coastguard Worker #endif
5432*344a7f5eSAndroid Build Coastguard Worker }
5433*344a7f5eSAndroid Build Coastguard Worker 
5434*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_pack(vector bool short __a,vector bool short __b)5435*344a7f5eSAndroid Build Coastguard Worker vec_pack(vector bool short __a, vector bool short __b) {
5436*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5437*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)vec_perm(
5438*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5439*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5440*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5441*344a7f5eSAndroid Build Coastguard Worker #else
5442*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)vec_perm(
5443*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5444*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5445*344a7f5eSAndroid Build Coastguard Worker                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5446*344a7f5eSAndroid Build Coastguard Worker #endif
5447*344a7f5eSAndroid Build Coastguard Worker }
5448*344a7f5eSAndroid Build Coastguard Worker 
vec_pack(vector int __a,vector int __b)5449*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_pack(vector int __a,
5450*344a7f5eSAndroid Build Coastguard Worker                                                      vector int __b) {
5451*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5452*344a7f5eSAndroid Build Coastguard Worker   return (vector short)vec_perm(
5453*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5454*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5455*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5456*344a7f5eSAndroid Build Coastguard Worker #else
5457*344a7f5eSAndroid Build Coastguard Worker   return (vector short)vec_perm(
5458*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5459*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5460*344a7f5eSAndroid Build Coastguard Worker                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5461*344a7f5eSAndroid Build Coastguard Worker #endif
5462*344a7f5eSAndroid Build Coastguard Worker }
5463*344a7f5eSAndroid Build Coastguard Worker 
5464*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_pack(vector unsigned int __a,vector unsigned int __b)5465*344a7f5eSAndroid Build Coastguard Worker vec_pack(vector unsigned int __a, vector unsigned int __b) {
5466*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5467*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)vec_perm(
5468*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5469*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5470*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5471*344a7f5eSAndroid Build Coastguard Worker #else
5472*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)vec_perm(
5473*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5474*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5475*344a7f5eSAndroid Build Coastguard Worker                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5476*344a7f5eSAndroid Build Coastguard Worker #endif
5477*344a7f5eSAndroid Build Coastguard Worker }
5478*344a7f5eSAndroid Build Coastguard Worker 
vec_pack(vector bool int __a,vector bool int __b)5479*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai vec_pack(vector bool int __a,
5480*344a7f5eSAndroid Build Coastguard Worker                                                           vector bool int __b) {
5481*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5482*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)vec_perm(
5483*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5484*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5485*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5486*344a7f5eSAndroid Build Coastguard Worker #else
5487*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)vec_perm(
5488*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5489*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5490*344a7f5eSAndroid Build Coastguard Worker                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5491*344a7f5eSAndroid Build Coastguard Worker #endif
5492*344a7f5eSAndroid Build Coastguard Worker }
5493*344a7f5eSAndroid Build Coastguard Worker 
5494*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
5495*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_pack(vector signed long long __a,vector signed long long __b)5496*344a7f5eSAndroid Build Coastguard Worker vec_pack(vector signed long long __a, vector signed long long __b) {
5497*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5498*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)vec_perm(
5499*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5500*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5501*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5502*344a7f5eSAndroid Build Coastguard Worker #else
5503*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)vec_perm(
5504*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5505*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5506*344a7f5eSAndroid Build Coastguard Worker                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5507*344a7f5eSAndroid Build Coastguard Worker #endif
5508*344a7f5eSAndroid Build Coastguard Worker }
5509*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_pack(vector unsigned long long __a,vector unsigned long long __b)5510*344a7f5eSAndroid Build Coastguard Worker vec_pack(vector unsigned long long __a, vector unsigned long long __b) {
5511*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5512*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)vec_perm(
5513*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5514*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5515*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5516*344a7f5eSAndroid Build Coastguard Worker #else
5517*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)vec_perm(
5518*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5519*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5520*344a7f5eSAndroid Build Coastguard Worker                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5521*344a7f5eSAndroid Build Coastguard Worker #endif
5522*344a7f5eSAndroid Build Coastguard Worker }
5523*344a7f5eSAndroid Build Coastguard Worker 
5524*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_pack(vector bool long long __a,vector bool long long __b)5525*344a7f5eSAndroid Build Coastguard Worker vec_pack(vector bool long long __a, vector bool long long __b) {
5526*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5527*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)vec_perm(
5528*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5529*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5530*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5531*344a7f5eSAndroid Build Coastguard Worker #else
5532*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)vec_perm(
5533*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5534*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5535*344a7f5eSAndroid Build Coastguard Worker                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5536*344a7f5eSAndroid Build Coastguard Worker #endif
5537*344a7f5eSAndroid Build Coastguard Worker }
5538*344a7f5eSAndroid Build Coastguard Worker 
5539*344a7f5eSAndroid Build Coastguard Worker #endif
5540*344a7f5eSAndroid Build Coastguard Worker 
5541*344a7f5eSAndroid Build Coastguard Worker /* vec_vpkuhum */
5542*344a7f5eSAndroid Build Coastguard Worker 
5543*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vpkuhum vec_vpkuhum
5544*344a7f5eSAndroid Build Coastguard Worker 
5545*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vpkuhum(vector signed short __a,vector signed short __b)5546*344a7f5eSAndroid Build Coastguard Worker vec_vpkuhum(vector signed short __a, vector signed short __b) {
5547*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5548*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)vec_perm(
5549*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5550*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5551*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5552*344a7f5eSAndroid Build Coastguard Worker #else
5553*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)vec_perm(
5554*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5555*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5556*344a7f5eSAndroid Build Coastguard Worker                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5557*344a7f5eSAndroid Build Coastguard Worker #endif
5558*344a7f5eSAndroid Build Coastguard Worker }
5559*344a7f5eSAndroid Build Coastguard Worker 
5560*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vpkuhum(vector unsigned short __a,vector unsigned short __b)5561*344a7f5eSAndroid Build Coastguard Worker vec_vpkuhum(vector unsigned short __a, vector unsigned short __b) {
5562*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5563*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)vec_perm(
5564*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5565*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5566*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5567*344a7f5eSAndroid Build Coastguard Worker #else
5568*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)vec_perm(
5569*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5570*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5571*344a7f5eSAndroid Build Coastguard Worker                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5572*344a7f5eSAndroid Build Coastguard Worker #endif
5573*344a7f5eSAndroid Build Coastguard Worker }
5574*344a7f5eSAndroid Build Coastguard Worker 
5575*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_vpkuhum(vector bool short __a,vector bool short __b)5576*344a7f5eSAndroid Build Coastguard Worker vec_vpkuhum(vector bool short __a, vector bool short __b) {
5577*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5578*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)vec_perm(
5579*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5580*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
5581*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x12, 0x14, 0x16, 0x18, 0x1A, 0x1C, 0x1E));
5582*344a7f5eSAndroid Build Coastguard Worker #else
5583*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)vec_perm(
5584*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5585*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x01, 0x03, 0x05, 0x07, 0x09, 0x0B, 0x0D, 0x0F,
5586*344a7f5eSAndroid Build Coastguard Worker                              0x11, 0x13, 0x15, 0x17, 0x19, 0x1B, 0x1D, 0x1F));
5587*344a7f5eSAndroid Build Coastguard Worker #endif
5588*344a7f5eSAndroid Build Coastguard Worker }
5589*344a7f5eSAndroid Build Coastguard Worker 
5590*344a7f5eSAndroid Build Coastguard Worker /* vec_vpkuwum */
5591*344a7f5eSAndroid Build Coastguard Worker 
5592*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vpkuwum vec_vpkuwum
5593*344a7f5eSAndroid Build Coastguard Worker 
vec_vpkuwum(vector int __a,vector int __b)5594*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vpkuwum(vector int __a,
5595*344a7f5eSAndroid Build Coastguard Worker                                                         vector int __b) {
5596*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5597*344a7f5eSAndroid Build Coastguard Worker   return (vector short)vec_perm(
5598*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5599*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5600*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5601*344a7f5eSAndroid Build Coastguard Worker #else
5602*344a7f5eSAndroid Build Coastguard Worker   return (vector short)vec_perm(
5603*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5604*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5605*344a7f5eSAndroid Build Coastguard Worker                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5606*344a7f5eSAndroid Build Coastguard Worker #endif
5607*344a7f5eSAndroid Build Coastguard Worker }
5608*344a7f5eSAndroid Build Coastguard Worker 
5609*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vpkuwum(vector unsigned int __a,vector unsigned int __b)5610*344a7f5eSAndroid Build Coastguard Worker vec_vpkuwum(vector unsigned int __a, vector unsigned int __b) {
5611*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5612*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)vec_perm(
5613*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5614*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5615*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5616*344a7f5eSAndroid Build Coastguard Worker #else
5617*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)vec_perm(
5618*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5619*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5620*344a7f5eSAndroid Build Coastguard Worker                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5621*344a7f5eSAndroid Build Coastguard Worker #endif
5622*344a7f5eSAndroid Build Coastguard Worker }
5623*344a7f5eSAndroid Build Coastguard Worker 
5624*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vpkuwum(vector bool int __a,vector bool int __b)5625*344a7f5eSAndroid Build Coastguard Worker vec_vpkuwum(vector bool int __a, vector bool int __b) {
5626*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5627*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)vec_perm(
5628*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5629*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x01, 0x04, 0x05, 0x08, 0x09, 0x0C, 0x0D,
5630*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x11, 0x14, 0x15, 0x18, 0x19, 0x1C, 0x1D));
5631*344a7f5eSAndroid Build Coastguard Worker #else
5632*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)vec_perm(
5633*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5634*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x02, 0x03, 0x06, 0x07, 0x0A, 0x0B, 0x0E, 0x0F,
5635*344a7f5eSAndroid Build Coastguard Worker                              0x12, 0x13, 0x16, 0x17, 0x1A, 0x1B, 0x1E, 0x1F));
5636*344a7f5eSAndroid Build Coastguard Worker #endif
5637*344a7f5eSAndroid Build Coastguard Worker }
5638*344a7f5eSAndroid Build Coastguard Worker 
5639*344a7f5eSAndroid Build Coastguard Worker /* vec_vpkudum */
5640*344a7f5eSAndroid Build Coastguard Worker 
5641*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
5642*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vpkudum vec_vpkudum
5643*344a7f5eSAndroid Build Coastguard Worker 
vec_vpkudum(vector long long __a,vector long long __b)5644*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vpkudum(vector long long __a,
5645*344a7f5eSAndroid Build Coastguard Worker                                                       vector long long __b) {
5646*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5647*344a7f5eSAndroid Build Coastguard Worker   return (vector int)vec_perm(
5648*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5649*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5650*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5651*344a7f5eSAndroid Build Coastguard Worker #else
5652*344a7f5eSAndroid Build Coastguard Worker   return (vector int)vec_perm(
5653*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5654*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5655*344a7f5eSAndroid Build Coastguard Worker                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5656*344a7f5eSAndroid Build Coastguard Worker #endif
5657*344a7f5eSAndroid Build Coastguard Worker }
5658*344a7f5eSAndroid Build Coastguard Worker 
5659*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vpkudum(vector unsigned long long __a,vector unsigned long long __b)5660*344a7f5eSAndroid Build Coastguard Worker vec_vpkudum(vector unsigned long long __a, vector unsigned long long __b) {
5661*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5662*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)vec_perm(
5663*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5664*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5665*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5666*344a7f5eSAndroid Build Coastguard Worker #else
5667*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)vec_perm(
5668*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
5669*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5670*344a7f5eSAndroid Build Coastguard Worker                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5671*344a7f5eSAndroid Build Coastguard Worker #endif
5672*344a7f5eSAndroid Build Coastguard Worker }
5673*344a7f5eSAndroid Build Coastguard Worker 
5674*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_vpkudum(vector bool long long __a,vector bool long long __b)5675*344a7f5eSAndroid Build Coastguard Worker vec_vpkudum(vector bool long long __a, vector bool long long __b) {
5676*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5677*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)vec_perm(
5678*344a7f5eSAndroid Build Coastguard Worker       (vector long long)__a, (vector long long)__b,
5679*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x00, 0x01, 0x02, 0x03, 0x08, 0x09, 0x0A, 0x0B,
5680*344a7f5eSAndroid Build Coastguard Worker                              0x10, 0x11, 0x12, 0x13, 0x18, 0x19, 0x1A, 0x1B));
5681*344a7f5eSAndroid Build Coastguard Worker #else
5682*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)vec_perm(
5683*344a7f5eSAndroid Build Coastguard Worker       (vector long long)__a, (vector long long)__b,
5684*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(0x04, 0x05, 0x06, 0x07, 0x0C, 0x0D, 0x0E, 0x0F,
5685*344a7f5eSAndroid Build Coastguard Worker                              0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F));
5686*344a7f5eSAndroid Build Coastguard Worker #endif
5687*344a7f5eSAndroid Build Coastguard Worker }
5688*344a7f5eSAndroid Build Coastguard Worker #endif
5689*344a7f5eSAndroid Build Coastguard Worker 
5690*344a7f5eSAndroid Build Coastguard Worker /* vec_packpx */
5691*344a7f5eSAndroid Build Coastguard Worker 
5692*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __attribute__((__always_inline__))
vec_packpx(vector unsigned int __a,vector unsigned int __b)5693*344a7f5eSAndroid Build Coastguard Worker vec_packpx(vector unsigned int __a, vector unsigned int __b) {
5694*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5695*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
5696*344a7f5eSAndroid Build Coastguard Worker #else
5697*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
5698*344a7f5eSAndroid Build Coastguard Worker #endif
5699*344a7f5eSAndroid Build Coastguard Worker }
5700*344a7f5eSAndroid Build Coastguard Worker 
5701*344a7f5eSAndroid Build Coastguard Worker /* vec_vpkpx */
5702*344a7f5eSAndroid Build Coastguard Worker 
5703*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __attribute__((__always_inline__))
vec_vpkpx(vector unsigned int __a,vector unsigned int __b)5704*344a7f5eSAndroid Build Coastguard Worker vec_vpkpx(vector unsigned int __a, vector unsigned int __b) {
5705*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5706*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vpkpx(__b, __a);
5707*344a7f5eSAndroid Build Coastguard Worker #else
5708*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vpkpx(__a, __b);
5709*344a7f5eSAndroid Build Coastguard Worker #endif
5710*344a7f5eSAndroid Build Coastguard Worker }
5711*344a7f5eSAndroid Build Coastguard Worker 
5712*344a7f5eSAndroid Build Coastguard Worker /* vec_packs */
5713*344a7f5eSAndroid Build Coastguard Worker 
vec_packs(vector short __a,vector short __b)5714*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai vec_packs(vector short __a,
5715*344a7f5eSAndroid Build Coastguard Worker                                                             vector short __b) {
5716*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5717*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkshss(__b, __a);
5718*344a7f5eSAndroid Build Coastguard Worker #else
5719*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkshss(__a, __b);
5720*344a7f5eSAndroid Build Coastguard Worker #endif
5721*344a7f5eSAndroid Build Coastguard Worker }
5722*344a7f5eSAndroid Build Coastguard Worker 
5723*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_packs(vector unsigned short __a,vector unsigned short __b)5724*344a7f5eSAndroid Build Coastguard Worker vec_packs(vector unsigned short __a, vector unsigned short __b) {
5725*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5726*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuhus(__b, __a);
5727*344a7f5eSAndroid Build Coastguard Worker #else
5728*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuhus(__a, __b);
5729*344a7f5eSAndroid Build Coastguard Worker #endif
5730*344a7f5eSAndroid Build Coastguard Worker }
5731*344a7f5eSAndroid Build Coastguard Worker 
vec_packs(vector int __a,vector int __b)5732*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai vec_packs(vector int __a,
5733*344a7f5eSAndroid Build Coastguard Worker                                                              vector int __b) {
5734*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5735*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkswss(__b, __a);
5736*344a7f5eSAndroid Build Coastguard Worker #else
5737*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkswss(__a, __b);
5738*344a7f5eSAndroid Build Coastguard Worker #endif
5739*344a7f5eSAndroid Build Coastguard Worker }
5740*344a7f5eSAndroid Build Coastguard Worker 
5741*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_packs(vector unsigned int __a,vector unsigned int __b)5742*344a7f5eSAndroid Build Coastguard Worker vec_packs(vector unsigned int __a, vector unsigned int __b) {
5743*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5744*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuwus(__b, __a);
5745*344a7f5eSAndroid Build Coastguard Worker #else
5746*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuwus(__a, __b);
5747*344a7f5eSAndroid Build Coastguard Worker #endif
5748*344a7f5eSAndroid Build Coastguard Worker }
5749*344a7f5eSAndroid Build Coastguard Worker 
5750*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_packs(vector long long __a,vector long long __b)5751*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_packs(vector long long __a,
5752*344a7f5eSAndroid Build Coastguard Worker                                                     vector long long __b) {
5753*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5754*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpksdss(__b, __a);
5755*344a7f5eSAndroid Build Coastguard Worker #else
5756*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpksdss(__a, __b);
5757*344a7f5eSAndroid Build Coastguard Worker #endif
5758*344a7f5eSAndroid Build Coastguard Worker }
5759*344a7f5eSAndroid Build Coastguard Worker 
5760*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_packs(vector unsigned long long __a,vector unsigned long long __b)5761*344a7f5eSAndroid Build Coastguard Worker vec_packs(vector unsigned long long __a, vector unsigned long long __b) {
5762*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5763*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkudus(__b, __a);
5764*344a7f5eSAndroid Build Coastguard Worker #else
5765*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkudus(__a, __b);
5766*344a7f5eSAndroid Build Coastguard Worker #endif
5767*344a7f5eSAndroid Build Coastguard Worker }
5768*344a7f5eSAndroid Build Coastguard Worker #endif
5769*344a7f5eSAndroid Build Coastguard Worker 
5770*344a7f5eSAndroid Build Coastguard Worker /* vec_vpkshss */
5771*344a7f5eSAndroid Build Coastguard Worker 
5772*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __attribute__((__always_inline__))
vec_vpkshss(vector short __a,vector short __b)5773*344a7f5eSAndroid Build Coastguard Worker vec_vpkshss(vector short __a, vector short __b) {
5774*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5775*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkshss(__b, __a);
5776*344a7f5eSAndroid Build Coastguard Worker #else
5777*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkshss(__a, __b);
5778*344a7f5eSAndroid Build Coastguard Worker #endif
5779*344a7f5eSAndroid Build Coastguard Worker }
5780*344a7f5eSAndroid Build Coastguard Worker 
5781*344a7f5eSAndroid Build Coastguard Worker /* vec_vpksdss */
5782*344a7f5eSAndroid Build Coastguard Worker 
5783*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_vpksdss(vector long long __a,vector long long __b)5784*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vpksdss(vector long long __a,
5785*344a7f5eSAndroid Build Coastguard Worker                                                       vector long long __b) {
5786*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5787*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpksdss(__b, __a);
5788*344a7f5eSAndroid Build Coastguard Worker #else
5789*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpksdss(__a, __b);
5790*344a7f5eSAndroid Build Coastguard Worker #endif
5791*344a7f5eSAndroid Build Coastguard Worker }
5792*344a7f5eSAndroid Build Coastguard Worker #endif
5793*344a7f5eSAndroid Build Coastguard Worker 
5794*344a7f5eSAndroid Build Coastguard Worker /* vec_vpkuhus */
5795*344a7f5eSAndroid Build Coastguard Worker 
5796*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __attribute__((__always_inline__))
vec_vpkuhus(vector unsigned short __a,vector unsigned short __b)5797*344a7f5eSAndroid Build Coastguard Worker vec_vpkuhus(vector unsigned short __a, vector unsigned short __b) {
5798*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5799*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuhus(__b, __a);
5800*344a7f5eSAndroid Build Coastguard Worker #else
5801*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuhus(__a, __b);
5802*344a7f5eSAndroid Build Coastguard Worker #endif
5803*344a7f5eSAndroid Build Coastguard Worker }
5804*344a7f5eSAndroid Build Coastguard Worker 
5805*344a7f5eSAndroid Build Coastguard Worker /* vec_vpkudus */
5806*344a7f5eSAndroid Build Coastguard Worker 
5807*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
5808*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vpkudus(vector unsigned long long __a,vector unsigned long long __b)5809*344a7f5eSAndroid Build Coastguard Worker vec_vpkudus(vector unsigned long long __a, vector unsigned long long __b) {
5810*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5811*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkudus(__b, __a);
5812*344a7f5eSAndroid Build Coastguard Worker #else
5813*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkudus(__a, __b);
5814*344a7f5eSAndroid Build Coastguard Worker #endif
5815*344a7f5eSAndroid Build Coastguard Worker }
5816*344a7f5eSAndroid Build Coastguard Worker #endif
5817*344a7f5eSAndroid Build Coastguard Worker 
5818*344a7f5eSAndroid Build Coastguard Worker /* vec_vpkswss */
5819*344a7f5eSAndroid Build Coastguard Worker 
5820*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __attribute__((__always_inline__))
vec_vpkswss(vector int __a,vector int __b)5821*344a7f5eSAndroid Build Coastguard Worker vec_vpkswss(vector int __a, vector int __b) {
5822*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5823*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkswss(__b, __a);
5824*344a7f5eSAndroid Build Coastguard Worker #else
5825*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkswss(__a, __b);
5826*344a7f5eSAndroid Build Coastguard Worker #endif
5827*344a7f5eSAndroid Build Coastguard Worker }
5828*344a7f5eSAndroid Build Coastguard Worker 
5829*344a7f5eSAndroid Build Coastguard Worker /* vec_vpkuwus */
5830*344a7f5eSAndroid Build Coastguard Worker 
5831*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __attribute__((__always_inline__))
vec_vpkuwus(vector unsigned int __a,vector unsigned int __b)5832*344a7f5eSAndroid Build Coastguard Worker vec_vpkuwus(vector unsigned int __a, vector unsigned int __b) {
5833*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5834*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuwus(__b, __a);
5835*344a7f5eSAndroid Build Coastguard Worker #else
5836*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuwus(__a, __b);
5837*344a7f5eSAndroid Build Coastguard Worker #endif
5838*344a7f5eSAndroid Build Coastguard Worker }
5839*344a7f5eSAndroid Build Coastguard Worker 
5840*344a7f5eSAndroid Build Coastguard Worker /* vec_packsu */
5841*344a7f5eSAndroid Build Coastguard Worker 
5842*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_packsu(vector short __a,vector short __b)5843*344a7f5eSAndroid Build Coastguard Worker vec_packsu(vector short __a, vector short __b) {
5844*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5845*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkshus(__b, __a);
5846*344a7f5eSAndroid Build Coastguard Worker #else
5847*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkshus(__a, __b);
5848*344a7f5eSAndroid Build Coastguard Worker #endif
5849*344a7f5eSAndroid Build Coastguard Worker }
5850*344a7f5eSAndroid Build Coastguard Worker 
5851*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_packsu(vector unsigned short __a,vector unsigned short __b)5852*344a7f5eSAndroid Build Coastguard Worker vec_packsu(vector unsigned short __a, vector unsigned short __b) {
5853*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5854*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuhus(__b, __a);
5855*344a7f5eSAndroid Build Coastguard Worker #else
5856*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuhus(__a, __b);
5857*344a7f5eSAndroid Build Coastguard Worker #endif
5858*344a7f5eSAndroid Build Coastguard Worker }
5859*344a7f5eSAndroid Build Coastguard Worker 
5860*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_packsu(vector int __a,vector int __b)5861*344a7f5eSAndroid Build Coastguard Worker vec_packsu(vector int __a, vector int __b) {
5862*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5863*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkswus(__b, __a);
5864*344a7f5eSAndroid Build Coastguard Worker #else
5865*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkswus(__a, __b);
5866*344a7f5eSAndroid Build Coastguard Worker #endif
5867*344a7f5eSAndroid Build Coastguard Worker }
5868*344a7f5eSAndroid Build Coastguard Worker 
5869*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_packsu(vector unsigned int __a,vector unsigned int __b)5870*344a7f5eSAndroid Build Coastguard Worker vec_packsu(vector unsigned int __a, vector unsigned int __b) {
5871*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5872*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuwus(__b, __a);
5873*344a7f5eSAndroid Build Coastguard Worker #else
5874*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuwus(__a, __b);
5875*344a7f5eSAndroid Build Coastguard Worker #endif
5876*344a7f5eSAndroid Build Coastguard Worker }
5877*344a7f5eSAndroid Build Coastguard Worker 
5878*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
5879*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_packsu(vector long long __a,vector long long __b)5880*344a7f5eSAndroid Build Coastguard Worker vec_packsu(vector long long __a, vector long long __b) {
5881*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5882*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpksdus(__b, __a);
5883*344a7f5eSAndroid Build Coastguard Worker #else
5884*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpksdus(__a, __b);
5885*344a7f5eSAndroid Build Coastguard Worker #endif
5886*344a7f5eSAndroid Build Coastguard Worker }
5887*344a7f5eSAndroid Build Coastguard Worker 
5888*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_packsu(vector unsigned long long __a,vector unsigned long long __b)5889*344a7f5eSAndroid Build Coastguard Worker vec_packsu(vector unsigned long long __a, vector unsigned long long __b) {
5890*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5891*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkudus(__b, __a);
5892*344a7f5eSAndroid Build Coastguard Worker #else
5893*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkudus(__a, __b);
5894*344a7f5eSAndroid Build Coastguard Worker #endif
5895*344a7f5eSAndroid Build Coastguard Worker }
5896*344a7f5eSAndroid Build Coastguard Worker #endif
5897*344a7f5eSAndroid Build Coastguard Worker 
5898*344a7f5eSAndroid Build Coastguard Worker /* vec_vpkshus */
5899*344a7f5eSAndroid Build Coastguard Worker 
5900*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vpkshus(vector short __a,vector short __b)5901*344a7f5eSAndroid Build Coastguard Worker vec_vpkshus(vector short __a, vector short __b) {
5902*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5903*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkshus(__b, __a);
5904*344a7f5eSAndroid Build Coastguard Worker #else
5905*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkshus(__a, __b);
5906*344a7f5eSAndroid Build Coastguard Worker #endif
5907*344a7f5eSAndroid Build Coastguard Worker }
5908*344a7f5eSAndroid Build Coastguard Worker 
5909*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vpkshus(vector unsigned short __a,vector unsigned short __b)5910*344a7f5eSAndroid Build Coastguard Worker vec_vpkshus(vector unsigned short __a, vector unsigned short __b) {
5911*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5912*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuhus(__b, __a);
5913*344a7f5eSAndroid Build Coastguard Worker #else
5914*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuhus(__a, __b);
5915*344a7f5eSAndroid Build Coastguard Worker #endif
5916*344a7f5eSAndroid Build Coastguard Worker }
5917*344a7f5eSAndroid Build Coastguard Worker 
5918*344a7f5eSAndroid Build Coastguard Worker /* vec_vpkswus */
5919*344a7f5eSAndroid Build Coastguard Worker 
5920*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vpkswus(vector int __a,vector int __b)5921*344a7f5eSAndroid Build Coastguard Worker vec_vpkswus(vector int __a, vector int __b) {
5922*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5923*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkswus(__b, __a);
5924*344a7f5eSAndroid Build Coastguard Worker #else
5925*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkswus(__a, __b);
5926*344a7f5eSAndroid Build Coastguard Worker #endif
5927*344a7f5eSAndroid Build Coastguard Worker }
5928*344a7f5eSAndroid Build Coastguard Worker 
5929*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vpkswus(vector unsigned int __a,vector unsigned int __b)5930*344a7f5eSAndroid Build Coastguard Worker vec_vpkswus(vector unsigned int __a, vector unsigned int __b) {
5931*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5932*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuwus(__b, __a);
5933*344a7f5eSAndroid Build Coastguard Worker #else
5934*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpkuwus(__a, __b);
5935*344a7f5eSAndroid Build Coastguard Worker #endif
5936*344a7f5eSAndroid Build Coastguard Worker }
5937*344a7f5eSAndroid Build Coastguard Worker 
5938*344a7f5eSAndroid Build Coastguard Worker /* vec_vpksdus */
5939*344a7f5eSAndroid Build Coastguard Worker 
5940*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
5941*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vpksdus(vector long long __a,vector long long __b)5942*344a7f5eSAndroid Build Coastguard Worker vec_vpksdus(vector long long __a, vector long long __b) {
5943*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5944*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpksdus(__b, __a);
5945*344a7f5eSAndroid Build Coastguard Worker #else
5946*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vpksdus(__a, __b);
5947*344a7f5eSAndroid Build Coastguard Worker #endif
5948*344a7f5eSAndroid Build Coastguard Worker }
5949*344a7f5eSAndroid Build Coastguard Worker #endif
5950*344a7f5eSAndroid Build Coastguard Worker 
5951*344a7f5eSAndroid Build Coastguard Worker /* vec_perm */
5952*344a7f5eSAndroid Build Coastguard Worker 
5953*344a7f5eSAndroid Build Coastguard Worker // The vperm instruction is defined architecturally with a big-endian bias.
5954*344a7f5eSAndroid Build Coastguard Worker // For little endian, we swap the input operands and invert the permute
5955*344a7f5eSAndroid Build Coastguard Worker // control vector.  Only the rightmost 5 bits matter, so we could use
5956*344a7f5eSAndroid Build Coastguard Worker // a vector of all 31s instead of all 255s to perform the inversion.
5957*344a7f5eSAndroid Build Coastguard Worker // However, when the PCV is not a constant, using 255 has an advantage
5958*344a7f5eSAndroid Build Coastguard Worker // in that the vec_xor can be recognized as a vec_nor (and for P8 and
5959*344a7f5eSAndroid Build Coastguard Worker // later, possibly a vec_nand).
5960*344a7f5eSAndroid Build Coastguard Worker 
vec_perm(vector signed char __a,vector signed char __b,vector unsigned char __c)5961*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai vec_perm(
5962*344a7f5eSAndroid Build Coastguard Worker     vector signed char __a, vector signed char __b, vector unsigned char __c) {
5963*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5964*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5965*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
5966*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
5967*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vperm_4si((vector int)__b,
5968*344a7f5eSAndroid Build Coastguard Worker                                                          (vector int)__a, __d);
5969*344a7f5eSAndroid Build Coastguard Worker #else
5970*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vperm_4si((vector int)__a,
5971*344a7f5eSAndroid Build Coastguard Worker                                                          (vector int)__b, __c);
5972*344a7f5eSAndroid Build Coastguard Worker #endif
5973*344a7f5eSAndroid Build Coastguard Worker }
5974*344a7f5eSAndroid Build Coastguard Worker 
5975*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_perm(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)5976*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector unsigned char __a, vector unsigned char __b,
5977*344a7f5eSAndroid Build Coastguard Worker          vector unsigned char __c) {
5978*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5979*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5980*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
5981*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
5982*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vperm_4si(
5983*344a7f5eSAndroid Build Coastguard Worker       (vector int)__b, (vector int)__a, __d);
5984*344a7f5eSAndroid Build Coastguard Worker #else
5985*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vperm_4si(
5986*344a7f5eSAndroid Build Coastguard Worker       (vector int)__a, (vector int)__b, __c);
5987*344a7f5eSAndroid Build Coastguard Worker #endif
5988*344a7f5eSAndroid Build Coastguard Worker }
5989*344a7f5eSAndroid Build Coastguard Worker 
5990*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_perm(vector bool char __a,vector bool char __b,vector unsigned char __c)5991*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector bool char __a, vector bool char __b, vector unsigned char __c) {
5992*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
5993*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
5994*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
5995*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
5996*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vperm_4si((vector int)__b,
5997*344a7f5eSAndroid Build Coastguard Worker                                                        (vector int)__a, __d);
5998*344a7f5eSAndroid Build Coastguard Worker #else
5999*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vperm_4si((vector int)__a,
6000*344a7f5eSAndroid Build Coastguard Worker                                                        (vector int)__b, __c);
6001*344a7f5eSAndroid Build Coastguard Worker #endif
6002*344a7f5eSAndroid Build Coastguard Worker }
6003*344a7f5eSAndroid Build Coastguard Worker 
vec_perm(vector signed short __a,vector signed short __b,vector unsigned char __c)6004*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_perm(vector signed short __a,
6005*344a7f5eSAndroid Build Coastguard Worker                                                      vector signed short __b,
6006*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned char __c) {
6007*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6008*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6009*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
6010*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
6011*344a7f5eSAndroid Build Coastguard Worker   return (vector signed short)__builtin_altivec_vperm_4si((vector int)__b,
6012*344a7f5eSAndroid Build Coastguard Worker                                                           (vector int)__a, __d);
6013*344a7f5eSAndroid Build Coastguard Worker #else
6014*344a7f5eSAndroid Build Coastguard Worker   return (vector signed short)__builtin_altivec_vperm_4si((vector int)__a,
6015*344a7f5eSAndroid Build Coastguard Worker                                                           (vector int)__b, __c);
6016*344a7f5eSAndroid Build Coastguard Worker #endif
6017*344a7f5eSAndroid Build Coastguard Worker }
6018*344a7f5eSAndroid Build Coastguard Worker 
6019*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_perm(vector unsigned short __a,vector unsigned short __b,vector unsigned char __c)6020*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector unsigned short __a, vector unsigned short __b,
6021*344a7f5eSAndroid Build Coastguard Worker          vector unsigned char __c) {
6022*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6023*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6024*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
6025*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
6026*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vperm_4si(
6027*344a7f5eSAndroid Build Coastguard Worker       (vector int)__b, (vector int)__a, __d);
6028*344a7f5eSAndroid Build Coastguard Worker #else
6029*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vperm_4si(
6030*344a7f5eSAndroid Build Coastguard Worker       (vector int)__a, (vector int)__b, __c);
6031*344a7f5eSAndroid Build Coastguard Worker #endif
6032*344a7f5eSAndroid Build Coastguard Worker }
6033*344a7f5eSAndroid Build Coastguard Worker 
vec_perm(vector bool short __a,vector bool short __b,vector unsigned char __c)6034*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai vec_perm(
6035*344a7f5eSAndroid Build Coastguard Worker     vector bool short __a, vector bool short __b, vector unsigned char __c) {
6036*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6037*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6038*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
6039*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
6040*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vperm_4si((vector int)__b,
6041*344a7f5eSAndroid Build Coastguard Worker                                                         (vector int)__a, __d);
6042*344a7f5eSAndroid Build Coastguard Worker #else
6043*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vperm_4si((vector int)__a,
6044*344a7f5eSAndroid Build Coastguard Worker                                                         (vector int)__b, __c);
6045*344a7f5eSAndroid Build Coastguard Worker #endif
6046*344a7f5eSAndroid Build Coastguard Worker }
6047*344a7f5eSAndroid Build Coastguard Worker 
vec_perm(vector pixel __a,vector pixel __b,vector unsigned char __c)6048*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_perm(vector pixel __a,
6049*344a7f5eSAndroid Build Coastguard Worker                                                      vector pixel __b,
6050*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned char __c) {
6051*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6052*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6053*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
6054*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
6055*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vperm_4si((vector int)__b,
6056*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__a, __d);
6057*344a7f5eSAndroid Build Coastguard Worker #else
6058*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vperm_4si((vector int)__a,
6059*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b, __c);
6060*344a7f5eSAndroid Build Coastguard Worker #endif
6061*344a7f5eSAndroid Build Coastguard Worker }
6062*344a7f5eSAndroid Build Coastguard Worker 
vec_perm(vector signed int __a,vector signed int __b,vector unsigned char __c)6063*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_perm(vector signed int __a,
6064*344a7f5eSAndroid Build Coastguard Worker                                                    vector signed int __b,
6065*344a7f5eSAndroid Build Coastguard Worker                                                    vector unsigned char __c) {
6066*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6067*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6068*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
6069*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
6070*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)__builtin_altivec_vperm_4si(__b, __a, __d);
6071*344a7f5eSAndroid Build Coastguard Worker #else
6072*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)__builtin_altivec_vperm_4si(__a, __b, __c);
6073*344a7f5eSAndroid Build Coastguard Worker #endif
6074*344a7f5eSAndroid Build Coastguard Worker }
6075*344a7f5eSAndroid Build Coastguard Worker 
6076*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_perm(vector unsigned int __a,vector unsigned int __b,vector unsigned char __c)6077*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector unsigned int __a, vector unsigned int __b,
6078*344a7f5eSAndroid Build Coastguard Worker          vector unsigned char __c) {
6079*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6080*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6081*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
6082*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
6083*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__b,
6084*344a7f5eSAndroid Build Coastguard Worker                                                           (vector int)__a, __d);
6085*344a7f5eSAndroid Build Coastguard Worker #else
6086*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vperm_4si((vector int)__a,
6087*344a7f5eSAndroid Build Coastguard Worker                                                           (vector int)__b, __c);
6088*344a7f5eSAndroid Build Coastguard Worker #endif
6089*344a7f5eSAndroid Build Coastguard Worker }
6090*344a7f5eSAndroid Build Coastguard Worker 
6091*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_perm(vector bool int __a,vector bool int __b,vector unsigned char __c)6092*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
6093*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6094*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6095*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
6096*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
6097*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vperm_4si((vector int)__b,
6098*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__a, __d);
6099*344a7f5eSAndroid Build Coastguard Worker #else
6100*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vperm_4si((vector int)__a,
6101*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b, __c);
6102*344a7f5eSAndroid Build Coastguard Worker #endif
6103*344a7f5eSAndroid Build Coastguard Worker }
6104*344a7f5eSAndroid Build Coastguard Worker 
vec_perm(vector float __a,vector float __b,vector unsigned char __c)6105*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_perm(vector float __a,
6106*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b,
6107*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned char __c) {
6108*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6109*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6110*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
6111*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
6112*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_vperm_4si((vector int)__b,
6113*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__a, __d);
6114*344a7f5eSAndroid Build Coastguard Worker #else
6115*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_vperm_4si((vector int)__a,
6116*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b, __c);
6117*344a7f5eSAndroid Build Coastguard Worker #endif
6118*344a7f5eSAndroid Build Coastguard Worker }
6119*344a7f5eSAndroid Build Coastguard Worker 
6120*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
6121*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector long long __ATTRS_o_ai
vec_perm(vector signed long long __a,vector signed long long __b,vector unsigned char __c)6122*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector signed long long __a, vector signed long long __b,
6123*344a7f5eSAndroid Build Coastguard Worker          vector unsigned char __c) {
6124*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6125*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6126*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
6127*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
6128*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__builtin_altivec_vperm_4si(
6129*344a7f5eSAndroid Build Coastguard Worker       (vector int)__b, (vector int)__a, __d);
6130*344a7f5eSAndroid Build Coastguard Worker #else
6131*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__builtin_altivec_vperm_4si(
6132*344a7f5eSAndroid Build Coastguard Worker       (vector int)__a, (vector int)__b, __c);
6133*344a7f5eSAndroid Build Coastguard Worker #endif
6134*344a7f5eSAndroid Build Coastguard Worker }
6135*344a7f5eSAndroid Build Coastguard Worker 
6136*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_perm(vector unsigned long long __a,vector unsigned long long __b,vector unsigned char __c)6137*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector unsigned long long __a, vector unsigned long long __b,
6138*344a7f5eSAndroid Build Coastguard Worker          vector unsigned char __c) {
6139*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6140*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6141*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
6142*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
6143*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__builtin_altivec_vperm_4si(
6144*344a7f5eSAndroid Build Coastguard Worker       (vector int)__b, (vector int)__a, __d);
6145*344a7f5eSAndroid Build Coastguard Worker #else
6146*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__builtin_altivec_vperm_4si(
6147*344a7f5eSAndroid Build Coastguard Worker       (vector int)__a, (vector int)__b, __c);
6148*344a7f5eSAndroid Build Coastguard Worker #endif
6149*344a7f5eSAndroid Build Coastguard Worker }
6150*344a7f5eSAndroid Build Coastguard Worker 
6151*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_perm(vector bool long long __a,vector bool long long __b,vector unsigned char __c)6152*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector bool long long __a, vector bool long long __b,
6153*344a7f5eSAndroid Build Coastguard Worker          vector unsigned char __c) {
6154*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6155*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6156*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
6157*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
6158*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vperm_4si(
6159*344a7f5eSAndroid Build Coastguard Worker       (vector int)__b, (vector int)__a, __d);
6160*344a7f5eSAndroid Build Coastguard Worker #else
6161*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vperm_4si(
6162*344a7f5eSAndroid Build Coastguard Worker       (vector int)__a, (vector int)__b, __c);
6163*344a7f5eSAndroid Build Coastguard Worker #endif
6164*344a7f5eSAndroid Build Coastguard Worker }
6165*344a7f5eSAndroid Build Coastguard Worker 
6166*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_perm(vector double __a,vector double __b,vector unsigned char __c)6167*344a7f5eSAndroid Build Coastguard Worker vec_perm(vector double __a, vector double __b, vector unsigned char __c) {
6168*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6169*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __d = {255, 255, 255, 255, 255, 255, 255, 255,
6170*344a7f5eSAndroid Build Coastguard Worker                               255, 255, 255, 255, 255, 255, 255, 255};
6171*344a7f5eSAndroid Build Coastguard Worker   __d = vec_xor(__c, __d);
6172*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__builtin_altivec_vperm_4si((vector int)__b,
6173*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__a, __d);
6174*344a7f5eSAndroid Build Coastguard Worker #else
6175*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__builtin_altivec_vperm_4si((vector int)__a,
6176*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b, __c);
6177*344a7f5eSAndroid Build Coastguard Worker #endif
6178*344a7f5eSAndroid Build Coastguard Worker }
6179*344a7f5eSAndroid Build Coastguard Worker #endif
6180*344a7f5eSAndroid Build Coastguard Worker 
6181*344a7f5eSAndroid Build Coastguard Worker /* vec_vperm */
6182*344a7f5eSAndroid Build Coastguard Worker 
vec_vperm(vector signed char __a,vector signed char __b,vector unsigned char __c)6183*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai vec_vperm(
6184*344a7f5eSAndroid Build Coastguard Worker     vector signed char __a, vector signed char __b, vector unsigned char __c) {
6185*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6186*344a7f5eSAndroid Build Coastguard Worker }
6187*344a7f5eSAndroid Build Coastguard Worker 
6188*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vperm(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)6189*344a7f5eSAndroid Build Coastguard Worker vec_vperm(vector unsigned char __a, vector unsigned char __b,
6190*344a7f5eSAndroid Build Coastguard Worker           vector unsigned char __c) {
6191*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6192*344a7f5eSAndroid Build Coastguard Worker }
6193*344a7f5eSAndroid Build Coastguard Worker 
vec_vperm(vector bool char __a,vector bool char __b,vector unsigned char __c)6194*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_vperm(
6195*344a7f5eSAndroid Build Coastguard Worker     vector bool char __a, vector bool char __b, vector unsigned char __c) {
6196*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6197*344a7f5eSAndroid Build Coastguard Worker }
6198*344a7f5eSAndroid Build Coastguard Worker 
6199*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai
vec_vperm(vector short __a,vector short __b,vector unsigned char __c)6200*344a7f5eSAndroid Build Coastguard Worker vec_vperm(vector short __a, vector short __b, vector unsigned char __c) {
6201*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6202*344a7f5eSAndroid Build Coastguard Worker }
6203*344a7f5eSAndroid Build Coastguard Worker 
6204*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vperm(vector unsigned short __a,vector unsigned short __b,vector unsigned char __c)6205*344a7f5eSAndroid Build Coastguard Worker vec_vperm(vector unsigned short __a, vector unsigned short __b,
6206*344a7f5eSAndroid Build Coastguard Worker           vector unsigned char __c) {
6207*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6208*344a7f5eSAndroid Build Coastguard Worker }
6209*344a7f5eSAndroid Build Coastguard Worker 
vec_vperm(vector bool short __a,vector bool short __b,vector unsigned char __c)6210*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai vec_vperm(
6211*344a7f5eSAndroid Build Coastguard Worker     vector bool short __a, vector bool short __b, vector unsigned char __c) {
6212*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6213*344a7f5eSAndroid Build Coastguard Worker }
6214*344a7f5eSAndroid Build Coastguard Worker 
6215*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai
vec_vperm(vector pixel __a,vector pixel __b,vector unsigned char __c)6216*344a7f5eSAndroid Build Coastguard Worker vec_vperm(vector pixel __a, vector pixel __b, vector unsigned char __c) {
6217*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6218*344a7f5eSAndroid Build Coastguard Worker }
6219*344a7f5eSAndroid Build Coastguard Worker 
vec_vperm(vector int __a,vector int __b,vector unsigned char __c)6220*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vperm(vector int __a,
6221*344a7f5eSAndroid Build Coastguard Worker                                                     vector int __b,
6222*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __c) {
6223*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6224*344a7f5eSAndroid Build Coastguard Worker }
6225*344a7f5eSAndroid Build Coastguard Worker 
6226*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vperm(vector unsigned int __a,vector unsigned int __b,vector unsigned char __c)6227*344a7f5eSAndroid Build Coastguard Worker vec_vperm(vector unsigned int __a, vector unsigned int __b,
6228*344a7f5eSAndroid Build Coastguard Worker           vector unsigned char __c) {
6229*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6230*344a7f5eSAndroid Build Coastguard Worker }
6231*344a7f5eSAndroid Build Coastguard Worker 
6232*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_vperm(vector bool int __a,vector bool int __b,vector unsigned char __c)6233*344a7f5eSAndroid Build Coastguard Worker vec_vperm(vector bool int __a, vector bool int __b, vector unsigned char __c) {
6234*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6235*344a7f5eSAndroid Build Coastguard Worker }
6236*344a7f5eSAndroid Build Coastguard Worker 
6237*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai
vec_vperm(vector float __a,vector float __b,vector unsigned char __c)6238*344a7f5eSAndroid Build Coastguard Worker vec_vperm(vector float __a, vector float __b, vector unsigned char __c) {
6239*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6240*344a7f5eSAndroid Build Coastguard Worker }
6241*344a7f5eSAndroid Build Coastguard Worker 
6242*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_vperm(vector long long __a,vector long long __b,vector unsigned char __c)6243*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector long long __ATTRS_o_ai vec_vperm(
6244*344a7f5eSAndroid Build Coastguard Worker     vector long long __a, vector long long __b, vector unsigned char __c) {
6245*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6246*344a7f5eSAndroid Build Coastguard Worker }
6247*344a7f5eSAndroid Build Coastguard Worker 
6248*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vperm(vector unsigned long long __a,vector unsigned long long __b,vector unsigned char __c)6249*344a7f5eSAndroid Build Coastguard Worker vec_vperm(vector unsigned long long __a, vector unsigned long long __b,
6250*344a7f5eSAndroid Build Coastguard Worker           vector unsigned char __c) {
6251*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6252*344a7f5eSAndroid Build Coastguard Worker }
6253*344a7f5eSAndroid Build Coastguard Worker 
6254*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_vperm(vector double __a,vector double __b,vector unsigned char __c)6255*344a7f5eSAndroid Build Coastguard Worker vec_vperm(vector double __a, vector double __b, vector unsigned char __c) {
6256*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __b, __c);
6257*344a7f5eSAndroid Build Coastguard Worker }
6258*344a7f5eSAndroid Build Coastguard Worker #endif
6259*344a7f5eSAndroid Build Coastguard Worker 
6260*344a7f5eSAndroid Build Coastguard Worker /* vec_re */
6261*344a7f5eSAndroid Build Coastguard Worker 
vec_re(vector float __a)6262*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_re(vector float __a) {
6263*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
6264*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvresp(__a);
6265*344a7f5eSAndroid Build Coastguard Worker #else
6266*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrefp(__a);
6267*344a7f5eSAndroid Build Coastguard Worker #endif
6268*344a7f5eSAndroid Build Coastguard Worker }
6269*344a7f5eSAndroid Build Coastguard Worker 
6270*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_re(vector double __a)6271*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_re(vector double __a) {
6272*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvredp(__a);
6273*344a7f5eSAndroid Build Coastguard Worker }
6274*344a7f5eSAndroid Build Coastguard Worker #endif
6275*344a7f5eSAndroid Build Coastguard Worker 
6276*344a7f5eSAndroid Build Coastguard Worker /* vec_vrefp */
6277*344a7f5eSAndroid Build Coastguard Worker 
6278*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vrefp(vector float __a)6279*344a7f5eSAndroid Build Coastguard Worker vec_vrefp(vector float __a) {
6280*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrefp(__a);
6281*344a7f5eSAndroid Build Coastguard Worker }
6282*344a7f5eSAndroid Build Coastguard Worker 
6283*344a7f5eSAndroid Build Coastguard Worker /* vec_rl */
6284*344a7f5eSAndroid Build Coastguard Worker 
6285*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_rl(vector signed char __a,vector unsigned char __b)6286*344a7f5eSAndroid Build Coastguard Worker vec_rl(vector signed char __a, vector unsigned char __b) {
6287*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
6288*344a7f5eSAndroid Build Coastguard Worker }
6289*344a7f5eSAndroid Build Coastguard Worker 
6290*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_rl(vector unsigned char __a,vector unsigned char __b)6291*344a7f5eSAndroid Build Coastguard Worker vec_rl(vector unsigned char __a, vector unsigned char __b) {
6292*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
6293*344a7f5eSAndroid Build Coastguard Worker }
6294*344a7f5eSAndroid Build Coastguard Worker 
vec_rl(vector short __a,vector unsigned short __b)6295*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_rl(vector short __a,
6296*344a7f5eSAndroid Build Coastguard Worker                                                    vector unsigned short __b) {
6297*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrlh(__a, __b);
6298*344a7f5eSAndroid Build Coastguard Worker }
6299*344a7f5eSAndroid Build Coastguard Worker 
6300*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_rl(vector unsigned short __a,vector unsigned short __b)6301*344a7f5eSAndroid Build Coastguard Worker vec_rl(vector unsigned short __a, vector unsigned short __b) {
6302*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
6303*344a7f5eSAndroid Build Coastguard Worker }
6304*344a7f5eSAndroid Build Coastguard Worker 
vec_rl(vector int __a,vector unsigned int __b)6305*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_rl(vector int __a,
6306*344a7f5eSAndroid Build Coastguard Worker                                                  vector unsigned int __b) {
6307*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrlw(__a, __b);
6308*344a7f5eSAndroid Build Coastguard Worker }
6309*344a7f5eSAndroid Build Coastguard Worker 
6310*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_rl(vector unsigned int __a,vector unsigned int __b)6311*344a7f5eSAndroid Build Coastguard Worker vec_rl(vector unsigned int __a, vector unsigned int __b) {
6312*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
6313*344a7f5eSAndroid Build Coastguard Worker }
6314*344a7f5eSAndroid Build Coastguard Worker 
6315*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
6316*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_rl(vector signed long long __a,vector unsigned long long __b)6317*344a7f5eSAndroid Build Coastguard Worker vec_rl(vector signed long long __a, vector unsigned long long __b) {
6318*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrld(__a, __b);
6319*344a7f5eSAndroid Build Coastguard Worker }
6320*344a7f5eSAndroid Build Coastguard Worker 
6321*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_rl(vector unsigned long long __a,vector unsigned long long __b)6322*344a7f5eSAndroid Build Coastguard Worker vec_rl(vector unsigned long long __a, vector unsigned long long __b) {
6323*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrld(__a, __b);
6324*344a7f5eSAndroid Build Coastguard Worker }
6325*344a7f5eSAndroid Build Coastguard Worker #endif
6326*344a7f5eSAndroid Build Coastguard Worker 
6327*344a7f5eSAndroid Build Coastguard Worker /* vec_vrlb */
6328*344a7f5eSAndroid Build Coastguard Worker 
6329*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vrlb(vector signed char __a,vector unsigned char __b)6330*344a7f5eSAndroid Build Coastguard Worker vec_vrlb(vector signed char __a, vector unsigned char __b) {
6331*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vrlb((vector char)__a, __b);
6332*344a7f5eSAndroid Build Coastguard Worker }
6333*344a7f5eSAndroid Build Coastguard Worker 
6334*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vrlb(vector unsigned char __a,vector unsigned char __b)6335*344a7f5eSAndroid Build Coastguard Worker vec_vrlb(vector unsigned char __a, vector unsigned char __b) {
6336*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vrlb((vector char)__a, __b);
6337*344a7f5eSAndroid Build Coastguard Worker }
6338*344a7f5eSAndroid Build Coastguard Worker 
6339*344a7f5eSAndroid Build Coastguard Worker /* vec_vrlh */
6340*344a7f5eSAndroid Build Coastguard Worker 
6341*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai
vec_vrlh(vector short __a,vector unsigned short __b)6342*344a7f5eSAndroid Build Coastguard Worker vec_vrlh(vector short __a, vector unsigned short __b) {
6343*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrlh(__a, __b);
6344*344a7f5eSAndroid Build Coastguard Worker }
6345*344a7f5eSAndroid Build Coastguard Worker 
6346*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vrlh(vector unsigned short __a,vector unsigned short __b)6347*344a7f5eSAndroid Build Coastguard Worker vec_vrlh(vector unsigned short __a, vector unsigned short __b) {
6348*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vrlh((vector short)__a, __b);
6349*344a7f5eSAndroid Build Coastguard Worker }
6350*344a7f5eSAndroid Build Coastguard Worker 
6351*344a7f5eSAndroid Build Coastguard Worker /* vec_vrlw */
6352*344a7f5eSAndroid Build Coastguard Worker 
vec_vrlw(vector int __a,vector unsigned int __b)6353*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vrlw(vector int __a,
6354*344a7f5eSAndroid Build Coastguard Worker                                                    vector unsigned int __b) {
6355*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrlw(__a, __b);
6356*344a7f5eSAndroid Build Coastguard Worker }
6357*344a7f5eSAndroid Build Coastguard Worker 
6358*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vrlw(vector unsigned int __a,vector unsigned int __b)6359*344a7f5eSAndroid Build Coastguard Worker vec_vrlw(vector unsigned int __a, vector unsigned int __b) {
6360*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vrlw((vector int)__a, __b);
6361*344a7f5eSAndroid Build Coastguard Worker }
6362*344a7f5eSAndroid Build Coastguard Worker 
6363*344a7f5eSAndroid Build Coastguard Worker /* vec_round */
6364*344a7f5eSAndroid Build Coastguard Worker 
vec_round(vector float __a)6365*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_round(vector float __a) {
6366*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
6367*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrspi(__a);
6368*344a7f5eSAndroid Build Coastguard Worker #else
6369*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrfin(__a);
6370*344a7f5eSAndroid Build Coastguard Worker #endif
6371*344a7f5eSAndroid Build Coastguard Worker }
6372*344a7f5eSAndroid Build Coastguard Worker 
6373*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_round(vector double __a)6374*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_round(vector double __a) {
6375*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrdpi(__a);
6376*344a7f5eSAndroid Build Coastguard Worker }
6377*344a7f5eSAndroid Build Coastguard Worker 
6378*344a7f5eSAndroid Build Coastguard Worker /* vec_rint */
6379*344a7f5eSAndroid Build Coastguard Worker 
vec_rint(vector float __a)6380*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_rint(vector float __a) {
6381*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrspic(__a);
6382*344a7f5eSAndroid Build Coastguard Worker }
6383*344a7f5eSAndroid Build Coastguard Worker 
vec_rint(vector double __a)6384*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_rint(vector double __a) {
6385*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrdpic(__a);
6386*344a7f5eSAndroid Build Coastguard Worker }
6387*344a7f5eSAndroid Build Coastguard Worker 
6388*344a7f5eSAndroid Build Coastguard Worker /* vec_nearbyint */
6389*344a7f5eSAndroid Build Coastguard Worker 
vec_nearbyint(vector float __a)6390*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_nearbyint(vector float __a) {
6391*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrspi(__a);
6392*344a7f5eSAndroid Build Coastguard Worker }
6393*344a7f5eSAndroid Build Coastguard Worker 
vec_nearbyint(vector double __a)6394*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_nearbyint(vector double __a) {
6395*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrdpi(__a);
6396*344a7f5eSAndroid Build Coastguard Worker }
6397*344a7f5eSAndroid Build Coastguard Worker #endif
6398*344a7f5eSAndroid Build Coastguard Worker 
6399*344a7f5eSAndroid Build Coastguard Worker /* vec_vrfin */
6400*344a7f5eSAndroid Build Coastguard Worker 
6401*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vrfin(vector float __a)6402*344a7f5eSAndroid Build Coastguard Worker vec_vrfin(vector float __a) {
6403*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrfin(__a);
6404*344a7f5eSAndroid Build Coastguard Worker }
6405*344a7f5eSAndroid Build Coastguard Worker 
6406*344a7f5eSAndroid Build Coastguard Worker /* vec_sqrt */
6407*344a7f5eSAndroid Build Coastguard Worker 
6408*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_sqrt(vector float __a)6409*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_sqrt(vector float __a) {
6410*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvsqrtsp(__a);
6411*344a7f5eSAndroid Build Coastguard Worker }
6412*344a7f5eSAndroid Build Coastguard Worker 
vec_sqrt(vector double __a)6413*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_sqrt(vector double __a) {
6414*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvsqrtdp(__a);
6415*344a7f5eSAndroid Build Coastguard Worker }
6416*344a7f5eSAndroid Build Coastguard Worker #endif
6417*344a7f5eSAndroid Build Coastguard Worker 
6418*344a7f5eSAndroid Build Coastguard Worker /* vec_rsqrte */
6419*344a7f5eSAndroid Build Coastguard Worker 
vec_rsqrte(vector float __a)6420*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_rsqrte(vector float __a) {
6421*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
6422*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrsqrtesp(__a);
6423*344a7f5eSAndroid Build Coastguard Worker #else
6424*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrsqrtefp(__a);
6425*344a7f5eSAndroid Build Coastguard Worker #endif
6426*344a7f5eSAndroid Build Coastguard Worker }
6427*344a7f5eSAndroid Build Coastguard Worker 
6428*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_rsqrte(vector double __a)6429*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_rsqrte(vector double __a) {
6430*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrsqrtedp(__a);
6431*344a7f5eSAndroid Build Coastguard Worker }
6432*344a7f5eSAndroid Build Coastguard Worker #endif
6433*344a7f5eSAndroid Build Coastguard Worker 
6434*344a7f5eSAndroid Build Coastguard Worker /* vec_vrsqrtefp */
6435*344a7f5eSAndroid Build Coastguard Worker 
6436*344a7f5eSAndroid Build Coastguard Worker static __inline__ __vector float __attribute__((__always_inline__))
vec_vrsqrtefp(vector float __a)6437*344a7f5eSAndroid Build Coastguard Worker vec_vrsqrtefp(vector float __a) {
6438*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrsqrtefp(__a);
6439*344a7f5eSAndroid Build Coastguard Worker }
6440*344a7f5eSAndroid Build Coastguard Worker 
6441*344a7f5eSAndroid Build Coastguard Worker /* vec_sel */
6442*344a7f5eSAndroid Build Coastguard Worker 
6443*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vsel_4si vec_sel
6444*344a7f5eSAndroid Build Coastguard Worker 
vec_sel(vector signed char __a,vector signed char __b,vector unsigned char __c)6445*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai vec_sel(
6446*344a7f5eSAndroid Build Coastguard Worker     vector signed char __a, vector signed char __b, vector unsigned char __c) {
6447*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6448*344a7f5eSAndroid Build Coastguard Worker }
6449*344a7f5eSAndroid Build Coastguard Worker 
6450*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_sel(vector signed char __a,vector signed char __b,vector bool char __c)6451*344a7f5eSAndroid Build Coastguard Worker vec_sel(vector signed char __a, vector signed char __b, vector bool char __c) {
6452*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6453*344a7f5eSAndroid Build Coastguard Worker }
6454*344a7f5eSAndroid Build Coastguard Worker 
6455*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sel(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)6456*344a7f5eSAndroid Build Coastguard Worker vec_sel(vector unsigned char __a, vector unsigned char __b,
6457*344a7f5eSAndroid Build Coastguard Worker         vector unsigned char __c) {
6458*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~__c) | (__b & __c);
6459*344a7f5eSAndroid Build Coastguard Worker }
6460*344a7f5eSAndroid Build Coastguard Worker 
vec_sel(vector unsigned char __a,vector unsigned char __b,vector bool char __c)6461*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai vec_sel(
6462*344a7f5eSAndroid Build Coastguard Worker     vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
6463*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
6464*344a7f5eSAndroid Build Coastguard Worker }
6465*344a7f5eSAndroid Build Coastguard Worker 
6466*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_sel(vector bool char __a,vector bool char __b,vector unsigned char __c)6467*344a7f5eSAndroid Build Coastguard Worker vec_sel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
6468*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
6469*344a7f5eSAndroid Build Coastguard Worker }
6470*344a7f5eSAndroid Build Coastguard Worker 
vec_sel(vector bool char __a,vector bool char __b,vector bool char __c)6471*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_sel(vector bool char __a,
6472*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool char __b,
6473*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool char __c) {
6474*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~__c) | (__b & __c);
6475*344a7f5eSAndroid Build Coastguard Worker }
6476*344a7f5eSAndroid Build Coastguard Worker 
vec_sel(vector short __a,vector short __b,vector unsigned short __c)6477*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
6478*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b,
6479*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned short __c) {
6480*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6481*344a7f5eSAndroid Build Coastguard Worker }
6482*344a7f5eSAndroid Build Coastguard Worker 
vec_sel(vector short __a,vector short __b,vector bool short __c)6483*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_sel(vector short __a,
6484*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b,
6485*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool short __c) {
6486*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6487*344a7f5eSAndroid Build Coastguard Worker }
6488*344a7f5eSAndroid Build Coastguard Worker 
6489*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sel(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)6490*344a7f5eSAndroid Build Coastguard Worker vec_sel(vector unsigned short __a, vector unsigned short __b,
6491*344a7f5eSAndroid Build Coastguard Worker         vector unsigned short __c) {
6492*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~__c) | (__b & __c);
6493*344a7f5eSAndroid Build Coastguard Worker }
6494*344a7f5eSAndroid Build Coastguard Worker 
6495*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sel(vector unsigned short __a,vector unsigned short __b,vector bool short __c)6496*344a7f5eSAndroid Build Coastguard Worker vec_sel(vector unsigned short __a, vector unsigned short __b,
6497*344a7f5eSAndroid Build Coastguard Worker         vector bool short __c) {
6498*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector unsigned short)__c) |
6499*344a7f5eSAndroid Build Coastguard Worker          (__b & (vector unsigned short)__c);
6500*344a7f5eSAndroid Build Coastguard Worker }
6501*344a7f5eSAndroid Build Coastguard Worker 
vec_sel(vector bool short __a,vector bool short __b,vector unsigned short __c)6502*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai vec_sel(
6503*344a7f5eSAndroid Build Coastguard Worker     vector bool short __a, vector bool short __b, vector unsigned short __c) {
6504*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
6505*344a7f5eSAndroid Build Coastguard Worker }
6506*344a7f5eSAndroid Build Coastguard Worker 
6507*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_sel(vector bool short __a,vector bool short __b,vector bool short __c)6508*344a7f5eSAndroid Build Coastguard Worker vec_sel(vector bool short __a, vector bool short __b, vector bool short __c) {
6509*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~__c) | (__b & __c);
6510*344a7f5eSAndroid Build Coastguard Worker }
6511*344a7f5eSAndroid Build Coastguard Worker 
vec_sel(vector int __a,vector int __b,vector unsigned int __c)6512*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
6513*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b,
6514*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned int __c) {
6515*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6516*344a7f5eSAndroid Build Coastguard Worker }
6517*344a7f5eSAndroid Build Coastguard Worker 
vec_sel(vector int __a,vector int __b,vector bool int __c)6518*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sel(vector int __a,
6519*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b,
6520*344a7f5eSAndroid Build Coastguard Worker                                                   vector bool int __c) {
6521*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6522*344a7f5eSAndroid Build Coastguard Worker }
6523*344a7f5eSAndroid Build Coastguard Worker 
vec_sel(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)6524*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai vec_sel(
6525*344a7f5eSAndroid Build Coastguard Worker     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
6526*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~__c) | (__b & __c);
6527*344a7f5eSAndroid Build Coastguard Worker }
6528*344a7f5eSAndroid Build Coastguard Worker 
6529*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sel(vector unsigned int __a,vector unsigned int __b,vector bool int __c)6530*344a7f5eSAndroid Build Coastguard Worker vec_sel(vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
6531*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
6532*344a7f5eSAndroid Build Coastguard Worker }
6533*344a7f5eSAndroid Build Coastguard Worker 
6534*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_sel(vector bool int __a,vector bool int __b,vector unsigned int __c)6535*344a7f5eSAndroid Build Coastguard Worker vec_sel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
6536*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
6537*344a7f5eSAndroid Build Coastguard Worker }
6538*344a7f5eSAndroid Build Coastguard Worker 
vec_sel(vector bool int __a,vector bool int __b,vector bool int __c)6539*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_sel(vector bool int __a,
6540*344a7f5eSAndroid Build Coastguard Worker                                                        vector bool int __b,
6541*344a7f5eSAndroid Build Coastguard Worker                                                        vector bool int __c) {
6542*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~__c) | (__b & __c);
6543*344a7f5eSAndroid Build Coastguard Worker }
6544*344a7f5eSAndroid Build Coastguard Worker 
vec_sel(vector float __a,vector float __b,vector unsigned int __c)6545*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
6546*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b,
6547*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned int __c) {
6548*344a7f5eSAndroid Build Coastguard Worker   vector int __res = ((vector int)__a & ~(vector int)__c) |
6549*344a7f5eSAndroid Build Coastguard Worker                      ((vector int)__b & (vector int)__c);
6550*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
6551*344a7f5eSAndroid Build Coastguard Worker }
6552*344a7f5eSAndroid Build Coastguard Worker 
vec_sel(vector float __a,vector float __b,vector bool int __c)6553*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_sel(vector float __a,
6554*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b,
6555*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool int __c) {
6556*344a7f5eSAndroid Build Coastguard Worker   vector int __res = ((vector int)__a & ~(vector int)__c) |
6557*344a7f5eSAndroid Build Coastguard Worker                      ((vector int)__b & (vector int)__c);
6558*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
6559*344a7f5eSAndroid Build Coastguard Worker }
6560*344a7f5eSAndroid Build Coastguard Worker 
6561*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
6562*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_sel(vector double __a,vector double __b,vector bool long long __c)6563*344a7f5eSAndroid Build Coastguard Worker vec_sel(vector double __a, vector double __b, vector bool long long __c) {
6564*344a7f5eSAndroid Build Coastguard Worker   vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
6565*344a7f5eSAndroid Build Coastguard Worker                            ((vector long long)__b & (vector long long)__c);
6566*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__res;
6567*344a7f5eSAndroid Build Coastguard Worker }
6568*344a7f5eSAndroid Build Coastguard Worker 
6569*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_sel(vector double __a,vector double __b,vector unsigned long long __c)6570*344a7f5eSAndroid Build Coastguard Worker vec_sel(vector double __a, vector double __b, vector unsigned long long __c) {
6571*344a7f5eSAndroid Build Coastguard Worker   vector long long __res = ((vector long long)__a & ~(vector long long)__c) |
6572*344a7f5eSAndroid Build Coastguard Worker                            ((vector long long)__b & (vector long long)__c);
6573*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__res;
6574*344a7f5eSAndroid Build Coastguard Worker }
6575*344a7f5eSAndroid Build Coastguard Worker #endif
6576*344a7f5eSAndroid Build Coastguard Worker 
6577*344a7f5eSAndroid Build Coastguard Worker /* vec_vsel */
6578*344a7f5eSAndroid Build Coastguard Worker 
vec_vsel(vector signed char __a,vector signed char __b,vector unsigned char __c)6579*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai vec_vsel(
6580*344a7f5eSAndroid Build Coastguard Worker     vector signed char __a, vector signed char __b, vector unsigned char __c) {
6581*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6582*344a7f5eSAndroid Build Coastguard Worker }
6583*344a7f5eSAndroid Build Coastguard Worker 
6584*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsel(vector signed char __a,vector signed char __b,vector bool char __c)6585*344a7f5eSAndroid Build Coastguard Worker vec_vsel(vector signed char __a, vector signed char __b, vector bool char __c) {
6586*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector signed char)__c) | (__b & (vector signed char)__c);
6587*344a7f5eSAndroid Build Coastguard Worker }
6588*344a7f5eSAndroid Build Coastguard Worker 
6589*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsel(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)6590*344a7f5eSAndroid Build Coastguard Worker vec_vsel(vector unsigned char __a, vector unsigned char __b,
6591*344a7f5eSAndroid Build Coastguard Worker          vector unsigned char __c) {
6592*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~__c) | (__b & __c);
6593*344a7f5eSAndroid Build Coastguard Worker }
6594*344a7f5eSAndroid Build Coastguard Worker 
vec_vsel(vector unsigned char __a,vector unsigned char __b,vector bool char __c)6595*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai vec_vsel(
6596*344a7f5eSAndroid Build Coastguard Worker     vector unsigned char __a, vector unsigned char __b, vector bool char __c) {
6597*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector unsigned char)__c) | (__b & (vector unsigned char)__c);
6598*344a7f5eSAndroid Build Coastguard Worker }
6599*344a7f5eSAndroid Build Coastguard Worker 
6600*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_vsel(vector bool char __a,vector bool char __b,vector unsigned char __c)6601*344a7f5eSAndroid Build Coastguard Worker vec_vsel(vector bool char __a, vector bool char __b, vector unsigned char __c) {
6602*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector bool char)__c) | (__b & (vector bool char)__c);
6603*344a7f5eSAndroid Build Coastguard Worker }
6604*344a7f5eSAndroid Build Coastguard Worker 
vec_vsel(vector bool char __a,vector bool char __b,vector bool char __c)6605*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_vsel(vector bool char __a,
6606*344a7f5eSAndroid Build Coastguard Worker                                                          vector bool char __b,
6607*344a7f5eSAndroid Build Coastguard Worker                                                          vector bool char __c) {
6608*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~__c) | (__b & __c);
6609*344a7f5eSAndroid Build Coastguard Worker }
6610*344a7f5eSAndroid Build Coastguard Worker 
6611*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai
vec_vsel(vector short __a,vector short __b,vector unsigned short __c)6612*344a7f5eSAndroid Build Coastguard Worker vec_vsel(vector short __a, vector short __b, vector unsigned short __c) {
6613*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6614*344a7f5eSAndroid Build Coastguard Worker }
6615*344a7f5eSAndroid Build Coastguard Worker 
vec_vsel(vector short __a,vector short __b,vector bool short __c)6616*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsel(vector short __a,
6617*344a7f5eSAndroid Build Coastguard Worker                                                      vector short __b,
6618*344a7f5eSAndroid Build Coastguard Worker                                                      vector bool short __c) {
6619*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector short)__c) | (__b & (vector short)__c);
6620*344a7f5eSAndroid Build Coastguard Worker }
6621*344a7f5eSAndroid Build Coastguard Worker 
6622*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsel(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)6623*344a7f5eSAndroid Build Coastguard Worker vec_vsel(vector unsigned short __a, vector unsigned short __b,
6624*344a7f5eSAndroid Build Coastguard Worker          vector unsigned short __c) {
6625*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~__c) | (__b & __c);
6626*344a7f5eSAndroid Build Coastguard Worker }
6627*344a7f5eSAndroid Build Coastguard Worker 
6628*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsel(vector unsigned short __a,vector unsigned short __b,vector bool short __c)6629*344a7f5eSAndroid Build Coastguard Worker vec_vsel(vector unsigned short __a, vector unsigned short __b,
6630*344a7f5eSAndroid Build Coastguard Worker          vector bool short __c) {
6631*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector unsigned short)__c) |
6632*344a7f5eSAndroid Build Coastguard Worker          (__b & (vector unsigned short)__c);
6633*344a7f5eSAndroid Build Coastguard Worker }
6634*344a7f5eSAndroid Build Coastguard Worker 
vec_vsel(vector bool short __a,vector bool short __b,vector unsigned short __c)6635*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai vec_vsel(
6636*344a7f5eSAndroid Build Coastguard Worker     vector bool short __a, vector bool short __b, vector unsigned short __c) {
6637*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector bool short)__c) | (__b & (vector bool short)__c);
6638*344a7f5eSAndroid Build Coastguard Worker }
6639*344a7f5eSAndroid Build Coastguard Worker 
6640*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vsel(vector bool short __a,vector bool short __b,vector bool short __c)6641*344a7f5eSAndroid Build Coastguard Worker vec_vsel(vector bool short __a, vector bool short __b, vector bool short __c) {
6642*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~__c) | (__b & __c);
6643*344a7f5eSAndroid Build Coastguard Worker }
6644*344a7f5eSAndroid Build Coastguard Worker 
vec_vsel(vector int __a,vector int __b,vector unsigned int __c)6645*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
6646*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b,
6647*344a7f5eSAndroid Build Coastguard Worker                                                    vector unsigned int __c) {
6648*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6649*344a7f5eSAndroid Build Coastguard Worker }
6650*344a7f5eSAndroid Build Coastguard Worker 
vec_vsel(vector int __a,vector int __b,vector bool int __c)6651*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsel(vector int __a,
6652*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b,
6653*344a7f5eSAndroid Build Coastguard Worker                                                    vector bool int __c) {
6654*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector int)__c) | (__b & (vector int)__c);
6655*344a7f5eSAndroid Build Coastguard Worker }
6656*344a7f5eSAndroid Build Coastguard Worker 
vec_vsel(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)6657*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
6658*344a7f5eSAndroid Build Coastguard Worker     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
6659*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~__c) | (__b & __c);
6660*344a7f5eSAndroid Build Coastguard Worker }
6661*344a7f5eSAndroid Build Coastguard Worker 
vec_vsel(vector unsigned int __a,vector unsigned int __b,vector bool int __c)6662*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai vec_vsel(
6663*344a7f5eSAndroid Build Coastguard Worker     vector unsigned int __a, vector unsigned int __b, vector bool int __c) {
6664*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector unsigned int)__c) | (__b & (vector unsigned int)__c);
6665*344a7f5eSAndroid Build Coastguard Worker }
6666*344a7f5eSAndroid Build Coastguard Worker 
6667*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_vsel(vector bool int __a,vector bool int __b,vector unsigned int __c)6668*344a7f5eSAndroid Build Coastguard Worker vec_vsel(vector bool int __a, vector bool int __b, vector unsigned int __c) {
6669*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~(vector bool int)__c) | (__b & (vector bool int)__c);
6670*344a7f5eSAndroid Build Coastguard Worker }
6671*344a7f5eSAndroid Build Coastguard Worker 
vec_vsel(vector bool int __a,vector bool int __b,vector bool int __c)6672*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_vsel(vector bool int __a,
6673*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool int __b,
6674*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool int __c) {
6675*344a7f5eSAndroid Build Coastguard Worker   return (__a & ~__c) | (__b & __c);
6676*344a7f5eSAndroid Build Coastguard Worker }
6677*344a7f5eSAndroid Build Coastguard Worker 
vec_vsel(vector float __a,vector float __b,vector unsigned int __c)6678*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
6679*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b,
6680*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned int __c) {
6681*344a7f5eSAndroid Build Coastguard Worker   vector int __res = ((vector int)__a & ~(vector int)__c) |
6682*344a7f5eSAndroid Build Coastguard Worker                      ((vector int)__b & (vector int)__c);
6683*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
6684*344a7f5eSAndroid Build Coastguard Worker }
6685*344a7f5eSAndroid Build Coastguard Worker 
vec_vsel(vector float __a,vector float __b,vector bool int __c)6686*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vsel(vector float __a,
6687*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b,
6688*344a7f5eSAndroid Build Coastguard Worker                                                      vector bool int __c) {
6689*344a7f5eSAndroid Build Coastguard Worker   vector int __res = ((vector int)__a & ~(vector int)__c) |
6690*344a7f5eSAndroid Build Coastguard Worker                      ((vector int)__b & (vector int)__c);
6691*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
6692*344a7f5eSAndroid Build Coastguard Worker }
6693*344a7f5eSAndroid Build Coastguard Worker 
6694*344a7f5eSAndroid Build Coastguard Worker /* vec_sl */
6695*344a7f5eSAndroid Build Coastguard Worker 
6696*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_sl(vector signed char __a,vector unsigned char __b)6697*344a7f5eSAndroid Build Coastguard Worker vec_sl(vector signed char __a, vector unsigned char __b) {
6698*344a7f5eSAndroid Build Coastguard Worker   return __a << (vector signed char)__b;
6699*344a7f5eSAndroid Build Coastguard Worker }
6700*344a7f5eSAndroid Build Coastguard Worker 
6701*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sl(vector unsigned char __a,vector unsigned char __b)6702*344a7f5eSAndroid Build Coastguard Worker vec_sl(vector unsigned char __a, vector unsigned char __b) {
6703*344a7f5eSAndroid Build Coastguard Worker   return __a << __b;
6704*344a7f5eSAndroid Build Coastguard Worker }
6705*344a7f5eSAndroid Build Coastguard Worker 
vec_sl(vector short __a,vector unsigned short __b)6706*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_sl(vector short __a,
6707*344a7f5eSAndroid Build Coastguard Worker                                                    vector unsigned short __b) {
6708*344a7f5eSAndroid Build Coastguard Worker   return __a << (vector short)__b;
6709*344a7f5eSAndroid Build Coastguard Worker }
6710*344a7f5eSAndroid Build Coastguard Worker 
6711*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sl(vector unsigned short __a,vector unsigned short __b)6712*344a7f5eSAndroid Build Coastguard Worker vec_sl(vector unsigned short __a, vector unsigned short __b) {
6713*344a7f5eSAndroid Build Coastguard Worker   return __a << __b;
6714*344a7f5eSAndroid Build Coastguard Worker }
6715*344a7f5eSAndroid Build Coastguard Worker 
vec_sl(vector int __a,vector unsigned int __b)6716*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sl(vector int __a,
6717*344a7f5eSAndroid Build Coastguard Worker                                                  vector unsigned int __b) {
6718*344a7f5eSAndroid Build Coastguard Worker   return __a << (vector int)__b;
6719*344a7f5eSAndroid Build Coastguard Worker }
6720*344a7f5eSAndroid Build Coastguard Worker 
6721*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sl(vector unsigned int __a,vector unsigned int __b)6722*344a7f5eSAndroid Build Coastguard Worker vec_sl(vector unsigned int __a, vector unsigned int __b) {
6723*344a7f5eSAndroid Build Coastguard Worker   return __a << __b;
6724*344a7f5eSAndroid Build Coastguard Worker }
6725*344a7f5eSAndroid Build Coastguard Worker 
6726*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
6727*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_sl(vector signed long long __a,vector unsigned long long __b)6728*344a7f5eSAndroid Build Coastguard Worker vec_sl(vector signed long long __a, vector unsigned long long __b) {
6729*344a7f5eSAndroid Build Coastguard Worker   return __a << (vector long long)__b;
6730*344a7f5eSAndroid Build Coastguard Worker }
6731*344a7f5eSAndroid Build Coastguard Worker 
6732*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sl(vector unsigned long long __a,vector unsigned long long __b)6733*344a7f5eSAndroid Build Coastguard Worker vec_sl(vector unsigned long long __a, vector unsigned long long __b) {
6734*344a7f5eSAndroid Build Coastguard Worker   return __a << __b;
6735*344a7f5eSAndroid Build Coastguard Worker }
6736*344a7f5eSAndroid Build Coastguard Worker #endif
6737*344a7f5eSAndroid Build Coastguard Worker 
6738*344a7f5eSAndroid Build Coastguard Worker /* vec_vslb */
6739*344a7f5eSAndroid Build Coastguard Worker 
6740*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vslb vec_vslb
6741*344a7f5eSAndroid Build Coastguard Worker 
6742*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vslb(vector signed char __a,vector unsigned char __b)6743*344a7f5eSAndroid Build Coastguard Worker vec_vslb(vector signed char __a, vector unsigned char __b) {
6744*344a7f5eSAndroid Build Coastguard Worker   return vec_sl(__a, __b);
6745*344a7f5eSAndroid Build Coastguard Worker }
6746*344a7f5eSAndroid Build Coastguard Worker 
6747*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vslb(vector unsigned char __a,vector unsigned char __b)6748*344a7f5eSAndroid Build Coastguard Worker vec_vslb(vector unsigned char __a, vector unsigned char __b) {
6749*344a7f5eSAndroid Build Coastguard Worker   return vec_sl(__a, __b);
6750*344a7f5eSAndroid Build Coastguard Worker }
6751*344a7f5eSAndroid Build Coastguard Worker 
6752*344a7f5eSAndroid Build Coastguard Worker /* vec_vslh */
6753*344a7f5eSAndroid Build Coastguard Worker 
6754*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vslh vec_vslh
6755*344a7f5eSAndroid Build Coastguard Worker 
6756*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai
vec_vslh(vector short __a,vector unsigned short __b)6757*344a7f5eSAndroid Build Coastguard Worker vec_vslh(vector short __a, vector unsigned short __b) {
6758*344a7f5eSAndroid Build Coastguard Worker   return vec_sl(__a, __b);
6759*344a7f5eSAndroid Build Coastguard Worker }
6760*344a7f5eSAndroid Build Coastguard Worker 
6761*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vslh(vector unsigned short __a,vector unsigned short __b)6762*344a7f5eSAndroid Build Coastguard Worker vec_vslh(vector unsigned short __a, vector unsigned short __b) {
6763*344a7f5eSAndroid Build Coastguard Worker   return vec_sl(__a, __b);
6764*344a7f5eSAndroid Build Coastguard Worker }
6765*344a7f5eSAndroid Build Coastguard Worker 
6766*344a7f5eSAndroid Build Coastguard Worker /* vec_vslw */
6767*344a7f5eSAndroid Build Coastguard Worker 
6768*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vslw vec_vslw
6769*344a7f5eSAndroid Build Coastguard Worker 
vec_vslw(vector int __a,vector unsigned int __b)6770*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vslw(vector int __a,
6771*344a7f5eSAndroid Build Coastguard Worker                                                    vector unsigned int __b) {
6772*344a7f5eSAndroid Build Coastguard Worker   return vec_sl(__a, __b);
6773*344a7f5eSAndroid Build Coastguard Worker }
6774*344a7f5eSAndroid Build Coastguard Worker 
6775*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vslw(vector unsigned int __a,vector unsigned int __b)6776*344a7f5eSAndroid Build Coastguard Worker vec_vslw(vector unsigned int __a, vector unsigned int __b) {
6777*344a7f5eSAndroid Build Coastguard Worker   return vec_sl(__a, __b);
6778*344a7f5eSAndroid Build Coastguard Worker }
6779*344a7f5eSAndroid Build Coastguard Worker 
6780*344a7f5eSAndroid Build Coastguard Worker /* vec_sld */
6781*344a7f5eSAndroid Build Coastguard Worker 
6782*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vsldoi_4si vec_sld
6783*344a7f5eSAndroid Build Coastguard Worker 
vec_sld(vector signed char __a,vector signed char __b,unsigned const int __c)6784*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai vec_sld(
6785*344a7f5eSAndroid Build Coastguard Worker     vector signed char __a, vector signed char __b, unsigned const int __c) {
6786*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
6787*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6788*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6789*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6790*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
6791*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
6792*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
6793*344a7f5eSAndroid Build Coastguard Worker #else
6794*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6795*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
6796*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6797*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6798*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6799*344a7f5eSAndroid Build Coastguard Worker #endif
6800*344a7f5eSAndroid Build Coastguard Worker }
6801*344a7f5eSAndroid Build Coastguard Worker 
6802*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sld(vector unsigned char __a,vector unsigned char __b,unsigned const int __c)6803*344a7f5eSAndroid Build Coastguard Worker vec_sld(vector unsigned char __a, vector unsigned char __b,
6804*344a7f5eSAndroid Build Coastguard Worker         unsigned const int __c) {
6805*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
6806*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6807*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6808*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6809*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
6810*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
6811*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
6812*344a7f5eSAndroid Build Coastguard Worker #else
6813*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6814*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
6815*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6816*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6817*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6818*344a7f5eSAndroid Build Coastguard Worker #endif
6819*344a7f5eSAndroid Build Coastguard Worker }
6820*344a7f5eSAndroid Build Coastguard Worker 
6821*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_sld(vector bool char __a,vector bool char __b,unsigned const int __c)6822*344a7f5eSAndroid Build Coastguard Worker vec_sld(vector bool char __a, vector bool char __b, unsigned const int __c) {
6823*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
6824*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6825*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6826*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6827*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
6828*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
6829*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
6830*344a7f5eSAndroid Build Coastguard Worker #else
6831*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6832*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
6833*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6834*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6835*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6836*344a7f5eSAndroid Build Coastguard Worker #endif
6837*344a7f5eSAndroid Build Coastguard Worker }
6838*344a7f5eSAndroid Build Coastguard Worker 
vec_sld(vector signed short __a,vector signed short __b,unsigned const int __c)6839*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai vec_sld(
6840*344a7f5eSAndroid Build Coastguard Worker     vector signed short __a, vector signed short __b, unsigned const int __c) {
6841*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
6842*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6843*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6844*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6845*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
6846*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
6847*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
6848*344a7f5eSAndroid Build Coastguard Worker #else
6849*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6850*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
6851*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6852*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6853*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6854*344a7f5eSAndroid Build Coastguard Worker #endif
6855*344a7f5eSAndroid Build Coastguard Worker }
6856*344a7f5eSAndroid Build Coastguard Worker 
6857*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sld(vector unsigned short __a,vector unsigned short __b,unsigned const int __c)6858*344a7f5eSAndroid Build Coastguard Worker vec_sld(vector unsigned short __a, vector unsigned short __b,
6859*344a7f5eSAndroid Build Coastguard Worker         unsigned const int __c) {
6860*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
6861*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6862*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6863*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6864*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
6865*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
6866*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
6867*344a7f5eSAndroid Build Coastguard Worker #else
6868*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6869*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
6870*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6871*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6872*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6873*344a7f5eSAndroid Build Coastguard Worker #endif
6874*344a7f5eSAndroid Build Coastguard Worker }
6875*344a7f5eSAndroid Build Coastguard Worker 
6876*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_sld(vector bool short __a,vector bool short __b,unsigned const int __c)6877*344a7f5eSAndroid Build Coastguard Worker vec_sld(vector bool short __a, vector bool short __b, unsigned const int __c) {
6878*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
6879*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6880*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6881*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6882*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
6883*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
6884*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
6885*344a7f5eSAndroid Build Coastguard Worker #else
6886*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6887*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
6888*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6889*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6890*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6891*344a7f5eSAndroid Build Coastguard Worker #endif
6892*344a7f5eSAndroid Build Coastguard Worker }
6893*344a7f5eSAndroid Build Coastguard Worker 
vec_sld(vector pixel __a,vector pixel __b,unsigned const int __c)6894*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_sld(vector pixel __a,
6895*344a7f5eSAndroid Build Coastguard Worker                                                     vector pixel __b,
6896*344a7f5eSAndroid Build Coastguard Worker                                                     unsigned const int __c) {
6897*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
6898*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6899*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6900*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6901*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
6902*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
6903*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
6904*344a7f5eSAndroid Build Coastguard Worker #else
6905*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6906*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
6907*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6908*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6909*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6910*344a7f5eSAndroid Build Coastguard Worker #endif
6911*344a7f5eSAndroid Build Coastguard Worker }
6912*344a7f5eSAndroid Build Coastguard Worker 
6913*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_sld(vector signed int __a,vector signed int __b,unsigned const int __c)6914*344a7f5eSAndroid Build Coastguard Worker vec_sld(vector signed int __a, vector signed int __b, unsigned const int __c) {
6915*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
6916*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6917*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6918*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6919*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
6920*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
6921*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
6922*344a7f5eSAndroid Build Coastguard Worker #else
6923*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6924*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
6925*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6926*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6927*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6928*344a7f5eSAndroid Build Coastguard Worker #endif
6929*344a7f5eSAndroid Build Coastguard Worker }
6930*344a7f5eSAndroid Build Coastguard Worker 
vec_sld(vector unsigned int __a,vector unsigned int __b,unsigned const int __c)6931*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai vec_sld(
6932*344a7f5eSAndroid Build Coastguard Worker     vector unsigned int __a, vector unsigned int __b, unsigned const int __c) {
6933*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
6934*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6935*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6936*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6937*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
6938*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
6939*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
6940*344a7f5eSAndroid Build Coastguard Worker #else
6941*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6942*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
6943*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6944*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6945*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6946*344a7f5eSAndroid Build Coastguard Worker #endif
6947*344a7f5eSAndroid Build Coastguard Worker }
6948*344a7f5eSAndroid Build Coastguard Worker 
vec_sld(vector bool int __a,vector bool int __b,unsigned const int __c)6949*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_sld(vector bool int __a,
6950*344a7f5eSAndroid Build Coastguard Worker                                                        vector bool int __b,
6951*344a7f5eSAndroid Build Coastguard Worker                                                        unsigned const int __c) {
6952*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
6953*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6954*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6955*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6956*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
6957*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
6958*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
6959*344a7f5eSAndroid Build Coastguard Worker #else
6960*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6961*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
6962*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6963*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6964*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6965*344a7f5eSAndroid Build Coastguard Worker #endif
6966*344a7f5eSAndroid Build Coastguard Worker }
6967*344a7f5eSAndroid Build Coastguard Worker 
vec_sld(vector float __a,vector float __b,unsigned const int __c)6968*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_sld(vector float __a,
6969*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b,
6970*344a7f5eSAndroid Build Coastguard Worker                                                     unsigned const int __c) {
6971*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
6972*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6973*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6974*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6975*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
6976*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
6977*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
6978*344a7f5eSAndroid Build Coastguard Worker #else
6979*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6980*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
6981*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
6982*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
6983*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
6984*344a7f5eSAndroid Build Coastguard Worker #endif
6985*344a7f5eSAndroid Build Coastguard Worker }
6986*344a7f5eSAndroid Build Coastguard Worker 
6987*344a7f5eSAndroid Build Coastguard Worker /* vec_vsldoi */
6988*344a7f5eSAndroid Build Coastguard Worker 
6989*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsldoi(vector signed char __a,vector signed char __b,unsigned char __c)6990*344a7f5eSAndroid Build Coastguard Worker vec_vsldoi(vector signed char __a, vector signed char __b, unsigned char __c) {
6991*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
6992*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
6993*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
6994*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
6995*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
6996*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
6997*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
6998*344a7f5eSAndroid Build Coastguard Worker #else
6999*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7000*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
7001*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7002*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7003*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7004*344a7f5eSAndroid Build Coastguard Worker #endif
7005*344a7f5eSAndroid Build Coastguard Worker }
7006*344a7f5eSAndroid Build Coastguard Worker 
vec_vsldoi(vector unsigned char __a,vector unsigned char __b,unsigned char __c)7007*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai vec_vsldoi(
7008*344a7f5eSAndroid Build Coastguard Worker     vector unsigned char __a, vector unsigned char __b, unsigned char __c) {
7009*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
7010*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
7011*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7012*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7013*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
7014*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
7015*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
7016*344a7f5eSAndroid Build Coastguard Worker #else
7017*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7018*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
7019*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7020*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7021*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7022*344a7f5eSAndroid Build Coastguard Worker #endif
7023*344a7f5eSAndroid Build Coastguard Worker }
7024*344a7f5eSAndroid Build Coastguard Worker 
vec_vsldoi(vector short __a,vector short __b,unsigned char __c)7025*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsldoi(vector short __a,
7026*344a7f5eSAndroid Build Coastguard Worker                                                        vector short __b,
7027*344a7f5eSAndroid Build Coastguard Worker                                                        unsigned char __c) {
7028*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
7029*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
7030*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7031*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7032*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
7033*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
7034*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
7035*344a7f5eSAndroid Build Coastguard Worker #else
7036*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7037*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
7038*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7039*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7040*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7041*344a7f5eSAndroid Build Coastguard Worker #endif
7042*344a7f5eSAndroid Build Coastguard Worker }
7043*344a7f5eSAndroid Build Coastguard Worker 
vec_vsldoi(vector unsigned short __a,vector unsigned short __b,unsigned char __c)7044*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai vec_vsldoi(
7045*344a7f5eSAndroid Build Coastguard Worker     vector unsigned short __a, vector unsigned short __b, unsigned char __c) {
7046*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
7047*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
7048*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7049*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7050*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
7051*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
7052*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
7053*344a7f5eSAndroid Build Coastguard Worker #else
7054*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7055*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
7056*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7057*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7058*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7059*344a7f5eSAndroid Build Coastguard Worker #endif
7060*344a7f5eSAndroid Build Coastguard Worker }
7061*344a7f5eSAndroid Build Coastguard Worker 
vec_vsldoi(vector pixel __a,vector pixel __b,unsigned char __c)7062*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vsldoi(vector pixel __a,
7063*344a7f5eSAndroid Build Coastguard Worker                                                        vector pixel __b,
7064*344a7f5eSAndroid Build Coastguard Worker                                                        unsigned char __c) {
7065*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
7066*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
7067*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7068*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7069*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
7070*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
7071*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
7072*344a7f5eSAndroid Build Coastguard Worker #else
7073*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7074*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
7075*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7076*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7077*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7078*344a7f5eSAndroid Build Coastguard Worker #endif
7079*344a7f5eSAndroid Build Coastguard Worker }
7080*344a7f5eSAndroid Build Coastguard Worker 
vec_vsldoi(vector int __a,vector int __b,unsigned char __c)7081*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsldoi(vector int __a,
7082*344a7f5eSAndroid Build Coastguard Worker                                                      vector int __b,
7083*344a7f5eSAndroid Build Coastguard Worker                                                      unsigned char __c) {
7084*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
7085*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
7086*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7087*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7088*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
7089*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
7090*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
7091*344a7f5eSAndroid Build Coastguard Worker #else
7092*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7093*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
7094*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7095*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7096*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7097*344a7f5eSAndroid Build Coastguard Worker #endif
7098*344a7f5eSAndroid Build Coastguard Worker }
7099*344a7f5eSAndroid Build Coastguard Worker 
vec_vsldoi(vector unsigned int __a,vector unsigned int __b,unsigned char __c)7100*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai vec_vsldoi(
7101*344a7f5eSAndroid Build Coastguard Worker     vector unsigned int __a, vector unsigned int __b, unsigned char __c) {
7102*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
7103*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
7104*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7105*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7106*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
7107*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
7108*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
7109*344a7f5eSAndroid Build Coastguard Worker #else
7110*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7111*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
7112*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7113*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7114*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7115*344a7f5eSAndroid Build Coastguard Worker #endif
7116*344a7f5eSAndroid Build Coastguard Worker }
7117*344a7f5eSAndroid Build Coastguard Worker 
vec_vsldoi(vector float __a,vector float __b,unsigned char __c)7118*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vsldoi(vector float __a,
7119*344a7f5eSAndroid Build Coastguard Worker                                                        vector float __b,
7120*344a7f5eSAndroid Build Coastguard Worker                                                        unsigned char __c) {
7121*344a7f5eSAndroid Build Coastguard Worker   unsigned char __d = __c & 0x0F;
7122*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
7123*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7124*344a7f5eSAndroid Build Coastguard Worker       __b, __a, (vector unsigned char)(16 - __d, 17 - __d, 18 - __d, 19 - __d,
7125*344a7f5eSAndroid Build Coastguard Worker                                        20 - __d, 21 - __d, 22 - __d, 23 - __d,
7126*344a7f5eSAndroid Build Coastguard Worker                                        24 - __d, 25 - __d, 26 - __d, 27 - __d,
7127*344a7f5eSAndroid Build Coastguard Worker                                        28 - __d, 29 - __d, 30 - __d, 31 - __d));
7128*344a7f5eSAndroid Build Coastguard Worker #else
7129*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(
7130*344a7f5eSAndroid Build Coastguard Worker       __a, __b,
7131*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)(__d, __d + 1, __d + 2, __d + 3, __d + 4, __d + 5,
7132*344a7f5eSAndroid Build Coastguard Worker                              __d + 6, __d + 7, __d + 8, __d + 9, __d + 10,
7133*344a7f5eSAndroid Build Coastguard Worker                              __d + 11, __d + 12, __d + 13, __d + 14, __d + 15));
7134*344a7f5eSAndroid Build Coastguard Worker #endif
7135*344a7f5eSAndroid Build Coastguard Worker }
7136*344a7f5eSAndroid Build Coastguard Worker 
7137*344a7f5eSAndroid Build Coastguard Worker /* vec_sll */
7138*344a7f5eSAndroid Build Coastguard Worker 
7139*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_sll(vector signed char __a,vector unsigned char __b)7140*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector signed char __a, vector unsigned char __b) {
7141*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7142*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b);
7143*344a7f5eSAndroid Build Coastguard Worker }
7144*344a7f5eSAndroid Build Coastguard Worker 
7145*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_sll(vector signed char __a,vector unsigned short __b)7146*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector signed char __a, vector unsigned short __b) {
7147*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7148*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b);
7149*344a7f5eSAndroid Build Coastguard Worker }
7150*344a7f5eSAndroid Build Coastguard Worker 
7151*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_sll(vector signed char __a,vector unsigned int __b)7152*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector signed char __a, vector unsigned int __b) {
7153*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7154*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b);
7155*344a7f5eSAndroid Build Coastguard Worker }
7156*344a7f5eSAndroid Build Coastguard Worker 
7157*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sll(vector unsigned char __a,vector unsigned char __b)7158*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector unsigned char __a, vector unsigned char __b) {
7159*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7160*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
7161*344a7f5eSAndroid Build Coastguard Worker }
7162*344a7f5eSAndroid Build Coastguard Worker 
7163*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sll(vector unsigned char __a,vector unsigned short __b)7164*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector unsigned char __a, vector unsigned short __b) {
7165*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7166*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
7167*344a7f5eSAndroid Build Coastguard Worker }
7168*344a7f5eSAndroid Build Coastguard Worker 
7169*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sll(vector unsigned char __a,vector unsigned int __b)7170*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector unsigned char __a, vector unsigned int __b) {
7171*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7172*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
7173*344a7f5eSAndroid Build Coastguard Worker }
7174*344a7f5eSAndroid Build Coastguard Worker 
7175*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_sll(vector bool char __a,vector unsigned char __b)7176*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector bool char __a, vector unsigned char __b) {
7177*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7178*344a7f5eSAndroid Build Coastguard Worker                                                  (vector int)__b);
7179*344a7f5eSAndroid Build Coastguard Worker }
7180*344a7f5eSAndroid Build Coastguard Worker 
7181*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_sll(vector bool char __a,vector unsigned short __b)7182*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector bool char __a, vector unsigned short __b) {
7183*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7184*344a7f5eSAndroid Build Coastguard Worker                                                  (vector int)__b);
7185*344a7f5eSAndroid Build Coastguard Worker }
7186*344a7f5eSAndroid Build Coastguard Worker 
7187*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_sll(vector bool char __a,vector unsigned int __b)7188*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector bool char __a, vector unsigned int __b) {
7189*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7190*344a7f5eSAndroid Build Coastguard Worker                                                  (vector int)__b);
7191*344a7f5eSAndroid Build Coastguard Worker }
7192*344a7f5eSAndroid Build Coastguard Worker 
vec_sll(vector short __a,vector unsigned char __b)7193*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
7194*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
7195*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7196*344a7f5eSAndroid Build Coastguard Worker }
7197*344a7f5eSAndroid Build Coastguard Worker 
vec_sll(vector short __a,vector unsigned short __b)7198*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
7199*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned short __b) {
7200*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7201*344a7f5eSAndroid Build Coastguard Worker }
7202*344a7f5eSAndroid Build Coastguard Worker 
vec_sll(vector short __a,vector unsigned int __b)7203*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_sll(vector short __a,
7204*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned int __b) {
7205*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7206*344a7f5eSAndroid Build Coastguard Worker }
7207*344a7f5eSAndroid Build Coastguard Worker 
7208*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sll(vector unsigned short __a,vector unsigned char __b)7209*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector unsigned short __a, vector unsigned char __b) {
7210*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7211*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
7212*344a7f5eSAndroid Build Coastguard Worker }
7213*344a7f5eSAndroid Build Coastguard Worker 
7214*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sll(vector unsigned short __a,vector unsigned short __b)7215*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector unsigned short __a, vector unsigned short __b) {
7216*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7217*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
7218*344a7f5eSAndroid Build Coastguard Worker }
7219*344a7f5eSAndroid Build Coastguard Worker 
7220*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sll(vector unsigned short __a,vector unsigned int __b)7221*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector unsigned short __a, vector unsigned int __b) {
7222*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7223*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
7224*344a7f5eSAndroid Build Coastguard Worker }
7225*344a7f5eSAndroid Build Coastguard Worker 
7226*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_sll(vector bool short __a,vector unsigned char __b)7227*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector bool short __a, vector unsigned char __b) {
7228*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7229*344a7f5eSAndroid Build Coastguard Worker                                                   (vector int)__b);
7230*344a7f5eSAndroid Build Coastguard Worker }
7231*344a7f5eSAndroid Build Coastguard Worker 
7232*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_sll(vector bool short __a,vector unsigned short __b)7233*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector bool short __a, vector unsigned short __b) {
7234*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7235*344a7f5eSAndroid Build Coastguard Worker                                                   (vector int)__b);
7236*344a7f5eSAndroid Build Coastguard Worker }
7237*344a7f5eSAndroid Build Coastguard Worker 
7238*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_sll(vector bool short __a,vector unsigned int __b)7239*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector bool short __a, vector unsigned int __b) {
7240*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7241*344a7f5eSAndroid Build Coastguard Worker                                                   (vector int)__b);
7242*344a7f5eSAndroid Build Coastguard Worker }
7243*344a7f5eSAndroid Build Coastguard Worker 
vec_sll(vector pixel __a,vector unsigned char __b)7244*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
7245*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
7246*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7247*344a7f5eSAndroid Build Coastguard Worker }
7248*344a7f5eSAndroid Build Coastguard Worker 
vec_sll(vector pixel __a,vector unsigned short __b)7249*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
7250*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned short __b) {
7251*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7252*344a7f5eSAndroid Build Coastguard Worker }
7253*344a7f5eSAndroid Build Coastguard Worker 
vec_sll(vector pixel __a,vector unsigned int __b)7254*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_sll(vector pixel __a,
7255*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned int __b) {
7256*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7257*344a7f5eSAndroid Build Coastguard Worker }
7258*344a7f5eSAndroid Build Coastguard Worker 
vec_sll(vector int __a,vector unsigned char __b)7259*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
7260*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned char __b) {
7261*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7262*344a7f5eSAndroid Build Coastguard Worker }
7263*344a7f5eSAndroid Build Coastguard Worker 
vec_sll(vector int __a,vector unsigned short __b)7264*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
7265*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned short __b) {
7266*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7267*344a7f5eSAndroid Build Coastguard Worker }
7268*344a7f5eSAndroid Build Coastguard Worker 
vec_sll(vector int __a,vector unsigned int __b)7269*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sll(vector int __a,
7270*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned int __b) {
7271*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7272*344a7f5eSAndroid Build Coastguard Worker }
7273*344a7f5eSAndroid Build Coastguard Worker 
7274*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sll(vector unsigned int __a,vector unsigned char __b)7275*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector unsigned int __a, vector unsigned char __b) {
7276*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7277*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
7278*344a7f5eSAndroid Build Coastguard Worker }
7279*344a7f5eSAndroid Build Coastguard Worker 
7280*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sll(vector unsigned int __a,vector unsigned short __b)7281*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector unsigned int __a, vector unsigned short __b) {
7282*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7283*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
7284*344a7f5eSAndroid Build Coastguard Worker }
7285*344a7f5eSAndroid Build Coastguard Worker 
7286*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sll(vector unsigned int __a,vector unsigned int __b)7287*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector unsigned int __a, vector unsigned int __b) {
7288*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7289*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
7290*344a7f5eSAndroid Build Coastguard Worker }
7291*344a7f5eSAndroid Build Coastguard Worker 
7292*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_sll(vector bool int __a,vector unsigned char __b)7293*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector bool int __a, vector unsigned char __b) {
7294*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7295*344a7f5eSAndroid Build Coastguard Worker                                                 (vector int)__b);
7296*344a7f5eSAndroid Build Coastguard Worker }
7297*344a7f5eSAndroid Build Coastguard Worker 
7298*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_sll(vector bool int __a,vector unsigned short __b)7299*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector bool int __a, vector unsigned short __b) {
7300*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7301*344a7f5eSAndroid Build Coastguard Worker                                                 (vector int)__b);
7302*344a7f5eSAndroid Build Coastguard Worker }
7303*344a7f5eSAndroid Build Coastguard Worker 
7304*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_sll(vector bool int __a,vector unsigned int __b)7305*344a7f5eSAndroid Build Coastguard Worker vec_sll(vector bool int __a, vector unsigned int __b) {
7306*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7307*344a7f5eSAndroid Build Coastguard Worker                                                 (vector int)__b);
7308*344a7f5eSAndroid Build Coastguard Worker }
7309*344a7f5eSAndroid Build Coastguard Worker 
7310*344a7f5eSAndroid Build Coastguard Worker /* vec_vsl */
7311*344a7f5eSAndroid Build Coastguard Worker 
7312*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsl(vector signed char __a,vector unsigned char __b)7313*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector signed char __a, vector unsigned char __b) {
7314*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7315*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b);
7316*344a7f5eSAndroid Build Coastguard Worker }
7317*344a7f5eSAndroid Build Coastguard Worker 
7318*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsl(vector signed char __a,vector unsigned short __b)7319*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector signed char __a, vector unsigned short __b) {
7320*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7321*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b);
7322*344a7f5eSAndroid Build Coastguard Worker }
7323*344a7f5eSAndroid Build Coastguard Worker 
7324*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsl(vector signed char __a,vector unsigned int __b)7325*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector signed char __a, vector unsigned int __b) {
7326*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsl((vector int)__a,
7327*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b);
7328*344a7f5eSAndroid Build Coastguard Worker }
7329*344a7f5eSAndroid Build Coastguard Worker 
7330*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsl(vector unsigned char __a,vector unsigned char __b)7331*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector unsigned char __a, vector unsigned char __b) {
7332*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7333*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
7334*344a7f5eSAndroid Build Coastguard Worker }
7335*344a7f5eSAndroid Build Coastguard Worker 
7336*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsl(vector unsigned char __a,vector unsigned short __b)7337*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector unsigned char __a, vector unsigned short __b) {
7338*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7339*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
7340*344a7f5eSAndroid Build Coastguard Worker }
7341*344a7f5eSAndroid Build Coastguard Worker 
7342*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsl(vector unsigned char __a,vector unsigned int __b)7343*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector unsigned char __a, vector unsigned int __b) {
7344*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsl((vector int)__a,
7345*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
7346*344a7f5eSAndroid Build Coastguard Worker }
7347*344a7f5eSAndroid Build Coastguard Worker 
7348*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_vsl(vector bool char __a,vector unsigned char __b)7349*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector bool char __a, vector unsigned char __b) {
7350*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7351*344a7f5eSAndroid Build Coastguard Worker                                                  (vector int)__b);
7352*344a7f5eSAndroid Build Coastguard Worker }
7353*344a7f5eSAndroid Build Coastguard Worker 
7354*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_vsl(vector bool char __a,vector unsigned short __b)7355*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector bool char __a, vector unsigned short __b) {
7356*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7357*344a7f5eSAndroid Build Coastguard Worker                                                  (vector int)__b);
7358*344a7f5eSAndroid Build Coastguard Worker }
7359*344a7f5eSAndroid Build Coastguard Worker 
7360*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_vsl(vector bool char __a,vector unsigned int __b)7361*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector bool char __a, vector unsigned int __b) {
7362*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vsl((vector int)__a,
7363*344a7f5eSAndroid Build Coastguard Worker                                                  (vector int)__b);
7364*344a7f5eSAndroid Build Coastguard Worker }
7365*344a7f5eSAndroid Build Coastguard Worker 
vec_vsl(vector short __a,vector unsigned char __b)7366*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
7367*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
7368*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7369*344a7f5eSAndroid Build Coastguard Worker }
7370*344a7f5eSAndroid Build Coastguard Worker 
vec_vsl(vector short __a,vector unsigned short __b)7371*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
7372*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned short __b) {
7373*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7374*344a7f5eSAndroid Build Coastguard Worker }
7375*344a7f5eSAndroid Build Coastguard Worker 
vec_vsl(vector short __a,vector unsigned int __b)7376*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsl(vector short __a,
7377*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned int __b) {
7378*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7379*344a7f5eSAndroid Build Coastguard Worker }
7380*344a7f5eSAndroid Build Coastguard Worker 
7381*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsl(vector unsigned short __a,vector unsigned char __b)7382*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector unsigned short __a, vector unsigned char __b) {
7383*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7384*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
7385*344a7f5eSAndroid Build Coastguard Worker }
7386*344a7f5eSAndroid Build Coastguard Worker 
7387*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsl(vector unsigned short __a,vector unsigned short __b)7388*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector unsigned short __a, vector unsigned short __b) {
7389*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7390*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
7391*344a7f5eSAndroid Build Coastguard Worker }
7392*344a7f5eSAndroid Build Coastguard Worker 
7393*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsl(vector unsigned short __a,vector unsigned int __b)7394*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector unsigned short __a, vector unsigned int __b) {
7395*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsl((vector int)__a,
7396*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
7397*344a7f5eSAndroid Build Coastguard Worker }
7398*344a7f5eSAndroid Build Coastguard Worker 
7399*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vsl(vector bool short __a,vector unsigned char __b)7400*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector bool short __a, vector unsigned char __b) {
7401*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7402*344a7f5eSAndroid Build Coastguard Worker                                                   (vector int)__b);
7403*344a7f5eSAndroid Build Coastguard Worker }
7404*344a7f5eSAndroid Build Coastguard Worker 
7405*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vsl(vector bool short __a,vector unsigned short __b)7406*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector bool short __a, vector unsigned short __b) {
7407*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7408*344a7f5eSAndroid Build Coastguard Worker                                                   (vector int)__b);
7409*344a7f5eSAndroid Build Coastguard Worker }
7410*344a7f5eSAndroid Build Coastguard Worker 
7411*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vsl(vector bool short __a,vector unsigned int __b)7412*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector bool short __a, vector unsigned int __b) {
7413*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vsl((vector int)__a,
7414*344a7f5eSAndroid Build Coastguard Worker                                                   (vector int)__b);
7415*344a7f5eSAndroid Build Coastguard Worker }
7416*344a7f5eSAndroid Build Coastguard Worker 
vec_vsl(vector pixel __a,vector unsigned char __b)7417*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
7418*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
7419*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7420*344a7f5eSAndroid Build Coastguard Worker }
7421*344a7f5eSAndroid Build Coastguard Worker 
vec_vsl(vector pixel __a,vector unsigned short __b)7422*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
7423*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned short __b) {
7424*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7425*344a7f5eSAndroid Build Coastguard Worker }
7426*344a7f5eSAndroid Build Coastguard Worker 
vec_vsl(vector pixel __a,vector unsigned int __b)7427*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vsl(vector pixel __a,
7428*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned int __b) {
7429*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsl((vector int)__a, (vector int)__b);
7430*344a7f5eSAndroid Build Coastguard Worker }
7431*344a7f5eSAndroid Build Coastguard Worker 
vec_vsl(vector int __a,vector unsigned char __b)7432*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
7433*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned char __b) {
7434*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7435*344a7f5eSAndroid Build Coastguard Worker }
7436*344a7f5eSAndroid Build Coastguard Worker 
vec_vsl(vector int __a,vector unsigned short __b)7437*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
7438*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned short __b) {
7439*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7440*344a7f5eSAndroid Build Coastguard Worker }
7441*344a7f5eSAndroid Build Coastguard Worker 
vec_vsl(vector int __a,vector unsigned int __b)7442*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsl(vector int __a,
7443*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned int __b) {
7444*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsl(__a, (vector int)__b);
7445*344a7f5eSAndroid Build Coastguard Worker }
7446*344a7f5eSAndroid Build Coastguard Worker 
7447*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsl(vector unsigned int __a,vector unsigned char __b)7448*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector unsigned int __a, vector unsigned char __b) {
7449*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7450*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
7451*344a7f5eSAndroid Build Coastguard Worker }
7452*344a7f5eSAndroid Build Coastguard Worker 
7453*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsl(vector unsigned int __a,vector unsigned short __b)7454*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector unsigned int __a, vector unsigned short __b) {
7455*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7456*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
7457*344a7f5eSAndroid Build Coastguard Worker }
7458*344a7f5eSAndroid Build Coastguard Worker 
7459*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsl(vector unsigned int __a,vector unsigned int __b)7460*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector unsigned int __a, vector unsigned int __b) {
7461*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsl((vector int)__a,
7462*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
7463*344a7f5eSAndroid Build Coastguard Worker }
7464*344a7f5eSAndroid Build Coastguard Worker 
7465*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_vsl(vector bool int __a,vector unsigned char __b)7466*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector bool int __a, vector unsigned char __b) {
7467*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7468*344a7f5eSAndroid Build Coastguard Worker                                                 (vector int)__b);
7469*344a7f5eSAndroid Build Coastguard Worker }
7470*344a7f5eSAndroid Build Coastguard Worker 
7471*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_vsl(vector bool int __a,vector unsigned short __b)7472*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector bool int __a, vector unsigned short __b) {
7473*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7474*344a7f5eSAndroid Build Coastguard Worker                                                 (vector int)__b);
7475*344a7f5eSAndroid Build Coastguard Worker }
7476*344a7f5eSAndroid Build Coastguard Worker 
7477*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_vsl(vector bool int __a,vector unsigned int __b)7478*344a7f5eSAndroid Build Coastguard Worker vec_vsl(vector bool int __a, vector unsigned int __b) {
7479*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vsl((vector int)__a,
7480*344a7f5eSAndroid Build Coastguard Worker                                                 (vector int)__b);
7481*344a7f5eSAndroid Build Coastguard Worker }
7482*344a7f5eSAndroid Build Coastguard Worker 
7483*344a7f5eSAndroid Build Coastguard Worker /* vec_slo */
7484*344a7f5eSAndroid Build Coastguard Worker 
7485*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_slo(vector signed char __a,vector signed char __b)7486*344a7f5eSAndroid Build Coastguard Worker vec_slo(vector signed char __a, vector signed char __b) {
7487*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7488*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
7489*344a7f5eSAndroid Build Coastguard Worker }
7490*344a7f5eSAndroid Build Coastguard Worker 
7491*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_slo(vector signed char __a,vector unsigned char __b)7492*344a7f5eSAndroid Build Coastguard Worker vec_slo(vector signed char __a, vector unsigned char __b) {
7493*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7494*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
7495*344a7f5eSAndroid Build Coastguard Worker }
7496*344a7f5eSAndroid Build Coastguard Worker 
7497*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_slo(vector unsigned char __a,vector signed char __b)7498*344a7f5eSAndroid Build Coastguard Worker vec_slo(vector unsigned char __a, vector signed char __b) {
7499*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7500*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
7501*344a7f5eSAndroid Build Coastguard Worker }
7502*344a7f5eSAndroid Build Coastguard Worker 
7503*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_slo(vector unsigned char __a,vector unsigned char __b)7504*344a7f5eSAndroid Build Coastguard Worker vec_slo(vector unsigned char __a, vector unsigned char __b) {
7505*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7506*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
7507*344a7f5eSAndroid Build Coastguard Worker }
7508*344a7f5eSAndroid Build Coastguard Worker 
vec_slo(vector short __a,vector signed char __b)7509*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
7510*344a7f5eSAndroid Build Coastguard Worker                                                     vector signed char __b) {
7511*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7512*344a7f5eSAndroid Build Coastguard Worker }
7513*344a7f5eSAndroid Build Coastguard Worker 
vec_slo(vector short __a,vector unsigned char __b)7514*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_slo(vector short __a,
7515*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
7516*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7517*344a7f5eSAndroid Build Coastguard Worker }
7518*344a7f5eSAndroid Build Coastguard Worker 
7519*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_slo(vector unsigned short __a,vector signed char __b)7520*344a7f5eSAndroid Build Coastguard Worker vec_slo(vector unsigned short __a, vector signed char __b) {
7521*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7522*344a7f5eSAndroid Build Coastguard Worker                                                        (vector int)__b);
7523*344a7f5eSAndroid Build Coastguard Worker }
7524*344a7f5eSAndroid Build Coastguard Worker 
7525*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_slo(vector unsigned short __a,vector unsigned char __b)7526*344a7f5eSAndroid Build Coastguard Worker vec_slo(vector unsigned short __a, vector unsigned char __b) {
7527*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7528*344a7f5eSAndroid Build Coastguard Worker                                                        (vector int)__b);
7529*344a7f5eSAndroid Build Coastguard Worker }
7530*344a7f5eSAndroid Build Coastguard Worker 
vec_slo(vector pixel __a,vector signed char __b)7531*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
7532*344a7f5eSAndroid Build Coastguard Worker                                                     vector signed char __b) {
7533*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7534*344a7f5eSAndroid Build Coastguard Worker }
7535*344a7f5eSAndroid Build Coastguard Worker 
vec_slo(vector pixel __a,vector unsigned char __b)7536*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_slo(vector pixel __a,
7537*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
7538*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7539*344a7f5eSAndroid Build Coastguard Worker }
7540*344a7f5eSAndroid Build Coastguard Worker 
vec_slo(vector int __a,vector signed char __b)7541*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
7542*344a7f5eSAndroid Build Coastguard Worker                                                   vector signed char __b) {
7543*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7544*344a7f5eSAndroid Build Coastguard Worker }
7545*344a7f5eSAndroid Build Coastguard Worker 
vec_slo(vector int __a,vector unsigned char __b)7546*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_slo(vector int __a,
7547*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned char __b) {
7548*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7549*344a7f5eSAndroid Build Coastguard Worker }
7550*344a7f5eSAndroid Build Coastguard Worker 
7551*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_slo(vector unsigned int __a,vector signed char __b)7552*344a7f5eSAndroid Build Coastguard Worker vec_slo(vector unsigned int __a, vector signed char __b) {
7553*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7554*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
7555*344a7f5eSAndroid Build Coastguard Worker }
7556*344a7f5eSAndroid Build Coastguard Worker 
7557*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_slo(vector unsigned int __a,vector unsigned char __b)7558*344a7f5eSAndroid Build Coastguard Worker vec_slo(vector unsigned int __a, vector unsigned char __b) {
7559*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7560*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
7561*344a7f5eSAndroid Build Coastguard Worker }
7562*344a7f5eSAndroid Build Coastguard Worker 
vec_slo(vector float __a,vector signed char __b)7563*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
7564*344a7f5eSAndroid Build Coastguard Worker                                                     vector signed char __b) {
7565*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7566*344a7f5eSAndroid Build Coastguard Worker }
7567*344a7f5eSAndroid Build Coastguard Worker 
vec_slo(vector float __a,vector unsigned char __b)7568*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_slo(vector float __a,
7569*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
7570*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7571*344a7f5eSAndroid Build Coastguard Worker }
7572*344a7f5eSAndroid Build Coastguard Worker 
7573*344a7f5eSAndroid Build Coastguard Worker /* vec_vslo */
7574*344a7f5eSAndroid Build Coastguard Worker 
7575*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vslo(vector signed char __a,vector signed char __b)7576*344a7f5eSAndroid Build Coastguard Worker vec_vslo(vector signed char __a, vector signed char __b) {
7577*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7578*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
7579*344a7f5eSAndroid Build Coastguard Worker }
7580*344a7f5eSAndroid Build Coastguard Worker 
7581*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vslo(vector signed char __a,vector unsigned char __b)7582*344a7f5eSAndroid Build Coastguard Worker vec_vslo(vector signed char __a, vector unsigned char __b) {
7583*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vslo((vector int)__a,
7584*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
7585*344a7f5eSAndroid Build Coastguard Worker }
7586*344a7f5eSAndroid Build Coastguard Worker 
7587*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vslo(vector unsigned char __a,vector signed char __b)7588*344a7f5eSAndroid Build Coastguard Worker vec_vslo(vector unsigned char __a, vector signed char __b) {
7589*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7590*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
7591*344a7f5eSAndroid Build Coastguard Worker }
7592*344a7f5eSAndroid Build Coastguard Worker 
7593*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vslo(vector unsigned char __a,vector unsigned char __b)7594*344a7f5eSAndroid Build Coastguard Worker vec_vslo(vector unsigned char __a, vector unsigned char __b) {
7595*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vslo((vector int)__a,
7596*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
7597*344a7f5eSAndroid Build Coastguard Worker }
7598*344a7f5eSAndroid Build Coastguard Worker 
vec_vslo(vector short __a,vector signed char __b)7599*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
7600*344a7f5eSAndroid Build Coastguard Worker                                                      vector signed char __b) {
7601*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7602*344a7f5eSAndroid Build Coastguard Worker }
7603*344a7f5eSAndroid Build Coastguard Worker 
vec_vslo(vector short __a,vector unsigned char __b)7604*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vslo(vector short __a,
7605*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned char __b) {
7606*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7607*344a7f5eSAndroid Build Coastguard Worker }
7608*344a7f5eSAndroid Build Coastguard Worker 
7609*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vslo(vector unsigned short __a,vector signed char __b)7610*344a7f5eSAndroid Build Coastguard Worker vec_vslo(vector unsigned short __a, vector signed char __b) {
7611*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7612*344a7f5eSAndroid Build Coastguard Worker                                                        (vector int)__b);
7613*344a7f5eSAndroid Build Coastguard Worker }
7614*344a7f5eSAndroid Build Coastguard Worker 
7615*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vslo(vector unsigned short __a,vector unsigned char __b)7616*344a7f5eSAndroid Build Coastguard Worker vec_vslo(vector unsigned short __a, vector unsigned char __b) {
7617*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vslo((vector int)__a,
7618*344a7f5eSAndroid Build Coastguard Worker                                                        (vector int)__b);
7619*344a7f5eSAndroid Build Coastguard Worker }
7620*344a7f5eSAndroid Build Coastguard Worker 
vec_vslo(vector pixel __a,vector signed char __b)7621*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
7622*344a7f5eSAndroid Build Coastguard Worker                                                      vector signed char __b) {
7623*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7624*344a7f5eSAndroid Build Coastguard Worker }
7625*344a7f5eSAndroid Build Coastguard Worker 
vec_vslo(vector pixel __a,vector unsigned char __b)7626*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vslo(vector pixel __a,
7627*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned char __b) {
7628*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7629*344a7f5eSAndroid Build Coastguard Worker }
7630*344a7f5eSAndroid Build Coastguard Worker 
vec_vslo(vector int __a,vector signed char __b)7631*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
7632*344a7f5eSAndroid Build Coastguard Worker                                                    vector signed char __b) {
7633*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7634*344a7f5eSAndroid Build Coastguard Worker }
7635*344a7f5eSAndroid Build Coastguard Worker 
vec_vslo(vector int __a,vector unsigned char __b)7636*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vslo(vector int __a,
7637*344a7f5eSAndroid Build Coastguard Worker                                                    vector unsigned char __b) {
7638*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vslo(__a, (vector int)__b);
7639*344a7f5eSAndroid Build Coastguard Worker }
7640*344a7f5eSAndroid Build Coastguard Worker 
7641*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vslo(vector unsigned int __a,vector signed char __b)7642*344a7f5eSAndroid Build Coastguard Worker vec_vslo(vector unsigned int __a, vector signed char __b) {
7643*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7644*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
7645*344a7f5eSAndroid Build Coastguard Worker }
7646*344a7f5eSAndroid Build Coastguard Worker 
7647*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vslo(vector unsigned int __a,vector unsigned char __b)7648*344a7f5eSAndroid Build Coastguard Worker vec_vslo(vector unsigned int __a, vector unsigned char __b) {
7649*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vslo((vector int)__a,
7650*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
7651*344a7f5eSAndroid Build Coastguard Worker }
7652*344a7f5eSAndroid Build Coastguard Worker 
vec_vslo(vector float __a,vector signed char __b)7653*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
7654*344a7f5eSAndroid Build Coastguard Worker                                                      vector signed char __b) {
7655*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7656*344a7f5eSAndroid Build Coastguard Worker }
7657*344a7f5eSAndroid Build Coastguard Worker 
vec_vslo(vector float __a,vector unsigned char __b)7658*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vslo(vector float __a,
7659*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned char __b) {
7660*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_vslo((vector int)__a, (vector int)__b);
7661*344a7f5eSAndroid Build Coastguard Worker }
7662*344a7f5eSAndroid Build Coastguard Worker 
7663*344a7f5eSAndroid Build Coastguard Worker /* vec_splat */
7664*344a7f5eSAndroid Build Coastguard Worker 
7665*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_splat(vector signed char __a,unsigned const int __b)7666*344a7f5eSAndroid Build Coastguard Worker vec_splat(vector signed char __a, unsigned const int __b) {
7667*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
7668*344a7f5eSAndroid Build Coastguard Worker }
7669*344a7f5eSAndroid Build Coastguard Worker 
7670*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_splat(vector unsigned char __a,unsigned const int __b)7671*344a7f5eSAndroid Build Coastguard Worker vec_splat(vector unsigned char __a, unsigned const int __b) {
7672*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
7673*344a7f5eSAndroid Build Coastguard Worker }
7674*344a7f5eSAndroid Build Coastguard Worker 
7675*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_splat(vector bool char __a,unsigned const int __b)7676*344a7f5eSAndroid Build Coastguard Worker vec_splat(vector bool char __a, unsigned const int __b) {
7677*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a, (vector unsigned char)(__b & 0x0F));
7678*344a7f5eSAndroid Build Coastguard Worker }
7679*344a7f5eSAndroid Build Coastguard Worker 
7680*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_splat(vector signed short __a,unsigned const int __b)7681*344a7f5eSAndroid Build Coastguard Worker vec_splat(vector signed short __a, unsigned const int __b) {
7682*344a7f5eSAndroid Build Coastguard Worker   unsigned char b0 = (__b & 0x07) * 2;
7683*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = b0 + 1;
7684*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7685*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
7686*344a7f5eSAndroid Build Coastguard Worker                                          b0, b1, b0, b1, b0, b1));
7687*344a7f5eSAndroid Build Coastguard Worker }
7688*344a7f5eSAndroid Build Coastguard Worker 
7689*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_splat(vector unsigned short __a,unsigned const int __b)7690*344a7f5eSAndroid Build Coastguard Worker vec_splat(vector unsigned short __a, unsigned const int __b) {
7691*344a7f5eSAndroid Build Coastguard Worker   unsigned char b0 = (__b & 0x07) * 2;
7692*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = b0 + 1;
7693*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7694*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
7695*344a7f5eSAndroid Build Coastguard Worker                                          b0, b1, b0, b1, b0, b1));
7696*344a7f5eSAndroid Build Coastguard Worker }
7697*344a7f5eSAndroid Build Coastguard Worker 
7698*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_splat(vector bool short __a,unsigned const int __b)7699*344a7f5eSAndroid Build Coastguard Worker vec_splat(vector bool short __a, unsigned const int __b) {
7700*344a7f5eSAndroid Build Coastguard Worker   unsigned char b0 = (__b & 0x07) * 2;
7701*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = b0 + 1;
7702*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7703*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
7704*344a7f5eSAndroid Build Coastguard Worker                                          b0, b1, b0, b1, b0, b1));
7705*344a7f5eSAndroid Build Coastguard Worker }
7706*344a7f5eSAndroid Build Coastguard Worker 
vec_splat(vector pixel __a,unsigned const int __b)7707*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_splat(vector pixel __a,
7708*344a7f5eSAndroid Build Coastguard Worker                                                       unsigned const int __b) {
7709*344a7f5eSAndroid Build Coastguard Worker   unsigned char b0 = (__b & 0x07) * 2;
7710*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = b0 + 1;
7711*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7712*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(b0, b1, b0, b1, b0, b1, b0, b1, b0, b1,
7713*344a7f5eSAndroid Build Coastguard Worker                                          b0, b1, b0, b1, b0, b1));
7714*344a7f5eSAndroid Build Coastguard Worker }
7715*344a7f5eSAndroid Build Coastguard Worker 
7716*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_splat(vector signed int __a,unsigned const int __b)7717*344a7f5eSAndroid Build Coastguard Worker vec_splat(vector signed int __a, unsigned const int __b) {
7718*344a7f5eSAndroid Build Coastguard Worker   unsigned char b0 = (__b & 0x03) * 4;
7719*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7720*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7721*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
7722*344a7f5eSAndroid Build Coastguard Worker                                          b2, b3, b0, b1, b2, b3));
7723*344a7f5eSAndroid Build Coastguard Worker }
7724*344a7f5eSAndroid Build Coastguard Worker 
7725*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_splat(vector unsigned int __a,unsigned const int __b)7726*344a7f5eSAndroid Build Coastguard Worker vec_splat(vector unsigned int __a, unsigned const int __b) {
7727*344a7f5eSAndroid Build Coastguard Worker   unsigned char b0 = (__b & 0x03) * 4;
7728*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7729*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7730*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
7731*344a7f5eSAndroid Build Coastguard Worker                                          b2, b3, b0, b1, b2, b3));
7732*344a7f5eSAndroid Build Coastguard Worker }
7733*344a7f5eSAndroid Build Coastguard Worker 
7734*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_splat(vector bool int __a,unsigned const int __b)7735*344a7f5eSAndroid Build Coastguard Worker vec_splat(vector bool int __a, unsigned const int __b) {
7736*344a7f5eSAndroid Build Coastguard Worker   unsigned char b0 = (__b & 0x03) * 4;
7737*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7738*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7739*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
7740*344a7f5eSAndroid Build Coastguard Worker                                          b2, b3, b0, b1, b2, b3));
7741*344a7f5eSAndroid Build Coastguard Worker }
7742*344a7f5eSAndroid Build Coastguard Worker 
vec_splat(vector float __a,unsigned const int __b)7743*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_splat(vector float __a,
7744*344a7f5eSAndroid Build Coastguard Worker                                                       unsigned const int __b) {
7745*344a7f5eSAndroid Build Coastguard Worker   unsigned char b0 = (__b & 0x03) * 4;
7746*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3;
7747*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7748*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(b0, b1, b2, b3, b0, b1, b2, b3, b0, b1,
7749*344a7f5eSAndroid Build Coastguard Worker                                          b2, b3, b0, b1, b2, b3));
7750*344a7f5eSAndroid Build Coastguard Worker }
7751*344a7f5eSAndroid Build Coastguard Worker 
7752*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_splat(vector double __a,unsigned const int __b)7753*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_splat(vector double __a,
7754*344a7f5eSAndroid Build Coastguard Worker                                                        unsigned const int __b) {
7755*344a7f5eSAndroid Build Coastguard Worker   unsigned char b0 = (__b & 0x01) * 8;
7756*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
7757*344a7f5eSAndroid Build Coastguard Worker                 b6 = b0 + 6, b7 = b0 + 7;
7758*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7759*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
7760*344a7f5eSAndroid Build Coastguard Worker                                          b2, b3, b4, b5, b6, b7));
7761*344a7f5eSAndroid Build Coastguard Worker }
7762*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_splat(vector bool long long __a,unsigned const int __b)7763*344a7f5eSAndroid Build Coastguard Worker vec_splat(vector bool long long __a, unsigned const int __b) {
7764*344a7f5eSAndroid Build Coastguard Worker   unsigned char b0 = (__b & 0x01) * 8;
7765*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
7766*344a7f5eSAndroid Build Coastguard Worker                 b6 = b0 + 6, b7 = b0 + 7;
7767*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7768*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
7769*344a7f5eSAndroid Build Coastguard Worker                                          b2, b3, b4, b5, b6, b7));
7770*344a7f5eSAndroid Build Coastguard Worker }
7771*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_splat(vector signed long long __a,unsigned const int __b)7772*344a7f5eSAndroid Build Coastguard Worker vec_splat(vector signed long long __a, unsigned const int __b) {
7773*344a7f5eSAndroid Build Coastguard Worker   unsigned char b0 = (__b & 0x01) * 8;
7774*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
7775*344a7f5eSAndroid Build Coastguard Worker                 b6 = b0 + 6, b7 = b0 + 7;
7776*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7777*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
7778*344a7f5eSAndroid Build Coastguard Worker                                          b2, b3, b4, b5, b6, b7));
7779*344a7f5eSAndroid Build Coastguard Worker }
7780*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_splat(vector unsigned long long __a,unsigned const int __b)7781*344a7f5eSAndroid Build Coastguard Worker vec_splat(vector unsigned long long __a, unsigned const int __b) {
7782*344a7f5eSAndroid Build Coastguard Worker   unsigned char b0 = (__b & 0x01) * 8;
7783*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = b0 + 1, b2 = b0 + 2, b3 = b0 + 3, b4 = b0 + 4, b5 = b0 + 5,
7784*344a7f5eSAndroid Build Coastguard Worker                 b6 = b0 + 6, b7 = b0 + 7;
7785*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7786*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(b0, b1, b2, b3, b4, b5, b6, b7, b0, b1,
7787*344a7f5eSAndroid Build Coastguard Worker                                          b2, b3, b4, b5, b6, b7));
7788*344a7f5eSAndroid Build Coastguard Worker }
7789*344a7f5eSAndroid Build Coastguard Worker #endif
7790*344a7f5eSAndroid Build Coastguard Worker 
7791*344a7f5eSAndroid Build Coastguard Worker /* vec_vspltb */
7792*344a7f5eSAndroid Build Coastguard Worker 
7793*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vspltb vec_vspltb
7794*344a7f5eSAndroid Build Coastguard Worker 
7795*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vspltb(vector signed char __a,unsigned char __b)7796*344a7f5eSAndroid Build Coastguard Worker vec_vspltb(vector signed char __a, unsigned char __b) {
7797*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a, (vector unsigned char)(__b));
7798*344a7f5eSAndroid Build Coastguard Worker }
7799*344a7f5eSAndroid Build Coastguard Worker 
7800*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vspltb(vector unsigned char __a,unsigned char __b)7801*344a7f5eSAndroid Build Coastguard Worker vec_vspltb(vector unsigned char __a, unsigned char __b) {
7802*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a, (vector unsigned char)(__b));
7803*344a7f5eSAndroid Build Coastguard Worker }
7804*344a7f5eSAndroid Build Coastguard Worker 
vec_vspltb(vector bool char __a,unsigned char __b)7805*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_vspltb(vector bool char __a,
7806*344a7f5eSAndroid Build Coastguard Worker                                                            unsigned char __b) {
7807*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a, (vector unsigned char)(__b));
7808*344a7f5eSAndroid Build Coastguard Worker }
7809*344a7f5eSAndroid Build Coastguard Worker 
7810*344a7f5eSAndroid Build Coastguard Worker /* vec_vsplth */
7811*344a7f5eSAndroid Build Coastguard Worker 
7812*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vsplth vec_vsplth
7813*344a7f5eSAndroid Build Coastguard Worker 
vec_vsplth(vector short __a,unsigned char __b)7814*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsplth(vector short __a,
7815*344a7f5eSAndroid Build Coastguard Worker                                                        unsigned char __b) {
7816*344a7f5eSAndroid Build Coastguard Worker   __b *= 2;
7817*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = __b + 1;
7818*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7819*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7820*344a7f5eSAndroid Build Coastguard Worker                                          __b, b1, __b, b1, __b, b1, __b, b1));
7821*344a7f5eSAndroid Build Coastguard Worker }
7822*344a7f5eSAndroid Build Coastguard Worker 
7823*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsplth(vector unsigned short __a,unsigned char __b)7824*344a7f5eSAndroid Build Coastguard Worker vec_vsplth(vector unsigned short __a, unsigned char __b) {
7825*344a7f5eSAndroid Build Coastguard Worker   __b *= 2;
7826*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = __b + 1;
7827*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7828*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7829*344a7f5eSAndroid Build Coastguard Worker                                          __b, b1, __b, b1, __b, b1, __b, b1));
7830*344a7f5eSAndroid Build Coastguard Worker }
7831*344a7f5eSAndroid Build Coastguard Worker 
7832*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vsplth(vector bool short __a,unsigned char __b)7833*344a7f5eSAndroid Build Coastguard Worker vec_vsplth(vector bool short __a, unsigned char __b) {
7834*344a7f5eSAndroid Build Coastguard Worker   __b *= 2;
7835*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = __b + 1;
7836*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7837*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7838*344a7f5eSAndroid Build Coastguard Worker                                          __b, b1, __b, b1, __b, b1, __b, b1));
7839*344a7f5eSAndroid Build Coastguard Worker }
7840*344a7f5eSAndroid Build Coastguard Worker 
vec_vsplth(vector pixel __a,unsigned char __b)7841*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vsplth(vector pixel __a,
7842*344a7f5eSAndroid Build Coastguard Worker                                                        unsigned char __b) {
7843*344a7f5eSAndroid Build Coastguard Worker   __b *= 2;
7844*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = __b + 1;
7845*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7846*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(__b, b1, __b, b1, __b, b1, __b, b1,
7847*344a7f5eSAndroid Build Coastguard Worker                                          __b, b1, __b, b1, __b, b1, __b, b1));
7848*344a7f5eSAndroid Build Coastguard Worker }
7849*344a7f5eSAndroid Build Coastguard Worker 
7850*344a7f5eSAndroid Build Coastguard Worker /* vec_vspltw */
7851*344a7f5eSAndroid Build Coastguard Worker 
7852*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vspltw vec_vspltw
7853*344a7f5eSAndroid Build Coastguard Worker 
vec_vspltw(vector int __a,unsigned char __b)7854*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vspltw(vector int __a,
7855*344a7f5eSAndroid Build Coastguard Worker                                                      unsigned char __b) {
7856*344a7f5eSAndroid Build Coastguard Worker   __b *= 4;
7857*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7858*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7859*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7860*344a7f5eSAndroid Build Coastguard Worker                                          b1, b2, b3, __b, b1, b2, b3));
7861*344a7f5eSAndroid Build Coastguard Worker }
7862*344a7f5eSAndroid Build Coastguard Worker 
7863*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vspltw(vector unsigned int __a,unsigned char __b)7864*344a7f5eSAndroid Build Coastguard Worker vec_vspltw(vector unsigned int __a, unsigned char __b) {
7865*344a7f5eSAndroid Build Coastguard Worker   __b *= 4;
7866*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7867*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7868*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7869*344a7f5eSAndroid Build Coastguard Worker                                          b1, b2, b3, __b, b1, b2, b3));
7870*344a7f5eSAndroid Build Coastguard Worker }
7871*344a7f5eSAndroid Build Coastguard Worker 
vec_vspltw(vector bool int __a,unsigned char __b)7872*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_vspltw(vector bool int __a,
7873*344a7f5eSAndroid Build Coastguard Worker                                                           unsigned char __b) {
7874*344a7f5eSAndroid Build Coastguard Worker   __b *= 4;
7875*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7876*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7877*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7878*344a7f5eSAndroid Build Coastguard Worker                                          b1, b2, b3, __b, b1, b2, b3));
7879*344a7f5eSAndroid Build Coastguard Worker }
7880*344a7f5eSAndroid Build Coastguard Worker 
vec_vspltw(vector float __a,unsigned char __b)7881*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vspltw(vector float __a,
7882*344a7f5eSAndroid Build Coastguard Worker                                                        unsigned char __b) {
7883*344a7f5eSAndroid Build Coastguard Worker   __b *= 4;
7884*344a7f5eSAndroid Build Coastguard Worker   unsigned char b1 = __b + 1, b2 = __b + 2, b3 = __b + 3;
7885*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(__a, __a,
7886*344a7f5eSAndroid Build Coastguard Worker                   (vector unsigned char)(__b, b1, b2, b3, __b, b1, b2, b3, __b,
7887*344a7f5eSAndroid Build Coastguard Worker                                          b1, b2, b3, __b, b1, b2, b3));
7888*344a7f5eSAndroid Build Coastguard Worker }
7889*344a7f5eSAndroid Build Coastguard Worker 
7890*344a7f5eSAndroid Build Coastguard Worker /* vec_splat_s8 */
7891*344a7f5eSAndroid Build Coastguard Worker 
7892*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vspltisb vec_splat_s8
7893*344a7f5eSAndroid Build Coastguard Worker 
7894*344a7f5eSAndroid Build Coastguard Worker // FIXME: parameter should be treated as 5-bit signed literal
7895*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_splat_s8(signed char __a)7896*344a7f5eSAndroid Build Coastguard Worker vec_splat_s8(signed char __a) {
7897*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)(__a);
7898*344a7f5eSAndroid Build Coastguard Worker }
7899*344a7f5eSAndroid Build Coastguard Worker 
7900*344a7f5eSAndroid Build Coastguard Worker /* vec_vspltisb */
7901*344a7f5eSAndroid Build Coastguard Worker 
7902*344a7f5eSAndroid Build Coastguard Worker // FIXME: parameter should be treated as 5-bit signed literal
7903*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vspltisb(signed char __a)7904*344a7f5eSAndroid Build Coastguard Worker vec_vspltisb(signed char __a) {
7905*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)(__a);
7906*344a7f5eSAndroid Build Coastguard Worker }
7907*344a7f5eSAndroid Build Coastguard Worker 
7908*344a7f5eSAndroid Build Coastguard Worker /* vec_splat_s16 */
7909*344a7f5eSAndroid Build Coastguard Worker 
7910*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vspltish vec_splat_s16
7911*344a7f5eSAndroid Build Coastguard Worker 
7912*344a7f5eSAndroid Build Coastguard Worker // FIXME: parameter should be treated as 5-bit signed literal
vec_splat_s16(signed char __a)7913*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_splat_s16(signed char __a) {
7914*344a7f5eSAndroid Build Coastguard Worker   return (vector short)(__a);
7915*344a7f5eSAndroid Build Coastguard Worker }
7916*344a7f5eSAndroid Build Coastguard Worker 
7917*344a7f5eSAndroid Build Coastguard Worker /* vec_vspltish */
7918*344a7f5eSAndroid Build Coastguard Worker 
7919*344a7f5eSAndroid Build Coastguard Worker // FIXME: parameter should be treated as 5-bit signed literal
vec_vspltish(signed char __a)7920*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vspltish(signed char __a) {
7921*344a7f5eSAndroid Build Coastguard Worker   return (vector short)(__a);
7922*344a7f5eSAndroid Build Coastguard Worker }
7923*344a7f5eSAndroid Build Coastguard Worker 
7924*344a7f5eSAndroid Build Coastguard Worker /* vec_splat_s32 */
7925*344a7f5eSAndroid Build Coastguard Worker 
7926*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vspltisw vec_splat_s32
7927*344a7f5eSAndroid Build Coastguard Worker 
7928*344a7f5eSAndroid Build Coastguard Worker // FIXME: parameter should be treated as 5-bit signed literal
vec_splat_s32(signed char __a)7929*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_splat_s32(signed char __a) {
7930*344a7f5eSAndroid Build Coastguard Worker   return (vector int)(__a);
7931*344a7f5eSAndroid Build Coastguard Worker }
7932*344a7f5eSAndroid Build Coastguard Worker 
7933*344a7f5eSAndroid Build Coastguard Worker /* vec_vspltisw */
7934*344a7f5eSAndroid Build Coastguard Worker 
7935*344a7f5eSAndroid Build Coastguard Worker // FIXME: parameter should be treated as 5-bit signed literal
vec_vspltisw(signed char __a)7936*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vspltisw(signed char __a) {
7937*344a7f5eSAndroid Build Coastguard Worker   return (vector int)(__a);
7938*344a7f5eSAndroid Build Coastguard Worker }
7939*344a7f5eSAndroid Build Coastguard Worker 
7940*344a7f5eSAndroid Build Coastguard Worker /* vec_splat_u8 */
7941*344a7f5eSAndroid Build Coastguard Worker 
7942*344a7f5eSAndroid Build Coastguard Worker // FIXME: parameter should be treated as 5-bit signed literal
7943*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_splat_u8(unsigned char __a)7944*344a7f5eSAndroid Build Coastguard Worker vec_splat_u8(unsigned char __a) {
7945*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)(__a);
7946*344a7f5eSAndroid Build Coastguard Worker }
7947*344a7f5eSAndroid Build Coastguard Worker 
7948*344a7f5eSAndroid Build Coastguard Worker /* vec_splat_u16 */
7949*344a7f5eSAndroid Build Coastguard Worker 
7950*344a7f5eSAndroid Build Coastguard Worker // FIXME: parameter should be treated as 5-bit signed literal
7951*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_splat_u16(signed char __a)7952*344a7f5eSAndroid Build Coastguard Worker vec_splat_u16(signed char __a) {
7953*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)(__a);
7954*344a7f5eSAndroid Build Coastguard Worker }
7955*344a7f5eSAndroid Build Coastguard Worker 
7956*344a7f5eSAndroid Build Coastguard Worker /* vec_splat_u32 */
7957*344a7f5eSAndroid Build Coastguard Worker 
7958*344a7f5eSAndroid Build Coastguard Worker // FIXME: parameter should be treated as 5-bit signed literal
7959*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_splat_u32(signed char __a)7960*344a7f5eSAndroid Build Coastguard Worker vec_splat_u32(signed char __a) {
7961*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)(__a);
7962*344a7f5eSAndroid Build Coastguard Worker }
7963*344a7f5eSAndroid Build Coastguard Worker 
7964*344a7f5eSAndroid Build Coastguard Worker /* vec_sr */
7965*344a7f5eSAndroid Build Coastguard Worker 
7966*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_sr(vector signed char __a,vector unsigned char __b)7967*344a7f5eSAndroid Build Coastguard Worker vec_sr(vector signed char __a, vector unsigned char __b) {
7968*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __res = (vector unsigned char)__a >> __b;
7969*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__res;
7970*344a7f5eSAndroid Build Coastguard Worker }
7971*344a7f5eSAndroid Build Coastguard Worker 
7972*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sr(vector unsigned char __a,vector unsigned char __b)7973*344a7f5eSAndroid Build Coastguard Worker vec_sr(vector unsigned char __a, vector unsigned char __b) {
7974*344a7f5eSAndroid Build Coastguard Worker   return __a >> __b;
7975*344a7f5eSAndroid Build Coastguard Worker }
7976*344a7f5eSAndroid Build Coastguard Worker 
7977*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_sr(vector signed short __a,vector unsigned short __b)7978*344a7f5eSAndroid Build Coastguard Worker vec_sr(vector signed short __a, vector unsigned short __b) {
7979*344a7f5eSAndroid Build Coastguard Worker   vector unsigned short __res = (vector unsigned short)__a >> __b;
7980*344a7f5eSAndroid Build Coastguard Worker   return (vector signed short)__res;
7981*344a7f5eSAndroid Build Coastguard Worker }
7982*344a7f5eSAndroid Build Coastguard Worker 
7983*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sr(vector unsigned short __a,vector unsigned short __b)7984*344a7f5eSAndroid Build Coastguard Worker vec_sr(vector unsigned short __a, vector unsigned short __b) {
7985*344a7f5eSAndroid Build Coastguard Worker   return __a >> __b;
7986*344a7f5eSAndroid Build Coastguard Worker }
7987*344a7f5eSAndroid Build Coastguard Worker 
7988*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_sr(vector signed int __a,vector unsigned int __b)7989*344a7f5eSAndroid Build Coastguard Worker vec_sr(vector signed int __a, vector unsigned int __b) {
7990*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res = (vector unsigned int)__a >> __b;
7991*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)__res;
7992*344a7f5eSAndroid Build Coastguard Worker }
7993*344a7f5eSAndroid Build Coastguard Worker 
7994*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sr(vector unsigned int __a,vector unsigned int __b)7995*344a7f5eSAndroid Build Coastguard Worker vec_sr(vector unsigned int __a, vector unsigned int __b) {
7996*344a7f5eSAndroid Build Coastguard Worker   return __a >> __b;
7997*344a7f5eSAndroid Build Coastguard Worker }
7998*344a7f5eSAndroid Build Coastguard Worker 
7999*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
8000*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_sr(vector signed long long __a,vector unsigned long long __b)8001*344a7f5eSAndroid Build Coastguard Worker vec_sr(vector signed long long __a, vector unsigned long long __b) {
8002*344a7f5eSAndroid Build Coastguard Worker   vector unsigned long long __res = (vector unsigned long long)__a >> __b;
8003*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__res;
8004*344a7f5eSAndroid Build Coastguard Worker }
8005*344a7f5eSAndroid Build Coastguard Worker 
8006*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sr(vector unsigned long long __a,vector unsigned long long __b)8007*344a7f5eSAndroid Build Coastguard Worker vec_sr(vector unsigned long long __a, vector unsigned long long __b) {
8008*344a7f5eSAndroid Build Coastguard Worker   return __a >> __b;
8009*344a7f5eSAndroid Build Coastguard Worker }
8010*344a7f5eSAndroid Build Coastguard Worker #endif
8011*344a7f5eSAndroid Build Coastguard Worker 
8012*344a7f5eSAndroid Build Coastguard Worker /* vec_vsrb */
8013*344a7f5eSAndroid Build Coastguard Worker 
8014*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vsrb vec_vsrb
8015*344a7f5eSAndroid Build Coastguard Worker 
8016*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsrb(vector signed char __a,vector unsigned char __b)8017*344a7f5eSAndroid Build Coastguard Worker vec_vsrb(vector signed char __a, vector unsigned char __b) {
8018*344a7f5eSAndroid Build Coastguard Worker   return __a >> (vector signed char)__b;
8019*344a7f5eSAndroid Build Coastguard Worker }
8020*344a7f5eSAndroid Build Coastguard Worker 
8021*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsrb(vector unsigned char __a,vector unsigned char __b)8022*344a7f5eSAndroid Build Coastguard Worker vec_vsrb(vector unsigned char __a, vector unsigned char __b) {
8023*344a7f5eSAndroid Build Coastguard Worker   return __a >> __b;
8024*344a7f5eSAndroid Build Coastguard Worker }
8025*344a7f5eSAndroid Build Coastguard Worker 
8026*344a7f5eSAndroid Build Coastguard Worker /* vec_vsrh */
8027*344a7f5eSAndroid Build Coastguard Worker 
8028*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vsrh vec_vsrh
8029*344a7f5eSAndroid Build Coastguard Worker 
8030*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai
vec_vsrh(vector short __a,vector unsigned short __b)8031*344a7f5eSAndroid Build Coastguard Worker vec_vsrh(vector short __a, vector unsigned short __b) {
8032*344a7f5eSAndroid Build Coastguard Worker   return __a >> (vector short)__b;
8033*344a7f5eSAndroid Build Coastguard Worker }
8034*344a7f5eSAndroid Build Coastguard Worker 
8035*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsrh(vector unsigned short __a,vector unsigned short __b)8036*344a7f5eSAndroid Build Coastguard Worker vec_vsrh(vector unsigned short __a, vector unsigned short __b) {
8037*344a7f5eSAndroid Build Coastguard Worker   return __a >> __b;
8038*344a7f5eSAndroid Build Coastguard Worker }
8039*344a7f5eSAndroid Build Coastguard Worker 
8040*344a7f5eSAndroid Build Coastguard Worker /* vec_vsrw */
8041*344a7f5eSAndroid Build Coastguard Worker 
8042*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vsrw vec_vsrw
8043*344a7f5eSAndroid Build Coastguard Worker 
vec_vsrw(vector int __a,vector unsigned int __b)8044*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsrw(vector int __a,
8045*344a7f5eSAndroid Build Coastguard Worker                                                    vector unsigned int __b) {
8046*344a7f5eSAndroid Build Coastguard Worker   return __a >> (vector int)__b;
8047*344a7f5eSAndroid Build Coastguard Worker }
8048*344a7f5eSAndroid Build Coastguard Worker 
8049*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsrw(vector unsigned int __a,vector unsigned int __b)8050*344a7f5eSAndroid Build Coastguard Worker vec_vsrw(vector unsigned int __a, vector unsigned int __b) {
8051*344a7f5eSAndroid Build Coastguard Worker   return __a >> __b;
8052*344a7f5eSAndroid Build Coastguard Worker }
8053*344a7f5eSAndroid Build Coastguard Worker 
8054*344a7f5eSAndroid Build Coastguard Worker /* vec_sra */
8055*344a7f5eSAndroid Build Coastguard Worker 
8056*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_sra(vector signed char __a,vector unsigned char __b)8057*344a7f5eSAndroid Build Coastguard Worker vec_sra(vector signed char __a, vector unsigned char __b) {
8058*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
8059*344a7f5eSAndroid Build Coastguard Worker }
8060*344a7f5eSAndroid Build Coastguard Worker 
8061*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sra(vector unsigned char __a,vector unsigned char __b)8062*344a7f5eSAndroid Build Coastguard Worker vec_sra(vector unsigned char __a, vector unsigned char __b) {
8063*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
8064*344a7f5eSAndroid Build Coastguard Worker }
8065*344a7f5eSAndroid Build Coastguard Worker 
vec_sra(vector short __a,vector unsigned short __b)8066*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_sra(vector short __a,
8067*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned short __b) {
8068*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
8069*344a7f5eSAndroid Build Coastguard Worker }
8070*344a7f5eSAndroid Build Coastguard Worker 
8071*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sra(vector unsigned short __a,vector unsigned short __b)8072*344a7f5eSAndroid Build Coastguard Worker vec_sra(vector unsigned short __a, vector unsigned short __b) {
8073*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
8074*344a7f5eSAndroid Build Coastguard Worker }
8075*344a7f5eSAndroid Build Coastguard Worker 
vec_sra(vector int __a,vector unsigned int __b)8076*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sra(vector int __a,
8077*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned int __b) {
8078*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsraw(__a, __b);
8079*344a7f5eSAndroid Build Coastguard Worker }
8080*344a7f5eSAndroid Build Coastguard Worker 
8081*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sra(vector unsigned int __a,vector unsigned int __b)8082*344a7f5eSAndroid Build Coastguard Worker vec_sra(vector unsigned int __a, vector unsigned int __b) {
8083*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
8084*344a7f5eSAndroid Build Coastguard Worker }
8085*344a7f5eSAndroid Build Coastguard Worker 
8086*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
8087*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_sra(vector signed long long __a,vector unsigned long long __b)8088*344a7f5eSAndroid Build Coastguard Worker vec_sra(vector signed long long __a, vector unsigned long long __b) {
8089*344a7f5eSAndroid Build Coastguard Worker   return __a >> __b;
8090*344a7f5eSAndroid Build Coastguard Worker }
8091*344a7f5eSAndroid Build Coastguard Worker 
8092*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sra(vector unsigned long long __a,vector unsigned long long __b)8093*344a7f5eSAndroid Build Coastguard Worker vec_sra(vector unsigned long long __a, vector unsigned long long __b) {
8094*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)((vector signed long long)__a >> __b);
8095*344a7f5eSAndroid Build Coastguard Worker }
8096*344a7f5eSAndroid Build Coastguard Worker #endif
8097*344a7f5eSAndroid Build Coastguard Worker 
8098*344a7f5eSAndroid Build Coastguard Worker /* vec_vsrab */
8099*344a7f5eSAndroid Build Coastguard Worker 
8100*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsrab(vector signed char __a,vector unsigned char __b)8101*344a7f5eSAndroid Build Coastguard Worker vec_vsrab(vector signed char __a, vector unsigned char __b) {
8102*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsrab((vector char)__a, __b);
8103*344a7f5eSAndroid Build Coastguard Worker }
8104*344a7f5eSAndroid Build Coastguard Worker 
8105*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsrab(vector unsigned char __a,vector unsigned char __b)8106*344a7f5eSAndroid Build Coastguard Worker vec_vsrab(vector unsigned char __a, vector unsigned char __b) {
8107*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsrab((vector char)__a, __b);
8108*344a7f5eSAndroid Build Coastguard Worker }
8109*344a7f5eSAndroid Build Coastguard Worker 
8110*344a7f5eSAndroid Build Coastguard Worker /* vec_vsrah */
8111*344a7f5eSAndroid Build Coastguard Worker 
8112*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai
vec_vsrah(vector short __a,vector unsigned short __b)8113*344a7f5eSAndroid Build Coastguard Worker vec_vsrah(vector short __a, vector unsigned short __b) {
8114*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsrah(__a, (vector unsigned short)__b);
8115*344a7f5eSAndroid Build Coastguard Worker }
8116*344a7f5eSAndroid Build Coastguard Worker 
8117*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsrah(vector unsigned short __a,vector unsigned short __b)8118*344a7f5eSAndroid Build Coastguard Worker vec_vsrah(vector unsigned short __a, vector unsigned short __b) {
8119*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsrah((vector short)__a, __b);
8120*344a7f5eSAndroid Build Coastguard Worker }
8121*344a7f5eSAndroid Build Coastguard Worker 
8122*344a7f5eSAndroid Build Coastguard Worker /* vec_vsraw */
8123*344a7f5eSAndroid Build Coastguard Worker 
vec_vsraw(vector int __a,vector unsigned int __b)8124*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsraw(vector int __a,
8125*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned int __b) {
8126*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsraw(__a, __b);
8127*344a7f5eSAndroid Build Coastguard Worker }
8128*344a7f5eSAndroid Build Coastguard Worker 
8129*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsraw(vector unsigned int __a,vector unsigned int __b)8130*344a7f5eSAndroid Build Coastguard Worker vec_vsraw(vector unsigned int __a, vector unsigned int __b) {
8131*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsraw((vector int)__a, __b);
8132*344a7f5eSAndroid Build Coastguard Worker }
8133*344a7f5eSAndroid Build Coastguard Worker 
8134*344a7f5eSAndroid Build Coastguard Worker /* vec_srl */
8135*344a7f5eSAndroid Build Coastguard Worker 
8136*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_srl(vector signed char __a,vector unsigned char __b)8137*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector signed char __a, vector unsigned char __b) {
8138*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8139*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b);
8140*344a7f5eSAndroid Build Coastguard Worker }
8141*344a7f5eSAndroid Build Coastguard Worker 
8142*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_srl(vector signed char __a,vector unsigned short __b)8143*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector signed char __a, vector unsigned short __b) {
8144*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8145*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b);
8146*344a7f5eSAndroid Build Coastguard Worker }
8147*344a7f5eSAndroid Build Coastguard Worker 
8148*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_srl(vector signed char __a,vector unsigned int __b)8149*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector signed char __a, vector unsigned int __b) {
8150*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8151*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b);
8152*344a7f5eSAndroid Build Coastguard Worker }
8153*344a7f5eSAndroid Build Coastguard Worker 
8154*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_srl(vector unsigned char __a,vector unsigned char __b)8155*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector unsigned char __a, vector unsigned char __b) {
8156*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8157*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
8158*344a7f5eSAndroid Build Coastguard Worker }
8159*344a7f5eSAndroid Build Coastguard Worker 
8160*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_srl(vector unsigned char __a,vector unsigned short __b)8161*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector unsigned char __a, vector unsigned short __b) {
8162*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8163*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
8164*344a7f5eSAndroid Build Coastguard Worker }
8165*344a7f5eSAndroid Build Coastguard Worker 
8166*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_srl(vector unsigned char __a,vector unsigned int __b)8167*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector unsigned char __a, vector unsigned int __b) {
8168*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8169*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
8170*344a7f5eSAndroid Build Coastguard Worker }
8171*344a7f5eSAndroid Build Coastguard Worker 
8172*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_srl(vector bool char __a,vector unsigned char __b)8173*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector bool char __a, vector unsigned char __b) {
8174*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8175*344a7f5eSAndroid Build Coastguard Worker                                                  (vector int)__b);
8176*344a7f5eSAndroid Build Coastguard Worker }
8177*344a7f5eSAndroid Build Coastguard Worker 
8178*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_srl(vector bool char __a,vector unsigned short __b)8179*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector bool char __a, vector unsigned short __b) {
8180*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8181*344a7f5eSAndroid Build Coastguard Worker                                                  (vector int)__b);
8182*344a7f5eSAndroid Build Coastguard Worker }
8183*344a7f5eSAndroid Build Coastguard Worker 
8184*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_srl(vector bool char __a,vector unsigned int __b)8185*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector bool char __a, vector unsigned int __b) {
8186*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8187*344a7f5eSAndroid Build Coastguard Worker                                                  (vector int)__b);
8188*344a7f5eSAndroid Build Coastguard Worker }
8189*344a7f5eSAndroid Build Coastguard Worker 
vec_srl(vector short __a,vector unsigned char __b)8190*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
8191*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
8192*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8193*344a7f5eSAndroid Build Coastguard Worker }
8194*344a7f5eSAndroid Build Coastguard Worker 
vec_srl(vector short __a,vector unsigned short __b)8195*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
8196*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned short __b) {
8197*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8198*344a7f5eSAndroid Build Coastguard Worker }
8199*344a7f5eSAndroid Build Coastguard Worker 
vec_srl(vector short __a,vector unsigned int __b)8200*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_srl(vector short __a,
8201*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned int __b) {
8202*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8203*344a7f5eSAndroid Build Coastguard Worker }
8204*344a7f5eSAndroid Build Coastguard Worker 
8205*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_srl(vector unsigned short __a,vector unsigned char __b)8206*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector unsigned short __a, vector unsigned char __b) {
8207*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8208*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
8209*344a7f5eSAndroid Build Coastguard Worker }
8210*344a7f5eSAndroid Build Coastguard Worker 
8211*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_srl(vector unsigned short __a,vector unsigned short __b)8212*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector unsigned short __a, vector unsigned short __b) {
8213*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8214*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
8215*344a7f5eSAndroid Build Coastguard Worker }
8216*344a7f5eSAndroid Build Coastguard Worker 
8217*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_srl(vector unsigned short __a,vector unsigned int __b)8218*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector unsigned short __a, vector unsigned int __b) {
8219*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8220*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
8221*344a7f5eSAndroid Build Coastguard Worker }
8222*344a7f5eSAndroid Build Coastguard Worker 
8223*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_srl(vector bool short __a,vector unsigned char __b)8224*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector bool short __a, vector unsigned char __b) {
8225*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8226*344a7f5eSAndroid Build Coastguard Worker                                                   (vector int)__b);
8227*344a7f5eSAndroid Build Coastguard Worker }
8228*344a7f5eSAndroid Build Coastguard Worker 
8229*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_srl(vector bool short __a,vector unsigned short __b)8230*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector bool short __a, vector unsigned short __b) {
8231*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8232*344a7f5eSAndroid Build Coastguard Worker                                                   (vector int)__b);
8233*344a7f5eSAndroid Build Coastguard Worker }
8234*344a7f5eSAndroid Build Coastguard Worker 
8235*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_srl(vector bool short __a,vector unsigned int __b)8236*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector bool short __a, vector unsigned int __b) {
8237*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8238*344a7f5eSAndroid Build Coastguard Worker                                                   (vector int)__b);
8239*344a7f5eSAndroid Build Coastguard Worker }
8240*344a7f5eSAndroid Build Coastguard Worker 
vec_srl(vector pixel __a,vector unsigned char __b)8241*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
8242*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
8243*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8244*344a7f5eSAndroid Build Coastguard Worker }
8245*344a7f5eSAndroid Build Coastguard Worker 
vec_srl(vector pixel __a,vector unsigned short __b)8246*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
8247*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned short __b) {
8248*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8249*344a7f5eSAndroid Build Coastguard Worker }
8250*344a7f5eSAndroid Build Coastguard Worker 
vec_srl(vector pixel __a,vector unsigned int __b)8251*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_srl(vector pixel __a,
8252*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned int __b) {
8253*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8254*344a7f5eSAndroid Build Coastguard Worker }
8255*344a7f5eSAndroid Build Coastguard Worker 
vec_srl(vector int __a,vector unsigned char __b)8256*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
8257*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned char __b) {
8258*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8259*344a7f5eSAndroid Build Coastguard Worker }
8260*344a7f5eSAndroid Build Coastguard Worker 
vec_srl(vector int __a,vector unsigned short __b)8261*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
8262*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned short __b) {
8263*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8264*344a7f5eSAndroid Build Coastguard Worker }
8265*344a7f5eSAndroid Build Coastguard Worker 
vec_srl(vector int __a,vector unsigned int __b)8266*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_srl(vector int __a,
8267*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned int __b) {
8268*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8269*344a7f5eSAndroid Build Coastguard Worker }
8270*344a7f5eSAndroid Build Coastguard Worker 
8271*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_srl(vector unsigned int __a,vector unsigned char __b)8272*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector unsigned int __a, vector unsigned char __b) {
8273*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8274*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
8275*344a7f5eSAndroid Build Coastguard Worker }
8276*344a7f5eSAndroid Build Coastguard Worker 
8277*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_srl(vector unsigned int __a,vector unsigned short __b)8278*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector unsigned int __a, vector unsigned short __b) {
8279*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8280*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
8281*344a7f5eSAndroid Build Coastguard Worker }
8282*344a7f5eSAndroid Build Coastguard Worker 
8283*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_srl(vector unsigned int __a,vector unsigned int __b)8284*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector unsigned int __a, vector unsigned int __b) {
8285*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8286*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
8287*344a7f5eSAndroid Build Coastguard Worker }
8288*344a7f5eSAndroid Build Coastguard Worker 
8289*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_srl(vector bool int __a,vector unsigned char __b)8290*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector bool int __a, vector unsigned char __b) {
8291*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8292*344a7f5eSAndroid Build Coastguard Worker                                                 (vector int)__b);
8293*344a7f5eSAndroid Build Coastguard Worker }
8294*344a7f5eSAndroid Build Coastguard Worker 
8295*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_srl(vector bool int __a,vector unsigned short __b)8296*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector bool int __a, vector unsigned short __b) {
8297*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8298*344a7f5eSAndroid Build Coastguard Worker                                                 (vector int)__b);
8299*344a7f5eSAndroid Build Coastguard Worker }
8300*344a7f5eSAndroid Build Coastguard Worker 
8301*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_srl(vector bool int __a,vector unsigned int __b)8302*344a7f5eSAndroid Build Coastguard Worker vec_srl(vector bool int __a, vector unsigned int __b) {
8303*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8304*344a7f5eSAndroid Build Coastguard Worker                                                 (vector int)__b);
8305*344a7f5eSAndroid Build Coastguard Worker }
8306*344a7f5eSAndroid Build Coastguard Worker 
8307*344a7f5eSAndroid Build Coastguard Worker /* vec_vsr */
8308*344a7f5eSAndroid Build Coastguard Worker 
8309*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsr(vector signed char __a,vector unsigned char __b)8310*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector signed char __a, vector unsigned char __b) {
8311*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8312*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b);
8313*344a7f5eSAndroid Build Coastguard Worker }
8314*344a7f5eSAndroid Build Coastguard Worker 
8315*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsr(vector signed char __a,vector unsigned short __b)8316*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector signed char __a, vector unsigned short __b) {
8317*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8318*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b);
8319*344a7f5eSAndroid Build Coastguard Worker }
8320*344a7f5eSAndroid Build Coastguard Worker 
8321*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsr(vector signed char __a,vector unsigned int __b)8322*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector signed char __a, vector unsigned int __b) {
8323*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsr((vector int)__a,
8324*344a7f5eSAndroid Build Coastguard Worker                                                    (vector int)__b);
8325*344a7f5eSAndroid Build Coastguard Worker }
8326*344a7f5eSAndroid Build Coastguard Worker 
8327*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsr(vector unsigned char __a,vector unsigned char __b)8328*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector unsigned char __a, vector unsigned char __b) {
8329*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8330*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
8331*344a7f5eSAndroid Build Coastguard Worker }
8332*344a7f5eSAndroid Build Coastguard Worker 
8333*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsr(vector unsigned char __a,vector unsigned short __b)8334*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector unsigned char __a, vector unsigned short __b) {
8335*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8336*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
8337*344a7f5eSAndroid Build Coastguard Worker }
8338*344a7f5eSAndroid Build Coastguard Worker 
8339*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsr(vector unsigned char __a,vector unsigned int __b)8340*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector unsigned char __a, vector unsigned int __b) {
8341*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsr((vector int)__a,
8342*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
8343*344a7f5eSAndroid Build Coastguard Worker }
8344*344a7f5eSAndroid Build Coastguard Worker 
8345*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_vsr(vector bool char __a,vector unsigned char __b)8346*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector bool char __a, vector unsigned char __b) {
8347*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8348*344a7f5eSAndroid Build Coastguard Worker                                                  (vector int)__b);
8349*344a7f5eSAndroid Build Coastguard Worker }
8350*344a7f5eSAndroid Build Coastguard Worker 
8351*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_vsr(vector bool char __a,vector unsigned short __b)8352*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector bool char __a, vector unsigned short __b) {
8353*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8354*344a7f5eSAndroid Build Coastguard Worker                                                  (vector int)__b);
8355*344a7f5eSAndroid Build Coastguard Worker }
8356*344a7f5eSAndroid Build Coastguard Worker 
8357*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_vsr(vector bool char __a,vector unsigned int __b)8358*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector bool char __a, vector unsigned int __b) {
8359*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_altivec_vsr((vector int)__a,
8360*344a7f5eSAndroid Build Coastguard Worker                                                  (vector int)__b);
8361*344a7f5eSAndroid Build Coastguard Worker }
8362*344a7f5eSAndroid Build Coastguard Worker 
vec_vsr(vector short __a,vector unsigned char __b)8363*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
8364*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
8365*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8366*344a7f5eSAndroid Build Coastguard Worker }
8367*344a7f5eSAndroid Build Coastguard Worker 
vec_vsr(vector short __a,vector unsigned short __b)8368*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
8369*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned short __b) {
8370*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8371*344a7f5eSAndroid Build Coastguard Worker }
8372*344a7f5eSAndroid Build Coastguard Worker 
vec_vsr(vector short __a,vector unsigned int __b)8373*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsr(vector short __a,
8374*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned int __b) {
8375*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8376*344a7f5eSAndroid Build Coastguard Worker }
8377*344a7f5eSAndroid Build Coastguard Worker 
8378*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsr(vector unsigned short __a,vector unsigned char __b)8379*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector unsigned short __a, vector unsigned char __b) {
8380*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8381*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
8382*344a7f5eSAndroid Build Coastguard Worker }
8383*344a7f5eSAndroid Build Coastguard Worker 
8384*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsr(vector unsigned short __a,vector unsigned short __b)8385*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector unsigned short __a, vector unsigned short __b) {
8386*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8387*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
8388*344a7f5eSAndroid Build Coastguard Worker }
8389*344a7f5eSAndroid Build Coastguard Worker 
8390*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsr(vector unsigned short __a,vector unsigned int __b)8391*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector unsigned short __a, vector unsigned int __b) {
8392*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsr((vector int)__a,
8393*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
8394*344a7f5eSAndroid Build Coastguard Worker }
8395*344a7f5eSAndroid Build Coastguard Worker 
8396*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vsr(vector bool short __a,vector unsigned char __b)8397*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector bool short __a, vector unsigned char __b) {
8398*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8399*344a7f5eSAndroid Build Coastguard Worker                                                   (vector int)__b);
8400*344a7f5eSAndroid Build Coastguard Worker }
8401*344a7f5eSAndroid Build Coastguard Worker 
8402*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vsr(vector bool short __a,vector unsigned short __b)8403*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector bool short __a, vector unsigned short __b) {
8404*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8405*344a7f5eSAndroid Build Coastguard Worker                                                   (vector int)__b);
8406*344a7f5eSAndroid Build Coastguard Worker }
8407*344a7f5eSAndroid Build Coastguard Worker 
8408*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vsr(vector bool short __a,vector unsigned int __b)8409*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector bool short __a, vector unsigned int __b) {
8410*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vsr((vector int)__a,
8411*344a7f5eSAndroid Build Coastguard Worker                                                   (vector int)__b);
8412*344a7f5eSAndroid Build Coastguard Worker }
8413*344a7f5eSAndroid Build Coastguard Worker 
vec_vsr(vector pixel __a,vector unsigned char __b)8414*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
8415*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
8416*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8417*344a7f5eSAndroid Build Coastguard Worker }
8418*344a7f5eSAndroid Build Coastguard Worker 
vec_vsr(vector pixel __a,vector unsigned short __b)8419*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
8420*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned short __b) {
8421*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8422*344a7f5eSAndroid Build Coastguard Worker }
8423*344a7f5eSAndroid Build Coastguard Worker 
vec_vsr(vector pixel __a,vector unsigned int __b)8424*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vsr(vector pixel __a,
8425*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned int __b) {
8426*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsr((vector int)__a, (vector int)__b);
8427*344a7f5eSAndroid Build Coastguard Worker }
8428*344a7f5eSAndroid Build Coastguard Worker 
vec_vsr(vector int __a,vector unsigned char __b)8429*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
8430*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned char __b) {
8431*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8432*344a7f5eSAndroid Build Coastguard Worker }
8433*344a7f5eSAndroid Build Coastguard Worker 
vec_vsr(vector int __a,vector unsigned short __b)8434*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
8435*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned short __b) {
8436*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8437*344a7f5eSAndroid Build Coastguard Worker }
8438*344a7f5eSAndroid Build Coastguard Worker 
vec_vsr(vector int __a,vector unsigned int __b)8439*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsr(vector int __a,
8440*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned int __b) {
8441*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsr(__a, (vector int)__b);
8442*344a7f5eSAndroid Build Coastguard Worker }
8443*344a7f5eSAndroid Build Coastguard Worker 
8444*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsr(vector unsigned int __a,vector unsigned char __b)8445*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector unsigned int __a, vector unsigned char __b) {
8446*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8447*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
8448*344a7f5eSAndroid Build Coastguard Worker }
8449*344a7f5eSAndroid Build Coastguard Worker 
8450*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsr(vector unsigned int __a,vector unsigned short __b)8451*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector unsigned int __a, vector unsigned short __b) {
8452*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8453*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
8454*344a7f5eSAndroid Build Coastguard Worker }
8455*344a7f5eSAndroid Build Coastguard Worker 
8456*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsr(vector unsigned int __a,vector unsigned int __b)8457*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector unsigned int __a, vector unsigned int __b) {
8458*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsr((vector int)__a,
8459*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
8460*344a7f5eSAndroid Build Coastguard Worker }
8461*344a7f5eSAndroid Build Coastguard Worker 
8462*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_vsr(vector bool int __a,vector unsigned char __b)8463*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector bool int __a, vector unsigned char __b) {
8464*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8465*344a7f5eSAndroid Build Coastguard Worker                                                 (vector int)__b);
8466*344a7f5eSAndroid Build Coastguard Worker }
8467*344a7f5eSAndroid Build Coastguard Worker 
8468*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_vsr(vector bool int __a,vector unsigned short __b)8469*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector bool int __a, vector unsigned short __b) {
8470*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8471*344a7f5eSAndroid Build Coastguard Worker                                                 (vector int)__b);
8472*344a7f5eSAndroid Build Coastguard Worker }
8473*344a7f5eSAndroid Build Coastguard Worker 
8474*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_vsr(vector bool int __a,vector unsigned int __b)8475*344a7f5eSAndroid Build Coastguard Worker vec_vsr(vector bool int __a, vector unsigned int __b) {
8476*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vsr((vector int)__a,
8477*344a7f5eSAndroid Build Coastguard Worker                                                 (vector int)__b);
8478*344a7f5eSAndroid Build Coastguard Worker }
8479*344a7f5eSAndroid Build Coastguard Worker 
8480*344a7f5eSAndroid Build Coastguard Worker /* vec_sro */
8481*344a7f5eSAndroid Build Coastguard Worker 
8482*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_sro(vector signed char __a,vector signed char __b)8483*344a7f5eSAndroid Build Coastguard Worker vec_sro(vector signed char __a, vector signed char __b) {
8484*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8485*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
8486*344a7f5eSAndroid Build Coastguard Worker }
8487*344a7f5eSAndroid Build Coastguard Worker 
8488*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_sro(vector signed char __a,vector unsigned char __b)8489*344a7f5eSAndroid Build Coastguard Worker vec_sro(vector signed char __a, vector unsigned char __b) {
8490*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8491*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
8492*344a7f5eSAndroid Build Coastguard Worker }
8493*344a7f5eSAndroid Build Coastguard Worker 
8494*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sro(vector unsigned char __a,vector signed char __b)8495*344a7f5eSAndroid Build Coastguard Worker vec_sro(vector unsigned char __a, vector signed char __b) {
8496*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8497*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
8498*344a7f5eSAndroid Build Coastguard Worker }
8499*344a7f5eSAndroid Build Coastguard Worker 
8500*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sro(vector unsigned char __a,vector unsigned char __b)8501*344a7f5eSAndroid Build Coastguard Worker vec_sro(vector unsigned char __a, vector unsigned char __b) {
8502*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8503*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
8504*344a7f5eSAndroid Build Coastguard Worker }
8505*344a7f5eSAndroid Build Coastguard Worker 
vec_sro(vector short __a,vector signed char __b)8506*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
8507*344a7f5eSAndroid Build Coastguard Worker                                                     vector signed char __b) {
8508*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8509*344a7f5eSAndroid Build Coastguard Worker }
8510*344a7f5eSAndroid Build Coastguard Worker 
vec_sro(vector short __a,vector unsigned char __b)8511*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_sro(vector short __a,
8512*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
8513*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8514*344a7f5eSAndroid Build Coastguard Worker }
8515*344a7f5eSAndroid Build Coastguard Worker 
8516*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sro(vector unsigned short __a,vector signed char __b)8517*344a7f5eSAndroid Build Coastguard Worker vec_sro(vector unsigned short __a, vector signed char __b) {
8518*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8519*344a7f5eSAndroid Build Coastguard Worker                                                        (vector int)__b);
8520*344a7f5eSAndroid Build Coastguard Worker }
8521*344a7f5eSAndroid Build Coastguard Worker 
8522*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sro(vector unsigned short __a,vector unsigned char __b)8523*344a7f5eSAndroid Build Coastguard Worker vec_sro(vector unsigned short __a, vector unsigned char __b) {
8524*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8525*344a7f5eSAndroid Build Coastguard Worker                                                        (vector int)__b);
8526*344a7f5eSAndroid Build Coastguard Worker }
8527*344a7f5eSAndroid Build Coastguard Worker 
vec_sro(vector pixel __a,vector signed char __b)8528*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
8529*344a7f5eSAndroid Build Coastguard Worker                                                     vector signed char __b) {
8530*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8531*344a7f5eSAndroid Build Coastguard Worker }
8532*344a7f5eSAndroid Build Coastguard Worker 
vec_sro(vector pixel __a,vector unsigned char __b)8533*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_sro(vector pixel __a,
8534*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
8535*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8536*344a7f5eSAndroid Build Coastguard Worker }
8537*344a7f5eSAndroid Build Coastguard Worker 
vec_sro(vector int __a,vector signed char __b)8538*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
8539*344a7f5eSAndroid Build Coastguard Worker                                                   vector signed char __b) {
8540*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8541*344a7f5eSAndroid Build Coastguard Worker }
8542*344a7f5eSAndroid Build Coastguard Worker 
vec_sro(vector int __a,vector unsigned char __b)8543*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sro(vector int __a,
8544*344a7f5eSAndroid Build Coastguard Worker                                                   vector unsigned char __b) {
8545*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8546*344a7f5eSAndroid Build Coastguard Worker }
8547*344a7f5eSAndroid Build Coastguard Worker 
8548*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sro(vector unsigned int __a,vector signed char __b)8549*344a7f5eSAndroid Build Coastguard Worker vec_sro(vector unsigned int __a, vector signed char __b) {
8550*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8551*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
8552*344a7f5eSAndroid Build Coastguard Worker }
8553*344a7f5eSAndroid Build Coastguard Worker 
8554*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sro(vector unsigned int __a,vector unsigned char __b)8555*344a7f5eSAndroid Build Coastguard Worker vec_sro(vector unsigned int __a, vector unsigned char __b) {
8556*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8557*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
8558*344a7f5eSAndroid Build Coastguard Worker }
8559*344a7f5eSAndroid Build Coastguard Worker 
vec_sro(vector float __a,vector signed char __b)8560*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
8561*344a7f5eSAndroid Build Coastguard Worker                                                     vector signed char __b) {
8562*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8563*344a7f5eSAndroid Build Coastguard Worker }
8564*344a7f5eSAndroid Build Coastguard Worker 
vec_sro(vector float __a,vector unsigned char __b)8565*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_sro(vector float __a,
8566*344a7f5eSAndroid Build Coastguard Worker                                                     vector unsigned char __b) {
8567*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8568*344a7f5eSAndroid Build Coastguard Worker }
8569*344a7f5eSAndroid Build Coastguard Worker 
8570*344a7f5eSAndroid Build Coastguard Worker /* vec_vsro */
8571*344a7f5eSAndroid Build Coastguard Worker 
8572*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsro(vector signed char __a,vector signed char __b)8573*344a7f5eSAndroid Build Coastguard Worker vec_vsro(vector signed char __a, vector signed char __b) {
8574*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8575*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
8576*344a7f5eSAndroid Build Coastguard Worker }
8577*344a7f5eSAndroid Build Coastguard Worker 
8578*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsro(vector signed char __a,vector unsigned char __b)8579*344a7f5eSAndroid Build Coastguard Worker vec_vsro(vector signed char __a, vector unsigned char __b) {
8580*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_altivec_vsro((vector int)__a,
8581*344a7f5eSAndroid Build Coastguard Worker                                                     (vector int)__b);
8582*344a7f5eSAndroid Build Coastguard Worker }
8583*344a7f5eSAndroid Build Coastguard Worker 
8584*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsro(vector unsigned char __a,vector signed char __b)8585*344a7f5eSAndroid Build Coastguard Worker vec_vsro(vector unsigned char __a, vector signed char __b) {
8586*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8587*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
8588*344a7f5eSAndroid Build Coastguard Worker }
8589*344a7f5eSAndroid Build Coastguard Worker 
8590*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsro(vector unsigned char __a,vector unsigned char __b)8591*344a7f5eSAndroid Build Coastguard Worker vec_vsro(vector unsigned char __a, vector unsigned char __b) {
8592*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_altivec_vsro((vector int)__a,
8593*344a7f5eSAndroid Build Coastguard Worker                                                       (vector int)__b);
8594*344a7f5eSAndroid Build Coastguard Worker }
8595*344a7f5eSAndroid Build Coastguard Worker 
vec_vsro(vector short __a,vector signed char __b)8596*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
8597*344a7f5eSAndroid Build Coastguard Worker                                                      vector signed char __b) {
8598*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8599*344a7f5eSAndroid Build Coastguard Worker }
8600*344a7f5eSAndroid Build Coastguard Worker 
vec_vsro(vector short __a,vector unsigned char __b)8601*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsro(vector short __a,
8602*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned char __b) {
8603*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8604*344a7f5eSAndroid Build Coastguard Worker }
8605*344a7f5eSAndroid Build Coastguard Worker 
8606*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsro(vector unsigned short __a,vector signed char __b)8607*344a7f5eSAndroid Build Coastguard Worker vec_vsro(vector unsigned short __a, vector signed char __b) {
8608*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8609*344a7f5eSAndroid Build Coastguard Worker                                                        (vector int)__b);
8610*344a7f5eSAndroid Build Coastguard Worker }
8611*344a7f5eSAndroid Build Coastguard Worker 
8612*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsro(vector unsigned short __a,vector unsigned char __b)8613*344a7f5eSAndroid Build Coastguard Worker vec_vsro(vector unsigned short __a, vector unsigned char __b) {
8614*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_vsro((vector int)__a,
8615*344a7f5eSAndroid Build Coastguard Worker                                                        (vector int)__b);
8616*344a7f5eSAndroid Build Coastguard Worker }
8617*344a7f5eSAndroid Build Coastguard Worker 
vec_vsro(vector pixel __a,vector signed char __b)8618*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
8619*344a7f5eSAndroid Build Coastguard Worker                                                      vector signed char __b) {
8620*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8621*344a7f5eSAndroid Build Coastguard Worker }
8622*344a7f5eSAndroid Build Coastguard Worker 
vec_vsro(vector pixel __a,vector unsigned char __b)8623*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_vsro(vector pixel __a,
8624*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned char __b) {
8625*344a7f5eSAndroid Build Coastguard Worker   return (vector pixel)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8626*344a7f5eSAndroid Build Coastguard Worker }
8627*344a7f5eSAndroid Build Coastguard Worker 
vec_vsro(vector int __a,vector signed char __b)8628*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
8629*344a7f5eSAndroid Build Coastguard Worker                                                    vector signed char __b) {
8630*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8631*344a7f5eSAndroid Build Coastguard Worker }
8632*344a7f5eSAndroid Build Coastguard Worker 
vec_vsro(vector int __a,vector unsigned char __b)8633*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsro(vector int __a,
8634*344a7f5eSAndroid Build Coastguard Worker                                                    vector unsigned char __b) {
8635*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__builtin_altivec_vsro(__a, (vector int)__b);
8636*344a7f5eSAndroid Build Coastguard Worker }
8637*344a7f5eSAndroid Build Coastguard Worker 
8638*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsro(vector unsigned int __a,vector signed char __b)8639*344a7f5eSAndroid Build Coastguard Worker vec_vsro(vector unsigned int __a, vector signed char __b) {
8640*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8641*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
8642*344a7f5eSAndroid Build Coastguard Worker }
8643*344a7f5eSAndroid Build Coastguard Worker 
8644*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsro(vector unsigned int __a,vector unsigned char __b)8645*344a7f5eSAndroid Build Coastguard Worker vec_vsro(vector unsigned int __a, vector unsigned char __b) {
8646*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vsro((vector int)__a,
8647*344a7f5eSAndroid Build Coastguard Worker                                                      (vector int)__b);
8648*344a7f5eSAndroid Build Coastguard Worker }
8649*344a7f5eSAndroid Build Coastguard Worker 
vec_vsro(vector float __a,vector signed char __b)8650*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
8651*344a7f5eSAndroid Build Coastguard Worker                                                      vector signed char __b) {
8652*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8653*344a7f5eSAndroid Build Coastguard Worker }
8654*344a7f5eSAndroid Build Coastguard Worker 
vec_vsro(vector float __a,vector unsigned char __b)8655*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vsro(vector float __a,
8656*344a7f5eSAndroid Build Coastguard Worker                                                      vector unsigned char __b) {
8657*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_altivec_vsro((vector int)__a, (vector int)__b);
8658*344a7f5eSAndroid Build Coastguard Worker }
8659*344a7f5eSAndroid Build Coastguard Worker 
8660*344a7f5eSAndroid Build Coastguard Worker /* vec_st */
8661*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector signed char __a,int __b,vector signed char * __c)8662*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
8663*344a7f5eSAndroid Build Coastguard Worker                                            vector signed char *__c) {
8664*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8665*344a7f5eSAndroid Build Coastguard Worker }
8666*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector signed char __a,int __b,signed char * __c)8667*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector signed char __a, int __b,
8668*344a7f5eSAndroid Build Coastguard Worker                                            signed char *__c) {
8669*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8670*344a7f5eSAndroid Build Coastguard Worker }
8671*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector unsigned char __a,int __b,vector unsigned char * __c)8672*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
8673*344a7f5eSAndroid Build Coastguard Worker                                            vector unsigned char *__c) {
8674*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8675*344a7f5eSAndroid Build Coastguard Worker }
8676*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector unsigned char __a,int __b,unsigned char * __c)8677*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector unsigned char __a, int __b,
8678*344a7f5eSAndroid Build Coastguard Worker                                            unsigned char *__c) {
8679*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8680*344a7f5eSAndroid Build Coastguard Worker }
8681*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector bool char __a,int __b,signed char * __c)8682*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
8683*344a7f5eSAndroid Build Coastguard Worker                                            signed char *__c) {
8684*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8685*344a7f5eSAndroid Build Coastguard Worker }
8686*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector bool char __a,int __b,unsigned char * __c)8687*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
8688*344a7f5eSAndroid Build Coastguard Worker                                            unsigned char *__c) {
8689*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8690*344a7f5eSAndroid Build Coastguard Worker }
8691*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector bool char __a,int __b,vector bool char * __c)8692*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector bool char __a, int __b,
8693*344a7f5eSAndroid Build Coastguard Worker                                            vector bool char *__c) {
8694*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8695*344a7f5eSAndroid Build Coastguard Worker }
8696*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector short __a,int __b,vector short * __c)8697*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
8698*344a7f5eSAndroid Build Coastguard Worker                                            vector short *__c) {
8699*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8700*344a7f5eSAndroid Build Coastguard Worker }
8701*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector short __a,int __b,short * __c)8702*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector short __a, int __b,
8703*344a7f5eSAndroid Build Coastguard Worker                                            short *__c) {
8704*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8705*344a7f5eSAndroid Build Coastguard Worker }
8706*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector unsigned short __a,int __b,vector unsigned short * __c)8707*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
8708*344a7f5eSAndroid Build Coastguard Worker                                            vector unsigned short *__c) {
8709*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8710*344a7f5eSAndroid Build Coastguard Worker }
8711*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector unsigned short __a,int __b,unsigned short * __c)8712*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector unsigned short __a, int __b,
8713*344a7f5eSAndroid Build Coastguard Worker                                            unsigned short *__c) {
8714*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8715*344a7f5eSAndroid Build Coastguard Worker }
8716*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector bool short __a,int __b,short * __c)8717*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
8718*344a7f5eSAndroid Build Coastguard Worker                                            short *__c) {
8719*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8720*344a7f5eSAndroid Build Coastguard Worker }
8721*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector bool short __a,int __b,unsigned short * __c)8722*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
8723*344a7f5eSAndroid Build Coastguard Worker                                            unsigned short *__c) {
8724*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8725*344a7f5eSAndroid Build Coastguard Worker }
8726*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector bool short __a,int __b,vector bool short * __c)8727*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector bool short __a, int __b,
8728*344a7f5eSAndroid Build Coastguard Worker                                            vector bool short *__c) {
8729*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8730*344a7f5eSAndroid Build Coastguard Worker }
8731*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector pixel __a,int __b,short * __c)8732*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
8733*344a7f5eSAndroid Build Coastguard Worker                                            short *__c) {
8734*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8735*344a7f5eSAndroid Build Coastguard Worker }
8736*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector pixel __a,int __b,unsigned short * __c)8737*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
8738*344a7f5eSAndroid Build Coastguard Worker                                            unsigned short *__c) {
8739*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8740*344a7f5eSAndroid Build Coastguard Worker }
8741*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector pixel __a,int __b,vector pixel * __c)8742*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector pixel __a, int __b,
8743*344a7f5eSAndroid Build Coastguard Worker                                            vector pixel *__c) {
8744*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8745*344a7f5eSAndroid Build Coastguard Worker }
8746*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector int __a,int __b,vector int * __c)8747*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b,
8748*344a7f5eSAndroid Build Coastguard Worker                                            vector int *__c) {
8749*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx(__a, __b, __c);
8750*344a7f5eSAndroid Build Coastguard Worker }
8751*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector int __a,int __b,int * __c)8752*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector int __a, int __b, int *__c) {
8753*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx(__a, __b, __c);
8754*344a7f5eSAndroid Build Coastguard Worker }
8755*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector unsigned int __a,int __b,vector unsigned int * __c)8756*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
8757*344a7f5eSAndroid Build Coastguard Worker                                            vector unsigned int *__c) {
8758*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8759*344a7f5eSAndroid Build Coastguard Worker }
8760*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector unsigned int __a,int __b,unsigned int * __c)8761*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector unsigned int __a, int __b,
8762*344a7f5eSAndroid Build Coastguard Worker                                            unsigned int *__c) {
8763*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8764*344a7f5eSAndroid Build Coastguard Worker }
8765*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector bool int __a,int __b,int * __c)8766*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
8767*344a7f5eSAndroid Build Coastguard Worker                                            int *__c) {
8768*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8769*344a7f5eSAndroid Build Coastguard Worker }
8770*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector bool int __a,int __b,unsigned int * __c)8771*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
8772*344a7f5eSAndroid Build Coastguard Worker                                            unsigned int *__c) {
8773*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8774*344a7f5eSAndroid Build Coastguard Worker }
8775*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector bool int __a,int __b,vector bool int * __c)8776*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector bool int __a, int __b,
8777*344a7f5eSAndroid Build Coastguard Worker                                            vector bool int *__c) {
8778*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8779*344a7f5eSAndroid Build Coastguard Worker }
8780*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector float __a,int __b,vector float * __c)8781*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
8782*344a7f5eSAndroid Build Coastguard Worker                                            vector float *__c) {
8783*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8784*344a7f5eSAndroid Build Coastguard Worker }
8785*344a7f5eSAndroid Build Coastguard Worker 
vec_st(vector float __a,int __b,float * __c)8786*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_st(vector float __a, int __b,
8787*344a7f5eSAndroid Build Coastguard Worker                                            float *__c) {
8788*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8789*344a7f5eSAndroid Build Coastguard Worker }
8790*344a7f5eSAndroid Build Coastguard Worker 
8791*344a7f5eSAndroid Build Coastguard Worker /* vec_stvx */
8792*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector signed char __a,int __b,vector signed char * __c)8793*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
8794*344a7f5eSAndroid Build Coastguard Worker                                              vector signed char *__c) {
8795*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8796*344a7f5eSAndroid Build Coastguard Worker }
8797*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector signed char __a,int __b,signed char * __c)8798*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector signed char __a, int __b,
8799*344a7f5eSAndroid Build Coastguard Worker                                              signed char *__c) {
8800*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8801*344a7f5eSAndroid Build Coastguard Worker }
8802*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector unsigned char __a,int __b,vector unsigned char * __c)8803*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
8804*344a7f5eSAndroid Build Coastguard Worker                                              vector unsigned char *__c) {
8805*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8806*344a7f5eSAndroid Build Coastguard Worker }
8807*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector unsigned char __a,int __b,unsigned char * __c)8808*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned char __a, int __b,
8809*344a7f5eSAndroid Build Coastguard Worker                                              unsigned char *__c) {
8810*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8811*344a7f5eSAndroid Build Coastguard Worker }
8812*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector bool char __a,int __b,signed char * __c)8813*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
8814*344a7f5eSAndroid Build Coastguard Worker                                              signed char *__c) {
8815*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8816*344a7f5eSAndroid Build Coastguard Worker }
8817*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector bool char __a,int __b,unsigned char * __c)8818*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
8819*344a7f5eSAndroid Build Coastguard Worker                                              unsigned char *__c) {
8820*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8821*344a7f5eSAndroid Build Coastguard Worker }
8822*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector bool char __a,int __b,vector bool char * __c)8823*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector bool char __a, int __b,
8824*344a7f5eSAndroid Build Coastguard Worker                                              vector bool char *__c) {
8825*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8826*344a7f5eSAndroid Build Coastguard Worker }
8827*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector short __a,int __b,vector short * __c)8828*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
8829*344a7f5eSAndroid Build Coastguard Worker                                              vector short *__c) {
8830*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8831*344a7f5eSAndroid Build Coastguard Worker }
8832*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector short __a,int __b,short * __c)8833*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector short __a, int __b,
8834*344a7f5eSAndroid Build Coastguard Worker                                              short *__c) {
8835*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8836*344a7f5eSAndroid Build Coastguard Worker }
8837*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector unsigned short __a,int __b,vector unsigned short * __c)8838*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
8839*344a7f5eSAndroid Build Coastguard Worker                                              vector unsigned short *__c) {
8840*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8841*344a7f5eSAndroid Build Coastguard Worker }
8842*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector unsigned short __a,int __b,unsigned short * __c)8843*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned short __a, int __b,
8844*344a7f5eSAndroid Build Coastguard Worker                                              unsigned short *__c) {
8845*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8846*344a7f5eSAndroid Build Coastguard Worker }
8847*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector bool short __a,int __b,short * __c)8848*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
8849*344a7f5eSAndroid Build Coastguard Worker                                              short *__c) {
8850*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8851*344a7f5eSAndroid Build Coastguard Worker }
8852*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector bool short __a,int __b,unsigned short * __c)8853*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
8854*344a7f5eSAndroid Build Coastguard Worker                                              unsigned short *__c) {
8855*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8856*344a7f5eSAndroid Build Coastguard Worker }
8857*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector bool short __a,int __b,vector bool short * __c)8858*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector bool short __a, int __b,
8859*344a7f5eSAndroid Build Coastguard Worker                                              vector bool short *__c) {
8860*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8861*344a7f5eSAndroid Build Coastguard Worker }
8862*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector pixel __a,int __b,short * __c)8863*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
8864*344a7f5eSAndroid Build Coastguard Worker                                              short *__c) {
8865*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8866*344a7f5eSAndroid Build Coastguard Worker }
8867*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector pixel __a,int __b,unsigned short * __c)8868*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
8869*344a7f5eSAndroid Build Coastguard Worker                                              unsigned short *__c) {
8870*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8871*344a7f5eSAndroid Build Coastguard Worker }
8872*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector pixel __a,int __b,vector pixel * __c)8873*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector pixel __a, int __b,
8874*344a7f5eSAndroid Build Coastguard Worker                                              vector pixel *__c) {
8875*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8876*344a7f5eSAndroid Build Coastguard Worker }
8877*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector int __a,int __b,vector int * __c)8878*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
8879*344a7f5eSAndroid Build Coastguard Worker                                              vector int *__c) {
8880*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx(__a, __b, __c);
8881*344a7f5eSAndroid Build Coastguard Worker }
8882*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector int __a,int __b,int * __c)8883*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector int __a, int __b,
8884*344a7f5eSAndroid Build Coastguard Worker                                              int *__c) {
8885*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx(__a, __b, __c);
8886*344a7f5eSAndroid Build Coastguard Worker }
8887*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector unsigned int __a,int __b,vector unsigned int * __c)8888*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
8889*344a7f5eSAndroid Build Coastguard Worker                                              vector unsigned int *__c) {
8890*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8891*344a7f5eSAndroid Build Coastguard Worker }
8892*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector unsigned int __a,int __b,unsigned int * __c)8893*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector unsigned int __a, int __b,
8894*344a7f5eSAndroid Build Coastguard Worker                                              unsigned int *__c) {
8895*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8896*344a7f5eSAndroid Build Coastguard Worker }
8897*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector bool int __a,int __b,int * __c)8898*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
8899*344a7f5eSAndroid Build Coastguard Worker                                              int *__c) {
8900*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8901*344a7f5eSAndroid Build Coastguard Worker }
8902*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector bool int __a,int __b,unsigned int * __c)8903*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
8904*344a7f5eSAndroid Build Coastguard Worker                                              unsigned int *__c) {
8905*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8906*344a7f5eSAndroid Build Coastguard Worker }
8907*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector bool int __a,int __b,vector bool int * __c)8908*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector bool int __a, int __b,
8909*344a7f5eSAndroid Build Coastguard Worker                                              vector bool int *__c) {
8910*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8911*344a7f5eSAndroid Build Coastguard Worker }
8912*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector float __a,int __b,vector float * __c)8913*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
8914*344a7f5eSAndroid Build Coastguard Worker                                              vector float *__c) {
8915*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8916*344a7f5eSAndroid Build Coastguard Worker }
8917*344a7f5eSAndroid Build Coastguard Worker 
vec_stvx(vector float __a,int __b,float * __c)8918*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvx(vector float __a, int __b,
8919*344a7f5eSAndroid Build Coastguard Worker                                              float *__c) {
8920*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvx((vector int)__a, __b, __c);
8921*344a7f5eSAndroid Build Coastguard Worker }
8922*344a7f5eSAndroid Build Coastguard Worker 
8923*344a7f5eSAndroid Build Coastguard Worker /* vec_ste */
8924*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector signed char __a,int __b,signed char * __c)8925*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector signed char __a, int __b,
8926*344a7f5eSAndroid Build Coastguard Worker                                             signed char *__c) {
8927*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvebx((vector char)__a, __b, __c);
8928*344a7f5eSAndroid Build Coastguard Worker }
8929*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector unsigned char __a,int __b,unsigned char * __c)8930*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned char __a, int __b,
8931*344a7f5eSAndroid Build Coastguard Worker                                             unsigned char *__c) {
8932*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvebx((vector char)__a, __b, __c);
8933*344a7f5eSAndroid Build Coastguard Worker }
8934*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector bool char __a,int __b,signed char * __c)8935*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
8936*344a7f5eSAndroid Build Coastguard Worker                                             signed char *__c) {
8937*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvebx((vector char)__a, __b, __c);
8938*344a7f5eSAndroid Build Coastguard Worker }
8939*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector bool char __a,int __b,unsigned char * __c)8940*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector bool char __a, int __b,
8941*344a7f5eSAndroid Build Coastguard Worker                                             unsigned char *__c) {
8942*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvebx((vector char)__a, __b, __c);
8943*344a7f5eSAndroid Build Coastguard Worker }
8944*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector short __a,int __b,short * __c)8945*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector short __a, int __b,
8946*344a7f5eSAndroid Build Coastguard Worker                                             short *__c) {
8947*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvehx(__a, __b, __c);
8948*344a7f5eSAndroid Build Coastguard Worker }
8949*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector unsigned short __a,int __b,unsigned short * __c)8950*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned short __a, int __b,
8951*344a7f5eSAndroid Build Coastguard Worker                                             unsigned short *__c) {
8952*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvehx((vector short)__a, __b, __c);
8953*344a7f5eSAndroid Build Coastguard Worker }
8954*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector bool short __a,int __b,short * __c)8955*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
8956*344a7f5eSAndroid Build Coastguard Worker                                             short *__c) {
8957*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvehx((vector short)__a, __b, __c);
8958*344a7f5eSAndroid Build Coastguard Worker }
8959*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector bool short __a,int __b,unsigned short * __c)8960*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector bool short __a, int __b,
8961*344a7f5eSAndroid Build Coastguard Worker                                             unsigned short *__c) {
8962*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvehx((vector short)__a, __b, __c);
8963*344a7f5eSAndroid Build Coastguard Worker }
8964*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector pixel __a,int __b,short * __c)8965*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
8966*344a7f5eSAndroid Build Coastguard Worker                                             short *__c) {
8967*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvehx((vector short)__a, __b, __c);
8968*344a7f5eSAndroid Build Coastguard Worker }
8969*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector pixel __a,int __b,unsigned short * __c)8970*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector pixel __a, int __b,
8971*344a7f5eSAndroid Build Coastguard Worker                                             unsigned short *__c) {
8972*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvehx((vector short)__a, __b, __c);
8973*344a7f5eSAndroid Build Coastguard Worker }
8974*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector int __a,int __b,int * __c)8975*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector int __a, int __b, int *__c) {
8976*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvewx(__a, __b, __c);
8977*344a7f5eSAndroid Build Coastguard Worker }
8978*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector unsigned int __a,int __b,unsigned int * __c)8979*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector unsigned int __a, int __b,
8980*344a7f5eSAndroid Build Coastguard Worker                                             unsigned int *__c) {
8981*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvewx((vector int)__a, __b, __c);
8982*344a7f5eSAndroid Build Coastguard Worker }
8983*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector bool int __a,int __b,int * __c)8984*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
8985*344a7f5eSAndroid Build Coastguard Worker                                             int *__c) {
8986*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvewx((vector int)__a, __b, __c);
8987*344a7f5eSAndroid Build Coastguard Worker }
8988*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector bool int __a,int __b,unsigned int * __c)8989*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector bool int __a, int __b,
8990*344a7f5eSAndroid Build Coastguard Worker                                             unsigned int *__c) {
8991*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvewx((vector int)__a, __b, __c);
8992*344a7f5eSAndroid Build Coastguard Worker }
8993*344a7f5eSAndroid Build Coastguard Worker 
vec_ste(vector float __a,int __b,float * __c)8994*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_ste(vector float __a, int __b,
8995*344a7f5eSAndroid Build Coastguard Worker                                             float *__c) {
8996*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvewx((vector int)__a, __b, __c);
8997*344a7f5eSAndroid Build Coastguard Worker }
8998*344a7f5eSAndroid Build Coastguard Worker 
8999*344a7f5eSAndroid Build Coastguard Worker /* vec_stvebx */
9000*344a7f5eSAndroid Build Coastguard Worker 
vec_stvebx(vector signed char __a,int __b,signed char * __c)9001*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvebx(vector signed char __a, int __b,
9002*344a7f5eSAndroid Build Coastguard Worker                                                signed char *__c) {
9003*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvebx((vector char)__a, __b, __c);
9004*344a7f5eSAndroid Build Coastguard Worker }
9005*344a7f5eSAndroid Build Coastguard Worker 
vec_stvebx(vector unsigned char __a,int __b,unsigned char * __c)9006*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvebx(vector unsigned char __a,
9007*344a7f5eSAndroid Build Coastguard Worker                                                int __b, unsigned char *__c) {
9008*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvebx((vector char)__a, __b, __c);
9009*344a7f5eSAndroid Build Coastguard Worker }
9010*344a7f5eSAndroid Build Coastguard Worker 
vec_stvebx(vector bool char __a,int __b,signed char * __c)9011*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
9012*344a7f5eSAndroid Build Coastguard Worker                                                signed char *__c) {
9013*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvebx((vector char)__a, __b, __c);
9014*344a7f5eSAndroid Build Coastguard Worker }
9015*344a7f5eSAndroid Build Coastguard Worker 
vec_stvebx(vector bool char __a,int __b,unsigned char * __c)9016*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvebx(vector bool char __a, int __b,
9017*344a7f5eSAndroid Build Coastguard Worker                                                unsigned char *__c) {
9018*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvebx((vector char)__a, __b, __c);
9019*344a7f5eSAndroid Build Coastguard Worker }
9020*344a7f5eSAndroid Build Coastguard Worker 
9021*344a7f5eSAndroid Build Coastguard Worker /* vec_stvehx */
9022*344a7f5eSAndroid Build Coastguard Worker 
vec_stvehx(vector short __a,int __b,short * __c)9023*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvehx(vector short __a, int __b,
9024*344a7f5eSAndroid Build Coastguard Worker                                                short *__c) {
9025*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvehx(__a, __b, __c);
9026*344a7f5eSAndroid Build Coastguard Worker }
9027*344a7f5eSAndroid Build Coastguard Worker 
vec_stvehx(vector unsigned short __a,int __b,unsigned short * __c)9028*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvehx(vector unsigned short __a,
9029*344a7f5eSAndroid Build Coastguard Worker                                                int __b, unsigned short *__c) {
9030*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvehx((vector short)__a, __b, __c);
9031*344a7f5eSAndroid Build Coastguard Worker }
9032*344a7f5eSAndroid Build Coastguard Worker 
vec_stvehx(vector bool short __a,int __b,short * __c)9033*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
9034*344a7f5eSAndroid Build Coastguard Worker                                                short *__c) {
9035*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvehx((vector short)__a, __b, __c);
9036*344a7f5eSAndroid Build Coastguard Worker }
9037*344a7f5eSAndroid Build Coastguard Worker 
vec_stvehx(vector bool short __a,int __b,unsigned short * __c)9038*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvehx(vector bool short __a, int __b,
9039*344a7f5eSAndroid Build Coastguard Worker                                                unsigned short *__c) {
9040*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvehx((vector short)__a, __b, __c);
9041*344a7f5eSAndroid Build Coastguard Worker }
9042*344a7f5eSAndroid Build Coastguard Worker 
vec_stvehx(vector pixel __a,int __b,short * __c)9043*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
9044*344a7f5eSAndroid Build Coastguard Worker                                                short *__c) {
9045*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvehx((vector short)__a, __b, __c);
9046*344a7f5eSAndroid Build Coastguard Worker }
9047*344a7f5eSAndroid Build Coastguard Worker 
vec_stvehx(vector pixel __a,int __b,unsigned short * __c)9048*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvehx(vector pixel __a, int __b,
9049*344a7f5eSAndroid Build Coastguard Worker                                                unsigned short *__c) {
9050*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvehx((vector short)__a, __b, __c);
9051*344a7f5eSAndroid Build Coastguard Worker }
9052*344a7f5eSAndroid Build Coastguard Worker 
9053*344a7f5eSAndroid Build Coastguard Worker /* vec_stvewx */
9054*344a7f5eSAndroid Build Coastguard Worker 
vec_stvewx(vector int __a,int __b,int * __c)9055*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvewx(vector int __a, int __b,
9056*344a7f5eSAndroid Build Coastguard Worker                                                int *__c) {
9057*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvewx(__a, __b, __c);
9058*344a7f5eSAndroid Build Coastguard Worker }
9059*344a7f5eSAndroid Build Coastguard Worker 
vec_stvewx(vector unsigned int __a,int __b,unsigned int * __c)9060*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvewx(vector unsigned int __a, int __b,
9061*344a7f5eSAndroid Build Coastguard Worker                                                unsigned int *__c) {
9062*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvewx((vector int)__a, __b, __c);
9063*344a7f5eSAndroid Build Coastguard Worker }
9064*344a7f5eSAndroid Build Coastguard Worker 
vec_stvewx(vector bool int __a,int __b,int * __c)9065*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
9066*344a7f5eSAndroid Build Coastguard Worker                                                int *__c) {
9067*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvewx((vector int)__a, __b, __c);
9068*344a7f5eSAndroid Build Coastguard Worker }
9069*344a7f5eSAndroid Build Coastguard Worker 
vec_stvewx(vector bool int __a,int __b,unsigned int * __c)9070*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvewx(vector bool int __a, int __b,
9071*344a7f5eSAndroid Build Coastguard Worker                                                unsigned int *__c) {
9072*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvewx((vector int)__a, __b, __c);
9073*344a7f5eSAndroid Build Coastguard Worker }
9074*344a7f5eSAndroid Build Coastguard Worker 
vec_stvewx(vector float __a,int __b,float * __c)9075*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvewx(vector float __a, int __b,
9076*344a7f5eSAndroid Build Coastguard Worker                                                float *__c) {
9077*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvewx((vector int)__a, __b, __c);
9078*344a7f5eSAndroid Build Coastguard Worker }
9079*344a7f5eSAndroid Build Coastguard Worker 
9080*344a7f5eSAndroid Build Coastguard Worker /* vec_stl */
9081*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector signed char __a,int __b,vector signed char * __c)9082*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
9083*344a7f5eSAndroid Build Coastguard Worker                                             vector signed char *__c) {
9084*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9085*344a7f5eSAndroid Build Coastguard Worker }
9086*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector signed char __a,int __b,signed char * __c)9087*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector signed char __a, int __b,
9088*344a7f5eSAndroid Build Coastguard Worker                                             signed char *__c) {
9089*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9090*344a7f5eSAndroid Build Coastguard Worker }
9091*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector unsigned char __a,int __b,vector unsigned char * __c)9092*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
9093*344a7f5eSAndroid Build Coastguard Worker                                             vector unsigned char *__c) {
9094*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9095*344a7f5eSAndroid Build Coastguard Worker }
9096*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector unsigned char __a,int __b,unsigned char * __c)9097*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned char __a, int __b,
9098*344a7f5eSAndroid Build Coastguard Worker                                             unsigned char *__c) {
9099*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9100*344a7f5eSAndroid Build Coastguard Worker }
9101*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector bool char __a,int __b,signed char * __c)9102*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
9103*344a7f5eSAndroid Build Coastguard Worker                                             signed char *__c) {
9104*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9105*344a7f5eSAndroid Build Coastguard Worker }
9106*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector bool char __a,int __b,unsigned char * __c)9107*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
9108*344a7f5eSAndroid Build Coastguard Worker                                             unsigned char *__c) {
9109*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9110*344a7f5eSAndroid Build Coastguard Worker }
9111*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector bool char __a,int __b,vector bool char * __c)9112*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector bool char __a, int __b,
9113*344a7f5eSAndroid Build Coastguard Worker                                             vector bool char *__c) {
9114*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9115*344a7f5eSAndroid Build Coastguard Worker }
9116*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector short __a,int __b,vector short * __c)9117*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
9118*344a7f5eSAndroid Build Coastguard Worker                                             vector short *__c) {
9119*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9120*344a7f5eSAndroid Build Coastguard Worker }
9121*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector short __a,int __b,short * __c)9122*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector short __a, int __b,
9123*344a7f5eSAndroid Build Coastguard Worker                                             short *__c) {
9124*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9125*344a7f5eSAndroid Build Coastguard Worker }
9126*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector unsigned short __a,int __b,vector unsigned short * __c)9127*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
9128*344a7f5eSAndroid Build Coastguard Worker                                             vector unsigned short *__c) {
9129*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9130*344a7f5eSAndroid Build Coastguard Worker }
9131*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector unsigned short __a,int __b,unsigned short * __c)9132*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned short __a, int __b,
9133*344a7f5eSAndroid Build Coastguard Worker                                             unsigned short *__c) {
9134*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9135*344a7f5eSAndroid Build Coastguard Worker }
9136*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector bool short __a,int __b,short * __c)9137*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
9138*344a7f5eSAndroid Build Coastguard Worker                                             short *__c) {
9139*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9140*344a7f5eSAndroid Build Coastguard Worker }
9141*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector bool short __a,int __b,unsigned short * __c)9142*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
9143*344a7f5eSAndroid Build Coastguard Worker                                             unsigned short *__c) {
9144*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9145*344a7f5eSAndroid Build Coastguard Worker }
9146*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector bool short __a,int __b,vector bool short * __c)9147*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector bool short __a, int __b,
9148*344a7f5eSAndroid Build Coastguard Worker                                             vector bool short *__c) {
9149*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9150*344a7f5eSAndroid Build Coastguard Worker }
9151*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector pixel __a,int __b,short * __c)9152*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
9153*344a7f5eSAndroid Build Coastguard Worker                                             short *__c) {
9154*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9155*344a7f5eSAndroid Build Coastguard Worker }
9156*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector pixel __a,int __b,unsigned short * __c)9157*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
9158*344a7f5eSAndroid Build Coastguard Worker                                             unsigned short *__c) {
9159*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9160*344a7f5eSAndroid Build Coastguard Worker }
9161*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector pixel __a,int __b,vector pixel * __c)9162*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector pixel __a, int __b,
9163*344a7f5eSAndroid Build Coastguard Worker                                             vector pixel *__c) {
9164*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9165*344a7f5eSAndroid Build Coastguard Worker }
9166*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector int __a,int __b,vector int * __c)9167*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b,
9168*344a7f5eSAndroid Build Coastguard Worker                                             vector int *__c) {
9169*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl(__a, __b, __c);
9170*344a7f5eSAndroid Build Coastguard Worker }
9171*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector int __a,int __b,int * __c)9172*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector int __a, int __b, int *__c) {
9173*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl(__a, __b, __c);
9174*344a7f5eSAndroid Build Coastguard Worker }
9175*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector unsigned int __a,int __b,vector unsigned int * __c)9176*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
9177*344a7f5eSAndroid Build Coastguard Worker                                             vector unsigned int *__c) {
9178*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9179*344a7f5eSAndroid Build Coastguard Worker }
9180*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector unsigned int __a,int __b,unsigned int * __c)9181*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector unsigned int __a, int __b,
9182*344a7f5eSAndroid Build Coastguard Worker                                             unsigned int *__c) {
9183*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9184*344a7f5eSAndroid Build Coastguard Worker }
9185*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector bool int __a,int __b,int * __c)9186*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
9187*344a7f5eSAndroid Build Coastguard Worker                                             int *__c) {
9188*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9189*344a7f5eSAndroid Build Coastguard Worker }
9190*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector bool int __a,int __b,unsigned int * __c)9191*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
9192*344a7f5eSAndroid Build Coastguard Worker                                             unsigned int *__c) {
9193*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9194*344a7f5eSAndroid Build Coastguard Worker }
9195*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector bool int __a,int __b,vector bool int * __c)9196*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector bool int __a, int __b,
9197*344a7f5eSAndroid Build Coastguard Worker                                             vector bool int *__c) {
9198*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9199*344a7f5eSAndroid Build Coastguard Worker }
9200*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector float __a,int __b,vector float * __c)9201*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
9202*344a7f5eSAndroid Build Coastguard Worker                                             vector float *__c) {
9203*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9204*344a7f5eSAndroid Build Coastguard Worker }
9205*344a7f5eSAndroid Build Coastguard Worker 
vec_stl(vector float __a,int __b,float * __c)9206*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stl(vector float __a, int __b,
9207*344a7f5eSAndroid Build Coastguard Worker                                             float *__c) {
9208*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9209*344a7f5eSAndroid Build Coastguard Worker }
9210*344a7f5eSAndroid Build Coastguard Worker 
9211*344a7f5eSAndroid Build Coastguard Worker /* vec_stvxl */
9212*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector signed char __a,int __b,vector signed char * __c)9213*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
9214*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char *__c) {
9215*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9216*344a7f5eSAndroid Build Coastguard Worker }
9217*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector signed char __a,int __b,signed char * __c)9218*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector signed char __a, int __b,
9219*344a7f5eSAndroid Build Coastguard Worker                                               signed char *__c) {
9220*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9221*344a7f5eSAndroid Build Coastguard Worker }
9222*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector unsigned char __a,int __b,vector unsigned char * __c)9223*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
9224*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char *__c) {
9225*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9226*344a7f5eSAndroid Build Coastguard Worker }
9227*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector unsigned char __a,int __b,unsigned char * __c)9228*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned char __a, int __b,
9229*344a7f5eSAndroid Build Coastguard Worker                                               unsigned char *__c) {
9230*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9231*344a7f5eSAndroid Build Coastguard Worker }
9232*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector bool char __a,int __b,signed char * __c)9233*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
9234*344a7f5eSAndroid Build Coastguard Worker                                               signed char *__c) {
9235*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9236*344a7f5eSAndroid Build Coastguard Worker }
9237*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector bool char __a,int __b,unsigned char * __c)9238*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
9239*344a7f5eSAndroid Build Coastguard Worker                                               unsigned char *__c) {
9240*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9241*344a7f5eSAndroid Build Coastguard Worker }
9242*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector bool char __a,int __b,vector bool char * __c)9243*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool char __a, int __b,
9244*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char *__c) {
9245*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9246*344a7f5eSAndroid Build Coastguard Worker }
9247*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector short __a,int __b,vector short * __c)9248*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
9249*344a7f5eSAndroid Build Coastguard Worker                                               vector short *__c) {
9250*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9251*344a7f5eSAndroid Build Coastguard Worker }
9252*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector short __a,int __b,short * __c)9253*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector short __a, int __b,
9254*344a7f5eSAndroid Build Coastguard Worker                                               short *__c) {
9255*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9256*344a7f5eSAndroid Build Coastguard Worker }
9257*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector unsigned short __a,int __b,vector unsigned short * __c)9258*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
9259*344a7f5eSAndroid Build Coastguard Worker                                               int __b,
9260*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short *__c) {
9261*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9262*344a7f5eSAndroid Build Coastguard Worker }
9263*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector unsigned short __a,int __b,unsigned short * __c)9264*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned short __a,
9265*344a7f5eSAndroid Build Coastguard Worker                                               int __b, unsigned short *__c) {
9266*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9267*344a7f5eSAndroid Build Coastguard Worker }
9268*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector bool short __a,int __b,short * __c)9269*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
9270*344a7f5eSAndroid Build Coastguard Worker                                               short *__c) {
9271*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9272*344a7f5eSAndroid Build Coastguard Worker }
9273*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector bool short __a,int __b,unsigned short * __c)9274*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
9275*344a7f5eSAndroid Build Coastguard Worker                                               unsigned short *__c) {
9276*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9277*344a7f5eSAndroid Build Coastguard Worker }
9278*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector bool short __a,int __b,vector bool short * __c)9279*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool short __a, int __b,
9280*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short *__c) {
9281*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9282*344a7f5eSAndroid Build Coastguard Worker }
9283*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector pixel __a,int __b,short * __c)9284*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
9285*344a7f5eSAndroid Build Coastguard Worker                                               short *__c) {
9286*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9287*344a7f5eSAndroid Build Coastguard Worker }
9288*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector pixel __a,int __b,unsigned short * __c)9289*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
9290*344a7f5eSAndroid Build Coastguard Worker                                               unsigned short *__c) {
9291*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9292*344a7f5eSAndroid Build Coastguard Worker }
9293*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector pixel __a,int __b,vector pixel * __c)9294*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector pixel __a, int __b,
9295*344a7f5eSAndroid Build Coastguard Worker                                               vector pixel *__c) {
9296*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9297*344a7f5eSAndroid Build Coastguard Worker }
9298*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector int __a,int __b,vector int * __c)9299*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
9300*344a7f5eSAndroid Build Coastguard Worker                                               vector int *__c) {
9301*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl(__a, __b, __c);
9302*344a7f5eSAndroid Build Coastguard Worker }
9303*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector int __a,int __b,int * __c)9304*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector int __a, int __b,
9305*344a7f5eSAndroid Build Coastguard Worker                                               int *__c) {
9306*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl(__a, __b, __c);
9307*344a7f5eSAndroid Build Coastguard Worker }
9308*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector unsigned int __a,int __b,vector unsigned int * __c)9309*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
9310*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int *__c) {
9311*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9312*344a7f5eSAndroid Build Coastguard Worker }
9313*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector unsigned int __a,int __b,unsigned int * __c)9314*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector unsigned int __a, int __b,
9315*344a7f5eSAndroid Build Coastguard Worker                                               unsigned int *__c) {
9316*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9317*344a7f5eSAndroid Build Coastguard Worker }
9318*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector bool int __a,int __b,int * __c)9319*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
9320*344a7f5eSAndroid Build Coastguard Worker                                               int *__c) {
9321*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9322*344a7f5eSAndroid Build Coastguard Worker }
9323*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector bool int __a,int __b,unsigned int * __c)9324*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
9325*344a7f5eSAndroid Build Coastguard Worker                                               unsigned int *__c) {
9326*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9327*344a7f5eSAndroid Build Coastguard Worker }
9328*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector bool int __a,int __b,vector bool int * __c)9329*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector bool int __a, int __b,
9330*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int *__c) {
9331*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9332*344a7f5eSAndroid Build Coastguard Worker }
9333*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector float __a,int __b,vector float * __c)9334*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
9335*344a7f5eSAndroid Build Coastguard Worker                                               vector float *__c) {
9336*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9337*344a7f5eSAndroid Build Coastguard Worker }
9338*344a7f5eSAndroid Build Coastguard Worker 
vec_stvxl(vector float __a,int __b,float * __c)9339*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvxl(vector float __a, int __b,
9340*344a7f5eSAndroid Build Coastguard Worker                                               float *__c) {
9341*344a7f5eSAndroid Build Coastguard Worker   __builtin_altivec_stvxl((vector int)__a, __b, __c);
9342*344a7f5eSAndroid Build Coastguard Worker }
9343*344a7f5eSAndroid Build Coastguard Worker 
9344*344a7f5eSAndroid Build Coastguard Worker /* vec_sub */
9345*344a7f5eSAndroid Build Coastguard Worker 
9346*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_sub(vector signed char __a,vector signed char __b)9347*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector signed char __a, vector signed char __b) {
9348*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9349*344a7f5eSAndroid Build Coastguard Worker }
9350*344a7f5eSAndroid Build Coastguard Worker 
9351*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_sub(vector bool char __a,vector signed char __b)9352*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector bool char __a, vector signed char __b) {
9353*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__a - __b;
9354*344a7f5eSAndroid Build Coastguard Worker }
9355*344a7f5eSAndroid Build Coastguard Worker 
9356*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_sub(vector signed char __a,vector bool char __b)9357*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector signed char __a, vector bool char __b) {
9358*344a7f5eSAndroid Build Coastguard Worker   return __a - (vector signed char)__b;
9359*344a7f5eSAndroid Build Coastguard Worker }
9360*344a7f5eSAndroid Build Coastguard Worker 
9361*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sub(vector unsigned char __a,vector unsigned char __b)9362*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector unsigned char __a, vector unsigned char __b) {
9363*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9364*344a7f5eSAndroid Build Coastguard Worker }
9365*344a7f5eSAndroid Build Coastguard Worker 
9366*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sub(vector bool char __a,vector unsigned char __b)9367*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector bool char __a, vector unsigned char __b) {
9368*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__a - __b;
9369*344a7f5eSAndroid Build Coastguard Worker }
9370*344a7f5eSAndroid Build Coastguard Worker 
9371*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_sub(vector unsigned char __a,vector bool char __b)9372*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector unsigned char __a, vector bool char __b) {
9373*344a7f5eSAndroid Build Coastguard Worker   return __a - (vector unsigned char)__b;
9374*344a7f5eSAndroid Build Coastguard Worker }
9375*344a7f5eSAndroid Build Coastguard Worker 
vec_sub(vector short __a,vector short __b)9376*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
9377*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
9378*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9379*344a7f5eSAndroid Build Coastguard Worker }
9380*344a7f5eSAndroid Build Coastguard Worker 
vec_sub(vector bool short __a,vector short __b)9381*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_sub(vector bool short __a,
9382*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
9383*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a - __b;
9384*344a7f5eSAndroid Build Coastguard Worker }
9385*344a7f5eSAndroid Build Coastguard Worker 
vec_sub(vector short __a,vector bool short __b)9386*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_sub(vector short __a,
9387*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool short __b) {
9388*344a7f5eSAndroid Build Coastguard Worker   return __a - (vector short)__b;
9389*344a7f5eSAndroid Build Coastguard Worker }
9390*344a7f5eSAndroid Build Coastguard Worker 
9391*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sub(vector unsigned short __a,vector unsigned short __b)9392*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector unsigned short __a, vector unsigned short __b) {
9393*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9394*344a7f5eSAndroid Build Coastguard Worker }
9395*344a7f5eSAndroid Build Coastguard Worker 
9396*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sub(vector bool short __a,vector unsigned short __b)9397*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector bool short __a, vector unsigned short __b) {
9398*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__a - __b;
9399*344a7f5eSAndroid Build Coastguard Worker }
9400*344a7f5eSAndroid Build Coastguard Worker 
9401*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_sub(vector unsigned short __a,vector bool short __b)9402*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector unsigned short __a, vector bool short __b) {
9403*344a7f5eSAndroid Build Coastguard Worker   return __a - (vector unsigned short)__b;
9404*344a7f5eSAndroid Build Coastguard Worker }
9405*344a7f5eSAndroid Build Coastguard Worker 
vec_sub(vector int __a,vector int __b)9406*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
9407*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
9408*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9409*344a7f5eSAndroid Build Coastguard Worker }
9410*344a7f5eSAndroid Build Coastguard Worker 
vec_sub(vector bool int __a,vector int __b)9411*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sub(vector bool int __a,
9412*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
9413*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__a - __b;
9414*344a7f5eSAndroid Build Coastguard Worker }
9415*344a7f5eSAndroid Build Coastguard Worker 
vec_sub(vector int __a,vector bool int __b)9416*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sub(vector int __a,
9417*344a7f5eSAndroid Build Coastguard Worker                                                   vector bool int __b) {
9418*344a7f5eSAndroid Build Coastguard Worker   return __a - (vector int)__b;
9419*344a7f5eSAndroid Build Coastguard Worker }
9420*344a7f5eSAndroid Build Coastguard Worker 
9421*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sub(vector unsigned int __a,vector unsigned int __b)9422*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector unsigned int __a, vector unsigned int __b) {
9423*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9424*344a7f5eSAndroid Build Coastguard Worker }
9425*344a7f5eSAndroid Build Coastguard Worker 
9426*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sub(vector bool int __a,vector unsigned int __b)9427*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector bool int __a, vector unsigned int __b) {
9428*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__a - __b;
9429*344a7f5eSAndroid Build Coastguard Worker }
9430*344a7f5eSAndroid Build Coastguard Worker 
9431*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sub(vector unsigned int __a,vector bool int __b)9432*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector unsigned int __a, vector bool int __b) {
9433*344a7f5eSAndroid Build Coastguard Worker   return __a - (vector unsigned int)__b;
9434*344a7f5eSAndroid Build Coastguard Worker }
9435*344a7f5eSAndroid Build Coastguard Worker 
9436*344a7f5eSAndroid Build Coastguard Worker #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9437*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_sub(vector signed __int128 __a,vector signed __int128 __b)9438*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector signed __int128 __a, vector signed __int128 __b) {
9439*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9440*344a7f5eSAndroid Build Coastguard Worker }
9441*344a7f5eSAndroid Build Coastguard Worker 
9442*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_sub(vector unsigned __int128 __a,vector unsigned __int128 __b)9443*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9444*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9445*344a7f5eSAndroid Build Coastguard Worker }
9446*344a7f5eSAndroid Build Coastguard Worker #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9447*344a7f5eSAndroid Build Coastguard Worker 
9448*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
9449*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_sub(vector signed long long __a,vector signed long long __b)9450*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector signed long long __a, vector signed long long __b) {
9451*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9452*344a7f5eSAndroid Build Coastguard Worker }
9453*344a7f5eSAndroid Build Coastguard Worker 
9454*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_sub(vector unsigned long long __a,vector unsigned long long __b)9455*344a7f5eSAndroid Build Coastguard Worker vec_sub(vector unsigned long long __a, vector unsigned long long __b) {
9456*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9457*344a7f5eSAndroid Build Coastguard Worker }
9458*344a7f5eSAndroid Build Coastguard Worker 
vec_sub(vector double __a,vector double __b)9459*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_sub(vector double __a,
9460*344a7f5eSAndroid Build Coastguard Worker                                                      vector double __b) {
9461*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9462*344a7f5eSAndroid Build Coastguard Worker }
9463*344a7f5eSAndroid Build Coastguard Worker #endif
9464*344a7f5eSAndroid Build Coastguard Worker 
vec_sub(vector float __a,vector float __b)9465*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_sub(vector float __a,
9466*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
9467*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9468*344a7f5eSAndroid Build Coastguard Worker }
9469*344a7f5eSAndroid Build Coastguard Worker 
9470*344a7f5eSAndroid Build Coastguard Worker /* vec_vsububm */
9471*344a7f5eSAndroid Build Coastguard Worker 
9472*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vsububm vec_vsububm
9473*344a7f5eSAndroid Build Coastguard Worker 
9474*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsububm(vector signed char __a,vector signed char __b)9475*344a7f5eSAndroid Build Coastguard Worker vec_vsububm(vector signed char __a, vector signed char __b) {
9476*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9477*344a7f5eSAndroid Build Coastguard Worker }
9478*344a7f5eSAndroid Build Coastguard Worker 
9479*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsububm(vector bool char __a,vector signed char __b)9480*344a7f5eSAndroid Build Coastguard Worker vec_vsububm(vector bool char __a, vector signed char __b) {
9481*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__a - __b;
9482*344a7f5eSAndroid Build Coastguard Worker }
9483*344a7f5eSAndroid Build Coastguard Worker 
9484*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsububm(vector signed char __a,vector bool char __b)9485*344a7f5eSAndroid Build Coastguard Worker vec_vsububm(vector signed char __a, vector bool char __b) {
9486*344a7f5eSAndroid Build Coastguard Worker   return __a - (vector signed char)__b;
9487*344a7f5eSAndroid Build Coastguard Worker }
9488*344a7f5eSAndroid Build Coastguard Worker 
9489*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububm(vector unsigned char __a,vector unsigned char __b)9490*344a7f5eSAndroid Build Coastguard Worker vec_vsububm(vector unsigned char __a, vector unsigned char __b) {
9491*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9492*344a7f5eSAndroid Build Coastguard Worker }
9493*344a7f5eSAndroid Build Coastguard Worker 
9494*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububm(vector bool char __a,vector unsigned char __b)9495*344a7f5eSAndroid Build Coastguard Worker vec_vsububm(vector bool char __a, vector unsigned char __b) {
9496*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__a - __b;
9497*344a7f5eSAndroid Build Coastguard Worker }
9498*344a7f5eSAndroid Build Coastguard Worker 
9499*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububm(vector unsigned char __a,vector bool char __b)9500*344a7f5eSAndroid Build Coastguard Worker vec_vsububm(vector unsigned char __a, vector bool char __b) {
9501*344a7f5eSAndroid Build Coastguard Worker   return __a - (vector unsigned char)__b;
9502*344a7f5eSAndroid Build Coastguard Worker }
9503*344a7f5eSAndroid Build Coastguard Worker 
9504*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubuhm */
9505*344a7f5eSAndroid Build Coastguard Worker 
9506*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vsubuhm vec_vsubuhm
9507*344a7f5eSAndroid Build Coastguard Worker 
vec_vsubuhm(vector short __a,vector short __b)9508*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
9509*344a7f5eSAndroid Build Coastguard Worker                                                         vector short __b) {
9510*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9511*344a7f5eSAndroid Build Coastguard Worker }
9512*344a7f5eSAndroid Build Coastguard Worker 
vec_vsubuhm(vector bool short __a,vector short __b)9513*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector bool short __a,
9514*344a7f5eSAndroid Build Coastguard Worker                                                         vector short __b) {
9515*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a - __b;
9516*344a7f5eSAndroid Build Coastguard Worker }
9517*344a7f5eSAndroid Build Coastguard Worker 
vec_vsubuhm(vector short __a,vector bool short __b)9518*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsubuhm(vector short __a,
9519*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool short __b) {
9520*344a7f5eSAndroid Build Coastguard Worker   return __a - (vector short)__b;
9521*344a7f5eSAndroid Build Coastguard Worker }
9522*344a7f5eSAndroid Build Coastguard Worker 
9523*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhm(vector unsigned short __a,vector unsigned short __b)9524*344a7f5eSAndroid Build Coastguard Worker vec_vsubuhm(vector unsigned short __a, vector unsigned short __b) {
9525*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9526*344a7f5eSAndroid Build Coastguard Worker }
9527*344a7f5eSAndroid Build Coastguard Worker 
9528*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhm(vector bool short __a,vector unsigned short __b)9529*344a7f5eSAndroid Build Coastguard Worker vec_vsubuhm(vector bool short __a, vector unsigned short __b) {
9530*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__a - __b;
9531*344a7f5eSAndroid Build Coastguard Worker }
9532*344a7f5eSAndroid Build Coastguard Worker 
9533*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhm(vector unsigned short __a,vector bool short __b)9534*344a7f5eSAndroid Build Coastguard Worker vec_vsubuhm(vector unsigned short __a, vector bool short __b) {
9535*344a7f5eSAndroid Build Coastguard Worker   return __a - (vector unsigned short)__b;
9536*344a7f5eSAndroid Build Coastguard Worker }
9537*344a7f5eSAndroid Build Coastguard Worker 
9538*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubuwm */
9539*344a7f5eSAndroid Build Coastguard Worker 
9540*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vsubuwm vec_vsubuwm
9541*344a7f5eSAndroid Build Coastguard Worker 
vec_vsubuwm(vector int __a,vector int __b)9542*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
9543*344a7f5eSAndroid Build Coastguard Worker                                                       vector int __b) {
9544*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9545*344a7f5eSAndroid Build Coastguard Worker }
9546*344a7f5eSAndroid Build Coastguard Worker 
vec_vsubuwm(vector bool int __a,vector int __b)9547*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector bool int __a,
9548*344a7f5eSAndroid Build Coastguard Worker                                                       vector int __b) {
9549*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__a - __b;
9550*344a7f5eSAndroid Build Coastguard Worker }
9551*344a7f5eSAndroid Build Coastguard Worker 
vec_vsubuwm(vector int __a,vector bool int __b)9552*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsubuwm(vector int __a,
9553*344a7f5eSAndroid Build Coastguard Worker                                                       vector bool int __b) {
9554*344a7f5eSAndroid Build Coastguard Worker   return __a - (vector int)__b;
9555*344a7f5eSAndroid Build Coastguard Worker }
9556*344a7f5eSAndroid Build Coastguard Worker 
9557*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuwm(vector unsigned int __a,vector unsigned int __b)9558*344a7f5eSAndroid Build Coastguard Worker vec_vsubuwm(vector unsigned int __a, vector unsigned int __b) {
9559*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9560*344a7f5eSAndroid Build Coastguard Worker }
9561*344a7f5eSAndroid Build Coastguard Worker 
9562*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuwm(vector bool int __a,vector unsigned int __b)9563*344a7f5eSAndroid Build Coastguard Worker vec_vsubuwm(vector bool int __a, vector unsigned int __b) {
9564*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__a - __b;
9565*344a7f5eSAndroid Build Coastguard Worker }
9566*344a7f5eSAndroid Build Coastguard Worker 
9567*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuwm(vector unsigned int __a,vector bool int __b)9568*344a7f5eSAndroid Build Coastguard Worker vec_vsubuwm(vector unsigned int __a, vector bool int __b) {
9569*344a7f5eSAndroid Build Coastguard Worker   return __a - (vector unsigned int)__b;
9570*344a7f5eSAndroid Build Coastguard Worker }
9571*344a7f5eSAndroid Build Coastguard Worker 
9572*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubfp */
9573*344a7f5eSAndroid Build Coastguard Worker 
9574*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vsubfp vec_vsubfp
9575*344a7f5eSAndroid Build Coastguard Worker 
9576*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vsubfp(vector float __a,vector float __b)9577*344a7f5eSAndroid Build Coastguard Worker vec_vsubfp(vector float __a, vector float __b) {
9578*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9579*344a7f5eSAndroid Build Coastguard Worker }
9580*344a7f5eSAndroid Build Coastguard Worker 
9581*344a7f5eSAndroid Build Coastguard Worker /* vec_subc */
9582*344a7f5eSAndroid Build Coastguard Worker 
9583*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_subc(vector unsigned int __a,vector unsigned int __b)9584*344a7f5eSAndroid Build Coastguard Worker vec_subc(vector unsigned int __a, vector unsigned int __b) {
9585*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubcuw(__a, __b);
9586*344a7f5eSAndroid Build Coastguard Worker }
9587*344a7f5eSAndroid Build Coastguard Worker 
9588*344a7f5eSAndroid Build Coastguard Worker #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9589*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_subc(vector unsigned __int128 __a,vector unsigned __int128 __b)9590*344a7f5eSAndroid Build Coastguard Worker vec_subc(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9591*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubcuq(__a, __b);
9592*344a7f5eSAndroid Build Coastguard Worker }
9593*344a7f5eSAndroid Build Coastguard Worker 
9594*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_subc(vector signed __int128 __a,vector signed __int128 __b)9595*344a7f5eSAndroid Build Coastguard Worker vec_subc(vector signed __int128 __a, vector signed __int128 __b) {
9596*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubcuq(__a, __b);
9597*344a7f5eSAndroid Build Coastguard Worker }
9598*344a7f5eSAndroid Build Coastguard Worker #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9599*344a7f5eSAndroid Build Coastguard Worker 
9600*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubcuw */
9601*344a7f5eSAndroid Build Coastguard Worker 
9602*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vsubcuw(vector unsigned int __a,vector unsigned int __b)9603*344a7f5eSAndroid Build Coastguard Worker vec_vsubcuw(vector unsigned int __a, vector unsigned int __b) {
9604*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubcuw(__a, __b);
9605*344a7f5eSAndroid Build Coastguard Worker }
9606*344a7f5eSAndroid Build Coastguard Worker 
9607*344a7f5eSAndroid Build Coastguard Worker /* vec_subs */
9608*344a7f5eSAndroid Build Coastguard Worker 
9609*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_subs(vector signed char __a,vector signed char __b)9610*344a7f5eSAndroid Build Coastguard Worker vec_subs(vector signed char __a, vector signed char __b) {
9611*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubsbs(__a, __b);
9612*344a7f5eSAndroid Build Coastguard Worker }
9613*344a7f5eSAndroid Build Coastguard Worker 
9614*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_subs(vector bool char __a,vector signed char __b)9615*344a7f5eSAndroid Build Coastguard Worker vec_subs(vector bool char __a, vector signed char __b) {
9616*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
9617*344a7f5eSAndroid Build Coastguard Worker }
9618*344a7f5eSAndroid Build Coastguard Worker 
9619*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_subs(vector signed char __a,vector bool char __b)9620*344a7f5eSAndroid Build Coastguard Worker vec_subs(vector signed char __a, vector bool char __b) {
9621*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
9622*344a7f5eSAndroid Build Coastguard Worker }
9623*344a7f5eSAndroid Build Coastguard Worker 
9624*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_subs(vector unsigned char __a,vector unsigned char __b)9625*344a7f5eSAndroid Build Coastguard Worker vec_subs(vector unsigned char __a, vector unsigned char __b) {
9626*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsububs(__a, __b);
9627*344a7f5eSAndroid Build Coastguard Worker }
9628*344a7f5eSAndroid Build Coastguard Worker 
9629*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_subs(vector bool char __a,vector unsigned char __b)9630*344a7f5eSAndroid Build Coastguard Worker vec_subs(vector bool char __a, vector unsigned char __b) {
9631*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
9632*344a7f5eSAndroid Build Coastguard Worker }
9633*344a7f5eSAndroid Build Coastguard Worker 
9634*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_subs(vector unsigned char __a,vector bool char __b)9635*344a7f5eSAndroid Build Coastguard Worker vec_subs(vector unsigned char __a, vector bool char __b) {
9636*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
9637*344a7f5eSAndroid Build Coastguard Worker }
9638*344a7f5eSAndroid Build Coastguard Worker 
vec_subs(vector short __a,vector short __b)9639*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
9640*344a7f5eSAndroid Build Coastguard Worker                                                      vector short __b) {
9641*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubshs(__a, __b);
9642*344a7f5eSAndroid Build Coastguard Worker }
9643*344a7f5eSAndroid Build Coastguard Worker 
vec_subs(vector bool short __a,vector short __b)9644*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_subs(vector bool short __a,
9645*344a7f5eSAndroid Build Coastguard Worker                                                      vector short __b) {
9646*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubshs((vector short)__a, __b);
9647*344a7f5eSAndroid Build Coastguard Worker }
9648*344a7f5eSAndroid Build Coastguard Worker 
vec_subs(vector short __a,vector bool short __b)9649*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_subs(vector short __a,
9650*344a7f5eSAndroid Build Coastguard Worker                                                      vector bool short __b) {
9651*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubshs(__a, (vector short)__b);
9652*344a7f5eSAndroid Build Coastguard Worker }
9653*344a7f5eSAndroid Build Coastguard Worker 
9654*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_subs(vector unsigned short __a,vector unsigned short __b)9655*344a7f5eSAndroid Build Coastguard Worker vec_subs(vector unsigned short __a, vector unsigned short __b) {
9656*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubuhs(__a, __b);
9657*344a7f5eSAndroid Build Coastguard Worker }
9658*344a7f5eSAndroid Build Coastguard Worker 
9659*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_subs(vector bool short __a,vector unsigned short __b)9660*344a7f5eSAndroid Build Coastguard Worker vec_subs(vector bool short __a, vector unsigned short __b) {
9661*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
9662*344a7f5eSAndroid Build Coastguard Worker }
9663*344a7f5eSAndroid Build Coastguard Worker 
9664*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_subs(vector unsigned short __a,vector bool short __b)9665*344a7f5eSAndroid Build Coastguard Worker vec_subs(vector unsigned short __a, vector bool short __b) {
9666*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
9667*344a7f5eSAndroid Build Coastguard Worker }
9668*344a7f5eSAndroid Build Coastguard Worker 
vec_subs(vector int __a,vector int __b)9669*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
9670*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b) {
9671*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubsws(__a, __b);
9672*344a7f5eSAndroid Build Coastguard Worker }
9673*344a7f5eSAndroid Build Coastguard Worker 
vec_subs(vector bool int __a,vector int __b)9674*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_subs(vector bool int __a,
9675*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b) {
9676*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubsws((vector int)__a, __b);
9677*344a7f5eSAndroid Build Coastguard Worker }
9678*344a7f5eSAndroid Build Coastguard Worker 
vec_subs(vector int __a,vector bool int __b)9679*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_subs(vector int __a,
9680*344a7f5eSAndroid Build Coastguard Worker                                                    vector bool int __b) {
9681*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubsws(__a, (vector int)__b);
9682*344a7f5eSAndroid Build Coastguard Worker }
9683*344a7f5eSAndroid Build Coastguard Worker 
9684*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_subs(vector unsigned int __a,vector unsigned int __b)9685*344a7f5eSAndroid Build Coastguard Worker vec_subs(vector unsigned int __a, vector unsigned int __b) {
9686*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubuws(__a, __b);
9687*344a7f5eSAndroid Build Coastguard Worker }
9688*344a7f5eSAndroid Build Coastguard Worker 
9689*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_subs(vector bool int __a,vector unsigned int __b)9690*344a7f5eSAndroid Build Coastguard Worker vec_subs(vector bool int __a, vector unsigned int __b) {
9691*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
9692*344a7f5eSAndroid Build Coastguard Worker }
9693*344a7f5eSAndroid Build Coastguard Worker 
9694*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_subs(vector unsigned int __a,vector bool int __b)9695*344a7f5eSAndroid Build Coastguard Worker vec_subs(vector unsigned int __a, vector bool int __b) {
9696*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
9697*344a7f5eSAndroid Build Coastguard Worker }
9698*344a7f5eSAndroid Build Coastguard Worker 
9699*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubsbs */
9700*344a7f5eSAndroid Build Coastguard Worker 
9701*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsubsbs(vector signed char __a,vector signed char __b)9702*344a7f5eSAndroid Build Coastguard Worker vec_vsubsbs(vector signed char __a, vector signed char __b) {
9703*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubsbs(__a, __b);
9704*344a7f5eSAndroid Build Coastguard Worker }
9705*344a7f5eSAndroid Build Coastguard Worker 
9706*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsubsbs(vector bool char __a,vector signed char __b)9707*344a7f5eSAndroid Build Coastguard Worker vec_vsubsbs(vector bool char __a, vector signed char __b) {
9708*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubsbs((vector signed char)__a, __b);
9709*344a7f5eSAndroid Build Coastguard Worker }
9710*344a7f5eSAndroid Build Coastguard Worker 
9711*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsubsbs(vector signed char __a,vector bool char __b)9712*344a7f5eSAndroid Build Coastguard Worker vec_vsubsbs(vector signed char __a, vector bool char __b) {
9713*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubsbs(__a, (vector signed char)__b);
9714*344a7f5eSAndroid Build Coastguard Worker }
9715*344a7f5eSAndroid Build Coastguard Worker 
9716*344a7f5eSAndroid Build Coastguard Worker /* vec_vsububs */
9717*344a7f5eSAndroid Build Coastguard Worker 
9718*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububs(vector unsigned char __a,vector unsigned char __b)9719*344a7f5eSAndroid Build Coastguard Worker vec_vsububs(vector unsigned char __a, vector unsigned char __b) {
9720*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsububs(__a, __b);
9721*344a7f5eSAndroid Build Coastguard Worker }
9722*344a7f5eSAndroid Build Coastguard Worker 
9723*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububs(vector bool char __a,vector unsigned char __b)9724*344a7f5eSAndroid Build Coastguard Worker vec_vsububs(vector bool char __a, vector unsigned char __b) {
9725*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsububs((vector unsigned char)__a, __b);
9726*344a7f5eSAndroid Build Coastguard Worker }
9727*344a7f5eSAndroid Build Coastguard Worker 
9728*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsububs(vector unsigned char __a,vector bool char __b)9729*344a7f5eSAndroid Build Coastguard Worker vec_vsububs(vector unsigned char __a, vector bool char __b) {
9730*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsububs(__a, (vector unsigned char)__b);
9731*344a7f5eSAndroid Build Coastguard Worker }
9732*344a7f5eSAndroid Build Coastguard Worker 
9733*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubshs */
9734*344a7f5eSAndroid Build Coastguard Worker 
vec_vsubshs(vector short __a,vector short __b)9735*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
9736*344a7f5eSAndroid Build Coastguard Worker                                                         vector short __b) {
9737*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubshs(__a, __b);
9738*344a7f5eSAndroid Build Coastguard Worker }
9739*344a7f5eSAndroid Build Coastguard Worker 
vec_vsubshs(vector bool short __a,vector short __b)9740*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector bool short __a,
9741*344a7f5eSAndroid Build Coastguard Worker                                                         vector short __b) {
9742*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubshs((vector short)__a, __b);
9743*344a7f5eSAndroid Build Coastguard Worker }
9744*344a7f5eSAndroid Build Coastguard Worker 
vec_vsubshs(vector short __a,vector bool short __b)9745*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vsubshs(vector short __a,
9746*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool short __b) {
9747*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubshs(__a, (vector short)__b);
9748*344a7f5eSAndroid Build Coastguard Worker }
9749*344a7f5eSAndroid Build Coastguard Worker 
9750*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubuhs */
9751*344a7f5eSAndroid Build Coastguard Worker 
9752*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhs(vector unsigned short __a,vector unsigned short __b)9753*344a7f5eSAndroid Build Coastguard Worker vec_vsubuhs(vector unsigned short __a, vector unsigned short __b) {
9754*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubuhs(__a, __b);
9755*344a7f5eSAndroid Build Coastguard Worker }
9756*344a7f5eSAndroid Build Coastguard Worker 
9757*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhs(vector bool short __a,vector unsigned short __b)9758*344a7f5eSAndroid Build Coastguard Worker vec_vsubuhs(vector bool short __a, vector unsigned short __b) {
9759*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubuhs((vector unsigned short)__a, __b);
9760*344a7f5eSAndroid Build Coastguard Worker }
9761*344a7f5eSAndroid Build Coastguard Worker 
9762*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsubuhs(vector unsigned short __a,vector bool short __b)9763*344a7f5eSAndroid Build Coastguard Worker vec_vsubuhs(vector unsigned short __a, vector bool short __b) {
9764*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubuhs(__a, (vector unsigned short)__b);
9765*344a7f5eSAndroid Build Coastguard Worker }
9766*344a7f5eSAndroid Build Coastguard Worker 
9767*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubsws */
9768*344a7f5eSAndroid Build Coastguard Worker 
vec_vsubsws(vector int __a,vector int __b)9769*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
9770*344a7f5eSAndroid Build Coastguard Worker                                                       vector int __b) {
9771*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubsws(__a, __b);
9772*344a7f5eSAndroid Build Coastguard Worker }
9773*344a7f5eSAndroid Build Coastguard Worker 
vec_vsubsws(vector bool int __a,vector int __b)9774*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector bool int __a,
9775*344a7f5eSAndroid Build Coastguard Worker                                                       vector int __b) {
9776*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubsws((vector int)__a, __b);
9777*344a7f5eSAndroid Build Coastguard Worker }
9778*344a7f5eSAndroid Build Coastguard Worker 
vec_vsubsws(vector int __a,vector bool int __b)9779*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vsubsws(vector int __a,
9780*344a7f5eSAndroid Build Coastguard Worker                                                       vector bool int __b) {
9781*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubsws(__a, (vector int)__b);
9782*344a7f5eSAndroid Build Coastguard Worker }
9783*344a7f5eSAndroid Build Coastguard Worker 
9784*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubuws */
9785*344a7f5eSAndroid Build Coastguard Worker 
9786*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuws(vector unsigned int __a,vector unsigned int __b)9787*344a7f5eSAndroid Build Coastguard Worker vec_vsubuws(vector unsigned int __a, vector unsigned int __b) {
9788*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubuws(__a, __b);
9789*344a7f5eSAndroid Build Coastguard Worker }
9790*344a7f5eSAndroid Build Coastguard Worker 
9791*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuws(vector bool int __a,vector unsigned int __b)9792*344a7f5eSAndroid Build Coastguard Worker vec_vsubuws(vector bool int __a, vector unsigned int __b) {
9793*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubuws((vector unsigned int)__a, __b);
9794*344a7f5eSAndroid Build Coastguard Worker }
9795*344a7f5eSAndroid Build Coastguard Worker 
9796*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsubuws(vector unsigned int __a,vector bool int __b)9797*344a7f5eSAndroid Build Coastguard Worker vec_vsubuws(vector unsigned int __a, vector bool int __b) {
9798*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubuws(__a, (vector unsigned int)__b);
9799*344a7f5eSAndroid Build Coastguard Worker }
9800*344a7f5eSAndroid Build Coastguard Worker 
9801*344a7f5eSAndroid Build Coastguard Worker #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9802*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubuqm */
9803*344a7f5eSAndroid Build Coastguard Worker 
9804*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vsubuqm(vector signed __int128 __a,vector signed __int128 __b)9805*344a7f5eSAndroid Build Coastguard Worker vec_vsubuqm(vector signed __int128 __a, vector signed __int128 __b) {
9806*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9807*344a7f5eSAndroid Build Coastguard Worker }
9808*344a7f5eSAndroid Build Coastguard Worker 
9809*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vsubuqm(vector unsigned __int128 __a,vector unsigned __int128 __b)9810*344a7f5eSAndroid Build Coastguard Worker vec_vsubuqm(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9811*344a7f5eSAndroid Build Coastguard Worker   return __a - __b;
9812*344a7f5eSAndroid Build Coastguard Worker }
9813*344a7f5eSAndroid Build Coastguard Worker 
9814*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubeuqm */
9815*344a7f5eSAndroid Build Coastguard Worker 
9816*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vsubeuqm(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)9817*344a7f5eSAndroid Build Coastguard Worker vec_vsubeuqm(vector signed __int128 __a, vector signed __int128 __b,
9818*344a7f5eSAndroid Build Coastguard Worker              vector signed __int128 __c) {
9819*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubeuqm(__a, __b, __c);
9820*344a7f5eSAndroid Build Coastguard Worker }
9821*344a7f5eSAndroid Build Coastguard Worker 
9822*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vsubeuqm(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)9823*344a7f5eSAndroid Build Coastguard Worker vec_vsubeuqm(vector unsigned __int128 __a, vector unsigned __int128 __b,
9824*344a7f5eSAndroid Build Coastguard Worker              vector unsigned __int128 __c) {
9825*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubeuqm(__a, __b, __c);
9826*344a7f5eSAndroid Build Coastguard Worker }
9827*344a7f5eSAndroid Build Coastguard Worker 
9828*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubcuq */
9829*344a7f5eSAndroid Build Coastguard Worker 
9830*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vsubcuq(vector signed __int128 __a,vector signed __int128 __b)9831*344a7f5eSAndroid Build Coastguard Worker vec_vsubcuq(vector signed __int128 __a, vector signed __int128 __b) {
9832*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubcuq(__a, __b);
9833*344a7f5eSAndroid Build Coastguard Worker }
9834*344a7f5eSAndroid Build Coastguard Worker 
9835*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vsubcuq(vector unsigned __int128 __a,vector unsigned __int128 __b)9836*344a7f5eSAndroid Build Coastguard Worker vec_vsubcuq(vector unsigned __int128 __a, vector unsigned __int128 __b) {
9837*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubcuq(__a, __b);
9838*344a7f5eSAndroid Build Coastguard Worker }
9839*344a7f5eSAndroid Build Coastguard Worker 
9840*344a7f5eSAndroid Build Coastguard Worker /* vec_vsubecuq */
9841*344a7f5eSAndroid Build Coastguard Worker 
9842*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_vsubecuq(vector signed __int128 __a,vector signed __int128 __b,vector signed __int128 __c)9843*344a7f5eSAndroid Build Coastguard Worker vec_vsubecuq(vector signed __int128 __a, vector signed __int128 __b,
9844*344a7f5eSAndroid Build Coastguard Worker              vector signed __int128 __c) {
9845*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubecuq(__a, __b, __c);
9846*344a7f5eSAndroid Build Coastguard Worker }
9847*344a7f5eSAndroid Build Coastguard Worker 
9848*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_vsubecuq(vector unsigned __int128 __a,vector unsigned __int128 __b,vector unsigned __int128 __c)9849*344a7f5eSAndroid Build Coastguard Worker vec_vsubecuq(vector unsigned __int128 __a, vector unsigned __int128 __b,
9850*344a7f5eSAndroid Build Coastguard Worker              vector unsigned __int128 __c) {
9851*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsubecuq(__a, __b, __c);
9852*344a7f5eSAndroid Build Coastguard Worker }
9853*344a7f5eSAndroid Build Coastguard Worker #endif // defined(__POWER8_VECTOR__) && defined(__powerpc64__)
9854*344a7f5eSAndroid Build Coastguard Worker 
9855*344a7f5eSAndroid Build Coastguard Worker /* vec_sum4s */
9856*344a7f5eSAndroid Build Coastguard Worker 
vec_sum4s(vector signed char __a,vector int __b)9857*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed char __a,
9858*344a7f5eSAndroid Build Coastguard Worker                                                     vector int __b) {
9859*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsum4sbs(__a, __b);
9860*344a7f5eSAndroid Build Coastguard Worker }
9861*344a7f5eSAndroid Build Coastguard Worker 
9862*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_sum4s(vector unsigned char __a,vector unsigned int __b)9863*344a7f5eSAndroid Build Coastguard Worker vec_sum4s(vector unsigned char __a, vector unsigned int __b) {
9864*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsum4ubs(__a, __b);
9865*344a7f5eSAndroid Build Coastguard Worker }
9866*344a7f5eSAndroid Build Coastguard Worker 
vec_sum4s(vector signed short __a,vector int __b)9867*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_sum4s(vector signed short __a,
9868*344a7f5eSAndroid Build Coastguard Worker                                                     vector int __b) {
9869*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsum4shs(__a, __b);
9870*344a7f5eSAndroid Build Coastguard Worker }
9871*344a7f5eSAndroid Build Coastguard Worker 
9872*344a7f5eSAndroid Build Coastguard Worker /* vec_vsum4sbs */
9873*344a7f5eSAndroid Build Coastguard Worker 
9874*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __attribute__((__always_inline__))
vec_vsum4sbs(vector signed char __a,vector int __b)9875*344a7f5eSAndroid Build Coastguard Worker vec_vsum4sbs(vector signed char __a, vector int __b) {
9876*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsum4sbs(__a, __b);
9877*344a7f5eSAndroid Build Coastguard Worker }
9878*344a7f5eSAndroid Build Coastguard Worker 
9879*344a7f5eSAndroid Build Coastguard Worker /* vec_vsum4ubs */
9880*344a7f5eSAndroid Build Coastguard Worker 
9881*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __attribute__((__always_inline__))
vec_vsum4ubs(vector unsigned char __a,vector unsigned int __b)9882*344a7f5eSAndroid Build Coastguard Worker vec_vsum4ubs(vector unsigned char __a, vector unsigned int __b) {
9883*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsum4ubs(__a, __b);
9884*344a7f5eSAndroid Build Coastguard Worker }
9885*344a7f5eSAndroid Build Coastguard Worker 
9886*344a7f5eSAndroid Build Coastguard Worker /* vec_vsum4shs */
9887*344a7f5eSAndroid Build Coastguard Worker 
9888*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __attribute__((__always_inline__))
vec_vsum4shs(vector signed short __a,vector int __b)9889*344a7f5eSAndroid Build Coastguard Worker vec_vsum4shs(vector signed short __a, vector int __b) {
9890*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsum4shs(__a, __b);
9891*344a7f5eSAndroid Build Coastguard Worker }
9892*344a7f5eSAndroid Build Coastguard Worker 
9893*344a7f5eSAndroid Build Coastguard Worker /* vec_sum2s */
9894*344a7f5eSAndroid Build Coastguard Worker 
9895*344a7f5eSAndroid Build Coastguard Worker /* The vsum2sws instruction has a big-endian bias, so that the second
9896*344a7f5eSAndroid Build Coastguard Worker    input vector and the result always reference big-endian elements
9897*344a7f5eSAndroid Build Coastguard Worker    1 and 3 (little-endian element 0 and 2).  For ease of porting the
9898*344a7f5eSAndroid Build Coastguard Worker    programmer wants elements 1 and 3 in both cases, so for little
9899*344a7f5eSAndroid Build Coastguard Worker    endian we must perform some permutes.  */
9900*344a7f5eSAndroid Build Coastguard Worker 
9901*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __attribute__((__always_inline__))
vec_sum2s(vector int __a,vector int __b)9902*344a7f5eSAndroid Build Coastguard Worker vec_sum2s(vector int __a, vector int __b) {
9903*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
9904*344a7f5eSAndroid Build Coastguard Worker   vector int __c = (vector signed int)vec_perm(
9905*344a7f5eSAndroid Build Coastguard Worker       __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9906*344a7f5eSAndroid Build Coastguard Worker                                        8, 9, 10, 11));
9907*344a7f5eSAndroid Build Coastguard Worker   __c = __builtin_altivec_vsum2sws(__a, __c);
9908*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)vec_perm(
9909*344a7f5eSAndroid Build Coastguard Worker       __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9910*344a7f5eSAndroid Build Coastguard Worker                                        8, 9, 10, 11));
9911*344a7f5eSAndroid Build Coastguard Worker #else
9912*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsum2sws(__a, __b);
9913*344a7f5eSAndroid Build Coastguard Worker #endif
9914*344a7f5eSAndroid Build Coastguard Worker }
9915*344a7f5eSAndroid Build Coastguard Worker 
9916*344a7f5eSAndroid Build Coastguard Worker /* vec_vsum2sws */
9917*344a7f5eSAndroid Build Coastguard Worker 
9918*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __attribute__((__always_inline__))
vec_vsum2sws(vector int __a,vector int __b)9919*344a7f5eSAndroid Build Coastguard Worker vec_vsum2sws(vector int __a, vector int __b) {
9920*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
9921*344a7f5eSAndroid Build Coastguard Worker   vector int __c = (vector signed int)vec_perm(
9922*344a7f5eSAndroid Build Coastguard Worker       __b, __b, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9923*344a7f5eSAndroid Build Coastguard Worker                                        8, 9, 10, 11));
9924*344a7f5eSAndroid Build Coastguard Worker   __c = __builtin_altivec_vsum2sws(__a, __c);
9925*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)vec_perm(
9926*344a7f5eSAndroid Build Coastguard Worker       __c, __c, (vector unsigned char)(4, 5, 6, 7, 0, 1, 2, 3, 12, 13, 14, 15,
9927*344a7f5eSAndroid Build Coastguard Worker                                        8, 9, 10, 11));
9928*344a7f5eSAndroid Build Coastguard Worker #else
9929*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsum2sws(__a, __b);
9930*344a7f5eSAndroid Build Coastguard Worker #endif
9931*344a7f5eSAndroid Build Coastguard Worker }
9932*344a7f5eSAndroid Build Coastguard Worker 
9933*344a7f5eSAndroid Build Coastguard Worker /* vec_sums */
9934*344a7f5eSAndroid Build Coastguard Worker 
9935*344a7f5eSAndroid Build Coastguard Worker /* The vsumsws instruction has a big-endian bias, so that the second
9936*344a7f5eSAndroid Build Coastguard Worker    input vector and the result always reference big-endian element 3
9937*344a7f5eSAndroid Build Coastguard Worker    (little-endian element 0).  For ease of porting the programmer
9938*344a7f5eSAndroid Build Coastguard Worker    wants element 3 in both cases, so for little endian we must perform
9939*344a7f5eSAndroid Build Coastguard Worker    some permutes.  */
9940*344a7f5eSAndroid Build Coastguard Worker 
9941*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __attribute__((__always_inline__))
vec_sums(vector signed int __a,vector signed int __b)9942*344a7f5eSAndroid Build Coastguard Worker vec_sums(vector signed int __a, vector signed int __b) {
9943*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
9944*344a7f5eSAndroid Build Coastguard Worker   __b = (vector signed int)vec_splat(__b, 3);
9945*344a7f5eSAndroid Build Coastguard Worker   __b = __builtin_altivec_vsumsws(__a, __b);
9946*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)(0, 0, 0, __b[0]);
9947*344a7f5eSAndroid Build Coastguard Worker #else
9948*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsumsws(__a, __b);
9949*344a7f5eSAndroid Build Coastguard Worker #endif
9950*344a7f5eSAndroid Build Coastguard Worker }
9951*344a7f5eSAndroid Build Coastguard Worker 
9952*344a7f5eSAndroid Build Coastguard Worker /* vec_vsumsws */
9953*344a7f5eSAndroid Build Coastguard Worker 
9954*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __attribute__((__always_inline__))
vec_vsumsws(vector signed int __a,vector signed int __b)9955*344a7f5eSAndroid Build Coastguard Worker vec_vsumsws(vector signed int __a, vector signed int __b) {
9956*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
9957*344a7f5eSAndroid Build Coastguard Worker   __b = (vector signed int)vec_splat(__b, 3);
9958*344a7f5eSAndroid Build Coastguard Worker   __b = __builtin_altivec_vsumsws(__a, __b);
9959*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)(0, 0, 0, __b[0]);
9960*344a7f5eSAndroid Build Coastguard Worker #else
9961*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vsumsws(__a, __b);
9962*344a7f5eSAndroid Build Coastguard Worker #endif
9963*344a7f5eSAndroid Build Coastguard Worker }
9964*344a7f5eSAndroid Build Coastguard Worker 
9965*344a7f5eSAndroid Build Coastguard Worker /* vec_trunc */
9966*344a7f5eSAndroid Build Coastguard Worker 
vec_trunc(vector float __a)9967*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_trunc(vector float __a) {
9968*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
9969*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrspiz(__a);
9970*344a7f5eSAndroid Build Coastguard Worker #else
9971*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrfiz(__a);
9972*344a7f5eSAndroid Build Coastguard Worker #endif
9973*344a7f5eSAndroid Build Coastguard Worker }
9974*344a7f5eSAndroid Build Coastguard Worker 
9975*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_trunc(vector double __a)9976*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_trunc(vector double __a) {
9977*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvrdpiz(__a);
9978*344a7f5eSAndroid Build Coastguard Worker }
9979*344a7f5eSAndroid Build Coastguard Worker #endif
9980*344a7f5eSAndroid Build Coastguard Worker 
9981*344a7f5eSAndroid Build Coastguard Worker /* vec_vrfiz */
9982*344a7f5eSAndroid Build Coastguard Worker 
9983*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __attribute__((__always_inline__))
vec_vrfiz(vector float __a)9984*344a7f5eSAndroid Build Coastguard Worker vec_vrfiz(vector float __a) {
9985*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vrfiz(__a);
9986*344a7f5eSAndroid Build Coastguard Worker }
9987*344a7f5eSAndroid Build Coastguard Worker 
9988*344a7f5eSAndroid Build Coastguard Worker /* vec_unpackh */
9989*344a7f5eSAndroid Build Coastguard Worker 
9990*344a7f5eSAndroid Build Coastguard Worker /* The vector unpack instructions all have a big-endian bias, so for
9991*344a7f5eSAndroid Build Coastguard Worker    little endian we must reverse the meanings of "high" and "low."  */
9992*344a7f5eSAndroid Build Coastguard Worker 
9993*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai
vec_unpackh(vector signed char __a)9994*344a7f5eSAndroid Build Coastguard Worker vec_unpackh(vector signed char __a) {
9995*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
9996*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupklsb((vector char)__a);
9997*344a7f5eSAndroid Build Coastguard Worker #else
9998*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupkhsb((vector char)__a);
9999*344a7f5eSAndroid Build Coastguard Worker #endif
10000*344a7f5eSAndroid Build Coastguard Worker }
10001*344a7f5eSAndroid Build Coastguard Worker 
10002*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_unpackh(vector bool char __a)10003*344a7f5eSAndroid Build Coastguard Worker vec_unpackh(vector bool char __a) {
10004*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10005*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
10006*344a7f5eSAndroid Build Coastguard Worker #else
10007*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
10008*344a7f5eSAndroid Build Coastguard Worker #endif
10009*344a7f5eSAndroid Build Coastguard Worker }
10010*344a7f5eSAndroid Build Coastguard Worker 
vec_unpackh(vector short __a)10011*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_unpackh(vector short __a) {
10012*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10013*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupklsh(__a);
10014*344a7f5eSAndroid Build Coastguard Worker #else
10015*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupkhsh(__a);
10016*344a7f5eSAndroid Build Coastguard Worker #endif
10017*344a7f5eSAndroid Build Coastguard Worker }
10018*344a7f5eSAndroid Build Coastguard Worker 
10019*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_unpackh(vector bool short __a)10020*344a7f5eSAndroid Build Coastguard Worker vec_unpackh(vector bool short __a) {
10021*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10022*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
10023*344a7f5eSAndroid Build Coastguard Worker #else
10024*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
10025*344a7f5eSAndroid Build Coastguard Worker #endif
10026*344a7f5eSAndroid Build Coastguard Worker }
10027*344a7f5eSAndroid Build Coastguard Worker 
10028*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_unpackh(vector pixel __a)10029*344a7f5eSAndroid Build Coastguard Worker vec_unpackh(vector pixel __a) {
10030*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10031*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
10032*344a7f5eSAndroid Build Coastguard Worker #else
10033*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
10034*344a7f5eSAndroid Build Coastguard Worker #endif
10035*344a7f5eSAndroid Build Coastguard Worker }
10036*344a7f5eSAndroid Build Coastguard Worker 
10037*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_unpackh(vector int __a)10038*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector long long __ATTRS_o_ai vec_unpackh(vector int __a) {
10039*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10040*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupklsw(__a);
10041*344a7f5eSAndroid Build Coastguard Worker #else
10042*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupkhsw(__a);
10043*344a7f5eSAndroid Build Coastguard Worker #endif
10044*344a7f5eSAndroid Build Coastguard Worker }
10045*344a7f5eSAndroid Build Coastguard Worker 
10046*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_unpackh(vector bool int __a)10047*344a7f5eSAndroid Build Coastguard Worker vec_unpackh(vector bool int __a) {
10048*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10049*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
10050*344a7f5eSAndroid Build Coastguard Worker #else
10051*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
10052*344a7f5eSAndroid Build Coastguard Worker #endif
10053*344a7f5eSAndroid Build Coastguard Worker }
10054*344a7f5eSAndroid Build Coastguard Worker #endif
10055*344a7f5eSAndroid Build Coastguard Worker 
10056*344a7f5eSAndroid Build Coastguard Worker /* vec_vupkhsb */
10057*344a7f5eSAndroid Build Coastguard Worker 
10058*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai
vec_vupkhsb(vector signed char __a)10059*344a7f5eSAndroid Build Coastguard Worker vec_vupkhsb(vector signed char __a) {
10060*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10061*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupklsb((vector char)__a);
10062*344a7f5eSAndroid Build Coastguard Worker #else
10063*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupkhsb((vector char)__a);
10064*344a7f5eSAndroid Build Coastguard Worker #endif
10065*344a7f5eSAndroid Build Coastguard Worker }
10066*344a7f5eSAndroid Build Coastguard Worker 
10067*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vupkhsb(vector bool char __a)10068*344a7f5eSAndroid Build Coastguard Worker vec_vupkhsb(vector bool char __a) {
10069*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10070*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
10071*344a7f5eSAndroid Build Coastguard Worker #else
10072*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
10073*344a7f5eSAndroid Build Coastguard Worker #endif
10074*344a7f5eSAndroid Build Coastguard Worker }
10075*344a7f5eSAndroid Build Coastguard Worker 
10076*344a7f5eSAndroid Build Coastguard Worker /* vec_vupkhsh */
10077*344a7f5eSAndroid Build Coastguard Worker 
vec_vupkhsh(vector short __a)10078*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vupkhsh(vector short __a) {
10079*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10080*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupklsh(__a);
10081*344a7f5eSAndroid Build Coastguard Worker #else
10082*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupkhsh(__a);
10083*344a7f5eSAndroid Build Coastguard Worker #endif
10084*344a7f5eSAndroid Build Coastguard Worker }
10085*344a7f5eSAndroid Build Coastguard Worker 
10086*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_vupkhsh(vector bool short __a)10087*344a7f5eSAndroid Build Coastguard Worker vec_vupkhsh(vector bool short __a) {
10088*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10089*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
10090*344a7f5eSAndroid Build Coastguard Worker #else
10091*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
10092*344a7f5eSAndroid Build Coastguard Worker #endif
10093*344a7f5eSAndroid Build Coastguard Worker }
10094*344a7f5eSAndroid Build Coastguard Worker 
10095*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vupkhsh(vector pixel __a)10096*344a7f5eSAndroid Build Coastguard Worker vec_vupkhsh(vector pixel __a) {
10097*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10098*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
10099*344a7f5eSAndroid Build Coastguard Worker #else
10100*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
10101*344a7f5eSAndroid Build Coastguard Worker #endif
10102*344a7f5eSAndroid Build Coastguard Worker }
10103*344a7f5eSAndroid Build Coastguard Worker 
10104*344a7f5eSAndroid Build Coastguard Worker /* vec_vupkhsw */
10105*344a7f5eSAndroid Build Coastguard Worker 
10106*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_vupkhsw(vector int __a)10107*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector long long __ATTRS_o_ai vec_vupkhsw(vector int __a) {
10108*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10109*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupklsw(__a);
10110*344a7f5eSAndroid Build Coastguard Worker #else
10111*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupkhsw(__a);
10112*344a7f5eSAndroid Build Coastguard Worker #endif
10113*344a7f5eSAndroid Build Coastguard Worker }
10114*344a7f5eSAndroid Build Coastguard Worker 
10115*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_vupkhsw(vector bool int __a)10116*344a7f5eSAndroid Build Coastguard Worker vec_vupkhsw(vector bool int __a) {
10117*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10118*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
10119*344a7f5eSAndroid Build Coastguard Worker #else
10120*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
10121*344a7f5eSAndroid Build Coastguard Worker #endif
10122*344a7f5eSAndroid Build Coastguard Worker }
10123*344a7f5eSAndroid Build Coastguard Worker #endif
10124*344a7f5eSAndroid Build Coastguard Worker 
10125*344a7f5eSAndroid Build Coastguard Worker /* vec_unpackl */
10126*344a7f5eSAndroid Build Coastguard Worker 
10127*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai
vec_unpackl(vector signed char __a)10128*344a7f5eSAndroid Build Coastguard Worker vec_unpackl(vector signed char __a) {
10129*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10130*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupkhsb((vector char)__a);
10131*344a7f5eSAndroid Build Coastguard Worker #else
10132*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupklsb((vector char)__a);
10133*344a7f5eSAndroid Build Coastguard Worker #endif
10134*344a7f5eSAndroid Build Coastguard Worker }
10135*344a7f5eSAndroid Build Coastguard Worker 
10136*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_unpackl(vector bool char __a)10137*344a7f5eSAndroid Build Coastguard Worker vec_unpackl(vector bool char __a) {
10138*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10139*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
10140*344a7f5eSAndroid Build Coastguard Worker #else
10141*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
10142*344a7f5eSAndroid Build Coastguard Worker #endif
10143*344a7f5eSAndroid Build Coastguard Worker }
10144*344a7f5eSAndroid Build Coastguard Worker 
vec_unpackl(vector short __a)10145*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_unpackl(vector short __a) {
10146*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10147*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupkhsh(__a);
10148*344a7f5eSAndroid Build Coastguard Worker #else
10149*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupklsh(__a);
10150*344a7f5eSAndroid Build Coastguard Worker #endif
10151*344a7f5eSAndroid Build Coastguard Worker }
10152*344a7f5eSAndroid Build Coastguard Worker 
10153*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_unpackl(vector bool short __a)10154*344a7f5eSAndroid Build Coastguard Worker vec_unpackl(vector bool short __a) {
10155*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10156*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
10157*344a7f5eSAndroid Build Coastguard Worker #else
10158*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
10159*344a7f5eSAndroid Build Coastguard Worker #endif
10160*344a7f5eSAndroid Build Coastguard Worker }
10161*344a7f5eSAndroid Build Coastguard Worker 
10162*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_unpackl(vector pixel __a)10163*344a7f5eSAndroid Build Coastguard Worker vec_unpackl(vector pixel __a) {
10164*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10165*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
10166*344a7f5eSAndroid Build Coastguard Worker #else
10167*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
10168*344a7f5eSAndroid Build Coastguard Worker #endif
10169*344a7f5eSAndroid Build Coastguard Worker }
10170*344a7f5eSAndroid Build Coastguard Worker 
10171*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_unpackl(vector int __a)10172*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector long long __ATTRS_o_ai vec_unpackl(vector int __a) {
10173*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10174*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupkhsw(__a);
10175*344a7f5eSAndroid Build Coastguard Worker #else
10176*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupklsw(__a);
10177*344a7f5eSAndroid Build Coastguard Worker #endif
10178*344a7f5eSAndroid Build Coastguard Worker }
10179*344a7f5eSAndroid Build Coastguard Worker 
10180*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_unpackl(vector bool int __a)10181*344a7f5eSAndroid Build Coastguard Worker vec_unpackl(vector bool int __a) {
10182*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10183*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
10184*344a7f5eSAndroid Build Coastguard Worker #else
10185*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
10186*344a7f5eSAndroid Build Coastguard Worker #endif
10187*344a7f5eSAndroid Build Coastguard Worker }
10188*344a7f5eSAndroid Build Coastguard Worker #endif
10189*344a7f5eSAndroid Build Coastguard Worker 
10190*344a7f5eSAndroid Build Coastguard Worker /* vec_vupklsb */
10191*344a7f5eSAndroid Build Coastguard Worker 
10192*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai
vec_vupklsb(vector signed char __a)10193*344a7f5eSAndroid Build Coastguard Worker vec_vupklsb(vector signed char __a) {
10194*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10195*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupkhsb((vector char)__a);
10196*344a7f5eSAndroid Build Coastguard Worker #else
10197*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupklsb((vector char)__a);
10198*344a7f5eSAndroid Build Coastguard Worker #endif
10199*344a7f5eSAndroid Build Coastguard Worker }
10200*344a7f5eSAndroid Build Coastguard Worker 
10201*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vupklsb(vector bool char __a)10202*344a7f5eSAndroid Build Coastguard Worker vec_vupklsb(vector bool char __a) {
10203*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10204*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vupkhsb((vector char)__a);
10205*344a7f5eSAndroid Build Coastguard Worker #else
10206*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_altivec_vupklsb((vector char)__a);
10207*344a7f5eSAndroid Build Coastguard Worker #endif
10208*344a7f5eSAndroid Build Coastguard Worker }
10209*344a7f5eSAndroid Build Coastguard Worker 
10210*344a7f5eSAndroid Build Coastguard Worker /* vec_vupklsh */
10211*344a7f5eSAndroid Build Coastguard Worker 
vec_vupklsh(vector short __a)10212*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vupklsh(vector short __a) {
10213*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10214*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupkhsh(__a);
10215*344a7f5eSAndroid Build Coastguard Worker #else
10216*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupklsh(__a);
10217*344a7f5eSAndroid Build Coastguard Worker #endif
10218*344a7f5eSAndroid Build Coastguard Worker }
10219*344a7f5eSAndroid Build Coastguard Worker 
10220*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_vupklsh(vector bool short __a)10221*344a7f5eSAndroid Build Coastguard Worker vec_vupklsh(vector bool short __a) {
10222*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10223*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vupkhsh((vector short)__a);
10224*344a7f5eSAndroid Build Coastguard Worker #else
10225*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_altivec_vupklsh((vector short)__a);
10226*344a7f5eSAndroid Build Coastguard Worker #endif
10227*344a7f5eSAndroid Build Coastguard Worker }
10228*344a7f5eSAndroid Build Coastguard Worker 
10229*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vupklsh(vector pixel __a)10230*344a7f5eSAndroid Build Coastguard Worker vec_vupklsh(vector pixel __a) {
10231*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10232*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vupkhpx((vector short)__a);
10233*344a7f5eSAndroid Build Coastguard Worker #else
10234*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_vupklpx((vector short)__a);
10235*344a7f5eSAndroid Build Coastguard Worker #endif
10236*344a7f5eSAndroid Build Coastguard Worker }
10237*344a7f5eSAndroid Build Coastguard Worker 
10238*344a7f5eSAndroid Build Coastguard Worker /* vec_vupklsw */
10239*344a7f5eSAndroid Build Coastguard Worker 
10240*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_vupklsw(vector int __a)10241*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector long long __ATTRS_o_ai vec_vupklsw(vector int __a) {
10242*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10243*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupkhsw(__a);
10244*344a7f5eSAndroid Build Coastguard Worker #else
10245*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vupklsw(__a);
10246*344a7f5eSAndroid Build Coastguard Worker #endif
10247*344a7f5eSAndroid Build Coastguard Worker }
10248*344a7f5eSAndroid Build Coastguard Worker 
10249*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_vupklsw(vector bool int __a)10250*344a7f5eSAndroid Build Coastguard Worker vec_vupklsw(vector bool int __a) {
10251*344a7f5eSAndroid Build Coastguard Worker #ifdef __LITTLE_ENDIAN__
10252*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vupkhsw((vector int)__a);
10253*344a7f5eSAndroid Build Coastguard Worker #else
10254*344a7f5eSAndroid Build Coastguard Worker   return (vector bool long long)__builtin_altivec_vupklsw((vector int)__a);
10255*344a7f5eSAndroid Build Coastguard Worker #endif
10256*344a7f5eSAndroid Build Coastguard Worker }
10257*344a7f5eSAndroid Build Coastguard Worker #endif
10258*344a7f5eSAndroid Build Coastguard Worker 
10259*344a7f5eSAndroid Build Coastguard Worker /* vec_vsx_ld */
10260*344a7f5eSAndroid Build Coastguard Worker 
10261*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
10262*344a7f5eSAndroid Build Coastguard Worker 
10263*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_vsx_ld(int __a,const vector bool int * __b)10264*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector bool int *__b) {
10265*344a7f5eSAndroid Build Coastguard Worker   return (vector bool int)__builtin_vsx_lxvw4x(__a, __b);
10266*344a7f5eSAndroid Build Coastguard Worker }
10267*344a7f5eSAndroid Build Coastguard Worker 
10268*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_vsx_ld(int __a,const vector signed int * __b)10269*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector signed int *__b) {
10270*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
10271*344a7f5eSAndroid Build Coastguard Worker }
10272*344a7f5eSAndroid Build Coastguard Worker 
10273*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_vsx_ld(int __a,const signed int * __b)10274*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const signed int *__b) {
10275*344a7f5eSAndroid Build Coastguard Worker   return (vector signed int)__builtin_vsx_lxvw4x(__a, __b);
10276*344a7f5eSAndroid Build Coastguard Worker }
10277*344a7f5eSAndroid Build Coastguard Worker 
10278*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsx_ld(int __a,const vector unsigned int * __b)10279*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector unsigned int *__b) {
10280*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
10281*344a7f5eSAndroid Build Coastguard Worker }
10282*344a7f5eSAndroid Build Coastguard Worker 
10283*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vsx_ld(int __a,const unsigned int * __b)10284*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const unsigned int *__b) {
10285*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_vsx_lxvw4x(__a, __b);
10286*344a7f5eSAndroid Build Coastguard Worker }
10287*344a7f5eSAndroid Build Coastguard Worker 
10288*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai
vec_vsx_ld(int __a,const vector float * __b)10289*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector float *__b) {
10290*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_vsx_lxvw4x(__a, __b);
10291*344a7f5eSAndroid Build Coastguard Worker }
10292*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_ld(int __a,const float * __b)10293*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vsx_ld(int __a,
10294*344a7f5eSAndroid Build Coastguard Worker                                                        const float *__b) {
10295*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__builtin_vsx_lxvw4x(__a, __b);
10296*344a7f5eSAndroid Build Coastguard Worker }
10297*344a7f5eSAndroid Build Coastguard Worker 
10298*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vsx_ld(int __a,const vector signed long long * __b)10299*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector signed long long *__b) {
10300*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__builtin_vsx_lxvd2x(__a, __b);
10301*344a7f5eSAndroid Build Coastguard Worker }
10302*344a7f5eSAndroid Build Coastguard Worker 
10303*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vsx_ld(int __a,const vector unsigned long long * __b)10304*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector unsigned long long *__b) {
10305*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__builtin_vsx_lxvd2x(__a, __b);
10306*344a7f5eSAndroid Build Coastguard Worker }
10307*344a7f5eSAndroid Build Coastguard Worker 
10308*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_vsx_ld(int __a,const vector double * __b)10309*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector double *__b) {
10310*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__builtin_vsx_lxvd2x(__a, __b);
10311*344a7f5eSAndroid Build Coastguard Worker }
10312*344a7f5eSAndroid Build Coastguard Worker 
10313*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_vsx_ld(int __a,const double * __b)10314*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const double *__b) {
10315*344a7f5eSAndroid Build Coastguard Worker   return (vector double)__builtin_vsx_lxvd2x(__a, __b);
10316*344a7f5eSAndroid Build Coastguard Worker }
10317*344a7f5eSAndroid Build Coastguard Worker 
10318*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vsx_ld(int __a,const vector bool short * __b)10319*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector bool short *__b) {
10320*344a7f5eSAndroid Build Coastguard Worker   return (vector bool short)__builtin_vsx_lxvw4x(__a, __b);
10321*344a7f5eSAndroid Build Coastguard Worker }
10322*344a7f5eSAndroid Build Coastguard Worker 
10323*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_vsx_ld(int __a,const vector signed short * __b)10324*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector signed short *__b) {
10325*344a7f5eSAndroid Build Coastguard Worker   return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
10326*344a7f5eSAndroid Build Coastguard Worker }
10327*344a7f5eSAndroid Build Coastguard Worker 
10328*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_vsx_ld(int __a,const signed short * __b)10329*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const signed short *__b) {
10330*344a7f5eSAndroid Build Coastguard Worker   return (vector signed short)__builtin_vsx_lxvw4x(__a, __b);
10331*344a7f5eSAndroid Build Coastguard Worker }
10332*344a7f5eSAndroid Build Coastguard Worker 
10333*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsx_ld(int __a,const vector unsigned short * __b)10334*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector unsigned short *__b) {
10335*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
10336*344a7f5eSAndroid Build Coastguard Worker }
10337*344a7f5eSAndroid Build Coastguard Worker 
10338*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vsx_ld(int __a,const unsigned short * __b)10339*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const unsigned short *__b) {
10340*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_vsx_lxvw4x(__a, __b);
10341*344a7f5eSAndroid Build Coastguard Worker }
10342*344a7f5eSAndroid Build Coastguard Worker 
10343*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_vsx_ld(int __a,const vector bool char * __b)10344*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector bool char *__b) {
10345*344a7f5eSAndroid Build Coastguard Worker   return (vector bool char)__builtin_vsx_lxvw4x(__a, __b);
10346*344a7f5eSAndroid Build Coastguard Worker }
10347*344a7f5eSAndroid Build Coastguard Worker 
10348*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsx_ld(int __a,const vector signed char * __b)10349*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector signed char *__b) {
10350*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
10351*344a7f5eSAndroid Build Coastguard Worker }
10352*344a7f5eSAndroid Build Coastguard Worker 
10353*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vsx_ld(int __a,const signed char * __b)10354*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const signed char *__b) {
10355*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__builtin_vsx_lxvw4x(__a, __b);
10356*344a7f5eSAndroid Build Coastguard Worker }
10357*344a7f5eSAndroid Build Coastguard Worker 
10358*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsx_ld(int __a,const vector unsigned char * __b)10359*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const vector unsigned char *__b) {
10360*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
10361*344a7f5eSAndroid Build Coastguard Worker }
10362*344a7f5eSAndroid Build Coastguard Worker 
10363*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vsx_ld(int __a,const unsigned char * __b)10364*344a7f5eSAndroid Build Coastguard Worker vec_vsx_ld(int __a, const unsigned char *__b) {
10365*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__builtin_vsx_lxvw4x(__a, __b);
10366*344a7f5eSAndroid Build Coastguard Worker }
10367*344a7f5eSAndroid Build Coastguard Worker 
10368*344a7f5eSAndroid Build Coastguard Worker #endif
10369*344a7f5eSAndroid Build Coastguard Worker 
10370*344a7f5eSAndroid Build Coastguard Worker /* vec_vsx_st */
10371*344a7f5eSAndroid Build Coastguard Worker 
10372*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
10373*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector bool int __a,int __b,vector bool int * __c)10374*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
10375*344a7f5eSAndroid Build Coastguard Worker                                                vector bool int *__c) {
10376*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10377*344a7f5eSAndroid Build Coastguard Worker }
10378*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector bool int __a,int __b,signed int * __c)10379*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
10380*344a7f5eSAndroid Build Coastguard Worker                                                signed int *__c) {
10381*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10382*344a7f5eSAndroid Build Coastguard Worker }
10383*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector bool int __a,int __b,unsigned int * __c)10384*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool int __a, int __b,
10385*344a7f5eSAndroid Build Coastguard Worker                                                unsigned int *__c) {
10386*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10387*344a7f5eSAndroid Build Coastguard Worker }
10388*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector signed int __a,int __b,vector signed int * __c)10389*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
10390*344a7f5eSAndroid Build Coastguard Worker                                                vector signed int *__c) {
10391*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10392*344a7f5eSAndroid Build Coastguard Worker }
10393*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector signed int __a,int __b,signed int * __c)10394*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed int __a, int __b,
10395*344a7f5eSAndroid Build Coastguard Worker                                                signed int *__c) {
10396*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10397*344a7f5eSAndroid Build Coastguard Worker }
10398*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector unsigned int __a,int __b,vector unsigned int * __c)10399*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
10400*344a7f5eSAndroid Build Coastguard Worker                                                vector unsigned int *__c) {
10401*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10402*344a7f5eSAndroid Build Coastguard Worker }
10403*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector unsigned int __a,int __b,unsigned int * __c)10404*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned int __a, int __b,
10405*344a7f5eSAndroid Build Coastguard Worker                                                unsigned int *__c) {
10406*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10407*344a7f5eSAndroid Build Coastguard Worker }
10408*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector float __a,int __b,vector float * __c)10409*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
10410*344a7f5eSAndroid Build Coastguard Worker                                                vector float *__c) {
10411*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10412*344a7f5eSAndroid Build Coastguard Worker }
10413*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector float __a,int __b,float * __c)10414*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector float __a, int __b,
10415*344a7f5eSAndroid Build Coastguard Worker                                                float *__c) {
10416*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10417*344a7f5eSAndroid Build Coastguard Worker }
10418*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector signed long long __a,int __b,vector signed long long * __c)10419*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed long long __a,
10420*344a7f5eSAndroid Build Coastguard Worker                                                int __b,
10421*344a7f5eSAndroid Build Coastguard Worker                                                vector signed long long *__c) {
10422*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10423*344a7f5eSAndroid Build Coastguard Worker }
10424*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector unsigned long long __a,int __b,vector unsigned long long * __c)10425*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned long long __a,
10426*344a7f5eSAndroid Build Coastguard Worker                                                int __b,
10427*344a7f5eSAndroid Build Coastguard Worker                                                vector unsigned long long *__c) {
10428*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10429*344a7f5eSAndroid Build Coastguard Worker }
10430*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector double __a,int __b,vector double * __c)10431*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
10432*344a7f5eSAndroid Build Coastguard Worker                                                vector double *__c) {
10433*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10434*344a7f5eSAndroid Build Coastguard Worker }
10435*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector double __a,int __b,double * __c)10436*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector double __a, int __b,
10437*344a7f5eSAndroid Build Coastguard Worker                                                double *__c) {
10438*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvd2x((vector double)__a, __b, __c);
10439*344a7f5eSAndroid Build Coastguard Worker }
10440*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector bool short __a,int __b,vector bool short * __c)10441*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
10442*344a7f5eSAndroid Build Coastguard Worker                                                vector bool short *__c) {
10443*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10444*344a7f5eSAndroid Build Coastguard Worker }
10445*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector bool short __a,int __b,signed short * __c)10446*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
10447*344a7f5eSAndroid Build Coastguard Worker                                                signed short *__c) {
10448*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10449*344a7f5eSAndroid Build Coastguard Worker }
10450*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector bool short __a,int __b,unsigned short * __c)10451*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool short __a, int __b,
10452*344a7f5eSAndroid Build Coastguard Worker                                                unsigned short *__c) {
10453*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10454*344a7f5eSAndroid Build Coastguard Worker }
vec_vsx_st(vector signed short __a,int __b,vector signed short * __c)10455*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
10456*344a7f5eSAndroid Build Coastguard Worker                                                vector signed short *__c) {
10457*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10458*344a7f5eSAndroid Build Coastguard Worker }
10459*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector signed short __a,int __b,signed short * __c)10460*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed short __a, int __b,
10461*344a7f5eSAndroid Build Coastguard Worker                                                signed short *__c) {
10462*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10463*344a7f5eSAndroid Build Coastguard Worker }
10464*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector unsigned short __a,int __b,vector unsigned short * __c)10465*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
10466*344a7f5eSAndroid Build Coastguard Worker                                                int __b,
10467*344a7f5eSAndroid Build Coastguard Worker                                                vector unsigned short *__c) {
10468*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10469*344a7f5eSAndroid Build Coastguard Worker }
10470*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector unsigned short __a,int __b,unsigned short * __c)10471*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned short __a,
10472*344a7f5eSAndroid Build Coastguard Worker                                                int __b, unsigned short *__c) {
10473*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10474*344a7f5eSAndroid Build Coastguard Worker }
10475*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector bool char __a,int __b,vector bool char * __c)10476*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
10477*344a7f5eSAndroid Build Coastguard Worker                                                vector bool char *__c) {
10478*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10479*344a7f5eSAndroid Build Coastguard Worker }
10480*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector bool char __a,int __b,signed char * __c)10481*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
10482*344a7f5eSAndroid Build Coastguard Worker                                                signed char *__c) {
10483*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10484*344a7f5eSAndroid Build Coastguard Worker }
10485*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector bool char __a,int __b,unsigned char * __c)10486*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector bool char __a, int __b,
10487*344a7f5eSAndroid Build Coastguard Worker                                                unsigned char *__c) {
10488*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10489*344a7f5eSAndroid Build Coastguard Worker }
10490*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector signed char __a,int __b,vector signed char * __c)10491*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
10492*344a7f5eSAndroid Build Coastguard Worker                                                vector signed char *__c) {
10493*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10494*344a7f5eSAndroid Build Coastguard Worker }
10495*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector signed char __a,int __b,signed char * __c)10496*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector signed char __a, int __b,
10497*344a7f5eSAndroid Build Coastguard Worker                                                signed char *__c) {
10498*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10499*344a7f5eSAndroid Build Coastguard Worker }
10500*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector unsigned char __a,int __b,vector unsigned char * __c)10501*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
10502*344a7f5eSAndroid Build Coastguard Worker                                                int __b,
10503*344a7f5eSAndroid Build Coastguard Worker                                                vector unsigned char *__c) {
10504*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10505*344a7f5eSAndroid Build Coastguard Worker }
10506*344a7f5eSAndroid Build Coastguard Worker 
vec_vsx_st(vector unsigned char __a,int __b,unsigned char * __c)10507*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_vsx_st(vector unsigned char __a,
10508*344a7f5eSAndroid Build Coastguard Worker                                                int __b, unsigned char *__c) {
10509*344a7f5eSAndroid Build Coastguard Worker   __builtin_vsx_stxvw4x((vector int)__a, __b, __c);
10510*344a7f5eSAndroid Build Coastguard Worker }
10511*344a7f5eSAndroid Build Coastguard Worker 
10512*344a7f5eSAndroid Build Coastguard Worker #endif
10513*344a7f5eSAndroid Build Coastguard Worker 
10514*344a7f5eSAndroid Build Coastguard Worker /* vec_xor */
10515*344a7f5eSAndroid Build Coastguard Worker 
10516*344a7f5eSAndroid Build Coastguard Worker #define __builtin_altivec_vxor vec_xor
10517*344a7f5eSAndroid Build Coastguard Worker 
10518*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_xor(vector signed char __a,vector signed char __b)10519*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector signed char __a, vector signed char __b) {
10520*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10521*344a7f5eSAndroid Build Coastguard Worker }
10522*344a7f5eSAndroid Build Coastguard Worker 
10523*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_xor(vector bool char __a,vector signed char __b)10524*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector bool char __a, vector signed char __b) {
10525*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__a ^ __b;
10526*344a7f5eSAndroid Build Coastguard Worker }
10527*344a7f5eSAndroid Build Coastguard Worker 
10528*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_xor(vector signed char __a,vector bool char __b)10529*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector signed char __a, vector bool char __b) {
10530*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector signed char)__b;
10531*344a7f5eSAndroid Build Coastguard Worker }
10532*344a7f5eSAndroid Build Coastguard Worker 
10533*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_xor(vector unsigned char __a,vector unsigned char __b)10534*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector unsigned char __a, vector unsigned char __b) {
10535*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10536*344a7f5eSAndroid Build Coastguard Worker }
10537*344a7f5eSAndroid Build Coastguard Worker 
10538*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_xor(vector bool char __a,vector unsigned char __b)10539*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector bool char __a, vector unsigned char __b) {
10540*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__a ^ __b;
10541*344a7f5eSAndroid Build Coastguard Worker }
10542*344a7f5eSAndroid Build Coastguard Worker 
10543*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_xor(vector unsigned char __a,vector bool char __b)10544*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector unsigned char __a, vector bool char __b) {
10545*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector unsigned char)__b;
10546*344a7f5eSAndroid Build Coastguard Worker }
10547*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector bool char __a,vector bool char __b)10548*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_xor(vector bool char __a,
10549*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool char __b) {
10550*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10551*344a7f5eSAndroid Build Coastguard Worker }
10552*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector short __a,vector short __b)10553*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
10554*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
10555*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10556*344a7f5eSAndroid Build Coastguard Worker }
10557*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector bool short __a,vector short __b)10558*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_xor(vector bool short __a,
10559*344a7f5eSAndroid Build Coastguard Worker                                                     vector short __b) {
10560*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a ^ __b;
10561*344a7f5eSAndroid Build Coastguard Worker }
10562*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector short __a,vector bool short __b)10563*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_xor(vector short __a,
10564*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool short __b) {
10565*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector short)__b;
10566*344a7f5eSAndroid Build Coastguard Worker }
10567*344a7f5eSAndroid Build Coastguard Worker 
10568*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_xor(vector unsigned short __a,vector unsigned short __b)10569*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector unsigned short __a, vector unsigned short __b) {
10570*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10571*344a7f5eSAndroid Build Coastguard Worker }
10572*344a7f5eSAndroid Build Coastguard Worker 
10573*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_xor(vector bool short __a,vector unsigned short __b)10574*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector bool short __a, vector unsigned short __b) {
10575*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__a ^ __b;
10576*344a7f5eSAndroid Build Coastguard Worker }
10577*344a7f5eSAndroid Build Coastguard Worker 
10578*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_xor(vector unsigned short __a,vector bool short __b)10579*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector unsigned short __a, vector bool short __b) {
10580*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector unsigned short)__b;
10581*344a7f5eSAndroid Build Coastguard Worker }
10582*344a7f5eSAndroid Build Coastguard Worker 
10583*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_xor(vector bool short __a,vector bool short __b)10584*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector bool short __a, vector bool short __b) {
10585*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10586*344a7f5eSAndroid Build Coastguard Worker }
10587*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector int __a,vector int __b)10588*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
10589*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
10590*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10591*344a7f5eSAndroid Build Coastguard Worker }
10592*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector bool int __a,vector int __b)10593*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_xor(vector bool int __a,
10594*344a7f5eSAndroid Build Coastguard Worker                                                   vector int __b) {
10595*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__a ^ __b;
10596*344a7f5eSAndroid Build Coastguard Worker }
10597*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector int __a,vector bool int __b)10598*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_xor(vector int __a,
10599*344a7f5eSAndroid Build Coastguard Worker                                                   vector bool int __b) {
10600*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector int)__b;
10601*344a7f5eSAndroid Build Coastguard Worker }
10602*344a7f5eSAndroid Build Coastguard Worker 
10603*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_xor(vector unsigned int __a,vector unsigned int __b)10604*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector unsigned int __a, vector unsigned int __b) {
10605*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10606*344a7f5eSAndroid Build Coastguard Worker }
10607*344a7f5eSAndroid Build Coastguard Worker 
10608*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_xor(vector bool int __a,vector unsigned int __b)10609*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector bool int __a, vector unsigned int __b) {
10610*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__a ^ __b;
10611*344a7f5eSAndroid Build Coastguard Worker }
10612*344a7f5eSAndroid Build Coastguard Worker 
10613*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_xor(vector unsigned int __a,vector bool int __b)10614*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector unsigned int __a, vector bool int __b) {
10615*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector unsigned int)__b;
10616*344a7f5eSAndroid Build Coastguard Worker }
10617*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector bool int __a,vector bool int __b)10618*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_xor(vector bool int __a,
10619*344a7f5eSAndroid Build Coastguard Worker                                                        vector bool int __b) {
10620*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10621*344a7f5eSAndroid Build Coastguard Worker }
10622*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector float __a,vector float __b)10623*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
10624*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
10625*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
10626*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a ^ (vector unsigned int)__b;
10627*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
10628*344a7f5eSAndroid Build Coastguard Worker }
10629*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector bool int __a,vector float __b)10630*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_xor(vector bool int __a,
10631*344a7f5eSAndroid Build Coastguard Worker                                                     vector float __b) {
10632*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
10633*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a ^ (vector unsigned int)__b;
10634*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
10635*344a7f5eSAndroid Build Coastguard Worker }
10636*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector float __a,vector bool int __b)10637*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_xor(vector float __a,
10638*344a7f5eSAndroid Build Coastguard Worker                                                     vector bool int __b) {
10639*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
10640*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a ^ (vector unsigned int)__b;
10641*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
10642*344a7f5eSAndroid Build Coastguard Worker }
10643*344a7f5eSAndroid Build Coastguard Worker 
10644*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
10645*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_xor(vector signed long long __a,vector signed long long __b)10646*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector signed long long __a, vector signed long long __b) {
10647*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10648*344a7f5eSAndroid Build Coastguard Worker }
10649*344a7f5eSAndroid Build Coastguard Worker 
10650*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_xor(vector bool long long __a,vector signed long long __b)10651*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector bool long long __a, vector signed long long __b) {
10652*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__a ^ __b;
10653*344a7f5eSAndroid Build Coastguard Worker }
10654*344a7f5eSAndroid Build Coastguard Worker 
10655*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_xor(vector signed long long __a,vector bool long long __b)10656*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector signed long long __a, vector bool long long __b) {
10657*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector signed long long)__b;
10658*344a7f5eSAndroid Build Coastguard Worker }
10659*344a7f5eSAndroid Build Coastguard Worker 
10660*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_xor(vector unsigned long long __a,vector unsigned long long __b)10661*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector unsigned long long __a, vector unsigned long long __b) {
10662*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10663*344a7f5eSAndroid Build Coastguard Worker }
10664*344a7f5eSAndroid Build Coastguard Worker 
10665*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_xor(vector bool long long __a,vector unsigned long long __b)10666*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector bool long long __a, vector unsigned long long __b) {
10667*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__a ^ __b;
10668*344a7f5eSAndroid Build Coastguard Worker }
10669*344a7f5eSAndroid Build Coastguard Worker 
10670*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_xor(vector unsigned long long __a,vector bool long long __b)10671*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector unsigned long long __a, vector bool long long __b) {
10672*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector unsigned long long)__b;
10673*344a7f5eSAndroid Build Coastguard Worker }
10674*344a7f5eSAndroid Build Coastguard Worker 
10675*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_xor(vector bool long long __a,vector bool long long __b)10676*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector bool long long __a, vector bool long long __b) {
10677*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10678*344a7f5eSAndroid Build Coastguard Worker }
10679*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector double __a,vector double __b)10680*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_xor(vector double __a,
10681*344a7f5eSAndroid Build Coastguard Worker                                                      vector double __b) {
10682*344a7f5eSAndroid Build Coastguard Worker   return (vector double)((vector unsigned long long)__a ^
10683*344a7f5eSAndroid Build Coastguard Worker                          (vector unsigned long long)__b);
10684*344a7f5eSAndroid Build Coastguard Worker }
10685*344a7f5eSAndroid Build Coastguard Worker 
10686*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai
vec_xor(vector double __a,vector bool long long __b)10687*344a7f5eSAndroid Build Coastguard Worker vec_xor(vector double __a, vector bool long long __b) {
10688*344a7f5eSAndroid Build Coastguard Worker   return (vector double)((vector unsigned long long)__a ^
10689*344a7f5eSAndroid Build Coastguard Worker                          (vector unsigned long long)__b);
10690*344a7f5eSAndroid Build Coastguard Worker }
10691*344a7f5eSAndroid Build Coastguard Worker 
vec_xor(vector bool long long __a,vector double __b)10692*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_xor(vector bool long long __a,
10693*344a7f5eSAndroid Build Coastguard Worker                                                      vector double __b) {
10694*344a7f5eSAndroid Build Coastguard Worker   return (vector double)((vector unsigned long long)__a ^
10695*344a7f5eSAndroid Build Coastguard Worker                          (vector unsigned long long)__b);
10696*344a7f5eSAndroid Build Coastguard Worker }
10697*344a7f5eSAndroid Build Coastguard Worker #endif
10698*344a7f5eSAndroid Build Coastguard Worker 
10699*344a7f5eSAndroid Build Coastguard Worker /* vec_vxor */
10700*344a7f5eSAndroid Build Coastguard Worker 
10701*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vxor(vector signed char __a,vector signed char __b)10702*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector signed char __a, vector signed char __b) {
10703*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10704*344a7f5eSAndroid Build Coastguard Worker }
10705*344a7f5eSAndroid Build Coastguard Worker 
10706*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vxor(vector bool char __a,vector signed char __b)10707*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector bool char __a, vector signed char __b) {
10708*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)__a ^ __b;
10709*344a7f5eSAndroid Build Coastguard Worker }
10710*344a7f5eSAndroid Build Coastguard Worker 
10711*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vxor(vector signed char __a,vector bool char __b)10712*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector signed char __a, vector bool char __b) {
10713*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector signed char)__b;
10714*344a7f5eSAndroid Build Coastguard Worker }
10715*344a7f5eSAndroid Build Coastguard Worker 
10716*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vxor(vector unsigned char __a,vector unsigned char __b)10717*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector unsigned char __a, vector unsigned char __b) {
10718*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10719*344a7f5eSAndroid Build Coastguard Worker }
10720*344a7f5eSAndroid Build Coastguard Worker 
10721*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vxor(vector bool char __a,vector unsigned char __b)10722*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector bool char __a, vector unsigned char __b) {
10723*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)__a ^ __b;
10724*344a7f5eSAndroid Build Coastguard Worker }
10725*344a7f5eSAndroid Build Coastguard Worker 
10726*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vxor(vector unsigned char __a,vector bool char __b)10727*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector unsigned char __a, vector bool char __b) {
10728*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector unsigned char)__b;
10729*344a7f5eSAndroid Build Coastguard Worker }
10730*344a7f5eSAndroid Build Coastguard Worker 
vec_vxor(vector bool char __a,vector bool char __b)10731*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_vxor(vector bool char __a,
10732*344a7f5eSAndroid Build Coastguard Worker                                                          vector bool char __b) {
10733*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10734*344a7f5eSAndroid Build Coastguard Worker }
10735*344a7f5eSAndroid Build Coastguard Worker 
vec_vxor(vector short __a,vector short __b)10736*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
10737*344a7f5eSAndroid Build Coastguard Worker                                                      vector short __b) {
10738*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10739*344a7f5eSAndroid Build Coastguard Worker }
10740*344a7f5eSAndroid Build Coastguard Worker 
vec_vxor(vector bool short __a,vector short __b)10741*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vxor(vector bool short __a,
10742*344a7f5eSAndroid Build Coastguard Worker                                                      vector short __b) {
10743*344a7f5eSAndroid Build Coastguard Worker   return (vector short)__a ^ __b;
10744*344a7f5eSAndroid Build Coastguard Worker }
10745*344a7f5eSAndroid Build Coastguard Worker 
vec_vxor(vector short __a,vector bool short __b)10746*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_vxor(vector short __a,
10747*344a7f5eSAndroid Build Coastguard Worker                                                      vector bool short __b) {
10748*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector short)__b;
10749*344a7f5eSAndroid Build Coastguard Worker }
10750*344a7f5eSAndroid Build Coastguard Worker 
10751*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vxor(vector unsigned short __a,vector unsigned short __b)10752*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector unsigned short __a, vector unsigned short __b) {
10753*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10754*344a7f5eSAndroid Build Coastguard Worker }
10755*344a7f5eSAndroid Build Coastguard Worker 
10756*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vxor(vector bool short __a,vector unsigned short __b)10757*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector bool short __a, vector unsigned short __b) {
10758*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__a ^ __b;
10759*344a7f5eSAndroid Build Coastguard Worker }
10760*344a7f5eSAndroid Build Coastguard Worker 
10761*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_vxor(vector unsigned short __a,vector bool short __b)10762*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector unsigned short __a, vector bool short __b) {
10763*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector unsigned short)__b;
10764*344a7f5eSAndroid Build Coastguard Worker }
10765*344a7f5eSAndroid Build Coastguard Worker 
10766*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_vxor(vector bool short __a,vector bool short __b)10767*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector bool short __a, vector bool short __b) {
10768*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10769*344a7f5eSAndroid Build Coastguard Worker }
10770*344a7f5eSAndroid Build Coastguard Worker 
vec_vxor(vector int __a,vector int __b)10771*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
10772*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b) {
10773*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10774*344a7f5eSAndroid Build Coastguard Worker }
10775*344a7f5eSAndroid Build Coastguard Worker 
vec_vxor(vector bool int __a,vector int __b)10776*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vxor(vector bool int __a,
10777*344a7f5eSAndroid Build Coastguard Worker                                                    vector int __b) {
10778*344a7f5eSAndroid Build Coastguard Worker   return (vector int)__a ^ __b;
10779*344a7f5eSAndroid Build Coastguard Worker }
10780*344a7f5eSAndroid Build Coastguard Worker 
vec_vxor(vector int __a,vector bool int __b)10781*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_vxor(vector int __a,
10782*344a7f5eSAndroid Build Coastguard Worker                                                    vector bool int __b) {
10783*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector int)__b;
10784*344a7f5eSAndroid Build Coastguard Worker }
10785*344a7f5eSAndroid Build Coastguard Worker 
10786*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vxor(vector unsigned int __a,vector unsigned int __b)10787*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector unsigned int __a, vector unsigned int __b) {
10788*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10789*344a7f5eSAndroid Build Coastguard Worker }
10790*344a7f5eSAndroid Build Coastguard Worker 
10791*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vxor(vector bool int __a,vector unsigned int __b)10792*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector bool int __a, vector unsigned int __b) {
10793*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__a ^ __b;
10794*344a7f5eSAndroid Build Coastguard Worker }
10795*344a7f5eSAndroid Build Coastguard Worker 
10796*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_vxor(vector unsigned int __a,vector bool int __b)10797*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector unsigned int __a, vector bool int __b) {
10798*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector unsigned int)__b;
10799*344a7f5eSAndroid Build Coastguard Worker }
10800*344a7f5eSAndroid Build Coastguard Worker 
vec_vxor(vector bool int __a,vector bool int __b)10801*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_vxor(vector bool int __a,
10802*344a7f5eSAndroid Build Coastguard Worker                                                         vector bool int __b) {
10803*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10804*344a7f5eSAndroid Build Coastguard Worker }
10805*344a7f5eSAndroid Build Coastguard Worker 
vec_vxor(vector float __a,vector float __b)10806*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
10807*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b) {
10808*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
10809*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a ^ (vector unsigned int)__b;
10810*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
10811*344a7f5eSAndroid Build Coastguard Worker }
10812*344a7f5eSAndroid Build Coastguard Worker 
vec_vxor(vector bool int __a,vector float __b)10813*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vxor(vector bool int __a,
10814*344a7f5eSAndroid Build Coastguard Worker                                                      vector float __b) {
10815*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
10816*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a ^ (vector unsigned int)__b;
10817*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
10818*344a7f5eSAndroid Build Coastguard Worker }
10819*344a7f5eSAndroid Build Coastguard Worker 
vec_vxor(vector float __a,vector bool int __b)10820*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_vxor(vector float __a,
10821*344a7f5eSAndroid Build Coastguard Worker                                                      vector bool int __b) {
10822*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res =
10823*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned int)__a ^ (vector unsigned int)__b;
10824*344a7f5eSAndroid Build Coastguard Worker   return (vector float)__res;
10825*344a7f5eSAndroid Build Coastguard Worker }
10826*344a7f5eSAndroid Build Coastguard Worker 
10827*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
10828*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vxor(vector signed long long __a,vector signed long long __b)10829*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector signed long long __a, vector signed long long __b) {
10830*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10831*344a7f5eSAndroid Build Coastguard Worker }
10832*344a7f5eSAndroid Build Coastguard Worker 
10833*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vxor(vector bool long long __a,vector signed long long __b)10834*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector bool long long __a, vector signed long long __b) {
10835*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)__a ^ __b;
10836*344a7f5eSAndroid Build Coastguard Worker }
10837*344a7f5eSAndroid Build Coastguard Worker 
10838*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_vxor(vector signed long long __a,vector bool long long __b)10839*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector signed long long __a, vector bool long long __b) {
10840*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector signed long long)__b;
10841*344a7f5eSAndroid Build Coastguard Worker }
10842*344a7f5eSAndroid Build Coastguard Worker 
10843*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vxor(vector unsigned long long __a,vector unsigned long long __b)10844*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector unsigned long long __a, vector unsigned long long __b) {
10845*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10846*344a7f5eSAndroid Build Coastguard Worker }
10847*344a7f5eSAndroid Build Coastguard Worker 
10848*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vxor(vector bool long long __a,vector unsigned long long __b)10849*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector bool long long __a, vector unsigned long long __b) {
10850*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__a ^ __b;
10851*344a7f5eSAndroid Build Coastguard Worker }
10852*344a7f5eSAndroid Build Coastguard Worker 
10853*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_vxor(vector unsigned long long __a,vector bool long long __b)10854*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector unsigned long long __a, vector bool long long __b) {
10855*344a7f5eSAndroid Build Coastguard Worker   return __a ^ (vector unsigned long long)__b;
10856*344a7f5eSAndroid Build Coastguard Worker }
10857*344a7f5eSAndroid Build Coastguard Worker 
10858*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_vxor(vector bool long long __a,vector bool long long __b)10859*344a7f5eSAndroid Build Coastguard Worker vec_vxor(vector bool long long __a, vector bool long long __b) {
10860*344a7f5eSAndroid Build Coastguard Worker   return __a ^ __b;
10861*344a7f5eSAndroid Build Coastguard Worker }
10862*344a7f5eSAndroid Build Coastguard Worker #endif
10863*344a7f5eSAndroid Build Coastguard Worker 
10864*344a7f5eSAndroid Build Coastguard Worker /* ------------------------ extensions for CBEA ----------------------------- */
10865*344a7f5eSAndroid Build Coastguard Worker 
10866*344a7f5eSAndroid Build Coastguard Worker /* vec_extract */
10867*344a7f5eSAndroid Build Coastguard Worker 
vec_extract(vector signed char __a,int __b)10868*344a7f5eSAndroid Build Coastguard Worker static __inline__ signed char __ATTRS_o_ai vec_extract(vector signed char __a,
10869*344a7f5eSAndroid Build Coastguard Worker                                                        int __b) {
10870*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10871*344a7f5eSAndroid Build Coastguard Worker }
10872*344a7f5eSAndroid Build Coastguard Worker 
10873*344a7f5eSAndroid Build Coastguard Worker static __inline__ unsigned char __ATTRS_o_ai
vec_extract(vector unsigned char __a,int __b)10874*344a7f5eSAndroid Build Coastguard Worker vec_extract(vector unsigned char __a, int __b) {
10875*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10876*344a7f5eSAndroid Build Coastguard Worker }
10877*344a7f5eSAndroid Build Coastguard Worker 
vec_extract(vector bool char __a,int __b)10878*344a7f5eSAndroid Build Coastguard Worker static __inline__ unsigned char __ATTRS_o_ai vec_extract(vector bool char __a,
10879*344a7f5eSAndroid Build Coastguard Worker                                                          int __b) {
10880*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10881*344a7f5eSAndroid Build Coastguard Worker }
10882*344a7f5eSAndroid Build Coastguard Worker 
vec_extract(vector signed short __a,int __b)10883*344a7f5eSAndroid Build Coastguard Worker static __inline__ signed short __ATTRS_o_ai vec_extract(vector signed short __a,
10884*344a7f5eSAndroid Build Coastguard Worker                                                         int __b) {
10885*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10886*344a7f5eSAndroid Build Coastguard Worker }
10887*344a7f5eSAndroid Build Coastguard Worker 
10888*344a7f5eSAndroid Build Coastguard Worker static __inline__ unsigned short __ATTRS_o_ai
vec_extract(vector unsigned short __a,int __b)10889*344a7f5eSAndroid Build Coastguard Worker vec_extract(vector unsigned short __a, int __b) {
10890*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10891*344a7f5eSAndroid Build Coastguard Worker }
10892*344a7f5eSAndroid Build Coastguard Worker 
vec_extract(vector bool short __a,int __b)10893*344a7f5eSAndroid Build Coastguard Worker static __inline__ unsigned short __ATTRS_o_ai vec_extract(vector bool short __a,
10894*344a7f5eSAndroid Build Coastguard Worker                                                           int __b) {
10895*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10896*344a7f5eSAndroid Build Coastguard Worker }
10897*344a7f5eSAndroid Build Coastguard Worker 
vec_extract(vector signed int __a,int __b)10898*344a7f5eSAndroid Build Coastguard Worker static __inline__ signed int __ATTRS_o_ai vec_extract(vector signed int __a,
10899*344a7f5eSAndroid Build Coastguard Worker                                                       int __b) {
10900*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10901*344a7f5eSAndroid Build Coastguard Worker }
10902*344a7f5eSAndroid Build Coastguard Worker 
vec_extract(vector unsigned int __a,int __b)10903*344a7f5eSAndroid Build Coastguard Worker static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector unsigned int __a,
10904*344a7f5eSAndroid Build Coastguard Worker                                                         int __b) {
10905*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10906*344a7f5eSAndroid Build Coastguard Worker }
10907*344a7f5eSAndroid Build Coastguard Worker 
vec_extract(vector bool int __a,int __b)10908*344a7f5eSAndroid Build Coastguard Worker static __inline__ unsigned int __ATTRS_o_ai vec_extract(vector bool int __a,
10909*344a7f5eSAndroid Build Coastguard Worker                                                         int __b) {
10910*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10911*344a7f5eSAndroid Build Coastguard Worker }
10912*344a7f5eSAndroid Build Coastguard Worker 
10913*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
10914*344a7f5eSAndroid Build Coastguard Worker static __inline__ signed long long __ATTRS_o_ai
vec_extract(vector signed long long __a,int __b)10915*344a7f5eSAndroid Build Coastguard Worker vec_extract(vector signed long long __a, int __b) {
10916*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10917*344a7f5eSAndroid Build Coastguard Worker }
10918*344a7f5eSAndroid Build Coastguard Worker 
10919*344a7f5eSAndroid Build Coastguard Worker static __inline__ unsigned long long __ATTRS_o_ai
vec_extract(vector unsigned long long __a,int __b)10920*344a7f5eSAndroid Build Coastguard Worker vec_extract(vector unsigned long long __a, int __b) {
10921*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10922*344a7f5eSAndroid Build Coastguard Worker }
10923*344a7f5eSAndroid Build Coastguard Worker 
10924*344a7f5eSAndroid Build Coastguard Worker static __inline__ unsigned long long __ATTRS_o_ai
vec_extract(vector bool long long __a,int __b)10925*344a7f5eSAndroid Build Coastguard Worker vec_extract(vector bool long long __a, int __b) {
10926*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10927*344a7f5eSAndroid Build Coastguard Worker }
10928*344a7f5eSAndroid Build Coastguard Worker 
vec_extract(vector double __a,int __b)10929*344a7f5eSAndroid Build Coastguard Worker static __inline__ double __ATTRS_o_ai vec_extract(vector double __a, int __b) {
10930*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10931*344a7f5eSAndroid Build Coastguard Worker }
10932*344a7f5eSAndroid Build Coastguard Worker #endif
10933*344a7f5eSAndroid Build Coastguard Worker 
vec_extract(vector float __a,int __b)10934*344a7f5eSAndroid Build Coastguard Worker static __inline__ float __ATTRS_o_ai vec_extract(vector float __a, int __b) {
10935*344a7f5eSAndroid Build Coastguard Worker   return __a[__b];
10936*344a7f5eSAndroid Build Coastguard Worker }
10937*344a7f5eSAndroid Build Coastguard Worker 
10938*344a7f5eSAndroid Build Coastguard Worker /* vec_insert */
10939*344a7f5eSAndroid Build Coastguard Worker 
10940*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_insert(signed char __a,vector signed char __b,int __c)10941*344a7f5eSAndroid Build Coastguard Worker vec_insert(signed char __a, vector signed char __b, int __c) {
10942*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
10943*344a7f5eSAndroid Build Coastguard Worker   return __b;
10944*344a7f5eSAndroid Build Coastguard Worker }
10945*344a7f5eSAndroid Build Coastguard Worker 
10946*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_insert(unsigned char __a,vector unsigned char __b,int __c)10947*344a7f5eSAndroid Build Coastguard Worker vec_insert(unsigned char __a, vector unsigned char __b, int __c) {
10948*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
10949*344a7f5eSAndroid Build Coastguard Worker   return __b;
10950*344a7f5eSAndroid Build Coastguard Worker }
10951*344a7f5eSAndroid Build Coastguard Worker 
vec_insert(unsigned char __a,vector bool char __b,int __c)10952*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai vec_insert(unsigned char __a,
10953*344a7f5eSAndroid Build Coastguard Worker                                                            vector bool char __b,
10954*344a7f5eSAndroid Build Coastguard Worker                                                            int __c) {
10955*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
10956*344a7f5eSAndroid Build Coastguard Worker   return __b;
10957*344a7f5eSAndroid Build Coastguard Worker }
10958*344a7f5eSAndroid Build Coastguard Worker 
10959*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed short __ATTRS_o_ai
vec_insert(signed short __a,vector signed short __b,int __c)10960*344a7f5eSAndroid Build Coastguard Worker vec_insert(signed short __a, vector signed short __b, int __c) {
10961*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
10962*344a7f5eSAndroid Build Coastguard Worker   return __b;
10963*344a7f5eSAndroid Build Coastguard Worker }
10964*344a7f5eSAndroid Build Coastguard Worker 
10965*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_insert(unsigned short __a,vector unsigned short __b,int __c)10966*344a7f5eSAndroid Build Coastguard Worker vec_insert(unsigned short __a, vector unsigned short __b, int __c) {
10967*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
10968*344a7f5eSAndroid Build Coastguard Worker   return __b;
10969*344a7f5eSAndroid Build Coastguard Worker }
10970*344a7f5eSAndroid Build Coastguard Worker 
10971*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_insert(unsigned short __a,vector bool short __b,int __c)10972*344a7f5eSAndroid Build Coastguard Worker vec_insert(unsigned short __a, vector bool short __b, int __c) {
10973*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
10974*344a7f5eSAndroid Build Coastguard Worker   return __b;
10975*344a7f5eSAndroid Build Coastguard Worker }
10976*344a7f5eSAndroid Build Coastguard Worker 
10977*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed int __ATTRS_o_ai
vec_insert(signed int __a,vector signed int __b,int __c)10978*344a7f5eSAndroid Build Coastguard Worker vec_insert(signed int __a, vector signed int __b, int __c) {
10979*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
10980*344a7f5eSAndroid Build Coastguard Worker   return __b;
10981*344a7f5eSAndroid Build Coastguard Worker }
10982*344a7f5eSAndroid Build Coastguard Worker 
10983*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_insert(unsigned int __a,vector unsigned int __b,int __c)10984*344a7f5eSAndroid Build Coastguard Worker vec_insert(unsigned int __a, vector unsigned int __b, int __c) {
10985*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
10986*344a7f5eSAndroid Build Coastguard Worker   return __b;
10987*344a7f5eSAndroid Build Coastguard Worker }
10988*344a7f5eSAndroid Build Coastguard Worker 
vec_insert(unsigned int __a,vector bool int __b,int __c)10989*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai vec_insert(unsigned int __a,
10990*344a7f5eSAndroid Build Coastguard Worker                                                           vector bool int __b,
10991*344a7f5eSAndroid Build Coastguard Worker                                                           int __c) {
10992*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
10993*344a7f5eSAndroid Build Coastguard Worker   return __b;
10994*344a7f5eSAndroid Build Coastguard Worker }
10995*344a7f5eSAndroid Build Coastguard Worker 
10996*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
10997*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_insert(signed long long __a,vector signed long long __b,int __c)10998*344a7f5eSAndroid Build Coastguard Worker vec_insert(signed long long __a, vector signed long long __b, int __c) {
10999*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
11000*344a7f5eSAndroid Build Coastguard Worker   return __b;
11001*344a7f5eSAndroid Build Coastguard Worker }
11002*344a7f5eSAndroid Build Coastguard Worker 
11003*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_insert(unsigned long long __a,vector unsigned long long __b,int __c)11004*344a7f5eSAndroid Build Coastguard Worker vec_insert(unsigned long long __a, vector unsigned long long __b, int __c) {
11005*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
11006*344a7f5eSAndroid Build Coastguard Worker   return __b;
11007*344a7f5eSAndroid Build Coastguard Worker }
11008*344a7f5eSAndroid Build Coastguard Worker 
11009*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool long long __ATTRS_o_ai
vec_insert(unsigned long long __a,vector bool long long __b,int __c)11010*344a7f5eSAndroid Build Coastguard Worker vec_insert(unsigned long long __a, vector bool long long __b, int __c) {
11011*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
11012*344a7f5eSAndroid Build Coastguard Worker   return __b;
11013*344a7f5eSAndroid Build Coastguard Worker }
vec_insert(double __a,vector double __b,int __c)11014*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_insert(double __a,
11015*344a7f5eSAndroid Build Coastguard Worker                                                         vector double __b,
11016*344a7f5eSAndroid Build Coastguard Worker                                                         int __c) {
11017*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
11018*344a7f5eSAndroid Build Coastguard Worker   return __b;
11019*344a7f5eSAndroid Build Coastguard Worker }
11020*344a7f5eSAndroid Build Coastguard Worker #endif
11021*344a7f5eSAndroid Build Coastguard Worker 
vec_insert(float __a,vector float __b,int __c)11022*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_insert(float __a,
11023*344a7f5eSAndroid Build Coastguard Worker                                                        vector float __b,
11024*344a7f5eSAndroid Build Coastguard Worker                                                        int __c) {
11025*344a7f5eSAndroid Build Coastguard Worker   __b[__c] = __a;
11026*344a7f5eSAndroid Build Coastguard Worker   return __b;
11027*344a7f5eSAndroid Build Coastguard Worker }
11028*344a7f5eSAndroid Build Coastguard Worker 
11029*344a7f5eSAndroid Build Coastguard Worker /* vec_lvlx */
11030*344a7f5eSAndroid Build Coastguard Worker 
11031*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvlx(int __a,const signed char * __b)11032*344a7f5eSAndroid Build Coastguard Worker vec_lvlx(int __a, const signed char *__b) {
11033*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
11034*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11035*344a7f5eSAndroid Build Coastguard Worker }
11036*344a7f5eSAndroid Build Coastguard Worker 
11037*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvlx(int __a,const vector signed char * __b)11038*344a7f5eSAndroid Build Coastguard Worker vec_lvlx(int __a, const vector signed char *__b) {
11039*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector signed char)(0),
11040*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11041*344a7f5eSAndroid Build Coastguard Worker }
11042*344a7f5eSAndroid Build Coastguard Worker 
11043*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvlx(int __a,const unsigned char * __b)11044*344a7f5eSAndroid Build Coastguard Worker vec_lvlx(int __a, const unsigned char *__b) {
11045*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
11046*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11047*344a7f5eSAndroid Build Coastguard Worker }
11048*344a7f5eSAndroid Build Coastguard Worker 
11049*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvlx(int __a,const vector unsigned char * __b)11050*344a7f5eSAndroid Build Coastguard Worker vec_lvlx(int __a, const vector unsigned char *__b) {
11051*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector unsigned char)(0),
11052*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11053*344a7f5eSAndroid Build Coastguard Worker }
11054*344a7f5eSAndroid Build Coastguard Worker 
11055*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_lvlx(int __a,const vector bool char * __b)11056*344a7f5eSAndroid Build Coastguard Worker vec_lvlx(int __a, const vector bool char *__b) {
11057*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector bool char)(0),
11058*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11059*344a7f5eSAndroid Build Coastguard Worker }
11060*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlx(int __a,const short * __b)11061*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
11062*344a7f5eSAndroid Build Coastguard Worker                                                      const short *__b) {
11063*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
11064*344a7f5eSAndroid Build Coastguard Worker }
11065*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlx(int __a,const vector short * __b)11066*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvlx(int __a,
11067*344a7f5eSAndroid Build Coastguard Worker                                                      const vector short *__b) {
11068*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector short)(0),
11069*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11070*344a7f5eSAndroid Build Coastguard Worker }
11071*344a7f5eSAndroid Build Coastguard Worker 
11072*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvlx(int __a,const unsigned short * __b)11073*344a7f5eSAndroid Build Coastguard Worker vec_lvlx(int __a, const unsigned short *__b) {
11074*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
11075*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11076*344a7f5eSAndroid Build Coastguard Worker }
11077*344a7f5eSAndroid Build Coastguard Worker 
11078*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvlx(int __a,const vector unsigned short * __b)11079*344a7f5eSAndroid Build Coastguard Worker vec_lvlx(int __a, const vector unsigned short *__b) {
11080*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector unsigned short)(0),
11081*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11082*344a7f5eSAndroid Build Coastguard Worker }
11083*344a7f5eSAndroid Build Coastguard Worker 
11084*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_lvlx(int __a,const vector bool short * __b)11085*344a7f5eSAndroid Build Coastguard Worker vec_lvlx(int __a, const vector bool short *__b) {
11086*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector bool short)(0),
11087*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11088*344a7f5eSAndroid Build Coastguard Worker }
11089*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlx(int __a,const vector pixel * __b)11090*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_lvlx(int __a,
11091*344a7f5eSAndroid Build Coastguard Worker                                                      const vector pixel *__b) {
11092*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector pixel)(0),
11093*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11094*344a7f5eSAndroid Build Coastguard Worker }
11095*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlx(int __a,const int * __b)11096*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a, const int *__b) {
11097*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
11098*344a7f5eSAndroid Build Coastguard Worker }
11099*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlx(int __a,const vector int * __b)11100*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvlx(int __a,
11101*344a7f5eSAndroid Build Coastguard Worker                                                    const vector int *__b) {
11102*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector int)(0),
11103*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11104*344a7f5eSAndroid Build Coastguard Worker }
11105*344a7f5eSAndroid Build Coastguard Worker 
11106*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvlx(int __a,const unsigned int * __b)11107*344a7f5eSAndroid Build Coastguard Worker vec_lvlx(int __a, const unsigned int *__b) {
11108*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
11109*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11110*344a7f5eSAndroid Build Coastguard Worker }
11111*344a7f5eSAndroid Build Coastguard Worker 
11112*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvlx(int __a,const vector unsigned int * __b)11113*344a7f5eSAndroid Build Coastguard Worker vec_lvlx(int __a, const vector unsigned int *__b) {
11114*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector unsigned int)(0),
11115*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11116*344a7f5eSAndroid Build Coastguard Worker }
11117*344a7f5eSAndroid Build Coastguard Worker 
11118*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_lvlx(int __a,const vector bool int * __b)11119*344a7f5eSAndroid Build Coastguard Worker vec_lvlx(int __a, const vector bool int *__b) {
11120*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector bool int)(0),
11121*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11122*344a7f5eSAndroid Build Coastguard Worker }
11123*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlx(int __a,const float * __b)11124*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
11125*344a7f5eSAndroid Build Coastguard Worker                                                      const float *__b) {
11126*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
11127*344a7f5eSAndroid Build Coastguard Worker }
11128*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlx(int __a,const vector float * __b)11129*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvlx(int __a,
11130*344a7f5eSAndroid Build Coastguard Worker                                                      const vector float *__b) {
11131*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ld(__a, __b), (vector float)(0),
11132*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11133*344a7f5eSAndroid Build Coastguard Worker }
11134*344a7f5eSAndroid Build Coastguard Worker 
11135*344a7f5eSAndroid Build Coastguard Worker /* vec_lvlxl */
11136*344a7f5eSAndroid Build Coastguard Worker 
11137*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvlxl(int __a,const signed char * __b)11138*344a7f5eSAndroid Build Coastguard Worker vec_lvlxl(int __a, const signed char *__b) {
11139*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
11140*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11141*344a7f5eSAndroid Build Coastguard Worker }
11142*344a7f5eSAndroid Build Coastguard Worker 
11143*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvlxl(int __a,const vector signed char * __b)11144*344a7f5eSAndroid Build Coastguard Worker vec_lvlxl(int __a, const vector signed char *__b) {
11145*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector signed char)(0),
11146*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11147*344a7f5eSAndroid Build Coastguard Worker }
11148*344a7f5eSAndroid Build Coastguard Worker 
11149*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvlxl(int __a,const unsigned char * __b)11150*344a7f5eSAndroid Build Coastguard Worker vec_lvlxl(int __a, const unsigned char *__b) {
11151*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
11152*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11153*344a7f5eSAndroid Build Coastguard Worker }
11154*344a7f5eSAndroid Build Coastguard Worker 
11155*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvlxl(int __a,const vector unsigned char * __b)11156*344a7f5eSAndroid Build Coastguard Worker vec_lvlxl(int __a, const vector unsigned char *__b) {
11157*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector unsigned char)(0),
11158*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11159*344a7f5eSAndroid Build Coastguard Worker }
11160*344a7f5eSAndroid Build Coastguard Worker 
11161*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_lvlxl(int __a,const vector bool char * __b)11162*344a7f5eSAndroid Build Coastguard Worker vec_lvlxl(int __a, const vector bool char *__b) {
11163*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector bool char)(0),
11164*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11165*344a7f5eSAndroid Build Coastguard Worker }
11166*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlxl(int __a,const short * __b)11167*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
11168*344a7f5eSAndroid Build Coastguard Worker                                                       const short *__b) {
11169*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector short)(0), vec_lvsl(__a, __b));
11170*344a7f5eSAndroid Build Coastguard Worker }
11171*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlxl(int __a,const vector short * __b)11172*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvlxl(int __a,
11173*344a7f5eSAndroid Build Coastguard Worker                                                       const vector short *__b) {
11174*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector short)(0),
11175*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11176*344a7f5eSAndroid Build Coastguard Worker }
11177*344a7f5eSAndroid Build Coastguard Worker 
11178*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvlxl(int __a,const unsigned short * __b)11179*344a7f5eSAndroid Build Coastguard Worker vec_lvlxl(int __a, const unsigned short *__b) {
11180*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
11181*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11182*344a7f5eSAndroid Build Coastguard Worker }
11183*344a7f5eSAndroid Build Coastguard Worker 
11184*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvlxl(int __a,const vector unsigned short * __b)11185*344a7f5eSAndroid Build Coastguard Worker vec_lvlxl(int __a, const vector unsigned short *__b) {
11186*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector unsigned short)(0),
11187*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11188*344a7f5eSAndroid Build Coastguard Worker }
11189*344a7f5eSAndroid Build Coastguard Worker 
11190*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_lvlxl(int __a,const vector bool short * __b)11191*344a7f5eSAndroid Build Coastguard Worker vec_lvlxl(int __a, const vector bool short *__b) {
11192*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector bool short)(0),
11193*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11194*344a7f5eSAndroid Build Coastguard Worker }
11195*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlxl(int __a,const vector pixel * __b)11196*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_lvlxl(int __a,
11197*344a7f5eSAndroid Build Coastguard Worker                                                       const vector pixel *__b) {
11198*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector pixel)(0),
11199*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11200*344a7f5eSAndroid Build Coastguard Worker }
11201*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlxl(int __a,const int * __b)11202*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a, const int *__b) {
11203*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector int)(0), vec_lvsl(__a, __b));
11204*344a7f5eSAndroid Build Coastguard Worker }
11205*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlxl(int __a,const vector int * __b)11206*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvlxl(int __a,
11207*344a7f5eSAndroid Build Coastguard Worker                                                     const vector int *__b) {
11208*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector int)(0),
11209*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11210*344a7f5eSAndroid Build Coastguard Worker }
11211*344a7f5eSAndroid Build Coastguard Worker 
11212*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvlxl(int __a,const unsigned int * __b)11213*344a7f5eSAndroid Build Coastguard Worker vec_lvlxl(int __a, const unsigned int *__b) {
11214*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
11215*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11216*344a7f5eSAndroid Build Coastguard Worker }
11217*344a7f5eSAndroid Build Coastguard Worker 
11218*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvlxl(int __a,const vector unsigned int * __b)11219*344a7f5eSAndroid Build Coastguard Worker vec_lvlxl(int __a, const vector unsigned int *__b) {
11220*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector unsigned int)(0),
11221*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11222*344a7f5eSAndroid Build Coastguard Worker }
11223*344a7f5eSAndroid Build Coastguard Worker 
11224*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_lvlxl(int __a,const vector bool int * __b)11225*344a7f5eSAndroid Build Coastguard Worker vec_lvlxl(int __a, const vector bool int *__b) {
11226*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector bool int)(0),
11227*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11228*344a7f5eSAndroid Build Coastguard Worker }
11229*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlxl(int __a,const float * __b)11230*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
11231*344a7f5eSAndroid Build Coastguard Worker                                                       const float *__b) {
11232*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector float)(0), vec_lvsl(__a, __b));
11233*344a7f5eSAndroid Build Coastguard Worker }
11234*344a7f5eSAndroid Build Coastguard Worker 
vec_lvlxl(int __a,vector float * __b)11235*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvlxl(int __a,
11236*344a7f5eSAndroid Build Coastguard Worker                                                       vector float *__b) {
11237*344a7f5eSAndroid Build Coastguard Worker   return vec_perm(vec_ldl(__a, __b), (vector float)(0),
11238*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11239*344a7f5eSAndroid Build Coastguard Worker }
11240*344a7f5eSAndroid Build Coastguard Worker 
11241*344a7f5eSAndroid Build Coastguard Worker /* vec_lvrx */
11242*344a7f5eSAndroid Build Coastguard Worker 
11243*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvrx(int __a,const signed char * __b)11244*344a7f5eSAndroid Build Coastguard Worker vec_lvrx(int __a, const signed char *__b) {
11245*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector signed char)(0), vec_ld(__a, __b),
11246*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11247*344a7f5eSAndroid Build Coastguard Worker }
11248*344a7f5eSAndroid Build Coastguard Worker 
11249*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvrx(int __a,const vector signed char * __b)11250*344a7f5eSAndroid Build Coastguard Worker vec_lvrx(int __a, const vector signed char *__b) {
11251*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector signed char)(0), vec_ld(__a, __b),
11252*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11253*344a7f5eSAndroid Build Coastguard Worker }
11254*344a7f5eSAndroid Build Coastguard Worker 
11255*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvrx(int __a,const unsigned char * __b)11256*344a7f5eSAndroid Build Coastguard Worker vec_lvrx(int __a, const unsigned char *__b) {
11257*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
11258*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11259*344a7f5eSAndroid Build Coastguard Worker }
11260*344a7f5eSAndroid Build Coastguard Worker 
11261*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvrx(int __a,const vector unsigned char * __b)11262*344a7f5eSAndroid Build Coastguard Worker vec_lvrx(int __a, const vector unsigned char *__b) {
11263*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned char)(0), vec_ld(__a, __b),
11264*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11265*344a7f5eSAndroid Build Coastguard Worker }
11266*344a7f5eSAndroid Build Coastguard Worker 
11267*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_lvrx(int __a,const vector bool char * __b)11268*344a7f5eSAndroid Build Coastguard Worker vec_lvrx(int __a, const vector bool char *__b) {
11269*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector bool char)(0), vec_ld(__a, __b),
11270*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11271*344a7f5eSAndroid Build Coastguard Worker }
11272*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrx(int __a,const short * __b)11273*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
11274*344a7f5eSAndroid Build Coastguard Worker                                                      const short *__b) {
11275*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector short)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
11276*344a7f5eSAndroid Build Coastguard Worker }
11277*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrx(int __a,const vector short * __b)11278*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvrx(int __a,
11279*344a7f5eSAndroid Build Coastguard Worker                                                      const vector short *__b) {
11280*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector short)(0), vec_ld(__a, __b),
11281*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11282*344a7f5eSAndroid Build Coastguard Worker }
11283*344a7f5eSAndroid Build Coastguard Worker 
11284*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvrx(int __a,const unsigned short * __b)11285*344a7f5eSAndroid Build Coastguard Worker vec_lvrx(int __a, const unsigned short *__b) {
11286*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
11287*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11288*344a7f5eSAndroid Build Coastguard Worker }
11289*344a7f5eSAndroid Build Coastguard Worker 
11290*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvrx(int __a,const vector unsigned short * __b)11291*344a7f5eSAndroid Build Coastguard Worker vec_lvrx(int __a, const vector unsigned short *__b) {
11292*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned short)(0), vec_ld(__a, __b),
11293*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11294*344a7f5eSAndroid Build Coastguard Worker }
11295*344a7f5eSAndroid Build Coastguard Worker 
11296*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_lvrx(int __a,const vector bool short * __b)11297*344a7f5eSAndroid Build Coastguard Worker vec_lvrx(int __a, const vector bool short *__b) {
11298*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector bool short)(0), vec_ld(__a, __b),
11299*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11300*344a7f5eSAndroid Build Coastguard Worker }
11301*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrx(int __a,const vector pixel * __b)11302*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_lvrx(int __a,
11303*344a7f5eSAndroid Build Coastguard Worker                                                      const vector pixel *__b) {
11304*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector pixel)(0), vec_ld(__a, __b),
11305*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11306*344a7f5eSAndroid Build Coastguard Worker }
11307*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrx(int __a,const int * __b)11308*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a, const int *__b) {
11309*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector int)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
11310*344a7f5eSAndroid Build Coastguard Worker }
11311*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrx(int __a,const vector int * __b)11312*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvrx(int __a,
11313*344a7f5eSAndroid Build Coastguard Worker                                                    const vector int *__b) {
11314*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector int)(0), vec_ld(__a, __b),
11315*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11316*344a7f5eSAndroid Build Coastguard Worker }
11317*344a7f5eSAndroid Build Coastguard Worker 
11318*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvrx(int __a,const unsigned int * __b)11319*344a7f5eSAndroid Build Coastguard Worker vec_lvrx(int __a, const unsigned int *__b) {
11320*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
11321*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11322*344a7f5eSAndroid Build Coastguard Worker }
11323*344a7f5eSAndroid Build Coastguard Worker 
11324*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvrx(int __a,const vector unsigned int * __b)11325*344a7f5eSAndroid Build Coastguard Worker vec_lvrx(int __a, const vector unsigned int *__b) {
11326*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned int)(0), vec_ld(__a, __b),
11327*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11328*344a7f5eSAndroid Build Coastguard Worker }
11329*344a7f5eSAndroid Build Coastguard Worker 
11330*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_lvrx(int __a,const vector bool int * __b)11331*344a7f5eSAndroid Build Coastguard Worker vec_lvrx(int __a, const vector bool int *__b) {
11332*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector bool int)(0), vec_ld(__a, __b),
11333*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11334*344a7f5eSAndroid Build Coastguard Worker }
11335*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrx(int __a,const float * __b)11336*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
11337*344a7f5eSAndroid Build Coastguard Worker                                                      const float *__b) {
11338*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector float)(0), vec_ld(__a, __b), vec_lvsl(__a, __b));
11339*344a7f5eSAndroid Build Coastguard Worker }
11340*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrx(int __a,const vector float * __b)11341*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvrx(int __a,
11342*344a7f5eSAndroid Build Coastguard Worker                                                      const vector float *__b) {
11343*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector float)(0), vec_ld(__a, __b),
11344*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11345*344a7f5eSAndroid Build Coastguard Worker }
11346*344a7f5eSAndroid Build Coastguard Worker 
11347*344a7f5eSAndroid Build Coastguard Worker /* vec_lvrxl */
11348*344a7f5eSAndroid Build Coastguard Worker 
11349*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvrxl(int __a,const signed char * __b)11350*344a7f5eSAndroid Build Coastguard Worker vec_lvrxl(int __a, const signed char *__b) {
11351*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
11352*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11353*344a7f5eSAndroid Build Coastguard Worker }
11354*344a7f5eSAndroid Build Coastguard Worker 
11355*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_lvrxl(int __a,const vector signed char * __b)11356*344a7f5eSAndroid Build Coastguard Worker vec_lvrxl(int __a, const vector signed char *__b) {
11357*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector signed char)(0), vec_ldl(__a, __b),
11358*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11359*344a7f5eSAndroid Build Coastguard Worker }
11360*344a7f5eSAndroid Build Coastguard Worker 
11361*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvrxl(int __a,const unsigned char * __b)11362*344a7f5eSAndroid Build Coastguard Worker vec_lvrxl(int __a, const unsigned char *__b) {
11363*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
11364*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11365*344a7f5eSAndroid Build Coastguard Worker }
11366*344a7f5eSAndroid Build Coastguard Worker 
11367*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_lvrxl(int __a,const vector unsigned char * __b)11368*344a7f5eSAndroid Build Coastguard Worker vec_lvrxl(int __a, const vector unsigned char *__b) {
11369*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned char)(0), vec_ldl(__a, __b),
11370*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11371*344a7f5eSAndroid Build Coastguard Worker }
11372*344a7f5eSAndroid Build Coastguard Worker 
11373*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool char __ATTRS_o_ai
vec_lvrxl(int __a,const vector bool char * __b)11374*344a7f5eSAndroid Build Coastguard Worker vec_lvrxl(int __a, const vector bool char *__b) {
11375*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector bool char)(0), vec_ldl(__a, __b),
11376*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11377*344a7f5eSAndroid Build Coastguard Worker }
11378*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrxl(int __a,const short * __b)11379*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
11380*344a7f5eSAndroid Build Coastguard Worker                                                       const short *__b) {
11381*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector short)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
11382*344a7f5eSAndroid Build Coastguard Worker }
11383*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrxl(int __a,const vector short * __b)11384*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_lvrxl(int __a,
11385*344a7f5eSAndroid Build Coastguard Worker                                                       const vector short *__b) {
11386*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector short)(0), vec_ldl(__a, __b),
11387*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11388*344a7f5eSAndroid Build Coastguard Worker }
11389*344a7f5eSAndroid Build Coastguard Worker 
11390*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvrxl(int __a,const unsigned short * __b)11391*344a7f5eSAndroid Build Coastguard Worker vec_lvrxl(int __a, const unsigned short *__b) {
11392*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
11393*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11394*344a7f5eSAndroid Build Coastguard Worker }
11395*344a7f5eSAndroid Build Coastguard Worker 
11396*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_lvrxl(int __a,const vector unsigned short * __b)11397*344a7f5eSAndroid Build Coastguard Worker vec_lvrxl(int __a, const vector unsigned short *__b) {
11398*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned short)(0), vec_ldl(__a, __b),
11399*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11400*344a7f5eSAndroid Build Coastguard Worker }
11401*344a7f5eSAndroid Build Coastguard Worker 
11402*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool short __ATTRS_o_ai
vec_lvrxl(int __a,const vector bool short * __b)11403*344a7f5eSAndroid Build Coastguard Worker vec_lvrxl(int __a, const vector bool short *__b) {
11404*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector bool short)(0), vec_ldl(__a, __b),
11405*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11406*344a7f5eSAndroid Build Coastguard Worker }
11407*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrxl(int __a,const vector pixel * __b)11408*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector pixel __ATTRS_o_ai vec_lvrxl(int __a,
11409*344a7f5eSAndroid Build Coastguard Worker                                                       const vector pixel *__b) {
11410*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector pixel)(0), vec_ldl(__a, __b),
11411*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11412*344a7f5eSAndroid Build Coastguard Worker }
11413*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrxl(int __a,const int * __b)11414*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a, const int *__b) {
11415*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector int)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
11416*344a7f5eSAndroid Build Coastguard Worker }
11417*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrxl(int __a,const vector int * __b)11418*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_lvrxl(int __a,
11419*344a7f5eSAndroid Build Coastguard Worker                                                     const vector int *__b) {
11420*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector int)(0), vec_ldl(__a, __b),
11421*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11422*344a7f5eSAndroid Build Coastguard Worker }
11423*344a7f5eSAndroid Build Coastguard Worker 
11424*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvrxl(int __a,const unsigned int * __b)11425*344a7f5eSAndroid Build Coastguard Worker vec_lvrxl(int __a, const unsigned int *__b) {
11426*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
11427*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, __b));
11428*344a7f5eSAndroid Build Coastguard Worker }
11429*344a7f5eSAndroid Build Coastguard Worker 
11430*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_lvrxl(int __a,const vector unsigned int * __b)11431*344a7f5eSAndroid Build Coastguard Worker vec_lvrxl(int __a, const vector unsigned int *__b) {
11432*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector unsigned int)(0), vec_ldl(__a, __b),
11433*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11434*344a7f5eSAndroid Build Coastguard Worker }
11435*344a7f5eSAndroid Build Coastguard Worker 
11436*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector bool int __ATTRS_o_ai
vec_lvrxl(int __a,const vector bool int * __b)11437*344a7f5eSAndroid Build Coastguard Worker vec_lvrxl(int __a, const vector bool int *__b) {
11438*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector bool int)(0), vec_ldl(__a, __b),
11439*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11440*344a7f5eSAndroid Build Coastguard Worker }
11441*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrxl(int __a,const float * __b)11442*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
11443*344a7f5eSAndroid Build Coastguard Worker                                                       const float *__b) {
11444*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector float)(0), vec_ldl(__a, __b), vec_lvsl(__a, __b));
11445*344a7f5eSAndroid Build Coastguard Worker }
11446*344a7f5eSAndroid Build Coastguard Worker 
vec_lvrxl(int __a,const vector float * __b)11447*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_lvrxl(int __a,
11448*344a7f5eSAndroid Build Coastguard Worker                                                       const vector float *__b) {
11449*344a7f5eSAndroid Build Coastguard Worker   return vec_perm((vector float)(0), vec_ldl(__a, __b),
11450*344a7f5eSAndroid Build Coastguard Worker                   vec_lvsl(__a, (unsigned char *)__b));
11451*344a7f5eSAndroid Build Coastguard Worker }
11452*344a7f5eSAndroid Build Coastguard Worker 
11453*344a7f5eSAndroid Build Coastguard Worker /* vec_stvlx */
11454*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector signed char __a,int __b,signed char * __c)11455*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
11456*344a7f5eSAndroid Build Coastguard Worker                                               signed char *__c) {
11457*344a7f5eSAndroid Build Coastguard Worker   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11458*344a7f5eSAndroid Build Coastguard Worker                 __c);
11459*344a7f5eSAndroid Build Coastguard Worker }
11460*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector signed char __a,int __b,vector signed char * __c)11461*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector signed char __a, int __b,
11462*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char *__c) {
11463*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11464*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11465*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11466*344a7f5eSAndroid Build Coastguard Worker }
11467*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector unsigned char __a,int __b,unsigned char * __c)11468*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
11469*344a7f5eSAndroid Build Coastguard Worker                                               unsigned char *__c) {
11470*344a7f5eSAndroid Build Coastguard Worker   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11471*344a7f5eSAndroid Build Coastguard Worker                 __c);
11472*344a7f5eSAndroid Build Coastguard Worker }
11473*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector unsigned char __a,int __b,vector unsigned char * __c)11474*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned char __a, int __b,
11475*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char *__c) {
11476*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11477*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11478*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11479*344a7f5eSAndroid Build Coastguard Worker }
11480*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector bool char __a,int __b,vector bool char * __c)11481*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool char __a, int __b,
11482*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char *__c) {
11483*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11484*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11485*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11486*344a7f5eSAndroid Build Coastguard Worker }
11487*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector short __a,int __b,short * __c)11488*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
11489*344a7f5eSAndroid Build Coastguard Worker                                               short *__c) {
11490*344a7f5eSAndroid Build Coastguard Worker   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11491*344a7f5eSAndroid Build Coastguard Worker                 __c);
11492*344a7f5eSAndroid Build Coastguard Worker }
11493*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector short __a,int __b,vector short * __c)11494*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector short __a, int __b,
11495*344a7f5eSAndroid Build Coastguard Worker                                               vector short *__c) {
11496*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11497*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11498*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11499*344a7f5eSAndroid Build Coastguard Worker }
11500*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector unsigned short __a,int __b,unsigned short * __c)11501*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
11502*344a7f5eSAndroid Build Coastguard Worker                                               int __b, unsigned short *__c) {
11503*344a7f5eSAndroid Build Coastguard Worker   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11504*344a7f5eSAndroid Build Coastguard Worker                 __c);
11505*344a7f5eSAndroid Build Coastguard Worker }
11506*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector unsigned short __a,int __b,vector unsigned short * __c)11507*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned short __a,
11508*344a7f5eSAndroid Build Coastguard Worker                                               int __b,
11509*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short *__c) {
11510*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11511*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11512*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11513*344a7f5eSAndroid Build Coastguard Worker }
11514*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector bool short __a,int __b,vector bool short * __c)11515*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool short __a, int __b,
11516*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short *__c) {
11517*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11518*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11519*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11520*344a7f5eSAndroid Build Coastguard Worker }
11521*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector pixel __a,int __b,vector pixel * __c)11522*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector pixel __a, int __b,
11523*344a7f5eSAndroid Build Coastguard Worker                                               vector pixel *__c) {
11524*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11525*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11526*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11527*344a7f5eSAndroid Build Coastguard Worker }
11528*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector int __a,int __b,int * __c)11529*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
11530*344a7f5eSAndroid Build Coastguard Worker                                               int *__c) {
11531*344a7f5eSAndroid Build Coastguard Worker   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11532*344a7f5eSAndroid Build Coastguard Worker                 __c);
11533*344a7f5eSAndroid Build Coastguard Worker }
11534*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector int __a,int __b,vector int * __c)11535*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector int __a, int __b,
11536*344a7f5eSAndroid Build Coastguard Worker                                               vector int *__c) {
11537*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11538*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11539*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11540*344a7f5eSAndroid Build Coastguard Worker }
11541*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector unsigned int __a,int __b,unsigned int * __c)11542*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
11543*344a7f5eSAndroid Build Coastguard Worker                                               unsigned int *__c) {
11544*344a7f5eSAndroid Build Coastguard Worker   return vec_st(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11545*344a7f5eSAndroid Build Coastguard Worker                 __c);
11546*344a7f5eSAndroid Build Coastguard Worker }
11547*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector unsigned int __a,int __b,vector unsigned int * __c)11548*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector unsigned int __a, int __b,
11549*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int *__c) {
11550*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11551*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11552*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11553*344a7f5eSAndroid Build Coastguard Worker }
11554*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector bool int __a,int __b,vector bool int * __c)11555*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector bool int __a, int __b,
11556*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int *__c) {
11557*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11558*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11559*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11560*344a7f5eSAndroid Build Coastguard Worker }
11561*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlx(vector float __a,int __b,vector float * __c)11562*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlx(vector float __a, int __b,
11563*344a7f5eSAndroid Build Coastguard Worker                                               vector float *__c) {
11564*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11565*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11566*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11567*344a7f5eSAndroid Build Coastguard Worker }
11568*344a7f5eSAndroid Build Coastguard Worker 
11569*344a7f5eSAndroid Build Coastguard Worker /* vec_stvlxl */
11570*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector signed char __a,int __b,signed char * __c)11571*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
11572*344a7f5eSAndroid Build Coastguard Worker                                                signed char *__c) {
11573*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11574*344a7f5eSAndroid Build Coastguard Worker                  __c);
11575*344a7f5eSAndroid Build Coastguard Worker }
11576*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector signed char __a,int __b,vector signed char * __c)11577*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector signed char __a, int __b,
11578*344a7f5eSAndroid Build Coastguard Worker                                                vector signed char *__c) {
11579*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11580*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11581*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11582*344a7f5eSAndroid Build Coastguard Worker }
11583*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector unsigned char __a,int __b,unsigned char * __c)11584*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
11585*344a7f5eSAndroid Build Coastguard Worker                                                int __b, unsigned char *__c) {
11586*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11587*344a7f5eSAndroid Build Coastguard Worker                  __c);
11588*344a7f5eSAndroid Build Coastguard Worker }
11589*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector unsigned char __a,int __b,vector unsigned char * __c)11590*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned char __a,
11591*344a7f5eSAndroid Build Coastguard Worker                                                int __b,
11592*344a7f5eSAndroid Build Coastguard Worker                                                vector unsigned char *__c) {
11593*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11594*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11595*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11596*344a7f5eSAndroid Build Coastguard Worker }
11597*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector bool char __a,int __b,vector bool char * __c)11598*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool char __a, int __b,
11599*344a7f5eSAndroid Build Coastguard Worker                                                vector bool char *__c) {
11600*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11601*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11602*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11603*344a7f5eSAndroid Build Coastguard Worker }
11604*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector short __a,int __b,short * __c)11605*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
11606*344a7f5eSAndroid Build Coastguard Worker                                                short *__c) {
11607*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11608*344a7f5eSAndroid Build Coastguard Worker                  __c);
11609*344a7f5eSAndroid Build Coastguard Worker }
11610*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector short __a,int __b,vector short * __c)11611*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector short __a, int __b,
11612*344a7f5eSAndroid Build Coastguard Worker                                                vector short *__c) {
11613*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11614*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11615*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11616*344a7f5eSAndroid Build Coastguard Worker }
11617*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector unsigned short __a,int __b,unsigned short * __c)11618*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
11619*344a7f5eSAndroid Build Coastguard Worker                                                int __b, unsigned short *__c) {
11620*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11621*344a7f5eSAndroid Build Coastguard Worker                  __c);
11622*344a7f5eSAndroid Build Coastguard Worker }
11623*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector unsigned short __a,int __b,vector unsigned short * __c)11624*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned short __a,
11625*344a7f5eSAndroid Build Coastguard Worker                                                int __b,
11626*344a7f5eSAndroid Build Coastguard Worker                                                vector unsigned short *__c) {
11627*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11628*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11629*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11630*344a7f5eSAndroid Build Coastguard Worker }
11631*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector bool short __a,int __b,vector bool short * __c)11632*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool short __a, int __b,
11633*344a7f5eSAndroid Build Coastguard Worker                                                vector bool short *__c) {
11634*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11635*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11636*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11637*344a7f5eSAndroid Build Coastguard Worker }
11638*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector pixel __a,int __b,vector pixel * __c)11639*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector pixel __a, int __b,
11640*344a7f5eSAndroid Build Coastguard Worker                                                vector pixel *__c) {
11641*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11642*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11643*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11644*344a7f5eSAndroid Build Coastguard Worker }
11645*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector int __a,int __b,int * __c)11646*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
11647*344a7f5eSAndroid Build Coastguard Worker                                                int *__c) {
11648*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11649*344a7f5eSAndroid Build Coastguard Worker                  __c);
11650*344a7f5eSAndroid Build Coastguard Worker }
11651*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector int __a,int __b,vector int * __c)11652*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector int __a, int __b,
11653*344a7f5eSAndroid Build Coastguard Worker                                                vector int *__c) {
11654*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11655*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11656*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11657*344a7f5eSAndroid Build Coastguard Worker }
11658*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector unsigned int __a,int __b,unsigned int * __c)11659*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
11660*344a7f5eSAndroid Build Coastguard Worker                                                unsigned int *__c) {
11661*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, __c)), __b,
11662*344a7f5eSAndroid Build Coastguard Worker                  __c);
11663*344a7f5eSAndroid Build Coastguard Worker }
11664*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector unsigned int __a,int __b,vector unsigned int * __c)11665*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector unsigned int __a, int __b,
11666*344a7f5eSAndroid Build Coastguard Worker                                                vector unsigned int *__c) {
11667*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11668*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11669*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11670*344a7f5eSAndroid Build Coastguard Worker }
11671*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector bool int __a,int __b,vector bool int * __c)11672*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector bool int __a, int __b,
11673*344a7f5eSAndroid Build Coastguard Worker                                                vector bool int *__c) {
11674*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11675*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11676*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11677*344a7f5eSAndroid Build Coastguard Worker }
11678*344a7f5eSAndroid Build Coastguard Worker 
vec_stvlxl(vector float __a,int __b,vector float * __c)11679*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvlxl(vector float __a, int __b,
11680*344a7f5eSAndroid Build Coastguard Worker                                                vector float *__c) {
11681*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11682*344a7f5eSAndroid Build Coastguard Worker       vec_perm(vec_lvrx(__b, __c), __a, vec_lvsr(__b, (unsigned char *)__c)),
11683*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11684*344a7f5eSAndroid Build Coastguard Worker }
11685*344a7f5eSAndroid Build Coastguard Worker 
11686*344a7f5eSAndroid Build Coastguard Worker /* vec_stvrx */
11687*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector signed char __a,int __b,signed char * __c)11688*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
11689*344a7f5eSAndroid Build Coastguard Worker                                               signed char *__c) {
11690*344a7f5eSAndroid Build Coastguard Worker   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11691*344a7f5eSAndroid Build Coastguard Worker                 __c);
11692*344a7f5eSAndroid Build Coastguard Worker }
11693*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector signed char __a,int __b,vector signed char * __c)11694*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector signed char __a, int __b,
11695*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char *__c) {
11696*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11697*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11698*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11699*344a7f5eSAndroid Build Coastguard Worker }
11700*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector unsigned char __a,int __b,unsigned char * __c)11701*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
11702*344a7f5eSAndroid Build Coastguard Worker                                               unsigned char *__c) {
11703*344a7f5eSAndroid Build Coastguard Worker   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11704*344a7f5eSAndroid Build Coastguard Worker                 __c);
11705*344a7f5eSAndroid Build Coastguard Worker }
11706*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector unsigned char __a,int __b,vector unsigned char * __c)11707*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned char __a, int __b,
11708*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char *__c) {
11709*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11710*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11711*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11712*344a7f5eSAndroid Build Coastguard Worker }
11713*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector bool char __a,int __b,vector bool char * __c)11714*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool char __a, int __b,
11715*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char *__c) {
11716*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11717*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11718*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11719*344a7f5eSAndroid Build Coastguard Worker }
11720*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector short __a,int __b,short * __c)11721*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
11722*344a7f5eSAndroid Build Coastguard Worker                                               short *__c) {
11723*344a7f5eSAndroid Build Coastguard Worker   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11724*344a7f5eSAndroid Build Coastguard Worker                 __c);
11725*344a7f5eSAndroid Build Coastguard Worker }
11726*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector short __a,int __b,vector short * __c)11727*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector short __a, int __b,
11728*344a7f5eSAndroid Build Coastguard Worker                                               vector short *__c) {
11729*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11730*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11731*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11732*344a7f5eSAndroid Build Coastguard Worker }
11733*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector unsigned short __a,int __b,unsigned short * __c)11734*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
11735*344a7f5eSAndroid Build Coastguard Worker                                               int __b, unsigned short *__c) {
11736*344a7f5eSAndroid Build Coastguard Worker   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11737*344a7f5eSAndroid Build Coastguard Worker                 __c);
11738*344a7f5eSAndroid Build Coastguard Worker }
11739*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector unsigned short __a,int __b,vector unsigned short * __c)11740*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned short __a,
11741*344a7f5eSAndroid Build Coastguard Worker                                               int __b,
11742*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short *__c) {
11743*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11744*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11745*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11746*344a7f5eSAndroid Build Coastguard Worker }
11747*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector bool short __a,int __b,vector bool short * __c)11748*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool short __a, int __b,
11749*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short *__c) {
11750*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11751*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11752*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11753*344a7f5eSAndroid Build Coastguard Worker }
11754*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector pixel __a,int __b,vector pixel * __c)11755*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector pixel __a, int __b,
11756*344a7f5eSAndroid Build Coastguard Worker                                               vector pixel *__c) {
11757*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11758*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11759*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11760*344a7f5eSAndroid Build Coastguard Worker }
11761*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector int __a,int __b,int * __c)11762*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
11763*344a7f5eSAndroid Build Coastguard Worker                                               int *__c) {
11764*344a7f5eSAndroid Build Coastguard Worker   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11765*344a7f5eSAndroid Build Coastguard Worker                 __c);
11766*344a7f5eSAndroid Build Coastguard Worker }
11767*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector int __a,int __b,vector int * __c)11768*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector int __a, int __b,
11769*344a7f5eSAndroid Build Coastguard Worker                                               vector int *__c) {
11770*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11771*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11772*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11773*344a7f5eSAndroid Build Coastguard Worker }
11774*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector unsigned int __a,int __b,unsigned int * __c)11775*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
11776*344a7f5eSAndroid Build Coastguard Worker                                               unsigned int *__c) {
11777*344a7f5eSAndroid Build Coastguard Worker   return vec_st(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11778*344a7f5eSAndroid Build Coastguard Worker                 __c);
11779*344a7f5eSAndroid Build Coastguard Worker }
11780*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector unsigned int __a,int __b,vector unsigned int * __c)11781*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector unsigned int __a, int __b,
11782*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int *__c) {
11783*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11784*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11785*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11786*344a7f5eSAndroid Build Coastguard Worker }
11787*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector bool int __a,int __b,vector bool int * __c)11788*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector bool int __a, int __b,
11789*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int *__c) {
11790*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11791*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11792*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11793*344a7f5eSAndroid Build Coastguard Worker }
11794*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrx(vector float __a,int __b,vector float * __c)11795*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrx(vector float __a, int __b,
11796*344a7f5eSAndroid Build Coastguard Worker                                               vector float *__c) {
11797*344a7f5eSAndroid Build Coastguard Worker   return vec_st(
11798*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11799*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11800*344a7f5eSAndroid Build Coastguard Worker }
11801*344a7f5eSAndroid Build Coastguard Worker 
11802*344a7f5eSAndroid Build Coastguard Worker /* vec_stvrxl */
11803*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector signed char __a,int __b,signed char * __c)11804*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
11805*344a7f5eSAndroid Build Coastguard Worker                                                signed char *__c) {
11806*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11807*344a7f5eSAndroid Build Coastguard Worker                  __c);
11808*344a7f5eSAndroid Build Coastguard Worker }
11809*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector signed char __a,int __b,vector signed char * __c)11810*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector signed char __a, int __b,
11811*344a7f5eSAndroid Build Coastguard Worker                                                vector signed char *__c) {
11812*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11813*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11814*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11815*344a7f5eSAndroid Build Coastguard Worker }
11816*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector unsigned char __a,int __b,unsigned char * __c)11817*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
11818*344a7f5eSAndroid Build Coastguard Worker                                                int __b, unsigned char *__c) {
11819*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11820*344a7f5eSAndroid Build Coastguard Worker                  __c);
11821*344a7f5eSAndroid Build Coastguard Worker }
11822*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector unsigned char __a,int __b,vector unsigned char * __c)11823*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned char __a,
11824*344a7f5eSAndroid Build Coastguard Worker                                                int __b,
11825*344a7f5eSAndroid Build Coastguard Worker                                                vector unsigned char *__c) {
11826*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11827*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11828*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11829*344a7f5eSAndroid Build Coastguard Worker }
11830*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector bool char __a,int __b,vector bool char * __c)11831*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool char __a, int __b,
11832*344a7f5eSAndroid Build Coastguard Worker                                                vector bool char *__c) {
11833*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11834*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11835*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11836*344a7f5eSAndroid Build Coastguard Worker }
11837*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector short __a,int __b,short * __c)11838*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
11839*344a7f5eSAndroid Build Coastguard Worker                                                short *__c) {
11840*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11841*344a7f5eSAndroid Build Coastguard Worker                  __c);
11842*344a7f5eSAndroid Build Coastguard Worker }
11843*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector short __a,int __b,vector short * __c)11844*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector short __a, int __b,
11845*344a7f5eSAndroid Build Coastguard Worker                                                vector short *__c) {
11846*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11847*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11848*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11849*344a7f5eSAndroid Build Coastguard Worker }
11850*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector unsigned short __a,int __b,unsigned short * __c)11851*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
11852*344a7f5eSAndroid Build Coastguard Worker                                                int __b, unsigned short *__c) {
11853*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11854*344a7f5eSAndroid Build Coastguard Worker                  __c);
11855*344a7f5eSAndroid Build Coastguard Worker }
11856*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector unsigned short __a,int __b,vector unsigned short * __c)11857*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned short __a,
11858*344a7f5eSAndroid Build Coastguard Worker                                                int __b,
11859*344a7f5eSAndroid Build Coastguard Worker                                                vector unsigned short *__c) {
11860*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11861*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11862*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11863*344a7f5eSAndroid Build Coastguard Worker }
11864*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector bool short __a,int __b,vector bool short * __c)11865*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool short __a, int __b,
11866*344a7f5eSAndroid Build Coastguard Worker                                                vector bool short *__c) {
11867*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11868*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11869*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11870*344a7f5eSAndroid Build Coastguard Worker }
11871*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector pixel __a,int __b,vector pixel * __c)11872*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector pixel __a, int __b,
11873*344a7f5eSAndroid Build Coastguard Worker                                                vector pixel *__c) {
11874*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11875*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11876*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11877*344a7f5eSAndroid Build Coastguard Worker }
11878*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector int __a,int __b,int * __c)11879*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
11880*344a7f5eSAndroid Build Coastguard Worker                                                int *__c) {
11881*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11882*344a7f5eSAndroid Build Coastguard Worker                  __c);
11883*344a7f5eSAndroid Build Coastguard Worker }
11884*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector int __a,int __b,vector int * __c)11885*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector int __a, int __b,
11886*344a7f5eSAndroid Build Coastguard Worker                                                vector int *__c) {
11887*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11888*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11889*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11890*344a7f5eSAndroid Build Coastguard Worker }
11891*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector unsigned int __a,int __b,unsigned int * __c)11892*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
11893*344a7f5eSAndroid Build Coastguard Worker                                                unsigned int *__c) {
11894*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, __c)), __b,
11895*344a7f5eSAndroid Build Coastguard Worker                  __c);
11896*344a7f5eSAndroid Build Coastguard Worker }
11897*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector unsigned int __a,int __b,vector unsigned int * __c)11898*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector unsigned int __a, int __b,
11899*344a7f5eSAndroid Build Coastguard Worker                                                vector unsigned int *__c) {
11900*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11901*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11902*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11903*344a7f5eSAndroid Build Coastguard Worker }
11904*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector bool int __a,int __b,vector bool int * __c)11905*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector bool int __a, int __b,
11906*344a7f5eSAndroid Build Coastguard Worker                                                vector bool int *__c) {
11907*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11908*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11909*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11910*344a7f5eSAndroid Build Coastguard Worker }
11911*344a7f5eSAndroid Build Coastguard Worker 
vec_stvrxl(vector float __a,int __b,vector float * __c)11912*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __ATTRS_o_ai vec_stvrxl(vector float __a, int __b,
11913*344a7f5eSAndroid Build Coastguard Worker                                                vector float *__c) {
11914*344a7f5eSAndroid Build Coastguard Worker   return vec_stl(
11915*344a7f5eSAndroid Build Coastguard Worker       vec_perm(__a, vec_lvlx(__b, __c), vec_lvsr(__b, (unsigned char *)__c)),
11916*344a7f5eSAndroid Build Coastguard Worker       __b, __c);
11917*344a7f5eSAndroid Build Coastguard Worker }
11918*344a7f5eSAndroid Build Coastguard Worker 
11919*344a7f5eSAndroid Build Coastguard Worker /* vec_promote */
11920*344a7f5eSAndroid Build Coastguard Worker 
vec_promote(signed char __a,int __b)11921*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai vec_promote(signed char __a,
11922*344a7f5eSAndroid Build Coastguard Worker                                                               int __b) {
11923*344a7f5eSAndroid Build Coastguard Worker   vector signed char __res = (vector signed char)(0);
11924*344a7f5eSAndroid Build Coastguard Worker   __res[__b] = __a;
11925*344a7f5eSAndroid Build Coastguard Worker   return __res;
11926*344a7f5eSAndroid Build Coastguard Worker }
11927*344a7f5eSAndroid Build Coastguard Worker 
11928*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_promote(unsigned char __a,int __b)11929*344a7f5eSAndroid Build Coastguard Worker vec_promote(unsigned char __a, int __b) {
11930*344a7f5eSAndroid Build Coastguard Worker   vector unsigned char __res = (vector unsigned char)(0);
11931*344a7f5eSAndroid Build Coastguard Worker   __res[__b] = __a;
11932*344a7f5eSAndroid Build Coastguard Worker   return __res;
11933*344a7f5eSAndroid Build Coastguard Worker }
11934*344a7f5eSAndroid Build Coastguard Worker 
vec_promote(short __a,int __b)11935*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_promote(short __a, int __b) {
11936*344a7f5eSAndroid Build Coastguard Worker   vector short __res = (vector short)(0);
11937*344a7f5eSAndroid Build Coastguard Worker   __res[__b] = __a;
11938*344a7f5eSAndroid Build Coastguard Worker   return __res;
11939*344a7f5eSAndroid Build Coastguard Worker }
11940*344a7f5eSAndroid Build Coastguard Worker 
11941*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_promote(unsigned short __a,int __b)11942*344a7f5eSAndroid Build Coastguard Worker vec_promote(unsigned short __a, int __b) {
11943*344a7f5eSAndroid Build Coastguard Worker   vector unsigned short __res = (vector unsigned short)(0);
11944*344a7f5eSAndroid Build Coastguard Worker   __res[__b] = __a;
11945*344a7f5eSAndroid Build Coastguard Worker   return __res;
11946*344a7f5eSAndroid Build Coastguard Worker }
11947*344a7f5eSAndroid Build Coastguard Worker 
vec_promote(int __a,int __b)11948*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_promote(int __a, int __b) {
11949*344a7f5eSAndroid Build Coastguard Worker   vector int __res = (vector int)(0);
11950*344a7f5eSAndroid Build Coastguard Worker   __res[__b] = __a;
11951*344a7f5eSAndroid Build Coastguard Worker   return __res;
11952*344a7f5eSAndroid Build Coastguard Worker }
11953*344a7f5eSAndroid Build Coastguard Worker 
vec_promote(unsigned int __a,int __b)11954*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai vec_promote(unsigned int __a,
11955*344a7f5eSAndroid Build Coastguard Worker                                                                int __b) {
11956*344a7f5eSAndroid Build Coastguard Worker   vector unsigned int __res = (vector unsigned int)(0);
11957*344a7f5eSAndroid Build Coastguard Worker   __res[__b] = __a;
11958*344a7f5eSAndroid Build Coastguard Worker   return __res;
11959*344a7f5eSAndroid Build Coastguard Worker }
11960*344a7f5eSAndroid Build Coastguard Worker 
vec_promote(float __a,int __b)11961*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_promote(float __a, int __b) {
11962*344a7f5eSAndroid Build Coastguard Worker   vector float __res = (vector float)(0);
11963*344a7f5eSAndroid Build Coastguard Worker   __res[__b] = __a;
11964*344a7f5eSAndroid Build Coastguard Worker   return __res;
11965*344a7f5eSAndroid Build Coastguard Worker }
11966*344a7f5eSAndroid Build Coastguard Worker 
11967*344a7f5eSAndroid Build Coastguard Worker /* vec_splats */
11968*344a7f5eSAndroid Build Coastguard Worker 
vec_splats(signed char __a)11969*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai vec_splats(signed char __a) {
11970*344a7f5eSAndroid Build Coastguard Worker   return (vector signed char)(__a);
11971*344a7f5eSAndroid Build Coastguard Worker }
11972*344a7f5eSAndroid Build Coastguard Worker 
11973*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_splats(unsigned char __a)11974*344a7f5eSAndroid Build Coastguard Worker vec_splats(unsigned char __a) {
11975*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned char)(__a);
11976*344a7f5eSAndroid Build Coastguard Worker }
11977*344a7f5eSAndroid Build Coastguard Worker 
vec_splats(short __a)11978*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector short __ATTRS_o_ai vec_splats(short __a) {
11979*344a7f5eSAndroid Build Coastguard Worker   return (vector short)(__a);
11980*344a7f5eSAndroid Build Coastguard Worker }
11981*344a7f5eSAndroid Build Coastguard Worker 
11982*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
vec_splats(unsigned short __a)11983*344a7f5eSAndroid Build Coastguard Worker vec_splats(unsigned short __a) {
11984*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)(__a);
11985*344a7f5eSAndroid Build Coastguard Worker }
11986*344a7f5eSAndroid Build Coastguard Worker 
vec_splats(int __a)11987*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector int __ATTRS_o_ai vec_splats(int __a) {
11988*344a7f5eSAndroid Build Coastguard Worker   return (vector int)(__a);
11989*344a7f5eSAndroid Build Coastguard Worker }
11990*344a7f5eSAndroid Build Coastguard Worker 
11991*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
vec_splats(unsigned int __a)11992*344a7f5eSAndroid Build Coastguard Worker vec_splats(unsigned int __a) {
11993*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)(__a);
11994*344a7f5eSAndroid Build Coastguard Worker }
11995*344a7f5eSAndroid Build Coastguard Worker 
11996*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
11997*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed long long __ATTRS_o_ai
vec_splats(signed long long __a)11998*344a7f5eSAndroid Build Coastguard Worker vec_splats(signed long long __a) {
11999*344a7f5eSAndroid Build Coastguard Worker   return (vector signed long long)(__a);
12000*344a7f5eSAndroid Build Coastguard Worker }
12001*344a7f5eSAndroid Build Coastguard Worker 
12002*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
vec_splats(unsigned long long __a)12003*344a7f5eSAndroid Build Coastguard Worker vec_splats(unsigned long long __a) {
12004*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)(__a);
12005*344a7f5eSAndroid Build Coastguard Worker }
12006*344a7f5eSAndroid Build Coastguard Worker 
12007*344a7f5eSAndroid Build Coastguard Worker #if defined(__POWER8_VECTOR__) && defined(__powerpc64__)
12008*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed __int128 __ATTRS_o_ai
vec_splats(signed __int128 __a)12009*344a7f5eSAndroid Build Coastguard Worker vec_splats(signed __int128 __a) {
12010*344a7f5eSAndroid Build Coastguard Worker   return (vector signed __int128)(__a);
12011*344a7f5eSAndroid Build Coastguard Worker }
12012*344a7f5eSAndroid Build Coastguard Worker 
12013*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned __int128 __ATTRS_o_ai
vec_splats(unsigned __int128 __a)12014*344a7f5eSAndroid Build Coastguard Worker vec_splats(unsigned __int128 __a) {
12015*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned __int128)(__a);
12016*344a7f5eSAndroid Build Coastguard Worker }
12017*344a7f5eSAndroid Build Coastguard Worker 
12018*344a7f5eSAndroid Build Coastguard Worker #endif
12019*344a7f5eSAndroid Build Coastguard Worker 
vec_splats(double __a)12020*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector double __ATTRS_o_ai vec_splats(double __a) {
12021*344a7f5eSAndroid Build Coastguard Worker   return (vector double)(__a);
12022*344a7f5eSAndroid Build Coastguard Worker }
12023*344a7f5eSAndroid Build Coastguard Worker #endif
12024*344a7f5eSAndroid Build Coastguard Worker 
vec_splats(float __a)12025*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector float __ATTRS_o_ai vec_splats(float __a) {
12026*344a7f5eSAndroid Build Coastguard Worker   return (vector float)(__a);
12027*344a7f5eSAndroid Build Coastguard Worker }
12028*344a7f5eSAndroid Build Coastguard Worker 
12029*344a7f5eSAndroid Build Coastguard Worker /* ----------------------------- predicates --------------------------------- */
12030*344a7f5eSAndroid Build Coastguard Worker 
12031*344a7f5eSAndroid Build Coastguard Worker /* vec_all_eq */
12032*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector signed char __a,vector signed char __b)12033*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
12034*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
12035*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12036*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12037*344a7f5eSAndroid Build Coastguard Worker }
12038*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector signed char __a,vector bool char __b)12039*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed char __a,
12040*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12041*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12042*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12043*344a7f5eSAndroid Build Coastguard Worker }
12044*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector unsigned char __a,vector unsigned char __b)12045*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
12046*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
12047*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12048*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12049*344a7f5eSAndroid Build Coastguard Worker }
12050*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector unsigned char __a,vector bool char __b)12051*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned char __a,
12052*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12053*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12054*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12055*344a7f5eSAndroid Build Coastguard Worker }
12056*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector bool char __a,vector signed char __b)12057*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
12058*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
12059*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12060*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12061*344a7f5eSAndroid Build Coastguard Worker }
12062*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector bool char __a,vector unsigned char __b)12063*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
12064*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
12065*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12066*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12067*344a7f5eSAndroid Build Coastguard Worker }
12068*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector bool char __a,vector bool char __b)12069*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool char __a,
12070*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12071*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT, (vector char)__a,
12072*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12073*344a7f5eSAndroid Build Coastguard Worker }
12074*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector short __a,vector short __b)12075*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
12076*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
12077*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, __b);
12078*344a7f5eSAndroid Build Coastguard Worker }
12079*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector short __a,vector bool short __b)12080*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector short __a,
12081*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12082*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT, __a, (vector short)__b);
12083*344a7f5eSAndroid Build Coastguard Worker }
12084*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector unsigned short __a,vector unsigned short __b)12085*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
12086*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
12087*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12088*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
12089*344a7f5eSAndroid Build Coastguard Worker }
12090*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector unsigned short __a,vector bool short __b)12091*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned short __a,
12092*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12093*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12094*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
12095*344a7f5eSAndroid Build Coastguard Worker }
12096*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector bool short __a,vector short __b)12097*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
12098*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
12099*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12100*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
12101*344a7f5eSAndroid Build Coastguard Worker }
12102*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector bool short __a,vector unsigned short __b)12103*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
12104*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
12105*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12106*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
12107*344a7f5eSAndroid Build Coastguard Worker }
12108*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector bool short __a,vector bool short __b)12109*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool short __a,
12110*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12111*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12112*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
12113*344a7f5eSAndroid Build Coastguard Worker }
12114*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector pixel __a,vector pixel __b)12115*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector pixel __a,
12116*344a7f5eSAndroid Build Coastguard Worker                                               vector pixel __b) {
12117*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT, (vector short)__a,
12118*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
12119*344a7f5eSAndroid Build Coastguard Worker }
12120*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector int __a,vector int __b)12121*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a, vector int __b) {
12122*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, __b);
12123*344a7f5eSAndroid Build Coastguard Worker }
12124*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector int __a,vector bool int __b)12125*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector int __a,
12126*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12127*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT, __a, (vector int)__b);
12128*344a7f5eSAndroid Build Coastguard Worker }
12129*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector unsigned int __a,vector unsigned int __b)12130*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
12131*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
12132*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12133*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
12134*344a7f5eSAndroid Build Coastguard Worker }
12135*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector unsigned int __a,vector bool int __b)12136*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned int __a,
12137*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12138*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12139*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
12140*344a7f5eSAndroid Build Coastguard Worker }
12141*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector bool int __a,vector int __b)12142*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
12143*344a7f5eSAndroid Build Coastguard Worker                                               vector int __b) {
12144*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12145*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
12146*344a7f5eSAndroid Build Coastguard Worker }
12147*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector bool int __a,vector unsigned int __b)12148*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
12149*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
12150*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12151*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
12152*344a7f5eSAndroid Build Coastguard Worker }
12153*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector bool int __a,vector bool int __b)12154*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool int __a,
12155*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12156*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT, (vector int)__a,
12157*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
12158*344a7f5eSAndroid Build Coastguard Worker }
12159*344a7f5eSAndroid Build Coastguard Worker 
12160*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_all_eq(vector signed long long __a,vector signed long long __b)12161*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector signed long long __a,
12162*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
12163*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, __b);
12164*344a7f5eSAndroid Build Coastguard Worker }
12165*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector long long __a,vector bool long long __b)12166*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector long long __a,
12167*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12168*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_LT, __a, (vector long long)__b);
12169*344a7f5eSAndroid Build Coastguard Worker }
12170*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector unsigned long long __a,vector unsigned long long __b)12171*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
12172*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
12173*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12174*344a7f5eSAndroid Build Coastguard Worker                                       (vector long long)__b);
12175*344a7f5eSAndroid Build Coastguard Worker }
12176*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector unsigned long long __a,vector bool long long __b)12177*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector unsigned long long __a,
12178*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12179*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12180*344a7f5eSAndroid Build Coastguard Worker                                       (vector long long)__b);
12181*344a7f5eSAndroid Build Coastguard Worker }
12182*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector bool long long __a,vector long long __b)12183*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
12184*344a7f5eSAndroid Build Coastguard Worker                                               vector long long __b) {
12185*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12186*344a7f5eSAndroid Build Coastguard Worker                                       (vector long long)__b);
12187*344a7f5eSAndroid Build Coastguard Worker }
12188*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector bool long long __a,vector unsigned long long __b)12189*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
12190*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
12191*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12192*344a7f5eSAndroid Build Coastguard Worker                                       (vector long long)__b);
12193*344a7f5eSAndroid Build Coastguard Worker }
12194*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector bool long long __a,vector bool long long __b)12195*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector bool long long __a,
12196*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12197*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_LT, (vector long long)__a,
12198*344a7f5eSAndroid Build Coastguard Worker                                       (vector long long)__b);
12199*344a7f5eSAndroid Build Coastguard Worker }
12200*344a7f5eSAndroid Build Coastguard Worker #endif
12201*344a7f5eSAndroid Build Coastguard Worker 
vec_all_eq(vector float __a,vector float __b)12202*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector float __a,
12203*344a7f5eSAndroid Build Coastguard Worker                                               vector float __b) {
12204*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
12205*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpeqsp_p(__CR6_LT, __a, __b);
12206*344a7f5eSAndroid Build Coastguard Worker #else
12207*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __b);
12208*344a7f5eSAndroid Build Coastguard Worker #endif
12209*344a7f5eSAndroid Build Coastguard Worker }
12210*344a7f5eSAndroid Build Coastguard Worker 
12211*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_all_eq(vector double __a,vector double __b)12212*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_eq(vector double __a,
12213*344a7f5eSAndroid Build Coastguard Worker                                               vector double __b) {
12214*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpeqdp_p(__CR6_LT, __a, __b);
12215*344a7f5eSAndroid Build Coastguard Worker }
12216*344a7f5eSAndroid Build Coastguard Worker #endif
12217*344a7f5eSAndroid Build Coastguard Worker 
12218*344a7f5eSAndroid Build Coastguard Worker /* vec_all_ge */
12219*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector signed char __a,vector signed char __b)12220*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
12221*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
12222*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __b, __a);
12223*344a7f5eSAndroid Build Coastguard Worker }
12224*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector signed char __a,vector bool char __b)12225*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed char __a,
12226*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12227*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, (vector signed char)__b, __a);
12228*344a7f5eSAndroid Build Coastguard Worker }
12229*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector unsigned char __a,vector unsigned char __b)12230*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
12231*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
12232*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, __a);
12233*344a7f5eSAndroid Build Coastguard Worker }
12234*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector unsigned char __a,vector bool char __b)12235*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned char __a,
12236*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12237*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b, __a);
12238*344a7f5eSAndroid Build Coastguard Worker }
12239*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector bool char __a,vector signed char __b)12240*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
12241*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
12242*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
12243*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__a);
12244*344a7f5eSAndroid Build Coastguard Worker }
12245*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector bool char __a,vector unsigned char __b)12246*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
12247*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
12248*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __b, (vector unsigned char)__a);
12249*344a7f5eSAndroid Build Coastguard Worker }
12250*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector bool char __a,vector bool char __b)12251*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool char __a,
12252*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12253*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__b,
12254*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__a);
12255*344a7f5eSAndroid Build Coastguard Worker }
12256*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector short __a,vector short __b)12257*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
12258*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
12259*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __b, __a);
12260*344a7f5eSAndroid Build Coastguard Worker }
12261*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector short __a,vector bool short __b)12262*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector short __a,
12263*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12264*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, (vector short)__b, __a);
12265*344a7f5eSAndroid Build Coastguard Worker }
12266*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector unsigned short __a,vector unsigned short __b)12267*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
12268*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
12269*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b, __a);
12270*344a7f5eSAndroid Build Coastguard Worker }
12271*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector unsigned short __a,vector bool short __b)12272*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned short __a,
12273*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12274*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
12275*344a7f5eSAndroid Build Coastguard Worker                                       __a);
12276*344a7f5eSAndroid Build Coastguard Worker }
12277*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector bool short __a,vector short __b)12278*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
12279*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
12280*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
12281*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__a);
12282*344a7f5eSAndroid Build Coastguard Worker }
12283*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector bool short __a,vector unsigned short __b)12284*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
12285*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
12286*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __b,
12287*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__a);
12288*344a7f5eSAndroid Build Coastguard Worker }
12289*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector bool short __a,vector bool short __b)12290*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool short __a,
12291*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12292*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__b,
12293*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__a);
12294*344a7f5eSAndroid Build Coastguard Worker }
12295*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector int __a,vector int __b)12296*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a, vector int __b) {
12297*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __b, __a);
12298*344a7f5eSAndroid Build Coastguard Worker }
12299*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector int __a,vector bool int __b)12300*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector int __a,
12301*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12302*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, (vector int)__b, __a);
12303*344a7f5eSAndroid Build Coastguard Worker }
12304*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector unsigned int __a,vector unsigned int __b)12305*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
12306*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
12307*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, __a);
12308*344a7f5eSAndroid Build Coastguard Worker }
12309*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector unsigned int __a,vector bool int __b)12310*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned int __a,
12311*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12312*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b, __a);
12313*344a7f5eSAndroid Build Coastguard Worker }
12314*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector bool int __a,vector int __b)12315*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
12316*344a7f5eSAndroid Build Coastguard Worker                                               vector int __b) {
12317*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
12318*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__a);
12319*344a7f5eSAndroid Build Coastguard Worker }
12320*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector bool int __a,vector unsigned int __b)12321*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
12322*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
12323*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __b, (vector unsigned int)__a);
12324*344a7f5eSAndroid Build Coastguard Worker }
12325*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector bool int __a,vector bool int __b)12326*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool int __a,
12327*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12328*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__b,
12329*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__a);
12330*344a7f5eSAndroid Build Coastguard Worker }
12331*344a7f5eSAndroid Build Coastguard Worker 
12332*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_all_ge(vector signed long long __a,vector signed long long __b)12333*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
12334*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
12335*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __b, __a);
12336*344a7f5eSAndroid Build Coastguard Worker }
vec_all_ge(vector signed long long __a,vector bool long long __b)12337*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector signed long long __a,
12338*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12339*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, (vector signed long long)__b,
12340*344a7f5eSAndroid Build Coastguard Worker                                       __a);
12341*344a7f5eSAndroid Build Coastguard Worker }
12342*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector unsigned long long __a,vector unsigned long long __b)12343*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
12344*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
12345*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b, __a);
12346*344a7f5eSAndroid Build Coastguard Worker }
12347*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector unsigned long long __a,vector bool long long __b)12348*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector unsigned long long __a,
12349*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12350*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
12351*344a7f5eSAndroid Build Coastguard Worker                                       __a);
12352*344a7f5eSAndroid Build Coastguard Worker }
12353*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector bool long long __a,vector signed long long __b)12354*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
12355*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
12356*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
12357*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a);
12358*344a7f5eSAndroid Build Coastguard Worker }
12359*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector bool long long __a,vector unsigned long long __b)12360*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
12361*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
12362*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __b,
12363*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a);
12364*344a7f5eSAndroid Build Coastguard Worker }
12365*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector bool long long __a,vector bool long long __b)12366*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector bool long long __a,
12367*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12368*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__b,
12369*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a);
12370*344a7f5eSAndroid Build Coastguard Worker }
12371*344a7f5eSAndroid Build Coastguard Worker #endif
12372*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ge(vector float __a,vector float __b)12373*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector float __a,
12374*344a7f5eSAndroid Build Coastguard Worker                                               vector float __b) {
12375*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
12376*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __a, __b);
12377*344a7f5eSAndroid Build Coastguard Worker #else
12378*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgefp_p(__CR6_LT, __a, __b);
12379*344a7f5eSAndroid Build Coastguard Worker #endif
12380*344a7f5eSAndroid Build Coastguard Worker }
12381*344a7f5eSAndroid Build Coastguard Worker 
12382*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_all_ge(vector double __a,vector double __b)12383*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ge(vector double __a,
12384*344a7f5eSAndroid Build Coastguard Worker                                               vector double __b) {
12385*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __a, __b);
12386*344a7f5eSAndroid Build Coastguard Worker }
12387*344a7f5eSAndroid Build Coastguard Worker #endif
12388*344a7f5eSAndroid Build Coastguard Worker 
12389*344a7f5eSAndroid Build Coastguard Worker /* vec_all_gt */
12390*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector signed char __a,vector signed char __b)12391*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
12392*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
12393*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, __b);
12394*344a7f5eSAndroid Build Coastguard Worker }
12395*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector signed char __a,vector bool char __b)12396*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed char __a,
12397*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12398*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __a, (vector signed char)__b);
12399*344a7f5eSAndroid Build Coastguard Worker }
12400*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector unsigned char __a,vector unsigned char __b)12401*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
12402*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
12403*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, __b);
12404*344a7f5eSAndroid Build Coastguard Worker }
12405*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector unsigned char __a,vector bool char __b)12406*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned char __a,
12407*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12408*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __a, (vector unsigned char)__b);
12409*344a7f5eSAndroid Build Coastguard Worker }
12410*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector bool char __a,vector signed char __b)12411*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
12412*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
12413*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
12414*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__b);
12415*344a7f5eSAndroid Build Coastguard Worker }
12416*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector bool char __a,vector unsigned char __b)12417*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
12418*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
12419*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a, __b);
12420*344a7f5eSAndroid Build Coastguard Worker }
12421*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector bool char __a,vector bool char __b)12422*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool char __a,
12423*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12424*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__a,
12425*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__b);
12426*344a7f5eSAndroid Build Coastguard Worker }
12427*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector short __a,vector short __b)12428*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
12429*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
12430*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, __b);
12431*344a7f5eSAndroid Build Coastguard Worker }
12432*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector short __a,vector bool short __b)12433*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector short __a,
12434*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12435*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __a, (vector short)__b);
12436*344a7f5eSAndroid Build Coastguard Worker }
12437*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector unsigned short __a,vector unsigned short __b)12438*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
12439*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
12440*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a, __b);
12441*344a7f5eSAndroid Build Coastguard Worker }
12442*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector unsigned short __a,vector bool short __b)12443*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned short __a,
12444*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12445*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __a,
12446*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__b);
12447*344a7f5eSAndroid Build Coastguard Worker }
12448*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector bool short __a,vector short __b)12449*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
12450*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
12451*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
12452*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__b);
12453*344a7f5eSAndroid Build Coastguard Worker }
12454*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector bool short __a,vector unsigned short __b)12455*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
12456*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
12457*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
12458*344a7f5eSAndroid Build Coastguard Worker                                       __b);
12459*344a7f5eSAndroid Build Coastguard Worker }
12460*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector bool short __a,vector bool short __b)12461*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool short __a,
12462*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12463*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__a,
12464*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__b);
12465*344a7f5eSAndroid Build Coastguard Worker }
12466*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector int __a,vector int __b)12467*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a, vector int __b) {
12468*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, __b);
12469*344a7f5eSAndroid Build Coastguard Worker }
12470*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector int __a,vector bool int __b)12471*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector int __a,
12472*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12473*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __a, (vector int)__b);
12474*344a7f5eSAndroid Build Coastguard Worker }
12475*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector unsigned int __a,vector unsigned int __b)12476*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
12477*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
12478*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, __b);
12479*344a7f5eSAndroid Build Coastguard Worker }
12480*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector unsigned int __a,vector bool int __b)12481*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned int __a,
12482*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12483*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __a, (vector unsigned int)__b);
12484*344a7f5eSAndroid Build Coastguard Worker }
12485*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector bool int __a,vector int __b)12486*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
12487*344a7f5eSAndroid Build Coastguard Worker                                               vector int __b) {
12488*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
12489*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__b);
12490*344a7f5eSAndroid Build Coastguard Worker }
12491*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector bool int __a,vector unsigned int __b)12492*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
12493*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
12494*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a, __b);
12495*344a7f5eSAndroid Build Coastguard Worker }
12496*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector bool int __a,vector bool int __b)12497*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool int __a,
12498*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12499*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__a,
12500*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__b);
12501*344a7f5eSAndroid Build Coastguard Worker }
12502*344a7f5eSAndroid Build Coastguard Worker 
12503*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_all_gt(vector signed long long __a,vector signed long long __b)12504*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
12505*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
12506*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a, __b);
12507*344a7f5eSAndroid Build Coastguard Worker }
vec_all_gt(vector signed long long __a,vector bool long long __b)12508*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector signed long long __a,
12509*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12510*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __a,
12511*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b);
12512*344a7f5eSAndroid Build Coastguard Worker }
12513*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector unsigned long long __a,vector unsigned long long __b)12514*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
12515*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
12516*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a, __b);
12517*344a7f5eSAndroid Build Coastguard Worker }
12518*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector unsigned long long __a,vector bool long long __b)12519*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector unsigned long long __a,
12520*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12521*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __a,
12522*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b);
12523*344a7f5eSAndroid Build Coastguard Worker }
12524*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector bool long long __a,vector signed long long __b)12525*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
12526*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
12527*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
12528*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b);
12529*344a7f5eSAndroid Build Coastguard Worker }
12530*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector bool long long __a,vector unsigned long long __b)12531*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
12532*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
12533*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
12534*344a7f5eSAndroid Build Coastguard Worker                                       __b);
12535*344a7f5eSAndroid Build Coastguard Worker }
12536*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector bool long long __a,vector bool long long __b)12537*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector bool long long __a,
12538*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12539*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__a,
12540*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b);
12541*344a7f5eSAndroid Build Coastguard Worker }
12542*344a7f5eSAndroid Build Coastguard Worker #endif
12543*344a7f5eSAndroid Build Coastguard Worker 
vec_all_gt(vector float __a,vector float __b)12544*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector float __a,
12545*344a7f5eSAndroid Build Coastguard Worker                                               vector float __b) {
12546*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
12547*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __a, __b);
12548*344a7f5eSAndroid Build Coastguard Worker #else
12549*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __a, __b);
12550*344a7f5eSAndroid Build Coastguard Worker #endif
12551*344a7f5eSAndroid Build Coastguard Worker }
12552*344a7f5eSAndroid Build Coastguard Worker 
12553*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_all_gt(vector double __a,vector double __b)12554*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_gt(vector double __a,
12555*344a7f5eSAndroid Build Coastguard Worker                                               vector double __b) {
12556*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __a, __b);
12557*344a7f5eSAndroid Build Coastguard Worker }
12558*344a7f5eSAndroid Build Coastguard Worker #endif
12559*344a7f5eSAndroid Build Coastguard Worker 
12560*344a7f5eSAndroid Build Coastguard Worker /* vec_all_in */
12561*344a7f5eSAndroid Build Coastguard Worker 
12562*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__))
vec_all_in(vector float __a,vector float __b)12563*344a7f5eSAndroid Build Coastguard Worker vec_all_in(vector float __a, vector float __b) {
12564*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpbfp_p(__CR6_EQ, __a, __b);
12565*344a7f5eSAndroid Build Coastguard Worker }
12566*344a7f5eSAndroid Build Coastguard Worker 
12567*344a7f5eSAndroid Build Coastguard Worker /* vec_all_le */
12568*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector signed char __a,vector signed char __b)12569*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
12570*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
12571*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, __b);
12572*344a7f5eSAndroid Build Coastguard Worker }
12573*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector signed char __a,vector bool char __b)12574*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector signed char __a,
12575*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12576*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ, __a, (vector signed char)__b);
12577*344a7f5eSAndroid Build Coastguard Worker }
12578*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector unsigned char __a,vector unsigned char __b)12579*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
12580*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
12581*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, __b);
12582*344a7f5eSAndroid Build Coastguard Worker }
12583*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector unsigned char __a,vector bool char __b)12584*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned char __a,
12585*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12586*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, __a, (vector unsigned char)__b);
12587*344a7f5eSAndroid Build Coastguard Worker }
12588*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector bool char __a,vector signed char __b)12589*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
12590*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
12591*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
12592*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__b);
12593*344a7f5eSAndroid Build Coastguard Worker }
12594*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector bool char __a,vector unsigned char __b)12595*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
12596*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
12597*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a, __b);
12598*344a7f5eSAndroid Build Coastguard Worker }
12599*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector bool char __a,vector bool char __b)12600*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector bool char __a,
12601*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12602*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ, (vector unsigned char)__a,
12603*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__b);
12604*344a7f5eSAndroid Build Coastguard Worker }
12605*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector short __a,vector short __b)12606*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
12607*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
12608*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, __b);
12609*344a7f5eSAndroid Build Coastguard Worker }
12610*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector short __a,vector bool short __b)12611*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector short __a,
12612*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12613*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ, __a, (vector short)__b);
12614*344a7f5eSAndroid Build Coastguard Worker }
12615*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector unsigned short __a,vector unsigned short __b)12616*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
12617*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
12618*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a, __b);
12619*344a7f5eSAndroid Build Coastguard Worker }
12620*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector unsigned short __a,vector bool short __b)12621*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned short __a,
12622*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12623*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, __a,
12624*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__b);
12625*344a7f5eSAndroid Build Coastguard Worker }
12626*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector bool short __a,vector short __b)12627*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
12628*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
12629*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
12630*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__b);
12631*344a7f5eSAndroid Build Coastguard Worker }
12632*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector bool short __a,vector unsigned short __b)12633*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
12634*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
12635*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
12636*344a7f5eSAndroid Build Coastguard Worker                                       __b);
12637*344a7f5eSAndroid Build Coastguard Worker }
12638*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector bool short __a,vector bool short __b)12639*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector bool short __a,
12640*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12641*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ, (vector unsigned short)__a,
12642*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__b);
12643*344a7f5eSAndroid Build Coastguard Worker }
12644*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector int __a,vector int __b)12645*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a, vector int __b) {
12646*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, __b);
12647*344a7f5eSAndroid Build Coastguard Worker }
12648*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector int __a,vector bool int __b)12649*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector int __a,
12650*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12651*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ, __a, (vector int)__b);
12652*344a7f5eSAndroid Build Coastguard Worker }
12653*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector unsigned int __a,vector unsigned int __b)12654*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
12655*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
12656*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, __b);
12657*344a7f5eSAndroid Build Coastguard Worker }
12658*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector unsigned int __a,vector bool int __b)12659*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned int __a,
12660*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12661*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, __a, (vector unsigned int)__b);
12662*344a7f5eSAndroid Build Coastguard Worker }
12663*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector bool int __a,vector int __b)12664*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
12665*344a7f5eSAndroid Build Coastguard Worker                                               vector int __b) {
12666*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
12667*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__b);
12668*344a7f5eSAndroid Build Coastguard Worker }
12669*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector bool int __a,vector unsigned int __b)12670*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
12671*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
12672*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a, __b);
12673*344a7f5eSAndroid Build Coastguard Worker }
12674*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector bool int __a,vector bool int __b)12675*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector bool int __a,
12676*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12677*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ, (vector unsigned int)__a,
12678*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__b);
12679*344a7f5eSAndroid Build Coastguard Worker }
12680*344a7f5eSAndroid Build Coastguard Worker 
12681*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_all_le(vector signed long long __a,vector signed long long __b)12682*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
12683*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
12684*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a, __b);
12685*344a7f5eSAndroid Build Coastguard Worker }
12686*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector unsigned long long __a,vector unsigned long long __b)12687*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
12688*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
12689*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a, __b);
12690*344a7f5eSAndroid Build Coastguard Worker }
12691*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector signed long long __a,vector bool long long __b)12692*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector signed long long __a,
12693*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12694*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ, __a,
12695*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b);
12696*344a7f5eSAndroid Build Coastguard Worker }
12697*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector unsigned long long __a,vector bool long long __b)12698*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector unsigned long long __a,
12699*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12700*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, __a,
12701*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b);
12702*344a7f5eSAndroid Build Coastguard Worker }
12703*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector bool long long __a,vector signed long long __b)12704*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
12705*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
12706*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
12707*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b);
12708*344a7f5eSAndroid Build Coastguard Worker }
12709*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector bool long long __a,vector unsigned long long __b)12710*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
12711*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
12712*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
12713*344a7f5eSAndroid Build Coastguard Worker                                       __b);
12714*344a7f5eSAndroid Build Coastguard Worker }
12715*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector bool long long __a,vector bool long long __b)12716*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector bool long long __a,
12717*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12718*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ, (vector unsigned long long)__a,
12719*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b);
12720*344a7f5eSAndroid Build Coastguard Worker }
12721*344a7f5eSAndroid Build Coastguard Worker #endif
12722*344a7f5eSAndroid Build Coastguard Worker 
vec_all_le(vector float __a,vector float __b)12723*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector float __a,
12724*344a7f5eSAndroid Build Coastguard Worker                                               vector float __b) {
12725*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
12726*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgesp_p(__CR6_LT, __b, __a);
12727*344a7f5eSAndroid Build Coastguard Worker #else
12728*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgefp_p(__CR6_LT, __b, __a);
12729*344a7f5eSAndroid Build Coastguard Worker #endif
12730*344a7f5eSAndroid Build Coastguard Worker }
12731*344a7f5eSAndroid Build Coastguard Worker 
12732*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_all_le(vector double __a,vector double __b)12733*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_le(vector double __a,
12734*344a7f5eSAndroid Build Coastguard Worker                                               vector double __b) {
12735*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgedp_p(__CR6_LT, __b, __a);
12736*344a7f5eSAndroid Build Coastguard Worker }
12737*344a7f5eSAndroid Build Coastguard Worker #endif
12738*344a7f5eSAndroid Build Coastguard Worker 
12739*344a7f5eSAndroid Build Coastguard Worker /* vec_all_lt */
12740*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector signed char __a,vector signed char __b)12741*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
12742*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
12743*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, __b, __a);
12744*344a7f5eSAndroid Build Coastguard Worker }
12745*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector signed char __a,vector bool char __b)12746*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed char __a,
12747*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12748*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_LT, (vector signed char)__b, __a);
12749*344a7f5eSAndroid Build Coastguard Worker }
12750*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector unsigned char __a,vector unsigned char __b)12751*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
12752*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
12753*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, __a);
12754*344a7f5eSAndroid Build Coastguard Worker }
12755*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector unsigned char __a,vector bool char __b)12756*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned char __a,
12757*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12758*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b, __a);
12759*344a7f5eSAndroid Build Coastguard Worker }
12760*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector bool char __a,vector signed char __b)12761*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
12762*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
12763*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
12764*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__a);
12765*344a7f5eSAndroid Build Coastguard Worker }
12766*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector bool char __a,vector unsigned char __b)12767*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
12768*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
12769*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT, __b, (vector unsigned char)__a);
12770*344a7f5eSAndroid Build Coastguard Worker }
12771*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector bool char __a,vector bool char __b)12772*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool char __a,
12773*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12774*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT, (vector unsigned char)__b,
12775*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__a);
12776*344a7f5eSAndroid Build Coastguard Worker }
12777*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector short __a,vector short __b)12778*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
12779*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
12780*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, __b, __a);
12781*344a7f5eSAndroid Build Coastguard Worker }
12782*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector short __a,vector bool short __b)12783*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector short __a,
12784*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12785*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_LT, (vector short)__b, __a);
12786*344a7f5eSAndroid Build Coastguard Worker }
12787*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector unsigned short __a,vector unsigned short __b)12788*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
12789*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
12790*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b, __a);
12791*344a7f5eSAndroid Build Coastguard Worker }
12792*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector unsigned short __a,vector bool short __b)12793*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned short __a,
12794*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12795*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
12796*344a7f5eSAndroid Build Coastguard Worker                                       __a);
12797*344a7f5eSAndroid Build Coastguard Worker }
12798*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector bool short __a,vector short __b)12799*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
12800*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
12801*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
12802*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__a);
12803*344a7f5eSAndroid Build Coastguard Worker }
12804*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector bool short __a,vector unsigned short __b)12805*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
12806*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
12807*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, __b,
12808*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__a);
12809*344a7f5eSAndroid Build Coastguard Worker }
12810*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector bool short __a,vector bool short __b)12811*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool short __a,
12812*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12813*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT, (vector unsigned short)__b,
12814*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__a);
12815*344a7f5eSAndroid Build Coastguard Worker }
12816*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector int __a,vector int __b)12817*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a, vector int __b) {
12818*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, __b, __a);
12819*344a7f5eSAndroid Build Coastguard Worker }
12820*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector int __a,vector bool int __b)12821*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector int __a,
12822*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12823*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_LT, (vector int)__b, __a);
12824*344a7f5eSAndroid Build Coastguard Worker }
12825*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector unsigned int __a,vector unsigned int __b)12826*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
12827*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
12828*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, __a);
12829*344a7f5eSAndroid Build Coastguard Worker }
12830*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector unsigned int __a,vector bool int __b)12831*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned int __a,
12832*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12833*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b, __a);
12834*344a7f5eSAndroid Build Coastguard Worker }
12835*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector bool int __a,vector int __b)12836*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
12837*344a7f5eSAndroid Build Coastguard Worker                                               vector int __b) {
12838*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
12839*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__a);
12840*344a7f5eSAndroid Build Coastguard Worker }
12841*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector bool int __a,vector unsigned int __b)12842*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
12843*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
12844*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, __b, (vector unsigned int)__a);
12845*344a7f5eSAndroid Build Coastguard Worker }
12846*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector bool int __a,vector bool int __b)12847*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool int __a,
12848*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
12849*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT, (vector unsigned int)__b,
12850*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__a);
12851*344a7f5eSAndroid Build Coastguard Worker }
12852*344a7f5eSAndroid Build Coastguard Worker 
12853*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_all_lt(vector signed long long __a,vector signed long long __b)12854*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
12855*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
12856*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, __b, __a);
12857*344a7f5eSAndroid Build Coastguard Worker }
12858*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector unsigned long long __a,vector unsigned long long __b)12859*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
12860*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
12861*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b, __a);
12862*344a7f5eSAndroid Build Coastguard Worker }
12863*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector signed long long __a,vector bool long long __b)12864*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector signed long long __a,
12865*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12866*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_LT, (vector signed long long)__b,
12867*344a7f5eSAndroid Build Coastguard Worker                                       __a);
12868*344a7f5eSAndroid Build Coastguard Worker }
12869*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector unsigned long long __a,vector bool long long __b)12870*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector unsigned long long __a,
12871*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12872*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
12873*344a7f5eSAndroid Build Coastguard Worker                                       __a);
12874*344a7f5eSAndroid Build Coastguard Worker }
12875*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector bool long long __a,vector signed long long __b)12876*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
12877*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
12878*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
12879*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a);
12880*344a7f5eSAndroid Build Coastguard Worker }
12881*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector bool long long __a,vector unsigned long long __b)12882*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
12883*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
12884*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT, __b,
12885*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a);
12886*344a7f5eSAndroid Build Coastguard Worker }
12887*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector bool long long __a,vector bool long long __b)12888*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector bool long long __a,
12889*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
12890*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT, (vector unsigned long long)__b,
12891*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a);
12892*344a7f5eSAndroid Build Coastguard Worker }
12893*344a7f5eSAndroid Build Coastguard Worker #endif
12894*344a7f5eSAndroid Build Coastguard Worker 
vec_all_lt(vector float __a,vector float __b)12895*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector float __a,
12896*344a7f5eSAndroid Build Coastguard Worker                                               vector float __b) {
12897*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
12898*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgtsp_p(__CR6_LT, __b, __a);
12899*344a7f5eSAndroid Build Coastguard Worker #else
12900*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtfp_p(__CR6_LT, __b, __a);
12901*344a7f5eSAndroid Build Coastguard Worker #endif
12902*344a7f5eSAndroid Build Coastguard Worker }
12903*344a7f5eSAndroid Build Coastguard Worker 
12904*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_all_lt(vector double __a,vector double __b)12905*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_lt(vector double __a,
12906*344a7f5eSAndroid Build Coastguard Worker                                               vector double __b) {
12907*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgtdp_p(__CR6_LT, __b, __a);
12908*344a7f5eSAndroid Build Coastguard Worker }
12909*344a7f5eSAndroid Build Coastguard Worker #endif
12910*344a7f5eSAndroid Build Coastguard Worker 
12911*344a7f5eSAndroid Build Coastguard Worker /* vec_all_nan */
12912*344a7f5eSAndroid Build Coastguard Worker 
vec_all_nan(vector float __a)12913*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_nan(vector float __a) {
12914*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
12915*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ, __a, __a);
12916*344a7f5eSAndroid Build Coastguard Worker #else
12917*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __a);
12918*344a7f5eSAndroid Build Coastguard Worker #endif
12919*344a7f5eSAndroid Build Coastguard Worker }
12920*344a7f5eSAndroid Build Coastguard Worker 
12921*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_all_nan(vector double __a)12922*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_nan(vector double __a) {
12923*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __a);
12924*344a7f5eSAndroid Build Coastguard Worker }
12925*344a7f5eSAndroid Build Coastguard Worker #endif
12926*344a7f5eSAndroid Build Coastguard Worker 
12927*344a7f5eSAndroid Build Coastguard Worker /* vec_all_ne */
12928*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector signed char __a,vector signed char __b)12929*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
12930*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
12931*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12932*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12933*344a7f5eSAndroid Build Coastguard Worker }
12934*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector signed char __a,vector bool char __b)12935*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed char __a,
12936*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12937*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12938*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12939*344a7f5eSAndroid Build Coastguard Worker }
12940*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector unsigned char __a,vector unsigned char __b)12941*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
12942*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
12943*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12944*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12945*344a7f5eSAndroid Build Coastguard Worker }
12946*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector unsigned char __a,vector bool char __b)12947*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned char __a,
12948*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12949*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12950*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12951*344a7f5eSAndroid Build Coastguard Worker }
12952*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector bool char __a,vector signed char __b)12953*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
12954*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
12955*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12956*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12957*344a7f5eSAndroid Build Coastguard Worker }
12958*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector bool char __a,vector unsigned char __b)12959*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
12960*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
12961*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12962*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12963*344a7f5eSAndroid Build Coastguard Worker }
12964*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector bool char __a,vector bool char __b)12965*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool char __a,
12966*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
12967*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ, (vector char)__a,
12968*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
12969*344a7f5eSAndroid Build Coastguard Worker }
12970*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector short __a,vector short __b)12971*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
12972*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
12973*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, __b);
12974*344a7f5eSAndroid Build Coastguard Worker }
12975*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector short __a,vector bool short __b)12976*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector short __a,
12977*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12978*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ, __a, (vector short)__b);
12979*344a7f5eSAndroid Build Coastguard Worker }
12980*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector unsigned short __a,vector unsigned short __b)12981*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
12982*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
12983*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12984*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
12985*344a7f5eSAndroid Build Coastguard Worker }
12986*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector unsigned short __a,vector bool short __b)12987*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned short __a,
12988*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
12989*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12990*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
12991*344a7f5eSAndroid Build Coastguard Worker }
12992*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector bool short __a,vector short __b)12993*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
12994*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
12995*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
12996*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
12997*344a7f5eSAndroid Build Coastguard Worker }
12998*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector bool short __a,vector unsigned short __b)12999*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
13000*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
13001*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
13002*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
13003*344a7f5eSAndroid Build Coastguard Worker }
13004*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector bool short __a,vector bool short __b)13005*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool short __a,
13006*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13007*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
13008*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
13009*344a7f5eSAndroid Build Coastguard Worker }
13010*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector pixel __a,vector pixel __b)13011*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector pixel __a,
13012*344a7f5eSAndroid Build Coastguard Worker                                               vector pixel __b) {
13013*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ, (vector short)__a,
13014*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
13015*344a7f5eSAndroid Build Coastguard Worker }
13016*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector int __a,vector int __b)13017*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a, vector int __b) {
13018*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, __b);
13019*344a7f5eSAndroid Build Coastguard Worker }
13020*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector int __a,vector bool int __b)13021*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector int __a,
13022*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13023*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ, __a, (vector int)__b);
13024*344a7f5eSAndroid Build Coastguard Worker }
13025*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector unsigned int __a,vector unsigned int __b)13026*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
13027*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
13028*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13029*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
13030*344a7f5eSAndroid Build Coastguard Worker }
13031*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector unsigned int __a,vector bool int __b)13032*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned int __a,
13033*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13034*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13035*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
13036*344a7f5eSAndroid Build Coastguard Worker }
13037*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector bool int __a,vector int __b)13038*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
13039*344a7f5eSAndroid Build Coastguard Worker                                               vector int __b) {
13040*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13041*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
13042*344a7f5eSAndroid Build Coastguard Worker }
13043*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector bool int __a,vector unsigned int __b)13044*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
13045*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
13046*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13047*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
13048*344a7f5eSAndroid Build Coastguard Worker }
13049*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector bool int __a,vector bool int __b)13050*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool int __a,
13051*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13052*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ, (vector int)__a,
13053*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
13054*344a7f5eSAndroid Build Coastguard Worker }
13055*344a7f5eSAndroid Build Coastguard Worker 
13056*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_all_ne(vector signed long long __a,vector signed long long __b)13057*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
13058*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
13059*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a, __b);
13060*344a7f5eSAndroid Build Coastguard Worker }
13061*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector unsigned long long __a,vector unsigned long long __b)13062*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
13063*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
13064*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector long long)__a,
13065*344a7f5eSAndroid Build Coastguard Worker                                       (vector long long)__b);
13066*344a7f5eSAndroid Build Coastguard Worker }
13067*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector signed long long __a,vector bool long long __b)13068*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector signed long long __a,
13069*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13070*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_EQ, __a,
13071*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b);
13072*344a7f5eSAndroid Build Coastguard Worker }
13073*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector unsigned long long __a,vector bool long long __b)13074*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector unsigned long long __a,
13075*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13076*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
13077*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b);
13078*344a7f5eSAndroid Build Coastguard Worker }
13079*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector bool long long __a,vector signed long long __b)13080*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
13081*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
13082*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
13083*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b);
13084*344a7f5eSAndroid Build Coastguard Worker }
13085*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector bool long long __a,vector unsigned long long __b)13086*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
13087*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
13088*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
13089*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b);
13090*344a7f5eSAndroid Build Coastguard Worker }
13091*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector bool long long __a,vector bool long long __b)13092*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector bool long long __a,
13093*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13094*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_EQ, (vector signed long long)__a,
13095*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b);
13096*344a7f5eSAndroid Build Coastguard Worker }
13097*344a7f5eSAndroid Build Coastguard Worker #endif
13098*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ne(vector float __a,vector float __b)13099*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector float __a,
13100*344a7f5eSAndroid Build Coastguard Worker                                               vector float __b) {
13101*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
13102*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
13103*344a7f5eSAndroid Build Coastguard Worker #else
13104*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ, __a, __b);
13105*344a7f5eSAndroid Build Coastguard Worker #endif
13106*344a7f5eSAndroid Build Coastguard Worker }
13107*344a7f5eSAndroid Build Coastguard Worker 
13108*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_all_ne(vector double __a,vector double __b)13109*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ne(vector double __a,
13110*344a7f5eSAndroid Build Coastguard Worker                                               vector double __b) {
13111*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ, __a, __b);
13112*344a7f5eSAndroid Build Coastguard Worker }
13113*344a7f5eSAndroid Build Coastguard Worker #endif
13114*344a7f5eSAndroid Build Coastguard Worker 
13115*344a7f5eSAndroid Build Coastguard Worker /* vec_all_nge */
13116*344a7f5eSAndroid Build Coastguard Worker 
vec_all_nge(vector float __a,vector float __b)13117*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_nge(vector float __a,
13118*344a7f5eSAndroid Build Coastguard Worker                                                vector float __b) {
13119*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
13120*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ, __a, __b);
13121*344a7f5eSAndroid Build Coastguard Worker #else
13122*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __a, __b);
13123*344a7f5eSAndroid Build Coastguard Worker #endif
13124*344a7f5eSAndroid Build Coastguard Worker }
13125*344a7f5eSAndroid Build Coastguard Worker 
13126*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_all_nge(vector double __a,vector double __b)13127*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_nge(vector double __a,
13128*344a7f5eSAndroid Build Coastguard Worker                                                vector double __b) {
13129*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ, __a, __b);
13130*344a7f5eSAndroid Build Coastguard Worker }
13131*344a7f5eSAndroid Build Coastguard Worker #endif
13132*344a7f5eSAndroid Build Coastguard Worker 
13133*344a7f5eSAndroid Build Coastguard Worker /* vec_all_ngt */
13134*344a7f5eSAndroid Build Coastguard Worker 
vec_all_ngt(vector float __a,vector float __b)13135*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ngt(vector float __a,
13136*344a7f5eSAndroid Build Coastguard Worker                                                vector float __b) {
13137*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
13138*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ, __a, __b);
13139*344a7f5eSAndroid Build Coastguard Worker #else
13140*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __a, __b);
13141*344a7f5eSAndroid Build Coastguard Worker #endif
13142*344a7f5eSAndroid Build Coastguard Worker }
13143*344a7f5eSAndroid Build Coastguard Worker 
13144*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_all_ngt(vector double __a,vector double __b)13145*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_all_ngt(vector double __a,
13146*344a7f5eSAndroid Build Coastguard Worker                                                vector double __b) {
13147*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ, __a, __b);
13148*344a7f5eSAndroid Build Coastguard Worker }
13149*344a7f5eSAndroid Build Coastguard Worker #endif
13150*344a7f5eSAndroid Build Coastguard Worker 
13151*344a7f5eSAndroid Build Coastguard Worker /* vec_all_nle */
13152*344a7f5eSAndroid Build Coastguard Worker 
13153*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__))
vec_all_nle(vector float __a,vector float __b)13154*344a7f5eSAndroid Build Coastguard Worker vec_all_nle(vector float __a, vector float __b) {
13155*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgefp_p(__CR6_EQ, __b, __a);
13156*344a7f5eSAndroid Build Coastguard Worker }
13157*344a7f5eSAndroid Build Coastguard Worker 
13158*344a7f5eSAndroid Build Coastguard Worker /* vec_all_nlt */
13159*344a7f5eSAndroid Build Coastguard Worker 
13160*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__))
vec_all_nlt(vector float __a,vector float __b)13161*344a7f5eSAndroid Build Coastguard Worker vec_all_nlt(vector float __a, vector float __b) {
13162*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ, __b, __a);
13163*344a7f5eSAndroid Build Coastguard Worker }
13164*344a7f5eSAndroid Build Coastguard Worker 
13165*344a7f5eSAndroid Build Coastguard Worker /* vec_all_numeric */
13166*344a7f5eSAndroid Build Coastguard Worker 
13167*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__))
vec_all_numeric(vector float __a)13168*344a7f5eSAndroid Build Coastguard Worker vec_all_numeric(vector float __a) {
13169*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpeqfp_p(__CR6_LT, __a, __a);
13170*344a7f5eSAndroid Build Coastguard Worker }
13171*344a7f5eSAndroid Build Coastguard Worker 
13172*344a7f5eSAndroid Build Coastguard Worker /* vec_any_eq */
13173*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector signed char __a,vector signed char __b)13174*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
13175*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
13176*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13177*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
13178*344a7f5eSAndroid Build Coastguard Worker }
13179*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector signed char __a,vector bool char __b)13180*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed char __a,
13181*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13182*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13183*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
13184*344a7f5eSAndroid Build Coastguard Worker }
13185*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector unsigned char __a,vector unsigned char __b)13186*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
13187*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
13188*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13189*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
13190*344a7f5eSAndroid Build Coastguard Worker }
13191*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector unsigned char __a,vector bool char __b)13192*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned char __a,
13193*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13194*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13195*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
13196*344a7f5eSAndroid Build Coastguard Worker }
13197*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector bool char __a,vector signed char __b)13198*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
13199*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
13200*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13201*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
13202*344a7f5eSAndroid Build Coastguard Worker }
13203*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector bool char __a,vector unsigned char __b)13204*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
13205*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
13206*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13207*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
13208*344a7f5eSAndroid Build Coastguard Worker }
13209*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector bool char __a,vector bool char __b)13210*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool char __a,
13211*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13212*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_EQ_REV, (vector char)__a,
13213*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
13214*344a7f5eSAndroid Build Coastguard Worker }
13215*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector short __a,vector short __b)13216*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
13217*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
13218*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, __b);
13219*344a7f5eSAndroid Build Coastguard Worker }
13220*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector short __a,vector bool short __b)13221*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector short __a,
13222*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13223*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, __a, (vector short)__b);
13224*344a7f5eSAndroid Build Coastguard Worker }
13225*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector unsigned short __a,vector unsigned short __b)13226*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
13227*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
13228*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13229*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
13230*344a7f5eSAndroid Build Coastguard Worker }
13231*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector unsigned short __a,vector bool short __b)13232*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned short __a,
13233*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13234*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13235*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
13236*344a7f5eSAndroid Build Coastguard Worker }
13237*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector bool short __a,vector short __b)13238*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
13239*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
13240*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13241*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
13242*344a7f5eSAndroid Build Coastguard Worker }
13243*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector bool short __a,vector unsigned short __b)13244*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
13245*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
13246*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13247*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
13248*344a7f5eSAndroid Build Coastguard Worker }
13249*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector bool short __a,vector bool short __b)13250*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool short __a,
13251*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13252*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13253*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
13254*344a7f5eSAndroid Build Coastguard Worker }
13255*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector pixel __a,vector pixel __b)13256*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector pixel __a,
13257*344a7f5eSAndroid Build Coastguard Worker                                               vector pixel __b) {
13258*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_EQ_REV, (vector short)__a,
13259*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
13260*344a7f5eSAndroid Build Coastguard Worker }
13261*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector int __a,vector int __b)13262*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a, vector int __b) {
13263*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, __b);
13264*344a7f5eSAndroid Build Coastguard Worker }
13265*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector int __a,vector bool int __b)13266*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector int __a,
13267*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13268*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, __a, (vector int)__b);
13269*344a7f5eSAndroid Build Coastguard Worker }
13270*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector unsigned int __a,vector unsigned int __b)13271*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
13272*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
13273*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13274*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
13275*344a7f5eSAndroid Build Coastguard Worker }
13276*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector unsigned int __a,vector bool int __b)13277*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned int __a,
13278*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13279*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13280*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
13281*344a7f5eSAndroid Build Coastguard Worker }
13282*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector bool int __a,vector int __b)13283*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
13284*344a7f5eSAndroid Build Coastguard Worker                                               vector int __b) {
13285*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13286*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
13287*344a7f5eSAndroid Build Coastguard Worker }
13288*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector bool int __a,vector unsigned int __b)13289*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
13290*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
13291*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13292*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
13293*344a7f5eSAndroid Build Coastguard Worker }
13294*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector bool int __a,vector bool int __b)13295*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool int __a,
13296*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13297*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_EQ_REV, (vector int)__a,
13298*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
13299*344a7f5eSAndroid Build Coastguard Worker }
13300*344a7f5eSAndroid Build Coastguard Worker 
13301*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_any_eq(vector signed long long __a,vector signed long long __b)13302*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
13303*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
13304*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a, __b);
13305*344a7f5eSAndroid Build Coastguard Worker }
13306*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector unsigned long long __a,vector unsigned long long __b)13307*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
13308*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
13309*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, (vector long long)__a,
13310*344a7f5eSAndroid Build Coastguard Worker                                       (vector long long)__b);
13311*344a7f5eSAndroid Build Coastguard Worker }
13312*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector signed long long __a,vector bool long long __b)13313*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector signed long long __a,
13314*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13315*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_EQ_REV, __a,
13316*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b);
13317*344a7f5eSAndroid Build Coastguard Worker }
13318*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector unsigned long long __a,vector bool long long __b)13319*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector unsigned long long __a,
13320*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13321*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(
13322*344a7f5eSAndroid Build Coastguard Worker       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
13323*344a7f5eSAndroid Build Coastguard Worker }
13324*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector bool long long __a,vector signed long long __b)13325*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
13326*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
13327*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(
13328*344a7f5eSAndroid Build Coastguard Worker       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
13329*344a7f5eSAndroid Build Coastguard Worker }
13330*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector bool long long __a,vector unsigned long long __b)13331*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
13332*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
13333*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(
13334*344a7f5eSAndroid Build Coastguard Worker       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
13335*344a7f5eSAndroid Build Coastguard Worker }
13336*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector bool long long __a,vector bool long long __b)13337*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector bool long long __a,
13338*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13339*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(
13340*344a7f5eSAndroid Build Coastguard Worker       __CR6_EQ_REV, (vector signed long long)__a, (vector signed long long)__b);
13341*344a7f5eSAndroid Build Coastguard Worker }
13342*344a7f5eSAndroid Build Coastguard Worker #endif
13343*344a7f5eSAndroid Build Coastguard Worker 
vec_any_eq(vector float __a,vector float __b)13344*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector float __a,
13345*344a7f5eSAndroid Build Coastguard Worker                                               vector float __b) {
13346*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
13347*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpeqsp_p(__CR6_EQ_REV, __a, __b);
13348*344a7f5eSAndroid Build Coastguard Worker #else
13349*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __b);
13350*344a7f5eSAndroid Build Coastguard Worker #endif
13351*344a7f5eSAndroid Build Coastguard Worker }
13352*344a7f5eSAndroid Build Coastguard Worker 
13353*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_any_eq(vector double __a,vector double __b)13354*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_eq(vector double __a,
13355*344a7f5eSAndroid Build Coastguard Worker                                               vector double __b) {
13356*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpeqdp_p(__CR6_EQ_REV, __a, __b);
13357*344a7f5eSAndroid Build Coastguard Worker }
13358*344a7f5eSAndroid Build Coastguard Worker #endif
13359*344a7f5eSAndroid Build Coastguard Worker 
13360*344a7f5eSAndroid Build Coastguard Worker /* vec_any_ge */
13361*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector signed char __a,vector signed char __b)13362*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
13363*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
13364*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __b, __a);
13365*344a7f5eSAndroid Build Coastguard Worker }
13366*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector signed char __a,vector bool char __b)13367*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed char __a,
13368*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13369*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, (vector signed char)__b,
13370*344a7f5eSAndroid Build Coastguard Worker                                       __a);
13371*344a7f5eSAndroid Build Coastguard Worker }
13372*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector unsigned char __a,vector unsigned char __b)13373*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
13374*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
13375*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b, __a);
13376*344a7f5eSAndroid Build Coastguard Worker }
13377*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector unsigned char __a,vector bool char __b)13378*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned char __a,
13379*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13380*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
13381*344a7f5eSAndroid Build Coastguard Worker                                       __a);
13382*344a7f5eSAndroid Build Coastguard Worker }
13383*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector bool char __a,vector signed char __b)13384*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
13385*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
13386*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
13387*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__a);
13388*344a7f5eSAndroid Build Coastguard Worker }
13389*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector bool char __a,vector unsigned char __b)13390*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
13391*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
13392*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __b,
13393*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__a);
13394*344a7f5eSAndroid Build Coastguard Worker }
13395*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector bool char __a,vector bool char __b)13396*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool char __a,
13397*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13398*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__b,
13399*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__a);
13400*344a7f5eSAndroid Build Coastguard Worker }
13401*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector short __a,vector short __b)13402*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
13403*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
13404*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __b, __a);
13405*344a7f5eSAndroid Build Coastguard Worker }
13406*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector short __a,vector bool short __b)13407*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector short __a,
13408*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13409*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, (vector short)__b, __a);
13410*344a7f5eSAndroid Build Coastguard Worker }
13411*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector unsigned short __a,vector unsigned short __b)13412*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
13413*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
13414*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b, __a);
13415*344a7f5eSAndroid Build Coastguard Worker }
13416*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector unsigned short __a,vector bool short __b)13417*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned short __a,
13418*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13419*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
13420*344a7f5eSAndroid Build Coastguard Worker                                       __a);
13421*344a7f5eSAndroid Build Coastguard Worker }
13422*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector bool short __a,vector short __b)13423*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
13424*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
13425*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
13426*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__a);
13427*344a7f5eSAndroid Build Coastguard Worker }
13428*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector bool short __a,vector unsigned short __b)13429*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
13430*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
13431*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __b,
13432*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__a);
13433*344a7f5eSAndroid Build Coastguard Worker }
13434*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector bool short __a,vector bool short __b)13435*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool short __a,
13436*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13437*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__b,
13438*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__a);
13439*344a7f5eSAndroid Build Coastguard Worker }
13440*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector int __a,vector int __b)13441*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a, vector int __b) {
13442*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __b, __a);
13443*344a7f5eSAndroid Build Coastguard Worker }
13444*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector int __a,vector bool int __b)13445*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector int __a,
13446*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13447*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, (vector int)__b, __a);
13448*344a7f5eSAndroid Build Coastguard Worker }
13449*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector unsigned int __a,vector unsigned int __b)13450*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
13451*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
13452*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b, __a);
13453*344a7f5eSAndroid Build Coastguard Worker }
13454*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector unsigned int __a,vector bool int __b)13455*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned int __a,
13456*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13457*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
13458*344a7f5eSAndroid Build Coastguard Worker                                       __a);
13459*344a7f5eSAndroid Build Coastguard Worker }
13460*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector bool int __a,vector int __b)13461*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
13462*344a7f5eSAndroid Build Coastguard Worker                                               vector int __b) {
13463*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
13464*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__a);
13465*344a7f5eSAndroid Build Coastguard Worker }
13466*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector bool int __a,vector unsigned int __b)13467*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
13468*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
13469*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __b,
13470*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__a);
13471*344a7f5eSAndroid Build Coastguard Worker }
13472*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector bool int __a,vector bool int __b)13473*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool int __a,
13474*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13475*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__b,
13476*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__a);
13477*344a7f5eSAndroid Build Coastguard Worker }
13478*344a7f5eSAndroid Build Coastguard Worker 
13479*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_any_ge(vector signed long long __a,vector signed long long __b)13480*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
13481*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
13482*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __b, __a);
13483*344a7f5eSAndroid Build Coastguard Worker }
13484*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector unsigned long long __a,vector unsigned long long __b)13485*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
13486*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
13487*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b, __a);
13488*344a7f5eSAndroid Build Coastguard Worker }
13489*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector signed long long __a,vector bool long long __b)13490*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector signed long long __a,
13491*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13492*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV,
13493*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b, __a);
13494*344a7f5eSAndroid Build Coastguard Worker }
13495*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector unsigned long long __a,vector bool long long __b)13496*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector unsigned long long __a,
13497*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13498*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13499*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b, __a);
13500*344a7f5eSAndroid Build Coastguard Worker }
13501*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector bool long long __a,vector signed long long __b)13502*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
13503*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
13504*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13505*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b,
13506*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a);
13507*344a7f5eSAndroid Build Coastguard Worker }
13508*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector bool long long __a,vector unsigned long long __b)13509*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
13510*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
13511*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __b,
13512*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a);
13513*344a7f5eSAndroid Build Coastguard Worker }
13514*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector bool long long __a,vector bool long long __b)13515*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector bool long long __a,
13516*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13517*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13518*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b,
13519*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a);
13520*344a7f5eSAndroid Build Coastguard Worker }
13521*344a7f5eSAndroid Build Coastguard Worker #endif
13522*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ge(vector float __a,vector float __b)13523*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector float __a,
13524*344a7f5eSAndroid Build Coastguard Worker                                               vector float __b) {
13525*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
13526*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __a, __b);
13527*344a7f5eSAndroid Build Coastguard Worker #else
13528*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __a, __b);
13529*344a7f5eSAndroid Build Coastguard Worker #endif
13530*344a7f5eSAndroid Build Coastguard Worker }
13531*344a7f5eSAndroid Build Coastguard Worker 
13532*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_any_ge(vector double __a,vector double __b)13533*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ge(vector double __a,
13534*344a7f5eSAndroid Build Coastguard Worker                                               vector double __b) {
13535*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __a, __b);
13536*344a7f5eSAndroid Build Coastguard Worker }
13537*344a7f5eSAndroid Build Coastguard Worker #endif
13538*344a7f5eSAndroid Build Coastguard Worker 
13539*344a7f5eSAndroid Build Coastguard Worker /* vec_any_gt */
13540*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector signed char __a,vector signed char __b)13541*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
13542*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
13543*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a, __b);
13544*344a7f5eSAndroid Build Coastguard Worker }
13545*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector signed char __a,vector bool char __b)13546*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed char __a,
13547*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13548*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __a,
13549*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed char)__b);
13550*344a7f5eSAndroid Build Coastguard Worker }
13551*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector unsigned char __a,vector unsigned char __b)13552*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
13553*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
13554*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a, __b);
13555*344a7f5eSAndroid Build Coastguard Worker }
13556*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector unsigned char __a,vector bool char __b)13557*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned char __a,
13558*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13559*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __a,
13560*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__b);
13561*344a7f5eSAndroid Build Coastguard Worker }
13562*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector bool char __a,vector signed char __b)13563*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
13564*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
13565*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
13566*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__b);
13567*344a7f5eSAndroid Build Coastguard Worker }
13568*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector bool char __a,vector unsigned char __b)13569*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
13570*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
13571*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
13572*344a7f5eSAndroid Build Coastguard Worker                                       __b);
13573*344a7f5eSAndroid Build Coastguard Worker }
13574*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector bool char __a,vector bool char __b)13575*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool char __a,
13576*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13577*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__a,
13578*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__b);
13579*344a7f5eSAndroid Build Coastguard Worker }
13580*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector short __a,vector short __b)13581*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
13582*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
13583*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, __b);
13584*344a7f5eSAndroid Build Coastguard Worker }
13585*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector short __a,vector bool short __b)13586*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector short __a,
13587*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13588*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __a, (vector short)__b);
13589*344a7f5eSAndroid Build Coastguard Worker }
13590*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector unsigned short __a,vector unsigned short __b)13591*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
13592*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
13593*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a, __b);
13594*344a7f5eSAndroid Build Coastguard Worker }
13595*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector unsigned short __a,vector bool short __b)13596*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned short __a,
13597*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13598*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __a,
13599*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__b);
13600*344a7f5eSAndroid Build Coastguard Worker }
13601*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector bool short __a,vector short __b)13602*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
13603*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
13604*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
13605*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__b);
13606*344a7f5eSAndroid Build Coastguard Worker }
13607*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector bool short __a,vector unsigned short __b)13608*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
13609*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
13610*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
13611*344a7f5eSAndroid Build Coastguard Worker                                       __b);
13612*344a7f5eSAndroid Build Coastguard Worker }
13613*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector bool short __a,vector bool short __b)13614*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool short __a,
13615*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13616*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__a,
13617*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__b);
13618*344a7f5eSAndroid Build Coastguard Worker }
13619*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector int __a,vector int __b)13620*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a, vector int __b) {
13621*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, __b);
13622*344a7f5eSAndroid Build Coastguard Worker }
13623*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector int __a,vector bool int __b)13624*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector int __a,
13625*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13626*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __a, (vector int)__b);
13627*344a7f5eSAndroid Build Coastguard Worker }
13628*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector unsigned int __a,vector unsigned int __b)13629*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
13630*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
13631*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a, __b);
13632*344a7f5eSAndroid Build Coastguard Worker }
13633*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector unsigned int __a,vector bool int __b)13634*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned int __a,
13635*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13636*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __a,
13637*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__b);
13638*344a7f5eSAndroid Build Coastguard Worker }
13639*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector bool int __a,vector int __b)13640*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
13641*344a7f5eSAndroid Build Coastguard Worker                                               vector int __b) {
13642*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
13643*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__b);
13644*344a7f5eSAndroid Build Coastguard Worker }
13645*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector bool int __a,vector unsigned int __b)13646*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
13647*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
13648*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
13649*344a7f5eSAndroid Build Coastguard Worker                                       __b);
13650*344a7f5eSAndroid Build Coastguard Worker }
13651*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector bool int __a,vector bool int __b)13652*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool int __a,
13653*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13654*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__a,
13655*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__b);
13656*344a7f5eSAndroid Build Coastguard Worker }
13657*344a7f5eSAndroid Build Coastguard Worker 
13658*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_any_gt(vector signed long long __a,vector signed long long __b)13659*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
13660*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
13661*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a, __b);
13662*344a7f5eSAndroid Build Coastguard Worker }
13663*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector unsigned long long __a,vector unsigned long long __b)13664*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
13665*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
13666*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a, __b);
13667*344a7f5eSAndroid Build Coastguard Worker }
13668*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector signed long long __a,vector bool long long __b)13669*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector signed long long __a,
13670*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13671*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __a,
13672*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b);
13673*344a7f5eSAndroid Build Coastguard Worker }
13674*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector unsigned long long __a,vector bool long long __b)13675*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector unsigned long long __a,
13676*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13677*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __a,
13678*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b);
13679*344a7f5eSAndroid Build Coastguard Worker }
13680*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector bool long long __a,vector signed long long __b)13681*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
13682*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
13683*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
13684*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a,
13685*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b);
13686*344a7f5eSAndroid Build Coastguard Worker }
13687*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector bool long long __a,vector unsigned long long __b)13688*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
13689*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
13690*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
13691*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a, __b);
13692*344a7f5eSAndroid Build Coastguard Worker }
13693*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector bool long long __a,vector bool long long __b)13694*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector bool long long __a,
13695*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13696*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
13697*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a,
13698*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b);
13699*344a7f5eSAndroid Build Coastguard Worker }
13700*344a7f5eSAndroid Build Coastguard Worker #endif
13701*344a7f5eSAndroid Build Coastguard Worker 
vec_any_gt(vector float __a,vector float __b)13702*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector float __a,
13703*344a7f5eSAndroid Build Coastguard Worker                                               vector float __b) {
13704*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
13705*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __a, __b);
13706*344a7f5eSAndroid Build Coastguard Worker #else
13707*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __a, __b);
13708*344a7f5eSAndroid Build Coastguard Worker #endif
13709*344a7f5eSAndroid Build Coastguard Worker }
13710*344a7f5eSAndroid Build Coastguard Worker 
13711*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_any_gt(vector double __a,vector double __b)13712*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_gt(vector double __a,
13713*344a7f5eSAndroid Build Coastguard Worker                                               vector double __b) {
13714*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __a, __b);
13715*344a7f5eSAndroid Build Coastguard Worker }
13716*344a7f5eSAndroid Build Coastguard Worker #endif
13717*344a7f5eSAndroid Build Coastguard Worker 
13718*344a7f5eSAndroid Build Coastguard Worker /* vec_any_le */
13719*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector signed char __a,vector signed char __b)13720*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
13721*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
13722*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a, __b);
13723*344a7f5eSAndroid Build Coastguard Worker }
13724*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector signed char __a,vector bool char __b)13725*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector signed char __a,
13726*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13727*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_LT_REV, __a,
13728*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed char)__b);
13729*344a7f5eSAndroid Build Coastguard Worker }
13730*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector unsigned char __a,vector unsigned char __b)13731*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
13732*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
13733*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a, __b);
13734*344a7f5eSAndroid Build Coastguard Worker }
13735*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector unsigned char __a,vector bool char __b)13736*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned char __a,
13737*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13738*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, __a,
13739*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__b);
13740*344a7f5eSAndroid Build Coastguard Worker }
13741*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector bool char __a,vector signed char __b)13742*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
13743*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
13744*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
13745*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__b);
13746*344a7f5eSAndroid Build Coastguard Worker }
13747*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector bool char __a,vector unsigned char __b)13748*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
13749*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
13750*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
13751*344a7f5eSAndroid Build Coastguard Worker                                       __b);
13752*344a7f5eSAndroid Build Coastguard Worker }
13753*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector bool char __a,vector bool char __b)13754*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector bool char __a,
13755*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13756*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_LT_REV, (vector unsigned char)__a,
13757*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__b);
13758*344a7f5eSAndroid Build Coastguard Worker }
13759*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector short __a,vector short __b)13760*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
13761*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
13762*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, __b);
13763*344a7f5eSAndroid Build Coastguard Worker }
13764*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector short __a,vector bool short __b)13765*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector short __a,
13766*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13767*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_LT_REV, __a, (vector short)__b);
13768*344a7f5eSAndroid Build Coastguard Worker }
13769*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector unsigned short __a,vector unsigned short __b)13770*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
13771*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
13772*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a, __b);
13773*344a7f5eSAndroid Build Coastguard Worker }
13774*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector unsigned short __a,vector bool short __b)13775*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned short __a,
13776*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13777*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, __a,
13778*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__b);
13779*344a7f5eSAndroid Build Coastguard Worker }
13780*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector bool short __a,vector short __b)13781*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
13782*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
13783*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
13784*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__b);
13785*344a7f5eSAndroid Build Coastguard Worker }
13786*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector bool short __a,vector unsigned short __b)13787*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
13788*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
13789*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
13790*344a7f5eSAndroid Build Coastguard Worker                                       __b);
13791*344a7f5eSAndroid Build Coastguard Worker }
13792*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector bool short __a,vector bool short __b)13793*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector bool short __a,
13794*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13795*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_LT_REV, (vector unsigned short)__a,
13796*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__b);
13797*344a7f5eSAndroid Build Coastguard Worker }
13798*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector int __a,vector int __b)13799*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a, vector int __b) {
13800*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, __b);
13801*344a7f5eSAndroid Build Coastguard Worker }
13802*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector int __a,vector bool int __b)13803*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector int __a,
13804*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13805*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_LT_REV, __a, (vector int)__b);
13806*344a7f5eSAndroid Build Coastguard Worker }
13807*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector unsigned int __a,vector unsigned int __b)13808*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
13809*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
13810*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a, __b);
13811*344a7f5eSAndroid Build Coastguard Worker }
13812*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector unsigned int __a,vector bool int __b)13813*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned int __a,
13814*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13815*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, __a,
13816*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__b);
13817*344a7f5eSAndroid Build Coastguard Worker }
13818*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector bool int __a,vector int __b)13819*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
13820*344a7f5eSAndroid Build Coastguard Worker                                               vector int __b) {
13821*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
13822*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__b);
13823*344a7f5eSAndroid Build Coastguard Worker }
13824*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector bool int __a,vector unsigned int __b)13825*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
13826*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
13827*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
13828*344a7f5eSAndroid Build Coastguard Worker                                       __b);
13829*344a7f5eSAndroid Build Coastguard Worker }
13830*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector bool int __a,vector bool int __b)13831*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector bool int __a,
13832*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13833*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_LT_REV, (vector unsigned int)__a,
13834*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__b);
13835*344a7f5eSAndroid Build Coastguard Worker }
13836*344a7f5eSAndroid Build Coastguard Worker 
13837*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_any_le(vector signed long long __a,vector signed long long __b)13838*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
13839*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
13840*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a, __b);
13841*344a7f5eSAndroid Build Coastguard Worker }
13842*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector unsigned long long __a,vector unsigned long long __b)13843*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
13844*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
13845*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a, __b);
13846*344a7f5eSAndroid Build Coastguard Worker }
13847*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector signed long long __a,vector bool long long __b)13848*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector signed long long __a,
13849*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13850*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_LT_REV, __a,
13851*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b);
13852*344a7f5eSAndroid Build Coastguard Worker }
13853*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector unsigned long long __a,vector bool long long __b)13854*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector unsigned long long __a,
13855*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13856*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV, __a,
13857*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b);
13858*344a7f5eSAndroid Build Coastguard Worker }
13859*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector bool long long __a,vector signed long long __b)13860*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
13861*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
13862*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13863*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a,
13864*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b);
13865*344a7f5eSAndroid Build Coastguard Worker }
13866*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector bool long long __a,vector unsigned long long __b)13867*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
13868*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
13869*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13870*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a, __b);
13871*344a7f5eSAndroid Build Coastguard Worker }
13872*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector bool long long __a,vector bool long long __b)13873*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector bool long long __a,
13874*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
13875*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_LT_REV,
13876*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a,
13877*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b);
13878*344a7f5eSAndroid Build Coastguard Worker }
13879*344a7f5eSAndroid Build Coastguard Worker #endif
13880*344a7f5eSAndroid Build Coastguard Worker 
vec_any_le(vector float __a,vector float __b)13881*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector float __a,
13882*344a7f5eSAndroid Build Coastguard Worker                                               vector float __b) {
13883*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
13884*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgesp_p(__CR6_EQ_REV, __b, __a);
13885*344a7f5eSAndroid Build Coastguard Worker #else
13886*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgefp_p(__CR6_EQ_REV, __b, __a);
13887*344a7f5eSAndroid Build Coastguard Worker #endif
13888*344a7f5eSAndroid Build Coastguard Worker }
13889*344a7f5eSAndroid Build Coastguard Worker 
13890*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_any_le(vector double __a,vector double __b)13891*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_le(vector double __a,
13892*344a7f5eSAndroid Build Coastguard Worker                                               vector double __b) {
13893*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgedp_p(__CR6_EQ_REV, __b, __a);
13894*344a7f5eSAndroid Build Coastguard Worker }
13895*344a7f5eSAndroid Build Coastguard Worker #endif
13896*344a7f5eSAndroid Build Coastguard Worker 
13897*344a7f5eSAndroid Build Coastguard Worker /* vec_any_lt */
13898*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector signed char __a,vector signed char __b)13899*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
13900*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
13901*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, __b, __a);
13902*344a7f5eSAndroid Build Coastguard Worker }
13903*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector signed char __a,vector bool char __b)13904*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed char __a,
13905*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13906*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsb_p(__CR6_EQ_REV, (vector signed char)__b,
13907*344a7f5eSAndroid Build Coastguard Worker                                       __a);
13908*344a7f5eSAndroid Build Coastguard Worker }
13909*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector unsigned char __a,vector unsigned char __b)13910*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
13911*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
13912*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b, __a);
13913*344a7f5eSAndroid Build Coastguard Worker }
13914*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector unsigned char __a,vector bool char __b)13915*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned char __a,
13916*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13917*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
13918*344a7f5eSAndroid Build Coastguard Worker                                       __a);
13919*344a7f5eSAndroid Build Coastguard Worker }
13920*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector bool char __a,vector signed char __b)13921*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
13922*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
13923*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
13924*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__a);
13925*344a7f5eSAndroid Build Coastguard Worker }
13926*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector bool char __a,vector unsigned char __b)13927*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
13928*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
13929*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, __b,
13930*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__a);
13931*344a7f5eSAndroid Build Coastguard Worker }
13932*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector bool char __a,vector bool char __b)13933*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool char __a,
13934*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
13935*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtub_p(__CR6_EQ_REV, (vector unsigned char)__b,
13936*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned char)__a);
13937*344a7f5eSAndroid Build Coastguard Worker }
13938*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector short __a,vector short __b)13939*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
13940*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
13941*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, __b, __a);
13942*344a7f5eSAndroid Build Coastguard Worker }
13943*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector short __a,vector bool short __b)13944*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector short __a,
13945*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13946*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsh_p(__CR6_EQ_REV, (vector short)__b, __a);
13947*344a7f5eSAndroid Build Coastguard Worker }
13948*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector unsigned short __a,vector unsigned short __b)13949*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
13950*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
13951*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b, __a);
13952*344a7f5eSAndroid Build Coastguard Worker }
13953*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector unsigned short __a,vector bool short __b)13954*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned short __a,
13955*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13956*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
13957*344a7f5eSAndroid Build Coastguard Worker                                       __a);
13958*344a7f5eSAndroid Build Coastguard Worker }
13959*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector bool short __a,vector short __b)13960*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
13961*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
13962*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
13963*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__a);
13964*344a7f5eSAndroid Build Coastguard Worker }
13965*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector bool short __a,vector unsigned short __b)13966*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
13967*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
13968*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, __b,
13969*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__a);
13970*344a7f5eSAndroid Build Coastguard Worker }
13971*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector bool short __a,vector bool short __b)13972*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool short __a,
13973*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
13974*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuh_p(__CR6_EQ_REV, (vector unsigned short)__b,
13975*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned short)__a);
13976*344a7f5eSAndroid Build Coastguard Worker }
13977*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector int __a,vector int __b)13978*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a, vector int __b) {
13979*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, __b, __a);
13980*344a7f5eSAndroid Build Coastguard Worker }
13981*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector int __a,vector bool int __b)13982*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector int __a,
13983*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13984*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsw_p(__CR6_EQ_REV, (vector int)__b, __a);
13985*344a7f5eSAndroid Build Coastguard Worker }
13986*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector unsigned int __a,vector unsigned int __b)13987*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
13988*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
13989*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b, __a);
13990*344a7f5eSAndroid Build Coastguard Worker }
13991*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector unsigned int __a,vector bool int __b)13992*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned int __a,
13993*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
13994*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
13995*344a7f5eSAndroid Build Coastguard Worker                                       __a);
13996*344a7f5eSAndroid Build Coastguard Worker }
13997*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector bool int __a,vector int __b)13998*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
13999*344a7f5eSAndroid Build Coastguard Worker                                               vector int __b) {
14000*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
14001*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__a);
14002*344a7f5eSAndroid Build Coastguard Worker }
14003*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector bool int __a,vector unsigned int __b)14004*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
14005*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
14006*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, __b,
14007*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__a);
14008*344a7f5eSAndroid Build Coastguard Worker }
14009*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector bool int __a,vector bool int __b)14010*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool int __a,
14011*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
14012*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtuw_p(__CR6_EQ_REV, (vector unsigned int)__b,
14013*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned int)__a);
14014*344a7f5eSAndroid Build Coastguard Worker }
14015*344a7f5eSAndroid Build Coastguard Worker 
14016*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_any_lt(vector signed long long __a,vector signed long long __b)14017*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
14018*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
14019*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV, __b, __a);
14020*344a7f5eSAndroid Build Coastguard Worker }
14021*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector unsigned long long __a,vector unsigned long long __b)14022*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
14023*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
14024*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b, __a);
14025*344a7f5eSAndroid Build Coastguard Worker }
14026*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector signed long long __a,vector bool long long __b)14027*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector signed long long __a,
14028*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
14029*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtsd_p(__CR6_EQ_REV,
14030*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b, __a);
14031*344a7f5eSAndroid Build Coastguard Worker }
14032*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector unsigned long long __a,vector bool long long __b)14033*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector unsigned long long __a,
14034*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
14035*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
14036*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b, __a);
14037*344a7f5eSAndroid Build Coastguard Worker }
14038*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector bool long long __a,vector signed long long __b)14039*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
14040*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
14041*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
14042*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b,
14043*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a);
14044*344a7f5eSAndroid Build Coastguard Worker }
14045*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector bool long long __a,vector unsigned long long __b)14046*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
14047*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
14048*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV, __b,
14049*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a);
14050*344a7f5eSAndroid Build Coastguard Worker }
14051*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector bool long long __a,vector bool long long __b)14052*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector bool long long __a,
14053*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
14054*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtud_p(__CR6_EQ_REV,
14055*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__b,
14056*344a7f5eSAndroid Build Coastguard Worker                                       (vector unsigned long long)__a);
14057*344a7f5eSAndroid Build Coastguard Worker }
14058*344a7f5eSAndroid Build Coastguard Worker #endif
14059*344a7f5eSAndroid Build Coastguard Worker 
vec_any_lt(vector float __a,vector float __b)14060*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector float __a,
14061*344a7f5eSAndroid Build Coastguard Worker                                               vector float __b) {
14062*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
14063*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgtsp_p(__CR6_EQ_REV, __b, __a);
14064*344a7f5eSAndroid Build Coastguard Worker #else
14065*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtfp_p(__CR6_EQ_REV, __b, __a);
14066*344a7f5eSAndroid Build Coastguard Worker #endif
14067*344a7f5eSAndroid Build Coastguard Worker }
14068*344a7f5eSAndroid Build Coastguard Worker 
14069*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_any_lt(vector double __a,vector double __b)14070*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_lt(vector double __a,
14071*344a7f5eSAndroid Build Coastguard Worker                                               vector double __b) {
14072*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpgtdp_p(__CR6_EQ_REV, __b, __a);
14073*344a7f5eSAndroid Build Coastguard Worker }
14074*344a7f5eSAndroid Build Coastguard Worker #endif
14075*344a7f5eSAndroid Build Coastguard Worker 
14076*344a7f5eSAndroid Build Coastguard Worker /* vec_any_nan */
14077*344a7f5eSAndroid Build Coastguard Worker 
14078*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__))
vec_any_nan(vector float __a)14079*344a7f5eSAndroid Build Coastguard Worker vec_any_nan(vector float __a) {
14080*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __a);
14081*344a7f5eSAndroid Build Coastguard Worker }
14082*344a7f5eSAndroid Build Coastguard Worker 
14083*344a7f5eSAndroid Build Coastguard Worker /* vec_any_ne */
14084*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector signed char __a,vector signed char __b)14085*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
14086*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
14087*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14088*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
14089*344a7f5eSAndroid Build Coastguard Worker }
14090*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector signed char __a,vector bool char __b)14091*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed char __a,
14092*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
14093*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14094*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
14095*344a7f5eSAndroid Build Coastguard Worker }
14096*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector unsigned char __a,vector unsigned char __b)14097*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
14098*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
14099*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14100*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
14101*344a7f5eSAndroid Build Coastguard Worker }
14102*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector unsigned char __a,vector bool char __b)14103*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned char __a,
14104*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
14105*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14106*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
14107*344a7f5eSAndroid Build Coastguard Worker }
14108*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector bool char __a,vector signed char __b)14109*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
14110*344a7f5eSAndroid Build Coastguard Worker                                               vector signed char __b) {
14111*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14112*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
14113*344a7f5eSAndroid Build Coastguard Worker }
14114*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector bool char __a,vector unsigned char __b)14115*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
14116*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned char __b) {
14117*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14118*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
14119*344a7f5eSAndroid Build Coastguard Worker }
14120*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector bool char __a,vector bool char __b)14121*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool char __a,
14122*344a7f5eSAndroid Build Coastguard Worker                                               vector bool char __b) {
14123*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequb_p(__CR6_LT_REV, (vector char)__a,
14124*344a7f5eSAndroid Build Coastguard Worker                                       (vector char)__b);
14125*344a7f5eSAndroid Build Coastguard Worker }
14126*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector short __a,vector short __b)14127*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
14128*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
14129*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, __b);
14130*344a7f5eSAndroid Build Coastguard Worker }
14131*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector short __a,vector bool short __b)14132*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector short __a,
14133*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
14134*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, __a, (vector short)__b);
14135*344a7f5eSAndroid Build Coastguard Worker }
14136*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector unsigned short __a,vector unsigned short __b)14137*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
14138*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
14139*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14140*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
14141*344a7f5eSAndroid Build Coastguard Worker }
14142*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector unsigned short __a,vector bool short __b)14143*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned short __a,
14144*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
14145*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14146*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
14147*344a7f5eSAndroid Build Coastguard Worker }
14148*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector bool short __a,vector short __b)14149*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
14150*344a7f5eSAndroid Build Coastguard Worker                                               vector short __b) {
14151*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14152*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
14153*344a7f5eSAndroid Build Coastguard Worker }
14154*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector bool short __a,vector unsigned short __b)14155*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
14156*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned short __b) {
14157*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14158*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
14159*344a7f5eSAndroid Build Coastguard Worker }
14160*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector bool short __a,vector bool short __b)14161*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool short __a,
14162*344a7f5eSAndroid Build Coastguard Worker                                               vector bool short __b) {
14163*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14164*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
14165*344a7f5eSAndroid Build Coastguard Worker }
14166*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector pixel __a,vector pixel __b)14167*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector pixel __a,
14168*344a7f5eSAndroid Build Coastguard Worker                                               vector pixel __b) {
14169*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequh_p(__CR6_LT_REV, (vector short)__a,
14170*344a7f5eSAndroid Build Coastguard Worker                                       (vector short)__b);
14171*344a7f5eSAndroid Build Coastguard Worker }
14172*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector int __a,vector int __b)14173*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a, vector int __b) {
14174*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, __b);
14175*344a7f5eSAndroid Build Coastguard Worker }
14176*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector int __a,vector bool int __b)14177*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector int __a,
14178*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
14179*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, __a, (vector int)__b);
14180*344a7f5eSAndroid Build Coastguard Worker }
14181*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector unsigned int __a,vector unsigned int __b)14182*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
14183*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
14184*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14185*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
14186*344a7f5eSAndroid Build Coastguard Worker }
14187*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector unsigned int __a,vector bool int __b)14188*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned int __a,
14189*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
14190*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14191*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
14192*344a7f5eSAndroid Build Coastguard Worker }
14193*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector bool int __a,vector int __b)14194*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
14195*344a7f5eSAndroid Build Coastguard Worker                                               vector int __b) {
14196*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14197*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
14198*344a7f5eSAndroid Build Coastguard Worker }
14199*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector bool int __a,vector unsigned int __b)14200*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
14201*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned int __b) {
14202*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14203*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
14204*344a7f5eSAndroid Build Coastguard Worker }
14205*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector bool int __a,vector bool int __b)14206*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool int __a,
14207*344a7f5eSAndroid Build Coastguard Worker                                               vector bool int __b) {
14208*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequw_p(__CR6_LT_REV, (vector int)__a,
14209*344a7f5eSAndroid Build Coastguard Worker                                       (vector int)__b);
14210*344a7f5eSAndroid Build Coastguard Worker }
14211*344a7f5eSAndroid Build Coastguard Worker 
14212*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
vec_any_ne(vector signed long long __a,vector signed long long __b)14213*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
14214*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
14215*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a, __b);
14216*344a7f5eSAndroid Build Coastguard Worker }
14217*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector unsigned long long __a,vector unsigned long long __b)14218*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
14219*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
14220*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, (vector long long)__a,
14221*344a7f5eSAndroid Build Coastguard Worker                                       (vector long long)__b);
14222*344a7f5eSAndroid Build Coastguard Worker }
14223*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector signed long long __a,vector bool long long __b)14224*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector signed long long __a,
14225*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
14226*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(__CR6_LT_REV, __a,
14227*344a7f5eSAndroid Build Coastguard Worker                                       (vector signed long long)__b);
14228*344a7f5eSAndroid Build Coastguard Worker }
14229*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector unsigned long long __a,vector bool long long __b)14230*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector unsigned long long __a,
14231*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
14232*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(
14233*344a7f5eSAndroid Build Coastguard Worker       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
14234*344a7f5eSAndroid Build Coastguard Worker }
14235*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector bool long long __a,vector signed long long __b)14236*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
14237*344a7f5eSAndroid Build Coastguard Worker                                               vector signed long long __b) {
14238*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(
14239*344a7f5eSAndroid Build Coastguard Worker       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
14240*344a7f5eSAndroid Build Coastguard Worker }
14241*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector bool long long __a,vector unsigned long long __b)14242*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
14243*344a7f5eSAndroid Build Coastguard Worker                                               vector unsigned long long __b) {
14244*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(
14245*344a7f5eSAndroid Build Coastguard Worker       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
14246*344a7f5eSAndroid Build Coastguard Worker }
14247*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector bool long long __a,vector bool long long __b)14248*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector bool long long __a,
14249*344a7f5eSAndroid Build Coastguard Worker                                               vector bool long long __b) {
14250*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpequd_p(
14251*344a7f5eSAndroid Build Coastguard Worker       __CR6_LT_REV, (vector signed long long)__a, (vector signed long long)__b);
14252*344a7f5eSAndroid Build Coastguard Worker }
14253*344a7f5eSAndroid Build Coastguard Worker #endif
14254*344a7f5eSAndroid Build Coastguard Worker 
vec_any_ne(vector float __a,vector float __b)14255*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector float __a,
14256*344a7f5eSAndroid Build Coastguard Worker                                               vector float __b) {
14257*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
14258*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpeqsp_p(__CR6_LT_REV, __a, __b);
14259*344a7f5eSAndroid Build Coastguard Worker #else
14260*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpeqfp_p(__CR6_LT_REV, __a, __b);
14261*344a7f5eSAndroid Build Coastguard Worker #endif
14262*344a7f5eSAndroid Build Coastguard Worker }
14263*344a7f5eSAndroid Build Coastguard Worker 
14264*344a7f5eSAndroid Build Coastguard Worker #ifdef __VSX__
vec_any_ne(vector double __a,vector double __b)14265*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __ATTRS_o_ai vec_any_ne(vector double __a,
14266*344a7f5eSAndroid Build Coastguard Worker                                               vector double __b) {
14267*344a7f5eSAndroid Build Coastguard Worker   return __builtin_vsx_xvcmpeqdp_p(__CR6_LT_REV, __a, __b);
14268*344a7f5eSAndroid Build Coastguard Worker }
14269*344a7f5eSAndroid Build Coastguard Worker #endif
14270*344a7f5eSAndroid Build Coastguard Worker 
14271*344a7f5eSAndroid Build Coastguard Worker /* vec_any_nge */
14272*344a7f5eSAndroid Build Coastguard Worker 
14273*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__))
vec_any_nge(vector float __a,vector float __b)14274*344a7f5eSAndroid Build Coastguard Worker vec_any_nge(vector float __a, vector float __b) {
14275*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __a, __b);
14276*344a7f5eSAndroid Build Coastguard Worker }
14277*344a7f5eSAndroid Build Coastguard Worker 
14278*344a7f5eSAndroid Build Coastguard Worker /* vec_any_ngt */
14279*344a7f5eSAndroid Build Coastguard Worker 
14280*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__))
vec_any_ngt(vector float __a,vector float __b)14281*344a7f5eSAndroid Build Coastguard Worker vec_any_ngt(vector float __a, vector float __b) {
14282*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __a, __b);
14283*344a7f5eSAndroid Build Coastguard Worker }
14284*344a7f5eSAndroid Build Coastguard Worker 
14285*344a7f5eSAndroid Build Coastguard Worker /* vec_any_nle */
14286*344a7f5eSAndroid Build Coastguard Worker 
14287*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__))
vec_any_nle(vector float __a,vector float __b)14288*344a7f5eSAndroid Build Coastguard Worker vec_any_nle(vector float __a, vector float __b) {
14289*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgefp_p(__CR6_LT_REV, __b, __a);
14290*344a7f5eSAndroid Build Coastguard Worker }
14291*344a7f5eSAndroid Build Coastguard Worker 
14292*344a7f5eSAndroid Build Coastguard Worker /* vec_any_nlt */
14293*344a7f5eSAndroid Build Coastguard Worker 
14294*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__))
vec_any_nlt(vector float __a,vector float __b)14295*344a7f5eSAndroid Build Coastguard Worker vec_any_nlt(vector float __a, vector float __b) {
14296*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpgtfp_p(__CR6_LT_REV, __b, __a);
14297*344a7f5eSAndroid Build Coastguard Worker }
14298*344a7f5eSAndroid Build Coastguard Worker 
14299*344a7f5eSAndroid Build Coastguard Worker /* vec_any_numeric */
14300*344a7f5eSAndroid Build Coastguard Worker 
14301*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__))
vec_any_numeric(vector float __a)14302*344a7f5eSAndroid Build Coastguard Worker vec_any_numeric(vector float __a) {
14303*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpeqfp_p(__CR6_EQ_REV, __a, __a);
14304*344a7f5eSAndroid Build Coastguard Worker }
14305*344a7f5eSAndroid Build Coastguard Worker 
14306*344a7f5eSAndroid Build Coastguard Worker /* vec_any_out */
14307*344a7f5eSAndroid Build Coastguard Worker 
14308*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__))
vec_any_out(vector float __a,vector float __b)14309*344a7f5eSAndroid Build Coastguard Worker vec_any_out(vector float __a, vector float __b) {
14310*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vcmpbfp_p(__CR6_EQ_REV, __a, __b);
14311*344a7f5eSAndroid Build Coastguard Worker }
14312*344a7f5eSAndroid Build Coastguard Worker 
14313*344a7f5eSAndroid Build Coastguard Worker /* Power 8 Crypto functions
14314*344a7f5eSAndroid Build Coastguard Worker Note: We diverge from the current GCC implementation with regard
14315*344a7f5eSAndroid Build Coastguard Worker to cryptography and related functions as follows:
14316*344a7f5eSAndroid Build Coastguard Worker - Only the SHA and AES instructions and builtins are disabled by -mno-crypto
14317*344a7f5eSAndroid Build Coastguard Worker - The remaining ones are only available on Power8 and up so
14318*344a7f5eSAndroid Build Coastguard Worker   require -mpower8-vector
14319*344a7f5eSAndroid Build Coastguard Worker The justification for this is that export requirements require that
14320*344a7f5eSAndroid Build Coastguard Worker Category:Vector.Crypto is optional (i.e. compliant hardware may not provide
14321*344a7f5eSAndroid Build Coastguard Worker support). As a result, we need to be able to turn off support for those.
14322*344a7f5eSAndroid Build Coastguard Worker The remaining ones (currently controlled by -mcrypto for GCC) still
14323*344a7f5eSAndroid Build Coastguard Worker need to be provided on compliant hardware even if Vector.Crypto is not
14324*344a7f5eSAndroid Build Coastguard Worker provided.
14325*344a7f5eSAndroid Build Coastguard Worker */
14326*344a7f5eSAndroid Build Coastguard Worker #ifdef __CRYPTO__
14327*344a7f5eSAndroid Build Coastguard Worker #define vec_sbox_be __builtin_altivec_crypto_vsbox
14328*344a7f5eSAndroid Build Coastguard Worker #define vec_cipher_be __builtin_altivec_crypto_vcipher
14329*344a7f5eSAndroid Build Coastguard Worker #define vec_cipherlast_be __builtin_altivec_crypto_vcipherlast
14330*344a7f5eSAndroid Build Coastguard Worker #define vec_ncipher_be __builtin_altivec_crypto_vncipher
14331*344a7f5eSAndroid Build Coastguard Worker #define vec_ncipherlast_be __builtin_altivec_crypto_vncipherlast
14332*344a7f5eSAndroid Build Coastguard Worker 
14333*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vsbox(vector unsigned long long __a)14334*344a7f5eSAndroid Build Coastguard Worker __builtin_crypto_vsbox(vector unsigned long long __a) {
14335*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_crypto_vsbox(__a);
14336*344a7f5eSAndroid Build Coastguard Worker }
14337*344a7f5eSAndroid Build Coastguard Worker 
14338*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vcipher(vector unsigned long long __a,vector unsigned long long __b)14339*344a7f5eSAndroid Build Coastguard Worker __builtin_crypto_vcipher(vector unsigned long long __a,
14340*344a7f5eSAndroid Build Coastguard Worker                          vector unsigned long long __b) {
14341*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_crypto_vcipher(__a, __b);
14342*344a7f5eSAndroid Build Coastguard Worker }
14343*344a7f5eSAndroid Build Coastguard Worker 
14344*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vcipherlast(vector unsigned long long __a,vector unsigned long long __b)14345*344a7f5eSAndroid Build Coastguard Worker __builtin_crypto_vcipherlast(vector unsigned long long __a,
14346*344a7f5eSAndroid Build Coastguard Worker                              vector unsigned long long __b) {
14347*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_crypto_vcipherlast(__a, __b);
14348*344a7f5eSAndroid Build Coastguard Worker }
14349*344a7f5eSAndroid Build Coastguard Worker 
14350*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vncipher(vector unsigned long long __a,vector unsigned long long __b)14351*344a7f5eSAndroid Build Coastguard Worker __builtin_crypto_vncipher(vector unsigned long long __a,
14352*344a7f5eSAndroid Build Coastguard Worker                           vector unsigned long long __b) {
14353*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_crypto_vncipher(__a, __b);
14354*344a7f5eSAndroid Build Coastguard Worker }
14355*344a7f5eSAndroid Build Coastguard Worker 
14356*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __attribute__((__always_inline__))
__builtin_crypto_vncipherlast(vector unsigned long long __a,vector unsigned long long __b)14357*344a7f5eSAndroid Build Coastguard Worker __builtin_crypto_vncipherlast(vector unsigned long long __a,
14358*344a7f5eSAndroid Build Coastguard Worker                               vector unsigned long long __b) {
14359*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_crypto_vncipherlast(__a, __b);
14360*344a7f5eSAndroid Build Coastguard Worker }
14361*344a7f5eSAndroid Build Coastguard Worker 
14362*344a7f5eSAndroid Build Coastguard Worker #define __builtin_crypto_vshasigmad __builtin_altivec_crypto_vshasigmad
14363*344a7f5eSAndroid Build Coastguard Worker #define __builtin_crypto_vshasigmaw __builtin_altivec_crypto_vshasigmaw
14364*344a7f5eSAndroid Build Coastguard Worker 
14365*344a7f5eSAndroid Build Coastguard Worker #define vec_shasigma_be(X, Y, Z)                                               \
14366*344a7f5eSAndroid Build Coastguard Worker   _Generic((X), vector unsigned int                                            \
14367*344a7f5eSAndroid Build Coastguard Worker            : __builtin_crypto_vshasigmaw, vector unsigned long long            \
14368*344a7f5eSAndroid Build Coastguard Worker            : __builtin_crypto_vshasigmad)((X), (Y), (Z))
14369*344a7f5eSAndroid Build Coastguard Worker #endif
14370*344a7f5eSAndroid Build Coastguard Worker 
14371*344a7f5eSAndroid Build Coastguard Worker #ifdef __POWER8_VECTOR__
14372*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
__builtin_crypto_vpermxor(vector unsigned char __a,vector unsigned char __b,vector unsigned char __c)14373*344a7f5eSAndroid Build Coastguard Worker __builtin_crypto_vpermxor(vector unsigned char __a, vector unsigned char __b,
14374*344a7f5eSAndroid Build Coastguard Worker                           vector unsigned char __c) {
14375*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_crypto_vpermxor(__a, __b, __c);
14376*344a7f5eSAndroid Build Coastguard Worker }
14377*344a7f5eSAndroid Build Coastguard Worker 
14378*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
__builtin_crypto_vpermxor(vector unsigned short __a,vector unsigned short __b,vector unsigned short __c)14379*344a7f5eSAndroid Build Coastguard Worker __builtin_crypto_vpermxor(vector unsigned short __a, vector unsigned short __b,
14380*344a7f5eSAndroid Build Coastguard Worker                           vector unsigned short __c) {
14381*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned short)__builtin_altivec_crypto_vpermxor(
14382*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__a, (vector unsigned char)__b,
14383*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__c);
14384*344a7f5eSAndroid Build Coastguard Worker }
14385*344a7f5eSAndroid Build Coastguard Worker 
__builtin_crypto_vpermxor(vector unsigned int __a,vector unsigned int __b,vector unsigned int __c)14386*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai __builtin_crypto_vpermxor(
14387*344a7f5eSAndroid Build Coastguard Worker     vector unsigned int __a, vector unsigned int __b, vector unsigned int __c) {
14388*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned int)__builtin_altivec_crypto_vpermxor(
14389*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__a, (vector unsigned char)__b,
14390*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__c);
14391*344a7f5eSAndroid Build Coastguard Worker }
14392*344a7f5eSAndroid Build Coastguard Worker 
14393*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
__builtin_crypto_vpermxor(vector unsigned long long __a,vector unsigned long long __b,vector unsigned long long __c)14394*344a7f5eSAndroid Build Coastguard Worker __builtin_crypto_vpermxor(vector unsigned long long __a,
14395*344a7f5eSAndroid Build Coastguard Worker                           vector unsigned long long __b,
14396*344a7f5eSAndroid Build Coastguard Worker                           vector unsigned long long __c) {
14397*344a7f5eSAndroid Build Coastguard Worker   return (vector unsigned long long)__builtin_altivec_crypto_vpermxor(
14398*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__a, (vector unsigned char)__b,
14399*344a7f5eSAndroid Build Coastguard Worker       (vector unsigned char)__c);
14400*344a7f5eSAndroid Build Coastguard Worker }
14401*344a7f5eSAndroid Build Coastguard Worker 
14402*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
__builtin_crypto_vpmsumb(vector unsigned char __a,vector unsigned char __b)14403*344a7f5eSAndroid Build Coastguard Worker __builtin_crypto_vpmsumb(vector unsigned char __a, vector unsigned char __b) {
14404*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_crypto_vpmsumb(__a, __b);
14405*344a7f5eSAndroid Build Coastguard Worker }
14406*344a7f5eSAndroid Build Coastguard Worker 
14407*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned short __ATTRS_o_ai
__builtin_crypto_vpmsumb(vector unsigned short __a,vector unsigned short __b)14408*344a7f5eSAndroid Build Coastguard Worker __builtin_crypto_vpmsumb(vector unsigned short __a, vector unsigned short __b) {
14409*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_crypto_vpmsumh(__a, __b);
14410*344a7f5eSAndroid Build Coastguard Worker }
14411*344a7f5eSAndroid Build Coastguard Worker 
14412*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned int __ATTRS_o_ai
__builtin_crypto_vpmsumb(vector unsigned int __a,vector unsigned int __b)14413*344a7f5eSAndroid Build Coastguard Worker __builtin_crypto_vpmsumb(vector unsigned int __a, vector unsigned int __b) {
14414*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_crypto_vpmsumw(__a, __b);
14415*344a7f5eSAndroid Build Coastguard Worker }
14416*344a7f5eSAndroid Build Coastguard Worker 
14417*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __ATTRS_o_ai
__builtin_crypto_vpmsumb(vector unsigned long long __a,vector unsigned long long __b)14418*344a7f5eSAndroid Build Coastguard Worker __builtin_crypto_vpmsumb(vector unsigned long long __a,
14419*344a7f5eSAndroid Build Coastguard Worker                          vector unsigned long long __b) {
14420*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_crypto_vpmsumd(__a, __b);
14421*344a7f5eSAndroid Build Coastguard Worker }
14422*344a7f5eSAndroid Build Coastguard Worker 
14423*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector signed char __ATTRS_o_ai
vec_vgbbd(vector signed char __a)14424*344a7f5eSAndroid Build Coastguard Worker vec_vgbbd(vector signed char __a) {
14425*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vgbbd((vector unsigned char)__a);
14426*344a7f5eSAndroid Build Coastguard Worker }
14427*344a7f5eSAndroid Build Coastguard Worker 
14428*344a7f5eSAndroid Build Coastguard Worker #define vec_pmsum_be __builtin_crypto_vpmsumb
14429*344a7f5eSAndroid Build Coastguard Worker #define vec_gb __builtin_altivec_vgbbd
14430*344a7f5eSAndroid Build Coastguard Worker 
14431*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned char __ATTRS_o_ai
vec_vgbbd(vector unsigned char __a)14432*344a7f5eSAndroid Build Coastguard Worker vec_vgbbd(vector unsigned char __a) {
14433*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vgbbd(__a);
14434*344a7f5eSAndroid Build Coastguard Worker }
14435*344a7f5eSAndroid Build Coastguard Worker 
14436*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector long long __ATTRS_o_ai
vec_vbpermq(vector signed char __a,vector signed char __b)14437*344a7f5eSAndroid Build Coastguard Worker vec_vbpermq(vector signed char __a, vector signed char __b) {
14438*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vbpermq((vector unsigned char)__a,
14439*344a7f5eSAndroid Build Coastguard Worker                                    (vector unsigned char)__b);
14440*344a7f5eSAndroid Build Coastguard Worker }
14441*344a7f5eSAndroid Build Coastguard Worker 
14442*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector long long __ATTRS_o_ai
vec_vbpermq(vector unsigned char __a,vector unsigned char __b)14443*344a7f5eSAndroid Build Coastguard Worker vec_vbpermq(vector unsigned char __a, vector unsigned char __b) {
14444*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vbpermq(__a, __b);
14445*344a7f5eSAndroid Build Coastguard Worker }
14446*344a7f5eSAndroid Build Coastguard Worker 
14447*344a7f5eSAndroid Build Coastguard Worker #ifdef __powerpc64__
14448*344a7f5eSAndroid Build Coastguard Worker static __inline__ vector unsigned long long __attribute__((__always_inline__))
vec_bperm(vector unsigned __int128 __a,vector unsigned char __b)14449*344a7f5eSAndroid Build Coastguard Worker vec_bperm(vector unsigned __int128 __a, vector unsigned char __b) {
14450*344a7f5eSAndroid Build Coastguard Worker   return __builtin_altivec_vbpermq((vector unsigned char)__a,
14451*344a7f5eSAndroid Build Coastguard Worker                                    (vector unsigned char)__b);
14452*344a7f5eSAndroid Build Coastguard Worker }
14453*344a7f5eSAndroid Build Coastguard Worker #endif
14454*344a7f5eSAndroid Build Coastguard Worker #endif
14455*344a7f5eSAndroid Build Coastguard Worker 
14456*344a7f5eSAndroid Build Coastguard Worker #undef __ATTRS_o_ai
14457*344a7f5eSAndroid Build Coastguard Worker 
14458*344a7f5eSAndroid Build Coastguard Worker #endif /* __ALTIVEC_H */
14459