xref: /aosp_15_r20/prebuilts/sdk/renderscript/clang-include/avx2intrin.h (revision 344a7f5ef16c479e7a7f54ee6567a9d112f9e72b)
1*344a7f5eSAndroid Build Coastguard Worker /*===---- avx2intrin.h - AVX2 intrinsics -----------------------------------===
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 
24*344a7f5eSAndroid Build Coastguard Worker #ifndef __IMMINTRIN_H
25*344a7f5eSAndroid Build Coastguard Worker #error "Never use <avx2intrin.h> directly; include <immintrin.h> instead."
26*344a7f5eSAndroid Build Coastguard Worker #endif
27*344a7f5eSAndroid Build Coastguard Worker 
28*344a7f5eSAndroid Build Coastguard Worker #ifndef __AVX2INTRIN_H
29*344a7f5eSAndroid Build Coastguard Worker #define __AVX2INTRIN_H
30*344a7f5eSAndroid Build Coastguard Worker 
31*344a7f5eSAndroid Build Coastguard Worker /* Define the default attributes for the functions in this file. */
32*344a7f5eSAndroid Build Coastguard Worker #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("avx2")))
33*344a7f5eSAndroid Build Coastguard Worker 
34*344a7f5eSAndroid Build Coastguard Worker /* SSE4 Multiple Packed Sums of Absolute Difference.  */
35*344a7f5eSAndroid Build Coastguard Worker #define _mm256_mpsadbw_epu8(X, Y, M) \
36*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_ia32_mpsadbw256((__v32qi)(__m256i)(X), \
37*344a7f5eSAndroid Build Coastguard Worker                                      (__v32qi)(__m256i)(Y), (int)(M))
38*344a7f5eSAndroid Build Coastguard Worker 
39*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_abs_epi8(__m256i __a)40*344a7f5eSAndroid Build Coastguard Worker _mm256_abs_epi8(__m256i __a)
41*344a7f5eSAndroid Build Coastguard Worker {
42*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_pabsb256((__v32qi)__a);
43*344a7f5eSAndroid Build Coastguard Worker }
44*344a7f5eSAndroid Build Coastguard Worker 
45*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_abs_epi16(__m256i __a)46*344a7f5eSAndroid Build Coastguard Worker _mm256_abs_epi16(__m256i __a)
47*344a7f5eSAndroid Build Coastguard Worker {
48*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_pabsw256((__v16hi)__a);
49*344a7f5eSAndroid Build Coastguard Worker }
50*344a7f5eSAndroid Build Coastguard Worker 
51*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_abs_epi32(__m256i __a)52*344a7f5eSAndroid Build Coastguard Worker _mm256_abs_epi32(__m256i __a)
53*344a7f5eSAndroid Build Coastguard Worker {
54*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_pabsd256((__v8si)__a);
55*344a7f5eSAndroid Build Coastguard Worker }
56*344a7f5eSAndroid Build Coastguard Worker 
57*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_packs_epi16(__m256i __a,__m256i __b)58*344a7f5eSAndroid Build Coastguard Worker _mm256_packs_epi16(__m256i __a, __m256i __b)
59*344a7f5eSAndroid Build Coastguard Worker {
60*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_packsswb256((__v16hi)__a, (__v16hi)__b);
61*344a7f5eSAndroid Build Coastguard Worker }
62*344a7f5eSAndroid Build Coastguard Worker 
63*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_packs_epi32(__m256i __a,__m256i __b)64*344a7f5eSAndroid Build Coastguard Worker _mm256_packs_epi32(__m256i __a, __m256i __b)
65*344a7f5eSAndroid Build Coastguard Worker {
66*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_packssdw256((__v8si)__a, (__v8si)__b);
67*344a7f5eSAndroid Build Coastguard Worker }
68*344a7f5eSAndroid Build Coastguard Worker 
69*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_packus_epi16(__m256i __a,__m256i __b)70*344a7f5eSAndroid Build Coastguard Worker _mm256_packus_epi16(__m256i __a, __m256i __b)
71*344a7f5eSAndroid Build Coastguard Worker {
72*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_packuswb256((__v16hi)__a, (__v16hi)__b);
73*344a7f5eSAndroid Build Coastguard Worker }
74*344a7f5eSAndroid Build Coastguard Worker 
75*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_packus_epi32(__m256i __V1,__m256i __V2)76*344a7f5eSAndroid Build Coastguard Worker _mm256_packus_epi32(__m256i __V1, __m256i __V2)
77*344a7f5eSAndroid Build Coastguard Worker {
78*344a7f5eSAndroid Build Coastguard Worker   return (__m256i) __builtin_ia32_packusdw256((__v8si)__V1, (__v8si)__V2);
79*344a7f5eSAndroid Build Coastguard Worker }
80*344a7f5eSAndroid Build Coastguard Worker 
81*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_add_epi8(__m256i __a,__m256i __b)82*344a7f5eSAndroid Build Coastguard Worker _mm256_add_epi8(__m256i __a, __m256i __b)
83*344a7f5eSAndroid Build Coastguard Worker {
84*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v32qu)__a + (__v32qu)__b);
85*344a7f5eSAndroid Build Coastguard Worker }
86*344a7f5eSAndroid Build Coastguard Worker 
87*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_add_epi16(__m256i __a,__m256i __b)88*344a7f5eSAndroid Build Coastguard Worker _mm256_add_epi16(__m256i __a, __m256i __b)
89*344a7f5eSAndroid Build Coastguard Worker {
90*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v16hu)__a + (__v16hu)__b);
91*344a7f5eSAndroid Build Coastguard Worker }
92*344a7f5eSAndroid Build Coastguard Worker 
93*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_add_epi32(__m256i __a,__m256i __b)94*344a7f5eSAndroid Build Coastguard Worker _mm256_add_epi32(__m256i __a, __m256i __b)
95*344a7f5eSAndroid Build Coastguard Worker {
96*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v8su)__a + (__v8su)__b);
97*344a7f5eSAndroid Build Coastguard Worker }
98*344a7f5eSAndroid Build Coastguard Worker 
99*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_add_epi64(__m256i __a,__m256i __b)100*344a7f5eSAndroid Build Coastguard Worker _mm256_add_epi64(__m256i __a, __m256i __b)
101*344a7f5eSAndroid Build Coastguard Worker {
102*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v4du)__a + (__v4du)__b);
103*344a7f5eSAndroid Build Coastguard Worker }
104*344a7f5eSAndroid Build Coastguard Worker 
105*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_adds_epi8(__m256i __a,__m256i __b)106*344a7f5eSAndroid Build Coastguard Worker _mm256_adds_epi8(__m256i __a, __m256i __b)
107*344a7f5eSAndroid Build Coastguard Worker {
108*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_paddsb256((__v32qi)__a, (__v32qi)__b);
109*344a7f5eSAndroid Build Coastguard Worker }
110*344a7f5eSAndroid Build Coastguard Worker 
111*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_adds_epi16(__m256i __a,__m256i __b)112*344a7f5eSAndroid Build Coastguard Worker _mm256_adds_epi16(__m256i __a, __m256i __b)
113*344a7f5eSAndroid Build Coastguard Worker {
114*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_paddsw256((__v16hi)__a, (__v16hi)__b);
115*344a7f5eSAndroid Build Coastguard Worker }
116*344a7f5eSAndroid Build Coastguard Worker 
117*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_adds_epu8(__m256i __a,__m256i __b)118*344a7f5eSAndroid Build Coastguard Worker _mm256_adds_epu8(__m256i __a, __m256i __b)
119*344a7f5eSAndroid Build Coastguard Worker {
120*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_paddusb256((__v32qi)__a, (__v32qi)__b);
121*344a7f5eSAndroid Build Coastguard Worker }
122*344a7f5eSAndroid Build Coastguard Worker 
123*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_adds_epu16(__m256i __a,__m256i __b)124*344a7f5eSAndroid Build Coastguard Worker _mm256_adds_epu16(__m256i __a, __m256i __b)
125*344a7f5eSAndroid Build Coastguard Worker {
126*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_paddusw256((__v16hi)__a, (__v16hi)__b);
127*344a7f5eSAndroid Build Coastguard Worker }
128*344a7f5eSAndroid Build Coastguard Worker 
129*344a7f5eSAndroid Build Coastguard Worker #define _mm256_alignr_epi8(a, b, n) __extension__ ({        \
130*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_ia32_palignr256((__v32qi)(__m256i)(a), \
131*344a7f5eSAndroid Build Coastguard Worker                                      (__v32qi)(__m256i)(b), (n)); })
132*344a7f5eSAndroid Build Coastguard Worker 
133*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_and_si256(__m256i __a,__m256i __b)134*344a7f5eSAndroid Build Coastguard Worker _mm256_and_si256(__m256i __a, __m256i __b)
135*344a7f5eSAndroid Build Coastguard Worker {
136*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v4du)__a & (__v4du)__b);
137*344a7f5eSAndroid Build Coastguard Worker }
138*344a7f5eSAndroid Build Coastguard Worker 
139*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_andnot_si256(__m256i __a,__m256i __b)140*344a7f5eSAndroid Build Coastguard Worker _mm256_andnot_si256(__m256i __a, __m256i __b)
141*344a7f5eSAndroid Build Coastguard Worker {
142*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)(~(__v4du)__a & (__v4du)__b);
143*344a7f5eSAndroid Build Coastguard Worker }
144*344a7f5eSAndroid Build Coastguard Worker 
145*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_avg_epu8(__m256i __a,__m256i __b)146*344a7f5eSAndroid Build Coastguard Worker _mm256_avg_epu8(__m256i __a, __m256i __b)
147*344a7f5eSAndroid Build Coastguard Worker {
148*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pavgb256((__v32qi)__a, (__v32qi)__b);
149*344a7f5eSAndroid Build Coastguard Worker }
150*344a7f5eSAndroid Build Coastguard Worker 
151*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_avg_epu16(__m256i __a,__m256i __b)152*344a7f5eSAndroid Build Coastguard Worker _mm256_avg_epu16(__m256i __a, __m256i __b)
153*344a7f5eSAndroid Build Coastguard Worker {
154*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pavgw256((__v16hi)__a, (__v16hi)__b);
155*344a7f5eSAndroid Build Coastguard Worker }
156*344a7f5eSAndroid Build Coastguard Worker 
157*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_blendv_epi8(__m256i __V1,__m256i __V2,__m256i __M)158*344a7f5eSAndroid Build Coastguard Worker _mm256_blendv_epi8(__m256i __V1, __m256i __V2, __m256i __M)
159*344a7f5eSAndroid Build Coastguard Worker {
160*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pblendvb256((__v32qi)__V1, (__v32qi)__V2,
161*344a7f5eSAndroid Build Coastguard Worker                                               (__v32qi)__M);
162*344a7f5eSAndroid Build Coastguard Worker }
163*344a7f5eSAndroid Build Coastguard Worker 
164*344a7f5eSAndroid Build Coastguard Worker #define _mm256_blend_epi16(V1, V2, M) __extension__ ({       \
165*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_shufflevector((__v16hi)(__m256i)(V1),   \
166*344a7f5eSAndroid Build Coastguard Worker                                    (__v16hi)(__m256i)(V2),   \
167*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x01) ? 16 : 0),  \
168*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x02) ? 17 : 1),  \
169*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x04) ? 18 : 2),  \
170*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x08) ? 19 : 3),  \
171*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x10) ? 20 : 4),  \
172*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x20) ? 21 : 5),  \
173*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x40) ? 22 : 6),  \
174*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x80) ? 23 : 7),  \
175*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x01) ? 24 : 8),  \
176*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x02) ? 25 : 9),  \
177*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x04) ? 26 : 10), \
178*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x08) ? 27 : 11), \
179*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x10) ? 28 : 12), \
180*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x20) ? 29 : 13), \
181*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x40) ? 30 : 14), \
182*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x80) ? 31 : 15)); })
183*344a7f5eSAndroid Build Coastguard Worker 
184*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cmpeq_epi8(__m256i __a,__m256i __b)185*344a7f5eSAndroid Build Coastguard Worker _mm256_cmpeq_epi8(__m256i __a, __m256i __b)
186*344a7f5eSAndroid Build Coastguard Worker {
187*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v32qi)__a == (__v32qi)__b);
188*344a7f5eSAndroid Build Coastguard Worker }
189*344a7f5eSAndroid Build Coastguard Worker 
190*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cmpeq_epi16(__m256i __a,__m256i __b)191*344a7f5eSAndroid Build Coastguard Worker _mm256_cmpeq_epi16(__m256i __a, __m256i __b)
192*344a7f5eSAndroid Build Coastguard Worker {
193*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v16hi)__a == (__v16hi)__b);
194*344a7f5eSAndroid Build Coastguard Worker }
195*344a7f5eSAndroid Build Coastguard Worker 
196*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cmpeq_epi32(__m256i __a,__m256i __b)197*344a7f5eSAndroid Build Coastguard Worker _mm256_cmpeq_epi32(__m256i __a, __m256i __b)
198*344a7f5eSAndroid Build Coastguard Worker {
199*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v8si)__a == (__v8si)__b);
200*344a7f5eSAndroid Build Coastguard Worker }
201*344a7f5eSAndroid Build Coastguard Worker 
202*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cmpeq_epi64(__m256i __a,__m256i __b)203*344a7f5eSAndroid Build Coastguard Worker _mm256_cmpeq_epi64(__m256i __a, __m256i __b)
204*344a7f5eSAndroid Build Coastguard Worker {
205*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v4di)__a == (__v4di)__b);
206*344a7f5eSAndroid Build Coastguard Worker }
207*344a7f5eSAndroid Build Coastguard Worker 
208*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cmpgt_epi8(__m256i __a,__m256i __b)209*344a7f5eSAndroid Build Coastguard Worker _mm256_cmpgt_epi8(__m256i __a, __m256i __b)
210*344a7f5eSAndroid Build Coastguard Worker {
211*344a7f5eSAndroid Build Coastguard Worker   /* This function always performs a signed comparison, but __v32qi is a char
212*344a7f5eSAndroid Build Coastguard Worker      which may be signed or unsigned, so use __v32qs. */
213*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v32qs)__a > (__v32qs)__b);
214*344a7f5eSAndroid Build Coastguard Worker }
215*344a7f5eSAndroid Build Coastguard Worker 
216*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cmpgt_epi16(__m256i __a,__m256i __b)217*344a7f5eSAndroid Build Coastguard Worker _mm256_cmpgt_epi16(__m256i __a, __m256i __b)
218*344a7f5eSAndroid Build Coastguard Worker {
219*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v16hi)__a > (__v16hi)__b);
220*344a7f5eSAndroid Build Coastguard Worker }
221*344a7f5eSAndroid Build Coastguard Worker 
222*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cmpgt_epi32(__m256i __a,__m256i __b)223*344a7f5eSAndroid Build Coastguard Worker _mm256_cmpgt_epi32(__m256i __a, __m256i __b)
224*344a7f5eSAndroid Build Coastguard Worker {
225*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v8si)__a > (__v8si)__b);
226*344a7f5eSAndroid Build Coastguard Worker }
227*344a7f5eSAndroid Build Coastguard Worker 
228*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cmpgt_epi64(__m256i __a,__m256i __b)229*344a7f5eSAndroid Build Coastguard Worker _mm256_cmpgt_epi64(__m256i __a, __m256i __b)
230*344a7f5eSAndroid Build Coastguard Worker {
231*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v4di)__a > (__v4di)__b);
232*344a7f5eSAndroid Build Coastguard Worker }
233*344a7f5eSAndroid Build Coastguard Worker 
234*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_hadd_epi16(__m256i __a,__m256i __b)235*344a7f5eSAndroid Build Coastguard Worker _mm256_hadd_epi16(__m256i __a, __m256i __b)
236*344a7f5eSAndroid Build Coastguard Worker {
237*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_phaddw256((__v16hi)__a, (__v16hi)__b);
238*344a7f5eSAndroid Build Coastguard Worker }
239*344a7f5eSAndroid Build Coastguard Worker 
240*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_hadd_epi32(__m256i __a,__m256i __b)241*344a7f5eSAndroid Build Coastguard Worker _mm256_hadd_epi32(__m256i __a, __m256i __b)
242*344a7f5eSAndroid Build Coastguard Worker {
243*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_phaddd256((__v8si)__a, (__v8si)__b);
244*344a7f5eSAndroid Build Coastguard Worker }
245*344a7f5eSAndroid Build Coastguard Worker 
246*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_hadds_epi16(__m256i __a,__m256i __b)247*344a7f5eSAndroid Build Coastguard Worker _mm256_hadds_epi16(__m256i __a, __m256i __b)
248*344a7f5eSAndroid Build Coastguard Worker {
249*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_phaddsw256((__v16hi)__a, (__v16hi)__b);
250*344a7f5eSAndroid Build Coastguard Worker }
251*344a7f5eSAndroid Build Coastguard Worker 
252*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_hsub_epi16(__m256i __a,__m256i __b)253*344a7f5eSAndroid Build Coastguard Worker _mm256_hsub_epi16(__m256i __a, __m256i __b)
254*344a7f5eSAndroid Build Coastguard Worker {
255*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_phsubw256((__v16hi)__a, (__v16hi)__b);
256*344a7f5eSAndroid Build Coastguard Worker }
257*344a7f5eSAndroid Build Coastguard Worker 
258*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_hsub_epi32(__m256i __a,__m256i __b)259*344a7f5eSAndroid Build Coastguard Worker _mm256_hsub_epi32(__m256i __a, __m256i __b)
260*344a7f5eSAndroid Build Coastguard Worker {
261*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_phsubd256((__v8si)__a, (__v8si)__b);
262*344a7f5eSAndroid Build Coastguard Worker }
263*344a7f5eSAndroid Build Coastguard Worker 
264*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_hsubs_epi16(__m256i __a,__m256i __b)265*344a7f5eSAndroid Build Coastguard Worker _mm256_hsubs_epi16(__m256i __a, __m256i __b)
266*344a7f5eSAndroid Build Coastguard Worker {
267*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_phsubsw256((__v16hi)__a, (__v16hi)__b);
268*344a7f5eSAndroid Build Coastguard Worker }
269*344a7f5eSAndroid Build Coastguard Worker 
270*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maddubs_epi16(__m256i __a,__m256i __b)271*344a7f5eSAndroid Build Coastguard Worker _mm256_maddubs_epi16(__m256i __a, __m256i __b)
272*344a7f5eSAndroid Build Coastguard Worker {
273*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_pmaddubsw256((__v32qi)__a, (__v32qi)__b);
274*344a7f5eSAndroid Build Coastguard Worker }
275*344a7f5eSAndroid Build Coastguard Worker 
276*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_madd_epi16(__m256i __a,__m256i __b)277*344a7f5eSAndroid Build Coastguard Worker _mm256_madd_epi16(__m256i __a, __m256i __b)
278*344a7f5eSAndroid Build Coastguard Worker {
279*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pmaddwd256((__v16hi)__a, (__v16hi)__b);
280*344a7f5eSAndroid Build Coastguard Worker }
281*344a7f5eSAndroid Build Coastguard Worker 
282*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_max_epi8(__m256i __a,__m256i __b)283*344a7f5eSAndroid Build Coastguard Worker _mm256_max_epi8(__m256i __a, __m256i __b)
284*344a7f5eSAndroid Build Coastguard Worker {
285*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pmaxsb256((__v32qi)__a, (__v32qi)__b);
286*344a7f5eSAndroid Build Coastguard Worker }
287*344a7f5eSAndroid Build Coastguard Worker 
288*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_max_epi16(__m256i __a,__m256i __b)289*344a7f5eSAndroid Build Coastguard Worker _mm256_max_epi16(__m256i __a, __m256i __b)
290*344a7f5eSAndroid Build Coastguard Worker {
291*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pmaxsw256((__v16hi)__a, (__v16hi)__b);
292*344a7f5eSAndroid Build Coastguard Worker }
293*344a7f5eSAndroid Build Coastguard Worker 
294*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_max_epi32(__m256i __a,__m256i __b)295*344a7f5eSAndroid Build Coastguard Worker _mm256_max_epi32(__m256i __a, __m256i __b)
296*344a7f5eSAndroid Build Coastguard Worker {
297*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pmaxsd256((__v8si)__a, (__v8si)__b);
298*344a7f5eSAndroid Build Coastguard Worker }
299*344a7f5eSAndroid Build Coastguard Worker 
300*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_max_epu8(__m256i __a,__m256i __b)301*344a7f5eSAndroid Build Coastguard Worker _mm256_max_epu8(__m256i __a, __m256i __b)
302*344a7f5eSAndroid Build Coastguard Worker {
303*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pmaxub256((__v32qi)__a, (__v32qi)__b);
304*344a7f5eSAndroid Build Coastguard Worker }
305*344a7f5eSAndroid Build Coastguard Worker 
306*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_max_epu16(__m256i __a,__m256i __b)307*344a7f5eSAndroid Build Coastguard Worker _mm256_max_epu16(__m256i __a, __m256i __b)
308*344a7f5eSAndroid Build Coastguard Worker {
309*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pmaxuw256((__v16hi)__a, (__v16hi)__b);
310*344a7f5eSAndroid Build Coastguard Worker }
311*344a7f5eSAndroid Build Coastguard Worker 
312*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_max_epu32(__m256i __a,__m256i __b)313*344a7f5eSAndroid Build Coastguard Worker _mm256_max_epu32(__m256i __a, __m256i __b)
314*344a7f5eSAndroid Build Coastguard Worker {
315*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pmaxud256((__v8si)__a, (__v8si)__b);
316*344a7f5eSAndroid Build Coastguard Worker }
317*344a7f5eSAndroid Build Coastguard Worker 
318*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_min_epi8(__m256i __a,__m256i __b)319*344a7f5eSAndroid Build Coastguard Worker _mm256_min_epi8(__m256i __a, __m256i __b)
320*344a7f5eSAndroid Build Coastguard Worker {
321*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pminsb256((__v32qi)__a, (__v32qi)__b);
322*344a7f5eSAndroid Build Coastguard Worker }
323*344a7f5eSAndroid Build Coastguard Worker 
324*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_min_epi16(__m256i __a,__m256i __b)325*344a7f5eSAndroid Build Coastguard Worker _mm256_min_epi16(__m256i __a, __m256i __b)
326*344a7f5eSAndroid Build Coastguard Worker {
327*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pminsw256((__v16hi)__a, (__v16hi)__b);
328*344a7f5eSAndroid Build Coastguard Worker }
329*344a7f5eSAndroid Build Coastguard Worker 
330*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_min_epi32(__m256i __a,__m256i __b)331*344a7f5eSAndroid Build Coastguard Worker _mm256_min_epi32(__m256i __a, __m256i __b)
332*344a7f5eSAndroid Build Coastguard Worker {
333*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pminsd256((__v8si)__a, (__v8si)__b);
334*344a7f5eSAndroid Build Coastguard Worker }
335*344a7f5eSAndroid Build Coastguard Worker 
336*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_min_epu8(__m256i __a,__m256i __b)337*344a7f5eSAndroid Build Coastguard Worker _mm256_min_epu8(__m256i __a, __m256i __b)
338*344a7f5eSAndroid Build Coastguard Worker {
339*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pminub256((__v32qi)__a, (__v32qi)__b);
340*344a7f5eSAndroid Build Coastguard Worker }
341*344a7f5eSAndroid Build Coastguard Worker 
342*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_min_epu16(__m256i __a,__m256i __b)343*344a7f5eSAndroid Build Coastguard Worker _mm256_min_epu16(__m256i __a, __m256i __b)
344*344a7f5eSAndroid Build Coastguard Worker {
345*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pminuw256 ((__v16hi)__a, (__v16hi)__b);
346*344a7f5eSAndroid Build Coastguard Worker }
347*344a7f5eSAndroid Build Coastguard Worker 
348*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_min_epu32(__m256i __a,__m256i __b)349*344a7f5eSAndroid Build Coastguard Worker _mm256_min_epu32(__m256i __a, __m256i __b)
350*344a7f5eSAndroid Build Coastguard Worker {
351*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pminud256((__v8si)__a, (__v8si)__b);
352*344a7f5eSAndroid Build Coastguard Worker }
353*344a7f5eSAndroid Build Coastguard Worker 
354*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __DEFAULT_FN_ATTRS
_mm256_movemask_epi8(__m256i __a)355*344a7f5eSAndroid Build Coastguard Worker _mm256_movemask_epi8(__m256i __a)
356*344a7f5eSAndroid Build Coastguard Worker {
357*344a7f5eSAndroid Build Coastguard Worker   return __builtin_ia32_pmovmskb256((__v32qi)__a);
358*344a7f5eSAndroid Build Coastguard Worker }
359*344a7f5eSAndroid Build Coastguard Worker 
360*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtepi8_epi16(__m128i __V)361*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtepi8_epi16(__m128i __V)
362*344a7f5eSAndroid Build Coastguard Worker {
363*344a7f5eSAndroid Build Coastguard Worker   /* This function always performs a signed extension, but __v16qi is a char
364*344a7f5eSAndroid Build Coastguard Worker      which may be signed or unsigned, so use __v16qs. */
365*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_convertvector((__v16qs)__V, __v16hi);
366*344a7f5eSAndroid Build Coastguard Worker }
367*344a7f5eSAndroid Build Coastguard Worker 
368*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtepi8_epi32(__m128i __V)369*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtepi8_epi32(__m128i __V)
370*344a7f5eSAndroid Build Coastguard Worker {
371*344a7f5eSAndroid Build Coastguard Worker   /* This function always performs a signed extension, but __v16qi is a char
372*344a7f5eSAndroid Build Coastguard Worker      which may be signed or unsigned, so use __v16qs. */
373*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_convertvector(__builtin_shufflevector((__v16qs)__V, (__v16qs)__V, 0, 1, 2, 3, 4, 5, 6, 7), __v8si);
374*344a7f5eSAndroid Build Coastguard Worker }
375*344a7f5eSAndroid Build Coastguard Worker 
376*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtepi8_epi64(__m128i __V)377*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtepi8_epi64(__m128i __V)
378*344a7f5eSAndroid Build Coastguard Worker {
379*344a7f5eSAndroid Build Coastguard Worker   /* This function always performs a signed extension, but __v16qi is a char
380*344a7f5eSAndroid Build Coastguard Worker      which may be signed or unsigned, so use __v16qs. */
381*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_convertvector(__builtin_shufflevector((__v16qs)__V, (__v16qs)__V, 0, 1, 2, 3), __v4di);
382*344a7f5eSAndroid Build Coastguard Worker }
383*344a7f5eSAndroid Build Coastguard Worker 
384*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtepi16_epi32(__m128i __V)385*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtepi16_epi32(__m128i __V)
386*344a7f5eSAndroid Build Coastguard Worker {
387*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_convertvector((__v8hi)__V, __v8si);
388*344a7f5eSAndroid Build Coastguard Worker }
389*344a7f5eSAndroid Build Coastguard Worker 
390*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtepi16_epi64(__m128i __V)391*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtepi16_epi64(__m128i __V)
392*344a7f5eSAndroid Build Coastguard Worker {
393*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_convertvector(__builtin_shufflevector((__v8hi)__V, (__v8hi)__V, 0, 1, 2, 3), __v4di);
394*344a7f5eSAndroid Build Coastguard Worker }
395*344a7f5eSAndroid Build Coastguard Worker 
396*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtepi32_epi64(__m128i __V)397*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtepi32_epi64(__m128i __V)
398*344a7f5eSAndroid Build Coastguard Worker {
399*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_convertvector((__v4si)__V, __v4di);
400*344a7f5eSAndroid Build Coastguard Worker }
401*344a7f5eSAndroid Build Coastguard Worker 
402*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtepu8_epi16(__m128i __V)403*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtepu8_epi16(__m128i __V)
404*344a7f5eSAndroid Build Coastguard Worker {
405*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_convertvector((__v16qu)__V, __v16hi);
406*344a7f5eSAndroid Build Coastguard Worker }
407*344a7f5eSAndroid Build Coastguard Worker 
408*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtepu8_epi32(__m128i __V)409*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtepu8_epi32(__m128i __V)
410*344a7f5eSAndroid Build Coastguard Worker {
411*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1, 2, 3, 4, 5, 6, 7), __v8si);
412*344a7f5eSAndroid Build Coastguard Worker }
413*344a7f5eSAndroid Build Coastguard Worker 
414*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtepu8_epi64(__m128i __V)415*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtepu8_epi64(__m128i __V)
416*344a7f5eSAndroid Build Coastguard Worker {
417*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_convertvector(__builtin_shufflevector((__v16qu)__V, (__v16qu)__V, 0, 1, 2, 3), __v4di);
418*344a7f5eSAndroid Build Coastguard Worker }
419*344a7f5eSAndroid Build Coastguard Worker 
420*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtepu16_epi32(__m128i __V)421*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtepu16_epi32(__m128i __V)
422*344a7f5eSAndroid Build Coastguard Worker {
423*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_convertvector((__v8hu)__V, __v8si);
424*344a7f5eSAndroid Build Coastguard Worker }
425*344a7f5eSAndroid Build Coastguard Worker 
426*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtepu16_epi64(__m128i __V)427*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtepu16_epi64(__m128i __V)
428*344a7f5eSAndroid Build Coastguard Worker {
429*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_convertvector(__builtin_shufflevector((__v8hu)__V, (__v8hu)__V, 0, 1, 2, 3), __v4di);
430*344a7f5eSAndroid Build Coastguard Worker }
431*344a7f5eSAndroid Build Coastguard Worker 
432*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_cvtepu32_epi64(__m128i __V)433*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtepu32_epi64(__m128i __V)
434*344a7f5eSAndroid Build Coastguard Worker {
435*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_convertvector((__v4su)__V, __v4di);
436*344a7f5eSAndroid Build Coastguard Worker }
437*344a7f5eSAndroid Build Coastguard Worker 
438*344a7f5eSAndroid Build Coastguard Worker static __inline__  __m256i __DEFAULT_FN_ATTRS
_mm256_mul_epi32(__m256i __a,__m256i __b)439*344a7f5eSAndroid Build Coastguard Worker _mm256_mul_epi32(__m256i __a, __m256i __b)
440*344a7f5eSAndroid Build Coastguard Worker {
441*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pmuldq256((__v8si)__a, (__v8si)__b);
442*344a7f5eSAndroid Build Coastguard Worker }
443*344a7f5eSAndroid Build Coastguard Worker 
444*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mulhrs_epi16(__m256i __a,__m256i __b)445*344a7f5eSAndroid Build Coastguard Worker _mm256_mulhrs_epi16(__m256i __a, __m256i __b)
446*344a7f5eSAndroid Build Coastguard Worker {
447*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pmulhrsw256((__v16hi)__a, (__v16hi)__b);
448*344a7f5eSAndroid Build Coastguard Worker }
449*344a7f5eSAndroid Build Coastguard Worker 
450*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mulhi_epu16(__m256i __a,__m256i __b)451*344a7f5eSAndroid Build Coastguard Worker _mm256_mulhi_epu16(__m256i __a, __m256i __b)
452*344a7f5eSAndroid Build Coastguard Worker {
453*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pmulhuw256((__v16hi)__a, (__v16hi)__b);
454*344a7f5eSAndroid Build Coastguard Worker }
455*344a7f5eSAndroid Build Coastguard Worker 
456*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mulhi_epi16(__m256i __a,__m256i __b)457*344a7f5eSAndroid Build Coastguard Worker _mm256_mulhi_epi16(__m256i __a, __m256i __b)
458*344a7f5eSAndroid Build Coastguard Worker {
459*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pmulhw256((__v16hi)__a, (__v16hi)__b);
460*344a7f5eSAndroid Build Coastguard Worker }
461*344a7f5eSAndroid Build Coastguard Worker 
462*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mullo_epi16(__m256i __a,__m256i __b)463*344a7f5eSAndroid Build Coastguard Worker _mm256_mullo_epi16(__m256i __a, __m256i __b)
464*344a7f5eSAndroid Build Coastguard Worker {
465*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v16hu)__a * (__v16hu)__b);
466*344a7f5eSAndroid Build Coastguard Worker }
467*344a7f5eSAndroid Build Coastguard Worker 
468*344a7f5eSAndroid Build Coastguard Worker static __inline__  __m256i __DEFAULT_FN_ATTRS
_mm256_mullo_epi32(__m256i __a,__m256i __b)469*344a7f5eSAndroid Build Coastguard Worker _mm256_mullo_epi32 (__m256i __a, __m256i __b)
470*344a7f5eSAndroid Build Coastguard Worker {
471*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v8su)__a * (__v8su)__b);
472*344a7f5eSAndroid Build Coastguard Worker }
473*344a7f5eSAndroid Build Coastguard Worker 
474*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_mul_epu32(__m256i __a,__m256i __b)475*344a7f5eSAndroid Build Coastguard Worker _mm256_mul_epu32(__m256i __a, __m256i __b)
476*344a7f5eSAndroid Build Coastguard Worker {
477*344a7f5eSAndroid Build Coastguard Worker   return __builtin_ia32_pmuludq256((__v8si)__a, (__v8si)__b);
478*344a7f5eSAndroid Build Coastguard Worker }
479*344a7f5eSAndroid Build Coastguard Worker 
480*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_or_si256(__m256i __a,__m256i __b)481*344a7f5eSAndroid Build Coastguard Worker _mm256_or_si256(__m256i __a, __m256i __b)
482*344a7f5eSAndroid Build Coastguard Worker {
483*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v4du)__a | (__v4du)__b);
484*344a7f5eSAndroid Build Coastguard Worker }
485*344a7f5eSAndroid Build Coastguard Worker 
486*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sad_epu8(__m256i __a,__m256i __b)487*344a7f5eSAndroid Build Coastguard Worker _mm256_sad_epu8(__m256i __a, __m256i __b)
488*344a7f5eSAndroid Build Coastguard Worker {
489*344a7f5eSAndroid Build Coastguard Worker   return __builtin_ia32_psadbw256((__v32qi)__a, (__v32qi)__b);
490*344a7f5eSAndroid Build Coastguard Worker }
491*344a7f5eSAndroid Build Coastguard Worker 
492*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_shuffle_epi8(__m256i __a,__m256i __b)493*344a7f5eSAndroid Build Coastguard Worker _mm256_shuffle_epi8(__m256i __a, __m256i __b)
494*344a7f5eSAndroid Build Coastguard Worker {
495*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pshufb256((__v32qi)__a, (__v32qi)__b);
496*344a7f5eSAndroid Build Coastguard Worker }
497*344a7f5eSAndroid Build Coastguard Worker 
498*344a7f5eSAndroid Build Coastguard Worker #define _mm256_shuffle_epi32(a, imm) __extension__ ({ \
499*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_shufflevector((__v8si)(__m256i)(a), \
500*344a7f5eSAndroid Build Coastguard Worker                                    (__v8si)_mm256_undefined_si256(), \
501*344a7f5eSAndroid Build Coastguard Worker                                    0 + (((imm) >> 0) & 0x3), \
502*344a7f5eSAndroid Build Coastguard Worker                                    0 + (((imm) >> 2) & 0x3), \
503*344a7f5eSAndroid Build Coastguard Worker                                    0 + (((imm) >> 4) & 0x3), \
504*344a7f5eSAndroid Build Coastguard Worker                                    0 + (((imm) >> 6) & 0x3), \
505*344a7f5eSAndroid Build Coastguard Worker                                    4 + (((imm) >> 0) & 0x3), \
506*344a7f5eSAndroid Build Coastguard Worker                                    4 + (((imm) >> 2) & 0x3), \
507*344a7f5eSAndroid Build Coastguard Worker                                    4 + (((imm) >> 4) & 0x3), \
508*344a7f5eSAndroid Build Coastguard Worker                                    4 + (((imm) >> 6) & 0x3)); })
509*344a7f5eSAndroid Build Coastguard Worker 
510*344a7f5eSAndroid Build Coastguard Worker #define _mm256_shufflehi_epi16(a, imm) __extension__ ({ \
511*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_shufflevector((__v16hi)(__m256i)(a), \
512*344a7f5eSAndroid Build Coastguard Worker                                    (__v16hi)_mm256_undefined_si256(), \
513*344a7f5eSAndroid Build Coastguard Worker                                    0, 1, 2, 3, \
514*344a7f5eSAndroid Build Coastguard Worker                                    4  + (((imm) >> 0) & 0x3), \
515*344a7f5eSAndroid Build Coastguard Worker                                    4  + (((imm) >> 2) & 0x3), \
516*344a7f5eSAndroid Build Coastguard Worker                                    4  + (((imm) >> 4) & 0x3), \
517*344a7f5eSAndroid Build Coastguard Worker                                    4  + (((imm) >> 6) & 0x3), \
518*344a7f5eSAndroid Build Coastguard Worker                                    8, 9, 10, 11, \
519*344a7f5eSAndroid Build Coastguard Worker                                    12 + (((imm) >> 0) & 0x3), \
520*344a7f5eSAndroid Build Coastguard Worker                                    12 + (((imm) >> 2) & 0x3), \
521*344a7f5eSAndroid Build Coastguard Worker                                    12 + (((imm) >> 4) & 0x3), \
522*344a7f5eSAndroid Build Coastguard Worker                                    12 + (((imm) >> 6) & 0x3)); })
523*344a7f5eSAndroid Build Coastguard Worker 
524*344a7f5eSAndroid Build Coastguard Worker #define _mm256_shufflelo_epi16(a, imm) __extension__ ({ \
525*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_shufflevector((__v16hi)(__m256i)(a), \
526*344a7f5eSAndroid Build Coastguard Worker                                    (__v16hi)_mm256_undefined_si256(), \
527*344a7f5eSAndroid Build Coastguard Worker                                    0 + (((imm) >> 0) & 0x3), \
528*344a7f5eSAndroid Build Coastguard Worker                                    0 + (((imm) >> 2) & 0x3), \
529*344a7f5eSAndroid Build Coastguard Worker                                    0 + (((imm) >> 4) & 0x3), \
530*344a7f5eSAndroid Build Coastguard Worker                                    0 + (((imm) >> 6) & 0x3), \
531*344a7f5eSAndroid Build Coastguard Worker                                    4, 5, 6, 7, \
532*344a7f5eSAndroid Build Coastguard Worker                                    8 + (((imm) >> 0) & 0x3), \
533*344a7f5eSAndroid Build Coastguard Worker                                    8 + (((imm) >> 2) & 0x3), \
534*344a7f5eSAndroid Build Coastguard Worker                                    8 + (((imm) >> 4) & 0x3), \
535*344a7f5eSAndroid Build Coastguard Worker                                    8 + (((imm) >> 6) & 0x3), \
536*344a7f5eSAndroid Build Coastguard Worker                                    12, 13, 14, 15); })
537*344a7f5eSAndroid Build Coastguard Worker 
538*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sign_epi8(__m256i __a,__m256i __b)539*344a7f5eSAndroid Build Coastguard Worker _mm256_sign_epi8(__m256i __a, __m256i __b)
540*344a7f5eSAndroid Build Coastguard Worker {
541*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_psignb256((__v32qi)__a, (__v32qi)__b);
542*344a7f5eSAndroid Build Coastguard Worker }
543*344a7f5eSAndroid Build Coastguard Worker 
544*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sign_epi16(__m256i __a,__m256i __b)545*344a7f5eSAndroid Build Coastguard Worker _mm256_sign_epi16(__m256i __a, __m256i __b)
546*344a7f5eSAndroid Build Coastguard Worker {
547*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_psignw256((__v16hi)__a, (__v16hi)__b);
548*344a7f5eSAndroid Build Coastguard Worker }
549*344a7f5eSAndroid Build Coastguard Worker 
550*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sign_epi32(__m256i __a,__m256i __b)551*344a7f5eSAndroid Build Coastguard Worker _mm256_sign_epi32(__m256i __a, __m256i __b)
552*344a7f5eSAndroid Build Coastguard Worker {
553*344a7f5eSAndroid Build Coastguard Worker     return (__m256i)__builtin_ia32_psignd256((__v8si)__a, (__v8si)__b);
554*344a7f5eSAndroid Build Coastguard Worker }
555*344a7f5eSAndroid Build Coastguard Worker 
556*344a7f5eSAndroid Build Coastguard Worker #define _mm256_slli_si256(a, imm) __extension__ ({ \
557*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_shufflevector(                                          \
558*344a7f5eSAndroid Build Coastguard Worker         (__v32qi)_mm256_setzero_si256(),                                     \
559*344a7f5eSAndroid Build Coastguard Worker         (__v32qi)(__m256i)(a),                                               \
560*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ?  0 : ((char)(imm)>0x0 ? 16 : 32) - (char)(imm), \
561*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ?  1 : ((char)(imm)>0x1 ? 17 : 33) - (char)(imm), \
562*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ?  2 : ((char)(imm)>0x2 ? 18 : 34) - (char)(imm), \
563*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ?  3 : ((char)(imm)>0x3 ? 19 : 35) - (char)(imm), \
564*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ?  4 : ((char)(imm)>0x4 ? 20 : 36) - (char)(imm), \
565*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ?  5 : ((char)(imm)>0x5 ? 21 : 37) - (char)(imm), \
566*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ?  6 : ((char)(imm)>0x6 ? 22 : 38) - (char)(imm), \
567*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ?  7 : ((char)(imm)>0x7 ? 23 : 39) - (char)(imm), \
568*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ?  8 : ((char)(imm)>0x8 ? 24 : 40) - (char)(imm), \
569*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ?  9 : ((char)(imm)>0x9 ? 25 : 41) - (char)(imm), \
570*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 10 : ((char)(imm)>0xA ? 26 : 42) - (char)(imm), \
571*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 11 : ((char)(imm)>0xB ? 27 : 43) - (char)(imm), \
572*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 12 : ((char)(imm)>0xC ? 28 : 44) - (char)(imm), \
573*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 13 : ((char)(imm)>0xD ? 29 : 45) - (char)(imm), \
574*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 14 : ((char)(imm)>0xE ? 30 : 46) - (char)(imm), \
575*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 15 : ((char)(imm)>0xF ? 31 : 47) - (char)(imm), \
576*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 16 : ((char)(imm)>0x0 ? 32 : 48) - (char)(imm), \
577*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 17 : ((char)(imm)>0x1 ? 33 : 49) - (char)(imm), \
578*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 18 : ((char)(imm)>0x2 ? 34 : 50) - (char)(imm), \
579*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 19 : ((char)(imm)>0x3 ? 35 : 51) - (char)(imm), \
580*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 20 : ((char)(imm)>0x4 ? 36 : 52) - (char)(imm), \
581*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 21 : ((char)(imm)>0x5 ? 37 : 53) - (char)(imm), \
582*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 22 : ((char)(imm)>0x6 ? 38 : 54) - (char)(imm), \
583*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 23 : ((char)(imm)>0x7 ? 39 : 55) - (char)(imm), \
584*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 24 : ((char)(imm)>0x8 ? 40 : 56) - (char)(imm), \
585*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 25 : ((char)(imm)>0x9 ? 41 : 57) - (char)(imm), \
586*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 26 : ((char)(imm)>0xA ? 42 : 58) - (char)(imm), \
587*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 27 : ((char)(imm)>0xB ? 43 : 59) - (char)(imm), \
588*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 28 : ((char)(imm)>0xC ? 44 : 60) - (char)(imm), \
589*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 29 : ((char)(imm)>0xD ? 45 : 61) - (char)(imm), \
590*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 30 : ((char)(imm)>0xE ? 46 : 62) - (char)(imm), \
591*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 31 : ((char)(imm)>0xF ? 47 : 63) - (char)(imm)); })
592*344a7f5eSAndroid Build Coastguard Worker 
593*344a7f5eSAndroid Build Coastguard Worker #define _mm256_bslli_epi128(a, count) _mm256_slli_si256((a), (count))
594*344a7f5eSAndroid Build Coastguard Worker 
595*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_slli_epi16(__m256i __a,int __count)596*344a7f5eSAndroid Build Coastguard Worker _mm256_slli_epi16(__m256i __a, int __count)
597*344a7f5eSAndroid Build Coastguard Worker {
598*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psllwi256((__v16hi)__a, __count);
599*344a7f5eSAndroid Build Coastguard Worker }
600*344a7f5eSAndroid Build Coastguard Worker 
601*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sll_epi16(__m256i __a,__m128i __count)602*344a7f5eSAndroid Build Coastguard Worker _mm256_sll_epi16(__m256i __a, __m128i __count)
603*344a7f5eSAndroid Build Coastguard Worker {
604*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psllw256((__v16hi)__a, (__v8hi)__count);
605*344a7f5eSAndroid Build Coastguard Worker }
606*344a7f5eSAndroid Build Coastguard Worker 
607*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_slli_epi32(__m256i __a,int __count)608*344a7f5eSAndroid Build Coastguard Worker _mm256_slli_epi32(__m256i __a, int __count)
609*344a7f5eSAndroid Build Coastguard Worker {
610*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pslldi256((__v8si)__a, __count);
611*344a7f5eSAndroid Build Coastguard Worker }
612*344a7f5eSAndroid Build Coastguard Worker 
613*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sll_epi32(__m256i __a,__m128i __count)614*344a7f5eSAndroid Build Coastguard Worker _mm256_sll_epi32(__m256i __a, __m128i __count)
615*344a7f5eSAndroid Build Coastguard Worker {
616*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_pslld256((__v8si)__a, (__v4si)__count);
617*344a7f5eSAndroid Build Coastguard Worker }
618*344a7f5eSAndroid Build Coastguard Worker 
619*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_slli_epi64(__m256i __a,int __count)620*344a7f5eSAndroid Build Coastguard Worker _mm256_slli_epi64(__m256i __a, int __count)
621*344a7f5eSAndroid Build Coastguard Worker {
622*344a7f5eSAndroid Build Coastguard Worker   return __builtin_ia32_psllqi256((__v4di)__a, __count);
623*344a7f5eSAndroid Build Coastguard Worker }
624*344a7f5eSAndroid Build Coastguard Worker 
625*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sll_epi64(__m256i __a,__m128i __count)626*344a7f5eSAndroid Build Coastguard Worker _mm256_sll_epi64(__m256i __a, __m128i __count)
627*344a7f5eSAndroid Build Coastguard Worker {
628*344a7f5eSAndroid Build Coastguard Worker   return __builtin_ia32_psllq256((__v4di)__a, __count);
629*344a7f5eSAndroid Build Coastguard Worker }
630*344a7f5eSAndroid Build Coastguard Worker 
631*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srai_epi16(__m256i __a,int __count)632*344a7f5eSAndroid Build Coastguard Worker _mm256_srai_epi16(__m256i __a, int __count)
633*344a7f5eSAndroid Build Coastguard Worker {
634*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psrawi256((__v16hi)__a, __count);
635*344a7f5eSAndroid Build Coastguard Worker }
636*344a7f5eSAndroid Build Coastguard Worker 
637*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sra_epi16(__m256i __a,__m128i __count)638*344a7f5eSAndroid Build Coastguard Worker _mm256_sra_epi16(__m256i __a, __m128i __count)
639*344a7f5eSAndroid Build Coastguard Worker {
640*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psraw256((__v16hi)__a, (__v8hi)__count);
641*344a7f5eSAndroid Build Coastguard Worker }
642*344a7f5eSAndroid Build Coastguard Worker 
643*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srai_epi32(__m256i __a,int __count)644*344a7f5eSAndroid Build Coastguard Worker _mm256_srai_epi32(__m256i __a, int __count)
645*344a7f5eSAndroid Build Coastguard Worker {
646*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psradi256((__v8si)__a, __count);
647*344a7f5eSAndroid Build Coastguard Worker }
648*344a7f5eSAndroid Build Coastguard Worker 
649*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sra_epi32(__m256i __a,__m128i __count)650*344a7f5eSAndroid Build Coastguard Worker _mm256_sra_epi32(__m256i __a, __m128i __count)
651*344a7f5eSAndroid Build Coastguard Worker {
652*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psrad256((__v8si)__a, (__v4si)__count);
653*344a7f5eSAndroid Build Coastguard Worker }
654*344a7f5eSAndroid Build Coastguard Worker 
655*344a7f5eSAndroid Build Coastguard Worker #define _mm256_srli_si256(a, imm) __extension__ ({ \
656*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_shufflevector(                                           \
657*344a7f5eSAndroid Build Coastguard Worker         (__v32qi)(__m256i)(a),                                               \
658*344a7f5eSAndroid Build Coastguard Worker         (__v32qi)_mm256_setzero_si256(),                                     \
659*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 32 : (char)(imm) + ((char)(imm)>0xF ? 16 : 0),  \
660*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 33 : (char)(imm) + ((char)(imm)>0xE ? 17 : 1),  \
661*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 34 : (char)(imm) + ((char)(imm)>0xD ? 18 : 2),  \
662*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 35 : (char)(imm) + ((char)(imm)>0xC ? 19 : 3),  \
663*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 36 : (char)(imm) + ((char)(imm)>0xB ? 20 : 4),  \
664*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 37 : (char)(imm) + ((char)(imm)>0xA ? 21 : 5),  \
665*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 38 : (char)(imm) + ((char)(imm)>0x9 ? 22 : 6),  \
666*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 39 : (char)(imm) + ((char)(imm)>0x8 ? 23 : 7),  \
667*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 40 : (char)(imm) + ((char)(imm)>0x7 ? 24 : 8),  \
668*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 41 : (char)(imm) + ((char)(imm)>0x6 ? 25 : 9),  \
669*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 42 : (char)(imm) + ((char)(imm)>0x5 ? 26 : 10), \
670*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 43 : (char)(imm) + ((char)(imm)>0x4 ? 27 : 11), \
671*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 44 : (char)(imm) + ((char)(imm)>0x3 ? 28 : 12), \
672*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 45 : (char)(imm) + ((char)(imm)>0x2 ? 29 : 13), \
673*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 46 : (char)(imm) + ((char)(imm)>0x1 ? 30 : 14), \
674*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 47 : (char)(imm) + ((char)(imm)>0x0 ? 31 : 15), \
675*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 48 : (char)(imm) + ((char)(imm)>0xF ? 32 : 16), \
676*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 49 : (char)(imm) + ((char)(imm)>0xE ? 33 : 17), \
677*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 50 : (char)(imm) + ((char)(imm)>0xD ? 34 : 18), \
678*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 51 : (char)(imm) + ((char)(imm)>0xC ? 35 : 19), \
679*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 52 : (char)(imm) + ((char)(imm)>0xB ? 36 : 20), \
680*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 53 : (char)(imm) + ((char)(imm)>0xA ? 37 : 21), \
681*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 54 : (char)(imm) + ((char)(imm)>0x9 ? 38 : 22), \
682*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 55 : (char)(imm) + ((char)(imm)>0x8 ? 39 : 23), \
683*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 56 : (char)(imm) + ((char)(imm)>0x7 ? 40 : 24), \
684*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 57 : (char)(imm) + ((char)(imm)>0x6 ? 41 : 25), \
685*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 58 : (char)(imm) + ((char)(imm)>0x5 ? 42 : 26), \
686*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 59 : (char)(imm) + ((char)(imm)>0x4 ? 43 : 27), \
687*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 60 : (char)(imm) + ((char)(imm)>0x3 ? 44 : 28), \
688*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 61 : (char)(imm) + ((char)(imm)>0x2 ? 45 : 29), \
689*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 62 : (char)(imm) + ((char)(imm)>0x1 ? 46 : 30), \
690*344a7f5eSAndroid Build Coastguard Worker         ((char)(imm)&0xF0) ? 63 : (char)(imm) + ((char)(imm)>0x0 ? 47 : 31)); })
691*344a7f5eSAndroid Build Coastguard Worker 
692*344a7f5eSAndroid Build Coastguard Worker #define _mm256_bsrli_epi128(a, count) _mm256_srli_si256((a), (count))
693*344a7f5eSAndroid Build Coastguard Worker 
694*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srli_epi16(__m256i __a,int __count)695*344a7f5eSAndroid Build Coastguard Worker _mm256_srli_epi16(__m256i __a, int __count)
696*344a7f5eSAndroid Build Coastguard Worker {
697*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psrlwi256((__v16hi)__a, __count);
698*344a7f5eSAndroid Build Coastguard Worker }
699*344a7f5eSAndroid Build Coastguard Worker 
700*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srl_epi16(__m256i __a,__m128i __count)701*344a7f5eSAndroid Build Coastguard Worker _mm256_srl_epi16(__m256i __a, __m128i __count)
702*344a7f5eSAndroid Build Coastguard Worker {
703*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psrlw256((__v16hi)__a, (__v8hi)__count);
704*344a7f5eSAndroid Build Coastguard Worker }
705*344a7f5eSAndroid Build Coastguard Worker 
706*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srli_epi32(__m256i __a,int __count)707*344a7f5eSAndroid Build Coastguard Worker _mm256_srli_epi32(__m256i __a, int __count)
708*344a7f5eSAndroid Build Coastguard Worker {
709*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psrldi256((__v8si)__a, __count);
710*344a7f5eSAndroid Build Coastguard Worker }
711*344a7f5eSAndroid Build Coastguard Worker 
712*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srl_epi32(__m256i __a,__m128i __count)713*344a7f5eSAndroid Build Coastguard Worker _mm256_srl_epi32(__m256i __a, __m128i __count)
714*344a7f5eSAndroid Build Coastguard Worker {
715*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psrld256((__v8si)__a, (__v4si)__count);
716*344a7f5eSAndroid Build Coastguard Worker }
717*344a7f5eSAndroid Build Coastguard Worker 
718*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srli_epi64(__m256i __a,int __count)719*344a7f5eSAndroid Build Coastguard Worker _mm256_srli_epi64(__m256i __a, int __count)
720*344a7f5eSAndroid Build Coastguard Worker {
721*344a7f5eSAndroid Build Coastguard Worker   return __builtin_ia32_psrlqi256((__v4di)__a, __count);
722*344a7f5eSAndroid Build Coastguard Worker }
723*344a7f5eSAndroid Build Coastguard Worker 
724*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srl_epi64(__m256i __a,__m128i __count)725*344a7f5eSAndroid Build Coastguard Worker _mm256_srl_epi64(__m256i __a, __m128i __count)
726*344a7f5eSAndroid Build Coastguard Worker {
727*344a7f5eSAndroid Build Coastguard Worker   return __builtin_ia32_psrlq256((__v4di)__a, __count);
728*344a7f5eSAndroid Build Coastguard Worker }
729*344a7f5eSAndroid Build Coastguard Worker 
730*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sub_epi8(__m256i __a,__m256i __b)731*344a7f5eSAndroid Build Coastguard Worker _mm256_sub_epi8(__m256i __a, __m256i __b)
732*344a7f5eSAndroid Build Coastguard Worker {
733*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v32qu)__a - (__v32qu)__b);
734*344a7f5eSAndroid Build Coastguard Worker }
735*344a7f5eSAndroid Build Coastguard Worker 
736*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sub_epi16(__m256i __a,__m256i __b)737*344a7f5eSAndroid Build Coastguard Worker _mm256_sub_epi16(__m256i __a, __m256i __b)
738*344a7f5eSAndroid Build Coastguard Worker {
739*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v16hu)__a - (__v16hu)__b);
740*344a7f5eSAndroid Build Coastguard Worker }
741*344a7f5eSAndroid Build Coastguard Worker 
742*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sub_epi32(__m256i __a,__m256i __b)743*344a7f5eSAndroid Build Coastguard Worker _mm256_sub_epi32(__m256i __a, __m256i __b)
744*344a7f5eSAndroid Build Coastguard Worker {
745*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v8su)__a - (__v8su)__b);
746*344a7f5eSAndroid Build Coastguard Worker }
747*344a7f5eSAndroid Build Coastguard Worker 
748*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sub_epi64(__m256i __a,__m256i __b)749*344a7f5eSAndroid Build Coastguard Worker _mm256_sub_epi64(__m256i __a, __m256i __b)
750*344a7f5eSAndroid Build Coastguard Worker {
751*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v4du)__a - (__v4du)__b);
752*344a7f5eSAndroid Build Coastguard Worker }
753*344a7f5eSAndroid Build Coastguard Worker 
754*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_subs_epi8(__m256i __a,__m256i __b)755*344a7f5eSAndroid Build Coastguard Worker _mm256_subs_epi8(__m256i __a, __m256i __b)
756*344a7f5eSAndroid Build Coastguard Worker {
757*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psubsb256((__v32qi)__a, (__v32qi)__b);
758*344a7f5eSAndroid Build Coastguard Worker }
759*344a7f5eSAndroid Build Coastguard Worker 
760*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_subs_epi16(__m256i __a,__m256i __b)761*344a7f5eSAndroid Build Coastguard Worker _mm256_subs_epi16(__m256i __a, __m256i __b)
762*344a7f5eSAndroid Build Coastguard Worker {
763*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psubsw256((__v16hi)__a, (__v16hi)__b);
764*344a7f5eSAndroid Build Coastguard Worker }
765*344a7f5eSAndroid Build Coastguard Worker 
766*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_subs_epu8(__m256i __a,__m256i __b)767*344a7f5eSAndroid Build Coastguard Worker _mm256_subs_epu8(__m256i __a, __m256i __b)
768*344a7f5eSAndroid Build Coastguard Worker {
769*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psubusb256((__v32qi)__a, (__v32qi)__b);
770*344a7f5eSAndroid Build Coastguard Worker }
771*344a7f5eSAndroid Build Coastguard Worker 
772*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_subs_epu16(__m256i __a,__m256i __b)773*344a7f5eSAndroid Build Coastguard Worker _mm256_subs_epu16(__m256i __a, __m256i __b)
774*344a7f5eSAndroid Build Coastguard Worker {
775*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psubusw256((__v16hi)__a, (__v16hi)__b);
776*344a7f5eSAndroid Build Coastguard Worker }
777*344a7f5eSAndroid Build Coastguard Worker 
778*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_unpackhi_epi8(__m256i __a,__m256i __b)779*344a7f5eSAndroid Build Coastguard Worker _mm256_unpackhi_epi8(__m256i __a, __m256i __b)
780*344a7f5eSAndroid Build Coastguard Worker {
781*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v32qi)__a, (__v32qi)__b, 8, 32+8, 9, 32+9, 10, 32+10, 11, 32+11, 12, 32+12, 13, 32+13, 14, 32+14, 15, 32+15, 24, 32+24, 25, 32+25, 26, 32+26, 27, 32+27, 28, 32+28, 29, 32+29, 30, 32+30, 31, 32+31);
782*344a7f5eSAndroid Build Coastguard Worker }
783*344a7f5eSAndroid Build Coastguard Worker 
784*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_unpackhi_epi16(__m256i __a,__m256i __b)785*344a7f5eSAndroid Build Coastguard Worker _mm256_unpackhi_epi16(__m256i __a, __m256i __b)
786*344a7f5eSAndroid Build Coastguard Worker {
787*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v16hi)__a, (__v16hi)__b, 4, 16+4, 5, 16+5, 6, 16+6, 7, 16+7, 12, 16+12, 13, 16+13, 14, 16+14, 15, 16+15);
788*344a7f5eSAndroid Build Coastguard Worker }
789*344a7f5eSAndroid Build Coastguard Worker 
790*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_unpackhi_epi32(__m256i __a,__m256i __b)791*344a7f5eSAndroid Build Coastguard Worker _mm256_unpackhi_epi32(__m256i __a, __m256i __b)
792*344a7f5eSAndroid Build Coastguard Worker {
793*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v8si)__a, (__v8si)__b, 2, 8+2, 3, 8+3, 6, 8+6, 7, 8+7);
794*344a7f5eSAndroid Build Coastguard Worker }
795*344a7f5eSAndroid Build Coastguard Worker 
796*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_unpackhi_epi64(__m256i __a,__m256i __b)797*344a7f5eSAndroid Build Coastguard Worker _mm256_unpackhi_epi64(__m256i __a, __m256i __b)
798*344a7f5eSAndroid Build Coastguard Worker {
799*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v4di)__a, (__v4di)__b, 1, 4+1, 3, 4+3);
800*344a7f5eSAndroid Build Coastguard Worker }
801*344a7f5eSAndroid Build Coastguard Worker 
802*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_unpacklo_epi8(__m256i __a,__m256i __b)803*344a7f5eSAndroid Build Coastguard Worker _mm256_unpacklo_epi8(__m256i __a, __m256i __b)
804*344a7f5eSAndroid Build Coastguard Worker {
805*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v32qi)__a, (__v32qi)__b, 0, 32+0, 1, 32+1, 2, 32+2, 3, 32+3, 4, 32+4, 5, 32+5, 6, 32+6, 7, 32+7, 16, 32+16, 17, 32+17, 18, 32+18, 19, 32+19, 20, 32+20, 21, 32+21, 22, 32+22, 23, 32+23);
806*344a7f5eSAndroid Build Coastguard Worker }
807*344a7f5eSAndroid Build Coastguard Worker 
808*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_unpacklo_epi16(__m256i __a,__m256i __b)809*344a7f5eSAndroid Build Coastguard Worker _mm256_unpacklo_epi16(__m256i __a, __m256i __b)
810*344a7f5eSAndroid Build Coastguard Worker {
811*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v16hi)__a, (__v16hi)__b, 0, 16+0, 1, 16+1, 2, 16+2, 3, 16+3, 8, 16+8, 9, 16+9, 10, 16+10, 11, 16+11);
812*344a7f5eSAndroid Build Coastguard Worker }
813*344a7f5eSAndroid Build Coastguard Worker 
814*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_unpacklo_epi32(__m256i __a,__m256i __b)815*344a7f5eSAndroid Build Coastguard Worker _mm256_unpacklo_epi32(__m256i __a, __m256i __b)
816*344a7f5eSAndroid Build Coastguard Worker {
817*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v8si)__a, (__v8si)__b, 0, 8+0, 1, 8+1, 4, 8+4, 5, 8+5);
818*344a7f5eSAndroid Build Coastguard Worker }
819*344a7f5eSAndroid Build Coastguard Worker 
820*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_unpacklo_epi64(__m256i __a,__m256i __b)821*344a7f5eSAndroid Build Coastguard Worker _mm256_unpacklo_epi64(__m256i __a, __m256i __b)
822*344a7f5eSAndroid Build Coastguard Worker {
823*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v4di)__a, (__v4di)__b, 0, 4+0, 2, 4+2);
824*344a7f5eSAndroid Build Coastguard Worker }
825*344a7f5eSAndroid Build Coastguard Worker 
826*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_xor_si256(__m256i __a,__m256i __b)827*344a7f5eSAndroid Build Coastguard Worker _mm256_xor_si256(__m256i __a, __m256i __b)
828*344a7f5eSAndroid Build Coastguard Worker {
829*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)((__v4du)__a ^ (__v4du)__b);
830*344a7f5eSAndroid Build Coastguard Worker }
831*344a7f5eSAndroid Build Coastguard Worker 
832*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_stream_load_si256(__m256i const * __V)833*344a7f5eSAndroid Build Coastguard Worker _mm256_stream_load_si256(__m256i const *__V)
834*344a7f5eSAndroid Build Coastguard Worker {
835*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_movntdqa256((const __v4di *)__V);
836*344a7f5eSAndroid Build Coastguard Worker }
837*344a7f5eSAndroid Build Coastguard Worker 
838*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128 __DEFAULT_FN_ATTRS
_mm_broadcastss_ps(__m128 __X)839*344a7f5eSAndroid Build Coastguard Worker _mm_broadcastss_ps(__m128 __X)
840*344a7f5eSAndroid Build Coastguard Worker {
841*344a7f5eSAndroid Build Coastguard Worker   return (__m128)__builtin_shufflevector((__v4sf)__X, (__v4sf)__X, 0, 0, 0, 0);
842*344a7f5eSAndroid Build Coastguard Worker }
843*344a7f5eSAndroid Build Coastguard Worker 
844*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128d __DEFAULT_FN_ATTRS
_mm_broadcastsd_pd(__m128d __a)845*344a7f5eSAndroid Build Coastguard Worker _mm_broadcastsd_pd(__m128d __a)
846*344a7f5eSAndroid Build Coastguard Worker {
847*344a7f5eSAndroid Build Coastguard Worker   return __builtin_shufflevector((__v2df)__a, (__v2df)__a, 0, 0);
848*344a7f5eSAndroid Build Coastguard Worker }
849*344a7f5eSAndroid Build Coastguard Worker 
850*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_broadcastss_ps(__m128 __X)851*344a7f5eSAndroid Build Coastguard Worker _mm256_broadcastss_ps(__m128 __X)
852*344a7f5eSAndroid Build Coastguard Worker {
853*344a7f5eSAndroid Build Coastguard Worker   return (__m256)__builtin_shufflevector((__v4sf)__X, (__v4sf)__X, 0, 0, 0, 0, 0, 0, 0, 0);
854*344a7f5eSAndroid Build Coastguard Worker }
855*344a7f5eSAndroid Build Coastguard Worker 
856*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256d __DEFAULT_FN_ATTRS
_mm256_broadcastsd_pd(__m128d __X)857*344a7f5eSAndroid Build Coastguard Worker _mm256_broadcastsd_pd(__m128d __X)
858*344a7f5eSAndroid Build Coastguard Worker {
859*344a7f5eSAndroid Build Coastguard Worker   return (__m256d)__builtin_shufflevector((__v2df)__X, (__v2df)__X, 0, 0, 0, 0);
860*344a7f5eSAndroid Build Coastguard Worker }
861*344a7f5eSAndroid Build Coastguard Worker 
862*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_broadcastsi128_si256(__m128i __X)863*344a7f5eSAndroid Build Coastguard Worker _mm256_broadcastsi128_si256(__m128i __X)
864*344a7f5eSAndroid Build Coastguard Worker {
865*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v2di)__X, (__v2di)__X, 0, 1, 0, 1);
866*344a7f5eSAndroid Build Coastguard Worker }
867*344a7f5eSAndroid Build Coastguard Worker 
868*344a7f5eSAndroid Build Coastguard Worker #define _mm_blend_epi32(V1, V2, M) __extension__ ({ \
869*344a7f5eSAndroid Build Coastguard Worker   (__m128i)__builtin_shufflevector((__v4si)(__m128i)(V1),  \
870*344a7f5eSAndroid Build Coastguard Worker                                    (__v4si)(__m128i)(V2),  \
871*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x01) ? 4 : 0), \
872*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x02) ? 5 : 1), \
873*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x04) ? 6 : 2), \
874*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x08) ? 7 : 3)); })
875*344a7f5eSAndroid Build Coastguard Worker 
876*344a7f5eSAndroid Build Coastguard Worker #define _mm256_blend_epi32(V1, V2, M) __extension__ ({ \
877*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_shufflevector((__v8si)(__m256i)(V1),   \
878*344a7f5eSAndroid Build Coastguard Worker                                    (__v8si)(__m256i)(V2),   \
879*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x01) ?  8 : 0), \
880*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x02) ?  9 : 1), \
881*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x04) ? 10 : 2), \
882*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x08) ? 11 : 3), \
883*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x10) ? 12 : 4), \
884*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x20) ? 13 : 5), \
885*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x40) ? 14 : 6), \
886*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 0x80) ? 15 : 7)); })
887*344a7f5eSAndroid Build Coastguard Worker 
888*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_broadcastb_epi8(__m128i __X)889*344a7f5eSAndroid Build Coastguard Worker _mm256_broadcastb_epi8(__m128i __X)
890*344a7f5eSAndroid Build Coastguard Worker {
891*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v16qi)__X, (__v16qi)__X, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
892*344a7f5eSAndroid Build Coastguard Worker }
893*344a7f5eSAndroid Build Coastguard Worker 
894*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_broadcastw_epi16(__m128i __X)895*344a7f5eSAndroid Build Coastguard Worker _mm256_broadcastw_epi16(__m128i __X)
896*344a7f5eSAndroid Build Coastguard Worker {
897*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v8hi)__X, (__v8hi)__X, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
898*344a7f5eSAndroid Build Coastguard Worker }
899*344a7f5eSAndroid Build Coastguard Worker 
900*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_broadcastd_epi32(__m128i __X)901*344a7f5eSAndroid Build Coastguard Worker _mm256_broadcastd_epi32(__m128i __X)
902*344a7f5eSAndroid Build Coastguard Worker {
903*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v4si)__X, (__v4si)__X, 0, 0, 0, 0, 0, 0, 0, 0);
904*344a7f5eSAndroid Build Coastguard Worker }
905*344a7f5eSAndroid Build Coastguard Worker 
906*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_broadcastq_epi64(__m128i __X)907*344a7f5eSAndroid Build Coastguard Worker _mm256_broadcastq_epi64(__m128i __X)
908*344a7f5eSAndroid Build Coastguard Worker {
909*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_shufflevector((__v2di)__X, (__v2di)__X, 0, 0, 0, 0);
910*344a7f5eSAndroid Build Coastguard Worker }
911*344a7f5eSAndroid Build Coastguard Worker 
912*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_broadcastb_epi8(__m128i __X)913*344a7f5eSAndroid Build Coastguard Worker _mm_broadcastb_epi8(__m128i __X)
914*344a7f5eSAndroid Build Coastguard Worker {
915*344a7f5eSAndroid Build Coastguard Worker   return (__m128i)__builtin_shufflevector((__v16qi)__X, (__v16qi)__X, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
916*344a7f5eSAndroid Build Coastguard Worker }
917*344a7f5eSAndroid Build Coastguard Worker 
918*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_broadcastw_epi16(__m128i __X)919*344a7f5eSAndroid Build Coastguard Worker _mm_broadcastw_epi16(__m128i __X)
920*344a7f5eSAndroid Build Coastguard Worker {
921*344a7f5eSAndroid Build Coastguard Worker   return (__m128i)__builtin_shufflevector((__v8hi)__X, (__v8hi)__X, 0, 0, 0, 0, 0, 0, 0, 0);
922*344a7f5eSAndroid Build Coastguard Worker }
923*344a7f5eSAndroid Build Coastguard Worker 
924*344a7f5eSAndroid Build Coastguard Worker 
925*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_broadcastd_epi32(__m128i __X)926*344a7f5eSAndroid Build Coastguard Worker _mm_broadcastd_epi32(__m128i __X)
927*344a7f5eSAndroid Build Coastguard Worker {
928*344a7f5eSAndroid Build Coastguard Worker   return (__m128i)__builtin_shufflevector((__v4si)__X, (__v4si)__X, 0, 0, 0, 0);
929*344a7f5eSAndroid Build Coastguard Worker }
930*344a7f5eSAndroid Build Coastguard Worker 
931*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_broadcastq_epi64(__m128i __X)932*344a7f5eSAndroid Build Coastguard Worker _mm_broadcastq_epi64(__m128i __X)
933*344a7f5eSAndroid Build Coastguard Worker {
934*344a7f5eSAndroid Build Coastguard Worker   return (__m128i)__builtin_shufflevector((__v2di)__X, (__v2di)__X, 0, 0);
935*344a7f5eSAndroid Build Coastguard Worker }
936*344a7f5eSAndroid Build Coastguard Worker 
937*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_permutevar8x32_epi32(__m256i __a,__m256i __b)938*344a7f5eSAndroid Build Coastguard Worker _mm256_permutevar8x32_epi32(__m256i __a, __m256i __b)
939*344a7f5eSAndroid Build Coastguard Worker {
940*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_permvarsi256((__v8si)__a, (__v8si)__b);
941*344a7f5eSAndroid Build Coastguard Worker }
942*344a7f5eSAndroid Build Coastguard Worker 
943*344a7f5eSAndroid Build Coastguard Worker #define _mm256_permute4x64_pd(V, M) __extension__ ({ \
944*344a7f5eSAndroid Build Coastguard Worker   (__m256d)__builtin_shufflevector((__v4df)(__m256d)(V), \
945*344a7f5eSAndroid Build Coastguard Worker                                    (__v4df)_mm256_undefined_pd(), \
946*344a7f5eSAndroid Build Coastguard Worker                                    ((M) >> 0) & 0x3, \
947*344a7f5eSAndroid Build Coastguard Worker                                    ((M) >> 2) & 0x3, \
948*344a7f5eSAndroid Build Coastguard Worker                                    ((M) >> 4) & 0x3, \
949*344a7f5eSAndroid Build Coastguard Worker                                    ((M) >> 6) & 0x3); })
950*344a7f5eSAndroid Build Coastguard Worker 
951*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256 __DEFAULT_FN_ATTRS
_mm256_permutevar8x32_ps(__m256 __a,__m256i __b)952*344a7f5eSAndroid Build Coastguard Worker _mm256_permutevar8x32_ps(__m256 __a, __m256i __b)
953*344a7f5eSAndroid Build Coastguard Worker {
954*344a7f5eSAndroid Build Coastguard Worker   return (__m256)__builtin_ia32_permvarsf256((__v8sf)__a, (__v8si)__b);
955*344a7f5eSAndroid Build Coastguard Worker }
956*344a7f5eSAndroid Build Coastguard Worker 
957*344a7f5eSAndroid Build Coastguard Worker #define _mm256_permute4x64_epi64(V, M) __extension__ ({ \
958*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_shufflevector((__v4di)(__m256i)(V), \
959*344a7f5eSAndroid Build Coastguard Worker                                    (__v4di)_mm256_undefined_si256(), \
960*344a7f5eSAndroid Build Coastguard Worker                                    ((M) >> 0) & 0x3, \
961*344a7f5eSAndroid Build Coastguard Worker                                    ((M) >> 2) & 0x3, \
962*344a7f5eSAndroid Build Coastguard Worker                                    ((M) >> 4) & 0x3, \
963*344a7f5eSAndroid Build Coastguard Worker                                    ((M) >> 6) & 0x3); })
964*344a7f5eSAndroid Build Coastguard Worker 
965*344a7f5eSAndroid Build Coastguard Worker #define _mm256_permute2x128_si256(V1, V2, M) __extension__ ({ \
966*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_ia32_permti256((__m256i)(V1), (__m256i)(V2), (M)); })
967*344a7f5eSAndroid Build Coastguard Worker 
968*344a7f5eSAndroid Build Coastguard Worker #define _mm256_extracti128_si256(V, M) __extension__ ({ \
969*344a7f5eSAndroid Build Coastguard Worker   (__m128i)__builtin_shufflevector((__v4di)(__m256i)(V), \
970*344a7f5eSAndroid Build Coastguard Worker                                    (__v4di)_mm256_undefined_si256(), \
971*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 1) ? 2 : 0), \
972*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 1) ? 3 : 1) ); })
973*344a7f5eSAndroid Build Coastguard Worker 
974*344a7f5eSAndroid Build Coastguard Worker #define _mm256_inserti128_si256(V1, V2, M) __extension__ ({ \
975*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_shufflevector((__v4di)(__m256i)(V1), \
976*344a7f5eSAndroid Build Coastguard Worker                                    (__v4di)_mm256_castsi128_si256((__m128i)(V2)), \
977*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 1) ? 0 : 4), \
978*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 1) ? 1 : 5), \
979*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 1) ? 4 : 2), \
980*344a7f5eSAndroid Build Coastguard Worker                                    (((M) & 1) ? 5 : 3) ); })
981*344a7f5eSAndroid Build Coastguard Worker 
982*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskload_epi32(int const * __X,__m256i __M)983*344a7f5eSAndroid Build Coastguard Worker _mm256_maskload_epi32(int const *__X, __m256i __M)
984*344a7f5eSAndroid Build Coastguard Worker {
985*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_maskloadd256((const __v8si *)__X, (__v8si)__M);
986*344a7f5eSAndroid Build Coastguard Worker }
987*344a7f5eSAndroid Build Coastguard Worker 
988*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_maskload_epi64(long long const * __X,__m256i __M)989*344a7f5eSAndroid Build Coastguard Worker _mm256_maskload_epi64(long long const *__X, __m256i __M)
990*344a7f5eSAndroid Build Coastguard Worker {
991*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_maskloadq256((const __v4di *)__X, (__v4di)__M);
992*344a7f5eSAndroid Build Coastguard Worker }
993*344a7f5eSAndroid Build Coastguard Worker 
994*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskload_epi32(int const * __X,__m128i __M)995*344a7f5eSAndroid Build Coastguard Worker _mm_maskload_epi32(int const *__X, __m128i __M)
996*344a7f5eSAndroid Build Coastguard Worker {
997*344a7f5eSAndroid Build Coastguard Worker   return (__m128i)__builtin_ia32_maskloadd((const __v4si *)__X, (__v4si)__M);
998*344a7f5eSAndroid Build Coastguard Worker }
999*344a7f5eSAndroid Build Coastguard Worker 
1000*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_maskload_epi64(long long const * __X,__m128i __M)1001*344a7f5eSAndroid Build Coastguard Worker _mm_maskload_epi64(long long const *__X, __m128i __M)
1002*344a7f5eSAndroid Build Coastguard Worker {
1003*344a7f5eSAndroid Build Coastguard Worker   return (__m128i)__builtin_ia32_maskloadq((const __v2di *)__X, (__v2di)__M);
1004*344a7f5eSAndroid Build Coastguard Worker }
1005*344a7f5eSAndroid Build Coastguard Worker 
1006*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __DEFAULT_FN_ATTRS
_mm256_maskstore_epi32(int * __X,__m256i __M,__m256i __Y)1007*344a7f5eSAndroid Build Coastguard Worker _mm256_maskstore_epi32(int *__X, __m256i __M, __m256i __Y)
1008*344a7f5eSAndroid Build Coastguard Worker {
1009*344a7f5eSAndroid Build Coastguard Worker   __builtin_ia32_maskstored256((__v8si *)__X, (__v8si)__M, (__v8si)__Y);
1010*344a7f5eSAndroid Build Coastguard Worker }
1011*344a7f5eSAndroid Build Coastguard Worker 
1012*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __DEFAULT_FN_ATTRS
_mm256_maskstore_epi64(long long * __X,__m256i __M,__m256i __Y)1013*344a7f5eSAndroid Build Coastguard Worker _mm256_maskstore_epi64(long long *__X, __m256i __M, __m256i __Y)
1014*344a7f5eSAndroid Build Coastguard Worker {
1015*344a7f5eSAndroid Build Coastguard Worker   __builtin_ia32_maskstoreq256((__v4di *)__X, (__v4di)__M, (__v4di)__Y);
1016*344a7f5eSAndroid Build Coastguard Worker }
1017*344a7f5eSAndroid Build Coastguard Worker 
1018*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __DEFAULT_FN_ATTRS
_mm_maskstore_epi32(int * __X,__m128i __M,__m128i __Y)1019*344a7f5eSAndroid Build Coastguard Worker _mm_maskstore_epi32(int *__X, __m128i __M, __m128i __Y)
1020*344a7f5eSAndroid Build Coastguard Worker {
1021*344a7f5eSAndroid Build Coastguard Worker   __builtin_ia32_maskstored((__v4si *)__X, (__v4si)__M, (__v4si)__Y);
1022*344a7f5eSAndroid Build Coastguard Worker }
1023*344a7f5eSAndroid Build Coastguard Worker 
1024*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __DEFAULT_FN_ATTRS
_mm_maskstore_epi64(long long * __X,__m128i __M,__m128i __Y)1025*344a7f5eSAndroid Build Coastguard Worker _mm_maskstore_epi64(long long *__X, __m128i __M, __m128i __Y)
1026*344a7f5eSAndroid Build Coastguard Worker {
1027*344a7f5eSAndroid Build Coastguard Worker   __builtin_ia32_maskstoreq(( __v2di *)__X, (__v2di)__M, (__v2di)__Y);
1028*344a7f5eSAndroid Build Coastguard Worker }
1029*344a7f5eSAndroid Build Coastguard Worker 
1030*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sllv_epi32(__m256i __X,__m256i __Y)1031*344a7f5eSAndroid Build Coastguard Worker _mm256_sllv_epi32(__m256i __X, __m256i __Y)
1032*344a7f5eSAndroid Build Coastguard Worker {
1033*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psllv8si((__v8si)__X, (__v8si)__Y);
1034*344a7f5eSAndroid Build Coastguard Worker }
1035*344a7f5eSAndroid Build Coastguard Worker 
1036*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_sllv_epi32(__m128i __X,__m128i __Y)1037*344a7f5eSAndroid Build Coastguard Worker _mm_sllv_epi32(__m128i __X, __m128i __Y)
1038*344a7f5eSAndroid Build Coastguard Worker {
1039*344a7f5eSAndroid Build Coastguard Worker   return (__m128i)__builtin_ia32_psllv4si((__v4si)__X, (__v4si)__Y);
1040*344a7f5eSAndroid Build Coastguard Worker }
1041*344a7f5eSAndroid Build Coastguard Worker 
1042*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_sllv_epi64(__m256i __X,__m256i __Y)1043*344a7f5eSAndroid Build Coastguard Worker _mm256_sllv_epi64(__m256i __X, __m256i __Y)
1044*344a7f5eSAndroid Build Coastguard Worker {
1045*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psllv4di((__v4di)__X, (__v4di)__Y);
1046*344a7f5eSAndroid Build Coastguard Worker }
1047*344a7f5eSAndroid Build Coastguard Worker 
1048*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_sllv_epi64(__m128i __X,__m128i __Y)1049*344a7f5eSAndroid Build Coastguard Worker _mm_sllv_epi64(__m128i __X, __m128i __Y)
1050*344a7f5eSAndroid Build Coastguard Worker {
1051*344a7f5eSAndroid Build Coastguard Worker   return (__m128i)__builtin_ia32_psllv2di((__v2di)__X, (__v2di)__Y);
1052*344a7f5eSAndroid Build Coastguard Worker }
1053*344a7f5eSAndroid Build Coastguard Worker 
1054*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srav_epi32(__m256i __X,__m256i __Y)1055*344a7f5eSAndroid Build Coastguard Worker _mm256_srav_epi32(__m256i __X, __m256i __Y)
1056*344a7f5eSAndroid Build Coastguard Worker {
1057*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psrav8si((__v8si)__X, (__v8si)__Y);
1058*344a7f5eSAndroid Build Coastguard Worker }
1059*344a7f5eSAndroid Build Coastguard Worker 
1060*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_srav_epi32(__m128i __X,__m128i __Y)1061*344a7f5eSAndroid Build Coastguard Worker _mm_srav_epi32(__m128i __X, __m128i __Y)
1062*344a7f5eSAndroid Build Coastguard Worker {
1063*344a7f5eSAndroid Build Coastguard Worker   return (__m128i)__builtin_ia32_psrav4si((__v4si)__X, (__v4si)__Y);
1064*344a7f5eSAndroid Build Coastguard Worker }
1065*344a7f5eSAndroid Build Coastguard Worker 
1066*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srlv_epi32(__m256i __X,__m256i __Y)1067*344a7f5eSAndroid Build Coastguard Worker _mm256_srlv_epi32(__m256i __X, __m256i __Y)
1068*344a7f5eSAndroid Build Coastguard Worker {
1069*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psrlv8si((__v8si)__X, (__v8si)__Y);
1070*344a7f5eSAndroid Build Coastguard Worker }
1071*344a7f5eSAndroid Build Coastguard Worker 
1072*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_srlv_epi32(__m128i __X,__m128i __Y)1073*344a7f5eSAndroid Build Coastguard Worker _mm_srlv_epi32(__m128i __X, __m128i __Y)
1074*344a7f5eSAndroid Build Coastguard Worker {
1075*344a7f5eSAndroid Build Coastguard Worker   return (__m128i)__builtin_ia32_psrlv4si((__v4si)__X, (__v4si)__Y);
1076*344a7f5eSAndroid Build Coastguard Worker }
1077*344a7f5eSAndroid Build Coastguard Worker 
1078*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m256i __DEFAULT_FN_ATTRS
_mm256_srlv_epi64(__m256i __X,__m256i __Y)1079*344a7f5eSAndroid Build Coastguard Worker _mm256_srlv_epi64(__m256i __X, __m256i __Y)
1080*344a7f5eSAndroid Build Coastguard Worker {
1081*344a7f5eSAndroid Build Coastguard Worker   return (__m256i)__builtin_ia32_psrlv4di((__v4di)__X, (__v4di)__Y);
1082*344a7f5eSAndroid Build Coastguard Worker }
1083*344a7f5eSAndroid Build Coastguard Worker 
1084*344a7f5eSAndroid Build Coastguard Worker static __inline__ __m128i __DEFAULT_FN_ATTRS
_mm_srlv_epi64(__m128i __X,__m128i __Y)1085*344a7f5eSAndroid Build Coastguard Worker _mm_srlv_epi64(__m128i __X, __m128i __Y)
1086*344a7f5eSAndroid Build Coastguard Worker {
1087*344a7f5eSAndroid Build Coastguard Worker   return (__m128i)__builtin_ia32_psrlv2di((__v2di)__X, (__v2di)__Y);
1088*344a7f5eSAndroid Build Coastguard Worker }
1089*344a7f5eSAndroid Build Coastguard Worker 
1090*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_i32gather_pd(a, m, i, mask, s) __extension__ ({ \
1091*344a7f5eSAndroid Build Coastguard Worker   (__m128d)__builtin_ia32_gatherd_pd((__v2df)(__m128i)(a), \
1092*344a7f5eSAndroid Build Coastguard Worker                                      (double const *)(m), \
1093*344a7f5eSAndroid Build Coastguard Worker                                      (__v4si)(__m128i)(i), \
1094*344a7f5eSAndroid Build Coastguard Worker                                      (__v2df)(__m128d)(mask), (s)); })
1095*344a7f5eSAndroid Build Coastguard Worker 
1096*344a7f5eSAndroid Build Coastguard Worker #define _mm256_mask_i32gather_pd(a, m, i, mask, s) __extension__ ({ \
1097*344a7f5eSAndroid Build Coastguard Worker   (__m256d)__builtin_ia32_gatherd_pd256((__v4df)(__m256d)(a), \
1098*344a7f5eSAndroid Build Coastguard Worker                                         (double const *)(m), \
1099*344a7f5eSAndroid Build Coastguard Worker                                         (__v4si)(__m128i)(i), \
1100*344a7f5eSAndroid Build Coastguard Worker                                         (__v4df)(__m256d)(mask), (s)); })
1101*344a7f5eSAndroid Build Coastguard Worker 
1102*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_i64gather_pd(a, m, i, mask, s) __extension__ ({ \
1103*344a7f5eSAndroid Build Coastguard Worker   (__m128d)__builtin_ia32_gatherq_pd((__v2df)(__m128d)(a), \
1104*344a7f5eSAndroid Build Coastguard Worker                                      (double const *)(m), \
1105*344a7f5eSAndroid Build Coastguard Worker                                      (__v2di)(__m128i)(i), \
1106*344a7f5eSAndroid Build Coastguard Worker                                      (__v2df)(__m128d)(mask), (s)); })
1107*344a7f5eSAndroid Build Coastguard Worker 
1108*344a7f5eSAndroid Build Coastguard Worker #define _mm256_mask_i64gather_pd(a, m, i, mask, s) __extension__ ({ \
1109*344a7f5eSAndroid Build Coastguard Worker   (__m256d)__builtin_ia32_gatherq_pd256((__v4df)(__m256d)(a), \
1110*344a7f5eSAndroid Build Coastguard Worker                                         (double const *)(m), \
1111*344a7f5eSAndroid Build Coastguard Worker                                         (__v4di)(__m256i)(i), \
1112*344a7f5eSAndroid Build Coastguard Worker                                         (__v4df)(__m256d)(mask), (s)); })
1113*344a7f5eSAndroid Build Coastguard Worker 
1114*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_i32gather_ps(a, m, i, mask, s) __extension__ ({ \
1115*344a7f5eSAndroid Build Coastguard Worker   (__m128)__builtin_ia32_gatherd_ps((__v4sf)(__m128)(a), \
1116*344a7f5eSAndroid Build Coastguard Worker                                     (float const *)(m), \
1117*344a7f5eSAndroid Build Coastguard Worker                                     (__v4si)(__m128i)(i), \
1118*344a7f5eSAndroid Build Coastguard Worker                                     (__v4sf)(__m128)(mask), (s)); })
1119*344a7f5eSAndroid Build Coastguard Worker 
1120*344a7f5eSAndroid Build Coastguard Worker #define _mm256_mask_i32gather_ps(a, m, i, mask, s) __extension__ ({ \
1121*344a7f5eSAndroid Build Coastguard Worker   (__m256)__builtin_ia32_gatherd_ps256((__v8sf)(__m256)(a), \
1122*344a7f5eSAndroid Build Coastguard Worker                                        (float const *)(m), \
1123*344a7f5eSAndroid Build Coastguard Worker                                        (__v8si)(__m256i)(i), \
1124*344a7f5eSAndroid Build Coastguard Worker                                        (__v8sf)(__m256)(mask), (s)); })
1125*344a7f5eSAndroid Build Coastguard Worker 
1126*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_i64gather_ps(a, m, i, mask, s) __extension__ ({ \
1127*344a7f5eSAndroid Build Coastguard Worker   (__m128)__builtin_ia32_gatherq_ps((__v4sf)(__m128)(a), \
1128*344a7f5eSAndroid Build Coastguard Worker                                     (float const *)(m), \
1129*344a7f5eSAndroid Build Coastguard Worker                                     (__v2di)(__m128i)(i), \
1130*344a7f5eSAndroid Build Coastguard Worker                                     (__v4sf)(__m128)(mask), (s)); })
1131*344a7f5eSAndroid Build Coastguard Worker 
1132*344a7f5eSAndroid Build Coastguard Worker #define _mm256_mask_i64gather_ps(a, m, i, mask, s) __extension__ ({ \
1133*344a7f5eSAndroid Build Coastguard Worker   (__m128)__builtin_ia32_gatherq_ps256((__v4sf)(__m128)(a), \
1134*344a7f5eSAndroid Build Coastguard Worker                                        (float const *)(m), \
1135*344a7f5eSAndroid Build Coastguard Worker                                        (__v4di)(__m256i)(i), \
1136*344a7f5eSAndroid Build Coastguard Worker                                        (__v4sf)(__m128)(mask), (s)); })
1137*344a7f5eSAndroid Build Coastguard Worker 
1138*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_i32gather_epi32(a, m, i, mask, s) __extension__ ({ \
1139*344a7f5eSAndroid Build Coastguard Worker   (__m128i)__builtin_ia32_gatherd_d((__v4si)(__m128i)(a), \
1140*344a7f5eSAndroid Build Coastguard Worker                                     (int const *)(m), \
1141*344a7f5eSAndroid Build Coastguard Worker                                     (__v4si)(__m128i)(i), \
1142*344a7f5eSAndroid Build Coastguard Worker                                     (__v4si)(__m128i)(mask), (s)); })
1143*344a7f5eSAndroid Build Coastguard Worker 
1144*344a7f5eSAndroid Build Coastguard Worker #define _mm256_mask_i32gather_epi32(a, m, i, mask, s) __extension__ ({ \
1145*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_ia32_gatherd_d256((__v8si)(__m256i)(a), \
1146*344a7f5eSAndroid Build Coastguard Worker                                        (int const *)(m), \
1147*344a7f5eSAndroid Build Coastguard Worker                                        (__v8si)(__m256i)(i), \
1148*344a7f5eSAndroid Build Coastguard Worker                                        (__v8si)(__m256i)(mask), (s)); })
1149*344a7f5eSAndroid Build Coastguard Worker 
1150*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_i64gather_epi32(a, m, i, mask, s) __extension__ ({ \
1151*344a7f5eSAndroid Build Coastguard Worker   (__m128i)__builtin_ia32_gatherq_d((__v4si)(__m128i)(a), \
1152*344a7f5eSAndroid Build Coastguard Worker                                     (int const *)(m), \
1153*344a7f5eSAndroid Build Coastguard Worker                                     (__v2di)(__m128i)(i), \
1154*344a7f5eSAndroid Build Coastguard Worker                                     (__v4si)(__m128i)(mask), (s)); })
1155*344a7f5eSAndroid Build Coastguard Worker 
1156*344a7f5eSAndroid Build Coastguard Worker #define _mm256_mask_i64gather_epi32(a, m, i, mask, s) __extension__ ({ \
1157*344a7f5eSAndroid Build Coastguard Worker   (__m128i)__builtin_ia32_gatherq_d256((__v4si)(__m128i)(a), \
1158*344a7f5eSAndroid Build Coastguard Worker                                        (int const *)(m), \
1159*344a7f5eSAndroid Build Coastguard Worker                                        (__v4di)(__m256i)(i), \
1160*344a7f5eSAndroid Build Coastguard Worker                                        (__v4si)(__m128i)(mask), (s)); })
1161*344a7f5eSAndroid Build Coastguard Worker 
1162*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_i32gather_epi64(a, m, i, mask, s) __extension__ ({ \
1163*344a7f5eSAndroid Build Coastguard Worker   (__m128i)__builtin_ia32_gatherd_q((__v2di)(__m128i)(a), \
1164*344a7f5eSAndroid Build Coastguard Worker                                     (long long const *)(m), \
1165*344a7f5eSAndroid Build Coastguard Worker                                     (__v4si)(__m128i)(i), \
1166*344a7f5eSAndroid Build Coastguard Worker                                     (__v2di)(__m128i)(mask), (s)); })
1167*344a7f5eSAndroid Build Coastguard Worker 
1168*344a7f5eSAndroid Build Coastguard Worker #define _mm256_mask_i32gather_epi64(a, m, i, mask, s) __extension__ ({ \
1169*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_ia32_gatherd_q256((__v4di)(__m256i)(a), \
1170*344a7f5eSAndroid Build Coastguard Worker                                        (long long const *)(m), \
1171*344a7f5eSAndroid Build Coastguard Worker                                        (__v4si)(__m128i)(i), \
1172*344a7f5eSAndroid Build Coastguard Worker                                        (__v4di)(__m256i)(mask), (s)); })
1173*344a7f5eSAndroid Build Coastguard Worker 
1174*344a7f5eSAndroid Build Coastguard Worker #define _mm_mask_i64gather_epi64(a, m, i, mask, s) __extension__ ({ \
1175*344a7f5eSAndroid Build Coastguard Worker   (__m128i)__builtin_ia32_gatherq_q((__v2di)(__m128i)(a), \
1176*344a7f5eSAndroid Build Coastguard Worker                                     (long long const *)(m), \
1177*344a7f5eSAndroid Build Coastguard Worker                                     (__v2di)(__m128i)(i), \
1178*344a7f5eSAndroid Build Coastguard Worker                                     (__v2di)(__m128i)(mask), (s)); })
1179*344a7f5eSAndroid Build Coastguard Worker 
1180*344a7f5eSAndroid Build Coastguard Worker #define _mm256_mask_i64gather_epi64(a, m, i, mask, s) __extension__ ({ \
1181*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_ia32_gatherq_q256((__v4di)(__m256i)(a), \
1182*344a7f5eSAndroid Build Coastguard Worker                                        (long long const *)(m), \
1183*344a7f5eSAndroid Build Coastguard Worker                                        (__v4di)(__m256i)(i), \
1184*344a7f5eSAndroid Build Coastguard Worker                                        (__v4di)(__m256i)(mask), (s)); })
1185*344a7f5eSAndroid Build Coastguard Worker 
1186*344a7f5eSAndroid Build Coastguard Worker #define _mm_i32gather_pd(m, i, s) __extension__ ({ \
1187*344a7f5eSAndroid Build Coastguard Worker   (__m128d)__builtin_ia32_gatherd_pd((__v2df)_mm_undefined_pd(), \
1188*344a7f5eSAndroid Build Coastguard Worker                                      (double const *)(m), \
1189*344a7f5eSAndroid Build Coastguard Worker                                      (__v4si)(__m128i)(i), \
1190*344a7f5eSAndroid Build Coastguard Worker                                      (__v2df)_mm_cmpeq_pd(_mm_setzero_pd(), \
1191*344a7f5eSAndroid Build Coastguard Worker                                                           _mm_setzero_pd()), \
1192*344a7f5eSAndroid Build Coastguard Worker                                      (s)); })
1193*344a7f5eSAndroid Build Coastguard Worker 
1194*344a7f5eSAndroid Build Coastguard Worker #define _mm256_i32gather_pd(m, i, s) __extension__ ({ \
1195*344a7f5eSAndroid Build Coastguard Worker   (__m256d)__builtin_ia32_gatherd_pd256((__v4df)_mm256_undefined_pd(), \
1196*344a7f5eSAndroid Build Coastguard Worker                                         (double const *)(m), \
1197*344a7f5eSAndroid Build Coastguard Worker                                         (__v4si)(__m128i)(i), \
1198*344a7f5eSAndroid Build Coastguard Worker                                         (__v4df)_mm256_cmp_pd(_mm256_setzero_pd(), \
1199*344a7f5eSAndroid Build Coastguard Worker                                                               _mm256_setzero_pd(), \
1200*344a7f5eSAndroid Build Coastguard Worker                                                               _CMP_EQ_OQ), \
1201*344a7f5eSAndroid Build Coastguard Worker                                         (s)); })
1202*344a7f5eSAndroid Build Coastguard Worker 
1203*344a7f5eSAndroid Build Coastguard Worker #define _mm_i64gather_pd(m, i, s) __extension__ ({ \
1204*344a7f5eSAndroid Build Coastguard Worker   (__m128d)__builtin_ia32_gatherq_pd((__v2df)_mm_undefined_pd(), \
1205*344a7f5eSAndroid Build Coastguard Worker                                      (double const *)(m), \
1206*344a7f5eSAndroid Build Coastguard Worker                                      (__v2di)(__m128i)(i), \
1207*344a7f5eSAndroid Build Coastguard Worker                                      (__v2df)_mm_cmpeq_pd(_mm_setzero_pd(), \
1208*344a7f5eSAndroid Build Coastguard Worker                                                           _mm_setzero_pd()), \
1209*344a7f5eSAndroid Build Coastguard Worker                                      (s)); })
1210*344a7f5eSAndroid Build Coastguard Worker 
1211*344a7f5eSAndroid Build Coastguard Worker #define _mm256_i64gather_pd(m, i, s) __extension__ ({ \
1212*344a7f5eSAndroid Build Coastguard Worker   (__m256d)__builtin_ia32_gatherq_pd256((__v4df)_mm256_undefined_pd(), \
1213*344a7f5eSAndroid Build Coastguard Worker                                         (double const *)(m), \
1214*344a7f5eSAndroid Build Coastguard Worker                                         (__v4di)(__m256i)(i), \
1215*344a7f5eSAndroid Build Coastguard Worker                                         (__v4df)_mm256_cmp_pd(_mm256_setzero_pd(), \
1216*344a7f5eSAndroid Build Coastguard Worker                                                               _mm256_setzero_pd(), \
1217*344a7f5eSAndroid Build Coastguard Worker                                                               _CMP_EQ_OQ), \
1218*344a7f5eSAndroid Build Coastguard Worker                                         (s)); })
1219*344a7f5eSAndroid Build Coastguard Worker 
1220*344a7f5eSAndroid Build Coastguard Worker #define _mm_i32gather_ps(m, i, s) __extension__ ({ \
1221*344a7f5eSAndroid Build Coastguard Worker   (__m128)__builtin_ia32_gatherd_ps((__v4sf)_mm_undefined_ps(), \
1222*344a7f5eSAndroid Build Coastguard Worker                                     (float const *)(m), \
1223*344a7f5eSAndroid Build Coastguard Worker                                     (__v4si)(__m128i)(i), \
1224*344a7f5eSAndroid Build Coastguard Worker                                     (__v4sf)_mm_cmpeq_ps(_mm_setzero_ps(), \
1225*344a7f5eSAndroid Build Coastguard Worker                                                          _mm_setzero_ps()), \
1226*344a7f5eSAndroid Build Coastguard Worker                                     (s)); })
1227*344a7f5eSAndroid Build Coastguard Worker 
1228*344a7f5eSAndroid Build Coastguard Worker #define _mm256_i32gather_ps(m, i, s) __extension__ ({ \
1229*344a7f5eSAndroid Build Coastguard Worker   (__m256)__builtin_ia32_gatherd_ps256((__v8sf)_mm256_undefined_ps(), \
1230*344a7f5eSAndroid Build Coastguard Worker                                        (float const *)(m), \
1231*344a7f5eSAndroid Build Coastguard Worker                                        (__v8si)(__m256i)(i), \
1232*344a7f5eSAndroid Build Coastguard Worker                                        (__v8sf)_mm256_cmp_ps(_mm256_setzero_ps(), \
1233*344a7f5eSAndroid Build Coastguard Worker                                                              _mm256_setzero_ps(), \
1234*344a7f5eSAndroid Build Coastguard Worker                                                              _CMP_EQ_OQ), \
1235*344a7f5eSAndroid Build Coastguard Worker                                        (s)); })
1236*344a7f5eSAndroid Build Coastguard Worker 
1237*344a7f5eSAndroid Build Coastguard Worker #define _mm_i64gather_ps(m, i, s) __extension__ ({ \
1238*344a7f5eSAndroid Build Coastguard Worker   (__m128)__builtin_ia32_gatherq_ps((__v4sf)_mm_undefined_ps(), \
1239*344a7f5eSAndroid Build Coastguard Worker                                     (float const *)(m), \
1240*344a7f5eSAndroid Build Coastguard Worker                                     (__v2di)(__m128i)(i), \
1241*344a7f5eSAndroid Build Coastguard Worker                                     (__v4sf)_mm_cmpeq_ps(_mm_setzero_ps(), \
1242*344a7f5eSAndroid Build Coastguard Worker                                                          _mm_setzero_ps()), \
1243*344a7f5eSAndroid Build Coastguard Worker                                     (s)); })
1244*344a7f5eSAndroid Build Coastguard Worker 
1245*344a7f5eSAndroid Build Coastguard Worker #define _mm256_i64gather_ps(m, i, s) __extension__ ({ \
1246*344a7f5eSAndroid Build Coastguard Worker   (__m128)__builtin_ia32_gatherq_ps256((__v4sf)_mm_undefined_ps(), \
1247*344a7f5eSAndroid Build Coastguard Worker                                        (float const *)(m), \
1248*344a7f5eSAndroid Build Coastguard Worker                                        (__v4di)(__m256i)(i), \
1249*344a7f5eSAndroid Build Coastguard Worker                                        (__v4sf)_mm_cmpeq_ps(_mm_setzero_ps(), \
1250*344a7f5eSAndroid Build Coastguard Worker                                                             _mm_setzero_ps()), \
1251*344a7f5eSAndroid Build Coastguard Worker                                        (s)); })
1252*344a7f5eSAndroid Build Coastguard Worker 
1253*344a7f5eSAndroid Build Coastguard Worker #define _mm_i32gather_epi32(m, i, s) __extension__ ({ \
1254*344a7f5eSAndroid Build Coastguard Worker   (__m128i)__builtin_ia32_gatherd_d((__v4si)_mm_undefined_si128(), \
1255*344a7f5eSAndroid Build Coastguard Worker                                     (int const *)(m), (__v4si)(__m128i)(i), \
1256*344a7f5eSAndroid Build Coastguard Worker                                     (__v4si)_mm_set1_epi32(-1), (s)); })
1257*344a7f5eSAndroid Build Coastguard Worker 
1258*344a7f5eSAndroid Build Coastguard Worker #define _mm256_i32gather_epi32(m, i, s) __extension__ ({ \
1259*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_ia32_gatherd_d256((__v8si)_mm256_undefined_si256(), \
1260*344a7f5eSAndroid Build Coastguard Worker                                        (int const *)(m), (__v8si)(__m256i)(i), \
1261*344a7f5eSAndroid Build Coastguard Worker                                        (__v8si)_mm256_set1_epi32(-1), (s)); })
1262*344a7f5eSAndroid Build Coastguard Worker 
1263*344a7f5eSAndroid Build Coastguard Worker #define _mm_i64gather_epi32(m, i, s) __extension__ ({ \
1264*344a7f5eSAndroid Build Coastguard Worker   (__m128i)__builtin_ia32_gatherq_d((__v4si)_mm_undefined_si128(), \
1265*344a7f5eSAndroid Build Coastguard Worker                                     (int const *)(m), (__v2di)(__m128i)(i), \
1266*344a7f5eSAndroid Build Coastguard Worker                                     (__v4si)_mm_set1_epi32(-1), (s)); })
1267*344a7f5eSAndroid Build Coastguard Worker 
1268*344a7f5eSAndroid Build Coastguard Worker #define _mm256_i64gather_epi32(m, i, s) __extension__ ({ \
1269*344a7f5eSAndroid Build Coastguard Worker   (__m128i)__builtin_ia32_gatherq_d256((__v4si)_mm_undefined_si128(), \
1270*344a7f5eSAndroid Build Coastguard Worker                                        (int const *)(m), (__v4di)(__m256i)(i), \
1271*344a7f5eSAndroid Build Coastguard Worker                                        (__v4si)_mm_set1_epi32(-1), (s)); })
1272*344a7f5eSAndroid Build Coastguard Worker 
1273*344a7f5eSAndroid Build Coastguard Worker #define _mm_i32gather_epi64(m, i, s) __extension__ ({ \
1274*344a7f5eSAndroid Build Coastguard Worker   (__m128i)__builtin_ia32_gatherd_q((__v2di)_mm_undefined_si128(), \
1275*344a7f5eSAndroid Build Coastguard Worker                                     (long long const *)(m), \
1276*344a7f5eSAndroid Build Coastguard Worker                                     (__v4si)(__m128i)(i), \
1277*344a7f5eSAndroid Build Coastguard Worker                                     (__v2di)_mm_set1_epi64x(-1), (s)); })
1278*344a7f5eSAndroid Build Coastguard Worker 
1279*344a7f5eSAndroid Build Coastguard Worker #define _mm256_i32gather_epi64(m, i, s) __extension__ ({ \
1280*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_ia32_gatherd_q256((__v4di)_mm256_undefined_si256(), \
1281*344a7f5eSAndroid Build Coastguard Worker                                        (long long const *)(m), \
1282*344a7f5eSAndroid Build Coastguard Worker                                        (__v4si)(__m128i)(i), \
1283*344a7f5eSAndroid Build Coastguard Worker                                        (__v4di)_mm256_set1_epi64x(-1), (s)); })
1284*344a7f5eSAndroid Build Coastguard Worker 
1285*344a7f5eSAndroid Build Coastguard Worker #define _mm_i64gather_epi64(m, i, s) __extension__ ({ \
1286*344a7f5eSAndroid Build Coastguard Worker   (__m128i)__builtin_ia32_gatherq_q((__v2di)_mm_undefined_si128(), \
1287*344a7f5eSAndroid Build Coastguard Worker                                     (long long const *)(m), \
1288*344a7f5eSAndroid Build Coastguard Worker                                     (__v2di)(__m128i)(i), \
1289*344a7f5eSAndroid Build Coastguard Worker                                     (__v2di)_mm_set1_epi64x(-1), (s)); })
1290*344a7f5eSAndroid Build Coastguard Worker 
1291*344a7f5eSAndroid Build Coastguard Worker #define _mm256_i64gather_epi64(m, i, s) __extension__ ({ \
1292*344a7f5eSAndroid Build Coastguard Worker   (__m256i)__builtin_ia32_gatherq_q256((__v4di)_mm256_undefined_si256(), \
1293*344a7f5eSAndroid Build Coastguard Worker                                        (long long const *)(m), \
1294*344a7f5eSAndroid Build Coastguard Worker                                        (__v4di)(__m256i)(i), \
1295*344a7f5eSAndroid Build Coastguard Worker                                        (__v4di)_mm256_set1_epi64x(-1), (s)); })
1296*344a7f5eSAndroid Build Coastguard Worker 
1297*344a7f5eSAndroid Build Coastguard Worker #undef __DEFAULT_FN_ATTRS
1298*344a7f5eSAndroid Build Coastguard Worker 
1299*344a7f5eSAndroid Build Coastguard Worker #endif /* __AVX2INTRIN_H */
1300