1*344a7f5eSAndroid Build Coastguard Worker /*===---- immintrin.h - Intel 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 #define __IMMINTRIN_H
26*344a7f5eSAndroid Build Coastguard Worker
27*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__MMX__)
28*344a7f5eSAndroid Build Coastguard Worker #include <mmintrin.h>
29*344a7f5eSAndroid Build Coastguard Worker #endif
30*344a7f5eSAndroid Build Coastguard Worker
31*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__SSE__)
32*344a7f5eSAndroid Build Coastguard Worker #include <xmmintrin.h>
33*344a7f5eSAndroid Build Coastguard Worker #endif
34*344a7f5eSAndroid Build Coastguard Worker
35*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__SSE2__)
36*344a7f5eSAndroid Build Coastguard Worker #include <emmintrin.h>
37*344a7f5eSAndroid Build Coastguard Worker #endif
38*344a7f5eSAndroid Build Coastguard Worker
39*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__SSE3__)
40*344a7f5eSAndroid Build Coastguard Worker #include <pmmintrin.h>
41*344a7f5eSAndroid Build Coastguard Worker #endif
42*344a7f5eSAndroid Build Coastguard Worker
43*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__SSSE3__)
44*344a7f5eSAndroid Build Coastguard Worker #include <tmmintrin.h>
45*344a7f5eSAndroid Build Coastguard Worker #endif
46*344a7f5eSAndroid Build Coastguard Worker
47*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || \
48*344a7f5eSAndroid Build Coastguard Worker (defined(__SSE4_2__) || defined(__SSE4_1__))
49*344a7f5eSAndroid Build Coastguard Worker #include <smmintrin.h>
50*344a7f5eSAndroid Build Coastguard Worker #endif
51*344a7f5eSAndroid Build Coastguard Worker
52*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || \
53*344a7f5eSAndroid Build Coastguard Worker (defined(__AES__) || defined(__PCLMUL__))
54*344a7f5eSAndroid Build Coastguard Worker #include <wmmintrin.h>
55*344a7f5eSAndroid Build Coastguard Worker #endif
56*344a7f5eSAndroid Build Coastguard Worker
57*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__CLFLUSHOPT__)
58*344a7f5eSAndroid Build Coastguard Worker #include <clflushoptintrin.h>
59*344a7f5eSAndroid Build Coastguard Worker #endif
60*344a7f5eSAndroid Build Coastguard Worker
61*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX__)
62*344a7f5eSAndroid Build Coastguard Worker #include <avxintrin.h>
63*344a7f5eSAndroid Build Coastguard Worker #endif
64*344a7f5eSAndroid Build Coastguard Worker
65*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX2__)
66*344a7f5eSAndroid Build Coastguard Worker #include <avx2intrin.h>
67*344a7f5eSAndroid Build Coastguard Worker
68*344a7f5eSAndroid Build Coastguard Worker /* The 256-bit versions of functions in f16cintrin.h.
69*344a7f5eSAndroid Build Coastguard Worker Intel documents these as being in immintrin.h, and
70*344a7f5eSAndroid Build Coastguard Worker they depend on typedefs from avxintrin.h. */
71*344a7f5eSAndroid Build Coastguard Worker
72*344a7f5eSAndroid Build Coastguard Worker #define _mm256_cvtps_ph(a, imm) __extension__ ({ \
73*344a7f5eSAndroid Build Coastguard Worker (__m128i)__builtin_ia32_vcvtps2ph256((__v8sf)(__m256)(a), (imm)); })
74*344a7f5eSAndroid Build Coastguard Worker
75*344a7f5eSAndroid Build Coastguard Worker static __inline __m256 __attribute__((__always_inline__, __nodebug__, __target__("f16c")))
_mm256_cvtph_ps(__m128i __a)76*344a7f5eSAndroid Build Coastguard Worker _mm256_cvtph_ps(__m128i __a)
77*344a7f5eSAndroid Build Coastguard Worker {
78*344a7f5eSAndroid Build Coastguard Worker return (__m256)__builtin_ia32_vcvtph2ps256((__v8hi)__a);
79*344a7f5eSAndroid Build Coastguard Worker }
80*344a7f5eSAndroid Build Coastguard Worker #endif /* __AVX2__ */
81*344a7f5eSAndroid Build Coastguard Worker
82*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__BMI__)
83*344a7f5eSAndroid Build Coastguard Worker #include <bmiintrin.h>
84*344a7f5eSAndroid Build Coastguard Worker #endif
85*344a7f5eSAndroid Build Coastguard Worker
86*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__BMI2__)
87*344a7f5eSAndroid Build Coastguard Worker #include <bmi2intrin.h>
88*344a7f5eSAndroid Build Coastguard Worker #endif
89*344a7f5eSAndroid Build Coastguard Worker
90*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__LZCNT__)
91*344a7f5eSAndroid Build Coastguard Worker #include <lzcntintrin.h>
92*344a7f5eSAndroid Build Coastguard Worker #endif
93*344a7f5eSAndroid Build Coastguard Worker
94*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__FMA__)
95*344a7f5eSAndroid Build Coastguard Worker #include <fmaintrin.h>
96*344a7f5eSAndroid Build Coastguard Worker #endif
97*344a7f5eSAndroid Build Coastguard Worker
98*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512F__)
99*344a7f5eSAndroid Build Coastguard Worker #include <avx512fintrin.h>
100*344a7f5eSAndroid Build Coastguard Worker #endif
101*344a7f5eSAndroid Build Coastguard Worker
102*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512VL__)
103*344a7f5eSAndroid Build Coastguard Worker #include <avx512vlintrin.h>
104*344a7f5eSAndroid Build Coastguard Worker #endif
105*344a7f5eSAndroid Build Coastguard Worker
106*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512BW__)
107*344a7f5eSAndroid Build Coastguard Worker #include <avx512bwintrin.h>
108*344a7f5eSAndroid Build Coastguard Worker #endif
109*344a7f5eSAndroid Build Coastguard Worker
110*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512CD__)
111*344a7f5eSAndroid Build Coastguard Worker #include <avx512cdintrin.h>
112*344a7f5eSAndroid Build Coastguard Worker #endif
113*344a7f5eSAndroid Build Coastguard Worker
114*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512DQ__)
115*344a7f5eSAndroid Build Coastguard Worker #include <avx512dqintrin.h>
116*344a7f5eSAndroid Build Coastguard Worker #endif
117*344a7f5eSAndroid Build Coastguard Worker
118*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || \
119*344a7f5eSAndroid Build Coastguard Worker (defined(__AVX512VL__) && defined(__AVX512BW__))
120*344a7f5eSAndroid Build Coastguard Worker #include <avx512vlbwintrin.h>
121*344a7f5eSAndroid Build Coastguard Worker #endif
122*344a7f5eSAndroid Build Coastguard Worker
123*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || \
124*344a7f5eSAndroid Build Coastguard Worker (defined(__AVX512VL__) && defined(__AVX512CD__))
125*344a7f5eSAndroid Build Coastguard Worker #include <avx512vlcdintrin.h>
126*344a7f5eSAndroid Build Coastguard Worker #endif
127*344a7f5eSAndroid Build Coastguard Worker
128*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || \
129*344a7f5eSAndroid Build Coastguard Worker (defined(__AVX512VL__) && defined(__AVX512DQ__))
130*344a7f5eSAndroid Build Coastguard Worker #include <avx512vldqintrin.h>
131*344a7f5eSAndroid Build Coastguard Worker #endif
132*344a7f5eSAndroid Build Coastguard Worker
133*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512ER__)
134*344a7f5eSAndroid Build Coastguard Worker #include <avx512erintrin.h>
135*344a7f5eSAndroid Build Coastguard Worker #endif
136*344a7f5eSAndroid Build Coastguard Worker
137*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512IFMA__)
138*344a7f5eSAndroid Build Coastguard Worker #include <avx512ifmaintrin.h>
139*344a7f5eSAndroid Build Coastguard Worker #endif
140*344a7f5eSAndroid Build Coastguard Worker
141*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || \
142*344a7f5eSAndroid Build Coastguard Worker (defined(__AVX512IFMA__) && defined(__AVX512VL__))
143*344a7f5eSAndroid Build Coastguard Worker #include <avx512ifmavlintrin.h>
144*344a7f5eSAndroid Build Coastguard Worker #endif
145*344a7f5eSAndroid Build Coastguard Worker
146*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512VBMI__)
147*344a7f5eSAndroid Build Coastguard Worker #include <avx512vbmiintrin.h>
148*344a7f5eSAndroid Build Coastguard Worker #endif
149*344a7f5eSAndroid Build Coastguard Worker
150*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || \
151*344a7f5eSAndroid Build Coastguard Worker (defined(__AVX512VBMI__) && defined(__AVX512VL__))
152*344a7f5eSAndroid Build Coastguard Worker #include <avx512vbmivlintrin.h>
153*344a7f5eSAndroid Build Coastguard Worker #endif
154*344a7f5eSAndroid Build Coastguard Worker
155*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512PF__)
156*344a7f5eSAndroid Build Coastguard Worker #include <avx512pfintrin.h>
157*344a7f5eSAndroid Build Coastguard Worker #endif
158*344a7f5eSAndroid Build Coastguard Worker
159*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__PKU__)
160*344a7f5eSAndroid Build Coastguard Worker #include <pkuintrin.h>
161*344a7f5eSAndroid Build Coastguard Worker #endif
162*344a7f5eSAndroid Build Coastguard Worker
163*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__RDRND__)
164*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
_rdrand16_step(unsigned short * __p)165*344a7f5eSAndroid Build Coastguard Worker _rdrand16_step(unsigned short *__p)
166*344a7f5eSAndroid Build Coastguard Worker {
167*344a7f5eSAndroid Build Coastguard Worker return __builtin_ia32_rdrand16_step(__p);
168*344a7f5eSAndroid Build Coastguard Worker }
169*344a7f5eSAndroid Build Coastguard Worker
170*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
_rdrand32_step(unsigned int * __p)171*344a7f5eSAndroid Build Coastguard Worker _rdrand32_step(unsigned int *__p)
172*344a7f5eSAndroid Build Coastguard Worker {
173*344a7f5eSAndroid Build Coastguard Worker return __builtin_ia32_rdrand32_step(__p);
174*344a7f5eSAndroid Build Coastguard Worker }
175*344a7f5eSAndroid Build Coastguard Worker
176*344a7f5eSAndroid Build Coastguard Worker /* __bit_scan_forward */
177*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__, __nodebug__))
_bit_scan_forward(int __A)178*344a7f5eSAndroid Build Coastguard Worker _bit_scan_forward(int __A) {
179*344a7f5eSAndroid Build Coastguard Worker return __builtin_ctz(__A);
180*344a7f5eSAndroid Build Coastguard Worker }
181*344a7f5eSAndroid Build Coastguard Worker
182*344a7f5eSAndroid Build Coastguard Worker /* __bit_scan_reverse */
183*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__, __nodebug__))
_bit_scan_reverse(int __A)184*344a7f5eSAndroid Build Coastguard Worker _bit_scan_reverse(int __A) {
185*344a7f5eSAndroid Build Coastguard Worker return 31 - __builtin_clz(__A);
186*344a7f5eSAndroid Build Coastguard Worker }
187*344a7f5eSAndroid Build Coastguard Worker
188*344a7f5eSAndroid Build Coastguard Worker #ifdef __x86_64__
189*344a7f5eSAndroid Build Coastguard Worker static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd")))
_rdrand64_step(unsigned long long * __p)190*344a7f5eSAndroid Build Coastguard Worker _rdrand64_step(unsigned long long *__p)
191*344a7f5eSAndroid Build Coastguard Worker {
192*344a7f5eSAndroid Build Coastguard Worker return __builtin_ia32_rdrand64_step(__p);
193*344a7f5eSAndroid Build Coastguard Worker }
194*344a7f5eSAndroid Build Coastguard Worker #endif
195*344a7f5eSAndroid Build Coastguard Worker #endif /* __RDRND__ */
196*344a7f5eSAndroid Build Coastguard Worker
197*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__FSGSBASE__)
198*344a7f5eSAndroid Build Coastguard Worker #ifdef __x86_64__
199*344a7f5eSAndroid Build Coastguard Worker static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
_readfsbase_u32(void)200*344a7f5eSAndroid Build Coastguard Worker _readfsbase_u32(void)
201*344a7f5eSAndroid Build Coastguard Worker {
202*344a7f5eSAndroid Build Coastguard Worker return __builtin_ia32_rdfsbase32();
203*344a7f5eSAndroid Build Coastguard Worker }
204*344a7f5eSAndroid Build Coastguard Worker
205*344a7f5eSAndroid Build Coastguard Worker static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
_readfsbase_u64(void)206*344a7f5eSAndroid Build Coastguard Worker _readfsbase_u64(void)
207*344a7f5eSAndroid Build Coastguard Worker {
208*344a7f5eSAndroid Build Coastguard Worker return __builtin_ia32_rdfsbase64();
209*344a7f5eSAndroid Build Coastguard Worker }
210*344a7f5eSAndroid Build Coastguard Worker
211*344a7f5eSAndroid Build Coastguard Worker static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
_readgsbase_u32(void)212*344a7f5eSAndroid Build Coastguard Worker _readgsbase_u32(void)
213*344a7f5eSAndroid Build Coastguard Worker {
214*344a7f5eSAndroid Build Coastguard Worker return __builtin_ia32_rdgsbase32();
215*344a7f5eSAndroid Build Coastguard Worker }
216*344a7f5eSAndroid Build Coastguard Worker
217*344a7f5eSAndroid Build Coastguard Worker static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
_readgsbase_u64(void)218*344a7f5eSAndroid Build Coastguard Worker _readgsbase_u64(void)
219*344a7f5eSAndroid Build Coastguard Worker {
220*344a7f5eSAndroid Build Coastguard Worker return __builtin_ia32_rdgsbase64();
221*344a7f5eSAndroid Build Coastguard Worker }
222*344a7f5eSAndroid Build Coastguard Worker
223*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
_writefsbase_u32(unsigned int __V)224*344a7f5eSAndroid Build Coastguard Worker _writefsbase_u32(unsigned int __V)
225*344a7f5eSAndroid Build Coastguard Worker {
226*344a7f5eSAndroid Build Coastguard Worker return __builtin_ia32_wrfsbase32(__V);
227*344a7f5eSAndroid Build Coastguard Worker }
228*344a7f5eSAndroid Build Coastguard Worker
229*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
_writefsbase_u64(unsigned long long __V)230*344a7f5eSAndroid Build Coastguard Worker _writefsbase_u64(unsigned long long __V)
231*344a7f5eSAndroid Build Coastguard Worker {
232*344a7f5eSAndroid Build Coastguard Worker return __builtin_ia32_wrfsbase64(__V);
233*344a7f5eSAndroid Build Coastguard Worker }
234*344a7f5eSAndroid Build Coastguard Worker
235*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
_writegsbase_u32(unsigned int __V)236*344a7f5eSAndroid Build Coastguard Worker _writegsbase_u32(unsigned int __V)
237*344a7f5eSAndroid Build Coastguard Worker {
238*344a7f5eSAndroid Build Coastguard Worker return __builtin_ia32_wrgsbase32(__V);
239*344a7f5eSAndroid Build Coastguard Worker }
240*344a7f5eSAndroid Build Coastguard Worker
241*344a7f5eSAndroid Build Coastguard Worker static __inline__ void __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase")))
_writegsbase_u64(unsigned long long __V)242*344a7f5eSAndroid Build Coastguard Worker _writegsbase_u64(unsigned long long __V)
243*344a7f5eSAndroid Build Coastguard Worker {
244*344a7f5eSAndroid Build Coastguard Worker return __builtin_ia32_wrgsbase64(__V);
245*344a7f5eSAndroid Build Coastguard Worker }
246*344a7f5eSAndroid Build Coastguard Worker
247*344a7f5eSAndroid Build Coastguard Worker #endif
248*344a7f5eSAndroid Build Coastguard Worker #endif /* __FSGSBASE__ */
249*344a7f5eSAndroid Build Coastguard Worker
250*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__RTM__)
251*344a7f5eSAndroid Build Coastguard Worker #include <rtmintrin.h>
252*344a7f5eSAndroid Build Coastguard Worker #include <xtestintrin.h>
253*344a7f5eSAndroid Build Coastguard Worker #endif
254*344a7f5eSAndroid Build Coastguard Worker
255*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__SHA__)
256*344a7f5eSAndroid Build Coastguard Worker #include <shaintrin.h>
257*344a7f5eSAndroid Build Coastguard Worker #endif
258*344a7f5eSAndroid Build Coastguard Worker
259*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__FXSR__)
260*344a7f5eSAndroid Build Coastguard Worker #include <fxsrintrin.h>
261*344a7f5eSAndroid Build Coastguard Worker #endif
262*344a7f5eSAndroid Build Coastguard Worker
263*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__XSAVE__)
264*344a7f5eSAndroid Build Coastguard Worker #include <xsaveintrin.h>
265*344a7f5eSAndroid Build Coastguard Worker #endif
266*344a7f5eSAndroid Build Coastguard Worker
267*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__XSAVEOPT__)
268*344a7f5eSAndroid Build Coastguard Worker #include <xsaveoptintrin.h>
269*344a7f5eSAndroid Build Coastguard Worker #endif
270*344a7f5eSAndroid Build Coastguard Worker
271*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__XSAVEC__)
272*344a7f5eSAndroid Build Coastguard Worker #include <xsavecintrin.h>
273*344a7f5eSAndroid Build Coastguard Worker #endif
274*344a7f5eSAndroid Build Coastguard Worker
275*344a7f5eSAndroid Build Coastguard Worker #if !defined(_MSC_VER) || __has_feature(modules) || defined(__XSAVES__)
276*344a7f5eSAndroid Build Coastguard Worker #include <xsavesintrin.h>
277*344a7f5eSAndroid Build Coastguard Worker #endif
278*344a7f5eSAndroid Build Coastguard Worker
279*344a7f5eSAndroid Build Coastguard Worker /* Some intrinsics inside adxintrin.h are available only on processors with ADX,
280*344a7f5eSAndroid Build Coastguard Worker * whereas others are also available at all times. */
281*344a7f5eSAndroid Build Coastguard Worker #include <adxintrin.h>
282*344a7f5eSAndroid Build Coastguard Worker
283*344a7f5eSAndroid Build Coastguard Worker #endif /* __IMMINTRIN_H */
284