clang  3.7.0
smmintrin.h
Go to the documentation of this file.
1 /*===---- smmintrin.h - SSE4 intrinsics ------------------------------------===
2  *
3  * Permission is hereby granted, free of charge, to any person obtaining a copy
4  * of this software and associated documentation files (the "Software"), to deal
5  * in the Software without restriction, including without limitation the rights
6  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7  * copies of the Software, and to permit persons to whom the Software is
8  * furnished to do so, subject to the following conditions:
9  *
10  * The above copyright notice and this permission notice shall be included in
11  * all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19  * THE SOFTWARE.
20  *
21  *===-----------------------------------------------------------------------===
22  */
23 
24 #ifndef _SMMINTRIN_H
25 #define _SMMINTRIN_H
26 
27 #ifndef __SSE4_1__
28 #error "SSE4.1 instruction set not enabled"
29 #else
30 
31 #include <tmmintrin.h>
32 
33 /* Define the default attributes for the functions in this file. */
34 #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__))
35 
36 /* SSE4 Rounding macros. */
37 #define _MM_FROUND_TO_NEAREST_INT 0x00
38 #define _MM_FROUND_TO_NEG_INF 0x01
39 #define _MM_FROUND_TO_POS_INF 0x02
40 #define _MM_FROUND_TO_ZERO 0x03
41 #define _MM_FROUND_CUR_DIRECTION 0x04
42 
43 #define _MM_FROUND_RAISE_EXC 0x00
44 #define _MM_FROUND_NO_EXC 0x08
45 
46 #define _MM_FROUND_NINT (_MM_FROUND_RAISE_EXC | _MM_FROUND_TO_NEAREST_INT)
47 #define _MM_FROUND_FLOOR (_MM_FROUND_RAISE_EXC | _MM_FROUND_TO_NEG_INF)
48 #define _MM_FROUND_CEIL (_MM_FROUND_RAISE_EXC | _MM_FROUND_TO_POS_INF)
49 #define _MM_FROUND_TRUNC (_MM_FROUND_RAISE_EXC | _MM_FROUND_TO_ZERO)
50 #define _MM_FROUND_RINT (_MM_FROUND_RAISE_EXC | _MM_FROUND_CUR_DIRECTION)
51 #define _MM_FROUND_NEARBYINT (_MM_FROUND_NO_EXC | _MM_FROUND_CUR_DIRECTION)
52 
53 #define _mm_ceil_ps(X) _mm_round_ps((X), _MM_FROUND_CEIL)
54 #define _mm_ceil_pd(X) _mm_round_pd((X), _MM_FROUND_CEIL)
55 #define _mm_ceil_ss(X, Y) _mm_round_ss((X), (Y), _MM_FROUND_CEIL)
56 #define _mm_ceil_sd(X, Y) _mm_round_sd((X), (Y), _MM_FROUND_CEIL)
57 
58 #define _mm_floor_ps(X) _mm_round_ps((X), _MM_FROUND_FLOOR)
59 #define _mm_floor_pd(X) _mm_round_pd((X), _MM_FROUND_FLOOR)
60 #define _mm_floor_ss(X, Y) _mm_round_ss((X), (Y), _MM_FROUND_FLOOR)
61 #define _mm_floor_sd(X, Y) _mm_round_sd((X), (Y), _MM_FROUND_FLOOR)
62 
63 #define _mm_round_ps(X, M) __extension__ ({ \
64  __m128 __X = (X); \
65  (__m128) __builtin_ia32_roundps((__v4sf)__X, (M)); })
66 
67 #define _mm_round_ss(X, Y, M) __extension__ ({ \
68  __m128 __X = (X); \
69  __m128 __Y = (Y); \
70  (__m128) __builtin_ia32_roundss((__v4sf)__X, (__v4sf)__Y, (M)); })
71 
72 #define _mm_round_pd(X, M) __extension__ ({ \
73  __m128d __X = (X); \
74  (__m128d) __builtin_ia32_roundpd((__v2df)__X, (M)); })
75 
76 #define _mm_round_sd(X, Y, M) __extension__ ({ \
77  __m128d __X = (X); \
78  __m128d __Y = (Y); \
79  (__m128d) __builtin_ia32_roundsd((__v2df)__X, (__v2df)__Y, (M)); })
80 
81 /* SSE4 Packed Blending Intrinsics. */
82 #define _mm_blend_pd(V1, V2, M) __extension__ ({ \
83  __m128d __V1 = (V1); \
84  __m128d __V2 = (V2); \
85  (__m128d)__builtin_shufflevector((__v2df)__V1, (__v2df)__V2, \
86  (((M) & 0x01) ? 2 : 0), \
87  (((M) & 0x02) ? 3 : 1)); })
88 
89 #define _mm_blend_ps(V1, V2, M) __extension__ ({ \
90  __m128 __V1 = (V1); \
91  __m128 __V2 = (V2); \
92  (__m128)__builtin_shufflevector((__v4sf)__V1, (__v4sf)__V2, \
93  (((M) & 0x01) ? 4 : 0), \
94  (((M) & 0x02) ? 5 : 1), \
95  (((M) & 0x04) ? 6 : 2), \
96  (((M) & 0x08) ? 7 : 3)); })
97 
98 static __inline__ __m128d __DEFAULT_FN_ATTRS
99 _mm_blendv_pd (__m128d __V1, __m128d __V2, __m128d __M)
100 {
101  return (__m128d) __builtin_ia32_blendvpd ((__v2df)__V1, (__v2df)__V2,
102  (__v2df)__M);
103 }
104 
105 static __inline__ __m128 __DEFAULT_FN_ATTRS
106 _mm_blendv_ps (__m128 __V1, __m128 __V2, __m128 __M)
107 {
108  return (__m128) __builtin_ia32_blendvps ((__v4sf)__V1, (__v4sf)__V2,
109  (__v4sf)__M);
110 }
111 
112 static __inline__ __m128i __DEFAULT_FN_ATTRS
113 _mm_blendv_epi8 (__m128i __V1, __m128i __V2, __m128i __M)
114 {
115  return (__m128i) __builtin_ia32_pblendvb128 ((__v16qi)__V1, (__v16qi)__V2,
116  (__v16qi)__M);
117 }
118 
119 #define _mm_blend_epi16(V1, V2, M) __extension__ ({ \
120  __m128i __V1 = (V1); \
121  __m128i __V2 = (V2); \
122  (__m128i)__builtin_shufflevector((__v8hi)__V1, (__v8hi)__V2, \
123  (((M) & 0x01) ? 8 : 0), \
124  (((M) & 0x02) ? 9 : 1), \
125  (((M) & 0x04) ? 10 : 2), \
126  (((M) & 0x08) ? 11 : 3), \
127  (((M) & 0x10) ? 12 : 4), \
128  (((M) & 0x20) ? 13 : 5), \
129  (((M) & 0x40) ? 14 : 6), \
130  (((M) & 0x80) ? 15 : 7)); })
131 
132 /* SSE4 Dword Multiply Instructions. */
133 static __inline__ __m128i __DEFAULT_FN_ATTRS
134 _mm_mullo_epi32 (__m128i __V1, __m128i __V2)
135 {
136  return (__m128i) ((__v4si)__V1 * (__v4si)__V2);
137 }
138 
139 static __inline__ __m128i __DEFAULT_FN_ATTRS
140 _mm_mul_epi32 (__m128i __V1, __m128i __V2)
141 {
142  return (__m128i) __builtin_ia32_pmuldq128 ((__v4si)__V1, (__v4si)__V2);
143 }
144 
145 /* SSE4 Floating Point Dot Product Instructions. */
146 #define _mm_dp_ps(X, Y, M) __extension__ ({ \
147  __m128 __X = (X); \
148  __m128 __Y = (Y); \
149  (__m128) __builtin_ia32_dpps((__v4sf)__X, (__v4sf)__Y, (M)); })
150 
151 #define _mm_dp_pd(X, Y, M) __extension__ ({\
152  __m128d __X = (X); \
153  __m128d __Y = (Y); \
154  (__m128d) __builtin_ia32_dppd((__v2df)__X, (__v2df)__Y, (M)); })
155 
156 /* SSE4 Streaming Load Hint Instruction. */
157 static __inline__ __m128i __DEFAULT_FN_ATTRS
158 _mm_stream_load_si128 (__m128i *__V)
159 {
160  return (__m128i) __builtin_ia32_movntdqa ((__v2di *) __V);
161 }
162 
163 /* SSE4 Packed Integer Min/Max Instructions. */
164 static __inline__ __m128i __DEFAULT_FN_ATTRS
165 _mm_min_epi8 (__m128i __V1, __m128i __V2)
166 {
167  return (__m128i) __builtin_ia32_pminsb128 ((__v16qi) __V1, (__v16qi) __V2);
168 }
169 
170 static __inline__ __m128i __DEFAULT_FN_ATTRS
171 _mm_max_epi8 (__m128i __V1, __m128i __V2)
172 {
173  return (__m128i) __builtin_ia32_pmaxsb128 ((__v16qi) __V1, (__v16qi) __V2);
174 }
175 
176 static __inline__ __m128i __DEFAULT_FN_ATTRS
177 _mm_min_epu16 (__m128i __V1, __m128i __V2)
178 {
179  return (__m128i) __builtin_ia32_pminuw128 ((__v8hi) __V1, (__v8hi) __V2);
180 }
181 
182 static __inline__ __m128i __DEFAULT_FN_ATTRS
183 _mm_max_epu16 (__m128i __V1, __m128i __V2)
184 {
185  return (__m128i) __builtin_ia32_pmaxuw128 ((__v8hi) __V1, (__v8hi) __V2);
186 }
187 
188 static __inline__ __m128i __DEFAULT_FN_ATTRS
189 _mm_min_epi32 (__m128i __V1, __m128i __V2)
190 {
191  return (__m128i) __builtin_ia32_pminsd128 ((__v4si) __V1, (__v4si) __V2);
192 }
193 
194 static __inline__ __m128i __DEFAULT_FN_ATTRS
195 _mm_max_epi32 (__m128i __V1, __m128i __V2)
196 {
197  return (__m128i) __builtin_ia32_pmaxsd128 ((__v4si) __V1, (__v4si) __V2);
198 }
199 
200 static __inline__ __m128i __DEFAULT_FN_ATTRS
201 _mm_min_epu32 (__m128i __V1, __m128i __V2)
202 {
203  return (__m128i) __builtin_ia32_pminud128((__v4si) __V1, (__v4si) __V2);
204 }
205 
206 static __inline__ __m128i __DEFAULT_FN_ATTRS
207 _mm_max_epu32 (__m128i __V1, __m128i __V2)
208 {
209  return (__m128i) __builtin_ia32_pmaxud128((__v4si) __V1, (__v4si) __V2);
210 }
211 
212 /* SSE4 Insertion and Extraction from XMM Register Instructions. */
213 #define _mm_insert_ps(X, Y, N) __builtin_ia32_insertps128((X), (Y), (N))
214 #define _mm_extract_ps(X, N) (__extension__ \
215  ({ union { int __i; float __f; } __t; \
216  __v4sf __a = (__v4sf)(X); \
217  __t.__f = __a[(N) & 3]; \
218  __t.__i;}))
219 
220 /* Miscellaneous insert and extract macros. */
221 /* Extract a single-precision float from X at index N into D. */
222 #define _MM_EXTRACT_FLOAT(D, X, N) (__extension__ ({ __v4sf __a = (__v4sf)(X); \
223  (D) = __a[N]; }))
224 
225 /* Or together 2 sets of indexes (X and Y) with the zeroing bits (Z) to create
226  an index suitable for _mm_insert_ps. */
227 #define _MM_MK_INSERTPS_NDX(X, Y, Z) (((X) << 6) | ((Y) << 4) | (Z))
228 
229 /* Extract a float from X at index N into the first index of the return. */
230 #define _MM_PICK_OUT_PS(X, N) _mm_insert_ps (_mm_setzero_ps(), (X), \
231  _MM_MK_INSERTPS_NDX((N), 0, 0x0e))
232 
233 /* Insert int into packed integer array at index. */
234 #define _mm_insert_epi8(X, I, N) (__extension__ ({ __v16qi __a = (__v16qi)(X); \
235  __a[(N) & 15] = (I); \
236  __a;}))
237 #define _mm_insert_epi32(X, I, N) (__extension__ ({ __v4si __a = (__v4si)(X); \
238  __a[(N) & 3] = (I); \
239  __a;}))
240 #ifdef __x86_64__
241 #define _mm_insert_epi64(X, I, N) (__extension__ ({ __v2di __a = (__v2di)(X); \
242  __a[(N) & 1] = (I); \
243  __a;}))
244 #endif /* __x86_64__ */
245 
246 /* Extract int from packed integer array at index. This returns the element
247  * as a zero extended value, so it is unsigned.
248  */
249 #define _mm_extract_epi8(X, N) (__extension__ ({ __v16qi __a = (__v16qi)(X); \
250  (int)(unsigned char) \
251  __a[(N) & 15];}))
252 #define _mm_extract_epi32(X, N) (__extension__ ({ __v4si __a = (__v4si)(X); \
253  __a[(N) & 3];}))
254 #ifdef __x86_64__
255 #define _mm_extract_epi64(X, N) (__extension__ ({ __v2di __a = (__v2di)(X); \
256  __a[(N) & 1];}))
257 #endif /* __x86_64 */
258 
259 /* SSE4 128-bit Packed Integer Comparisons. */
260 static __inline__ int __DEFAULT_FN_ATTRS
261 _mm_testz_si128(__m128i __M, __m128i __V)
262 {
263  return __builtin_ia32_ptestz128((__v2di)__M, (__v2di)__V);
264 }
265 
266 static __inline__ int __DEFAULT_FN_ATTRS
267 _mm_testc_si128(__m128i __M, __m128i __V)
268 {
269  return __builtin_ia32_ptestc128((__v2di)__M, (__v2di)__V);
270 }
271 
272 static __inline__ int __DEFAULT_FN_ATTRS
273 _mm_testnzc_si128(__m128i __M, __m128i __V)
274 {
275  return __builtin_ia32_ptestnzc128((__v2di)__M, (__v2di)__V);
276 }
277 
278 #define _mm_test_all_ones(V) _mm_testc_si128((V), _mm_cmpeq_epi32((V), (V)))
279 #define _mm_test_mix_ones_zeros(M, V) _mm_testnzc_si128((M), (V))
280 #define _mm_test_all_zeros(M, V) _mm_testz_si128 ((M), (V))
281 
282 /* SSE4 64-bit Packed Integer Comparisons. */
283 static __inline__ __m128i __DEFAULT_FN_ATTRS
284 _mm_cmpeq_epi64(__m128i __V1, __m128i __V2)
285 {
286  return (__m128i)((__v2di)__V1 == (__v2di)__V2);
287 }
288 
289 /* SSE4 Packed Integer Sign-Extension. */
290 static __inline__ __m128i __DEFAULT_FN_ATTRS
291 _mm_cvtepi8_epi16(__m128i __V)
292 {
293  return (__m128i) __builtin_ia32_pmovsxbw128((__v16qi) __V);
294 }
295 
296 static __inline__ __m128i __DEFAULT_FN_ATTRS
297 _mm_cvtepi8_epi32(__m128i __V)
298 {
299  return (__m128i) __builtin_ia32_pmovsxbd128((__v16qi) __V);
300 }
301 
302 static __inline__ __m128i __DEFAULT_FN_ATTRS
303 _mm_cvtepi8_epi64(__m128i __V)
304 {
305  return (__m128i) __builtin_ia32_pmovsxbq128((__v16qi) __V);
306 }
307 
308 static __inline__ __m128i __DEFAULT_FN_ATTRS
309 _mm_cvtepi16_epi32(__m128i __V)
310 {
311  return (__m128i) __builtin_ia32_pmovsxwd128((__v8hi) __V);
312 }
313 
314 static __inline__ __m128i __DEFAULT_FN_ATTRS
315 _mm_cvtepi16_epi64(__m128i __V)
316 {
317  return (__m128i) __builtin_ia32_pmovsxwq128((__v8hi)__V);
318 }
319 
320 static __inline__ __m128i __DEFAULT_FN_ATTRS
321 _mm_cvtepi32_epi64(__m128i __V)
322 {
323  return (__m128i) __builtin_ia32_pmovsxdq128((__v4si)__V);
324 }
325 
326 /* SSE4 Packed Integer Zero-Extension. */
327 static __inline__ __m128i __DEFAULT_FN_ATTRS
328 _mm_cvtepu8_epi16(__m128i __V)
329 {
330  return (__m128i) __builtin_ia32_pmovzxbw128((__v16qi) __V);
331 }
332 
333 static __inline__ __m128i __DEFAULT_FN_ATTRS
334 _mm_cvtepu8_epi32(__m128i __V)
335 {
336  return (__m128i) __builtin_ia32_pmovzxbd128((__v16qi)__V);
337 }
338 
339 static __inline__ __m128i __DEFAULT_FN_ATTRS
340 _mm_cvtepu8_epi64(__m128i __V)
341 {
342  return (__m128i) __builtin_ia32_pmovzxbq128((__v16qi)__V);
343 }
344 
345 static __inline__ __m128i __DEFAULT_FN_ATTRS
346 _mm_cvtepu16_epi32(__m128i __V)
347 {
348  return (__m128i) __builtin_ia32_pmovzxwd128((__v8hi)__V);
349 }
350 
351 static __inline__ __m128i __DEFAULT_FN_ATTRS
352 _mm_cvtepu16_epi64(__m128i __V)
353 {
354  return (__m128i) __builtin_ia32_pmovzxwq128((__v8hi)__V);
355 }
356 
357 static __inline__ __m128i __DEFAULT_FN_ATTRS
358 _mm_cvtepu32_epi64(__m128i __V)
359 {
360  return (__m128i) __builtin_ia32_pmovzxdq128((__v4si)__V);
361 }
362 
363 /* SSE4 Pack with Unsigned Saturation. */
364 static __inline__ __m128i __DEFAULT_FN_ATTRS
365 _mm_packus_epi32(__m128i __V1, __m128i __V2)
366 {
367  return (__m128i) __builtin_ia32_packusdw128((__v4si)__V1, (__v4si)__V2);
368 }
369 
370 /* SSE4 Multiple Packed Sums of Absolute Difference. */
371 #define _mm_mpsadbw_epu8(X, Y, M) __extension__ ({ \
372  __m128i __X = (X); \
373  __m128i __Y = (Y); \
374  (__m128i) __builtin_ia32_mpsadbw128((__v16qi)__X, (__v16qi)__Y, (M)); })
375 
376 static __inline__ __m128i __DEFAULT_FN_ATTRS
377 _mm_minpos_epu16(__m128i __V)
378 {
379  return (__m128i) __builtin_ia32_phminposuw128((__v8hi)__V);
380 }
381 
382 /* These definitions are normally in nmmintrin.h, but gcc puts them in here
383  so we'll do the same. */
384 #ifdef __SSE4_2__
385 
386 /* These specify the type of data that we're comparing. */
387 #define _SIDD_UBYTE_OPS 0x00
388 #define _SIDD_UWORD_OPS 0x01
389 #define _SIDD_SBYTE_OPS 0x02
390 #define _SIDD_SWORD_OPS 0x03
391 
392 /* These specify the type of comparison operation. */
393 #define _SIDD_CMP_EQUAL_ANY 0x00
394 #define _SIDD_CMP_RANGES 0x04
395 #define _SIDD_CMP_EQUAL_EACH 0x08
396 #define _SIDD_CMP_EQUAL_ORDERED 0x0c
397 
398 /* These macros specify the polarity of the operation. */
399 #define _SIDD_POSITIVE_POLARITY 0x00
400 #define _SIDD_NEGATIVE_POLARITY 0x10
401 #define _SIDD_MASKED_POSITIVE_POLARITY 0x20
402 #define _SIDD_MASKED_NEGATIVE_POLARITY 0x30
403 
404 /* These macros are used in _mm_cmpXstri() to specify the return. */
405 #define _SIDD_LEAST_SIGNIFICANT 0x00
406 #define _SIDD_MOST_SIGNIFICANT 0x40
407 
408 /* These macros are used in _mm_cmpXstri() to specify the return. */
409 #define _SIDD_BIT_MASK 0x00
410 #define _SIDD_UNIT_MASK 0x40
411 
412 /* SSE4.2 Packed Comparison Intrinsics. */
413 #define _mm_cmpistrm(A, B, M) __builtin_ia32_pcmpistrm128((A), (B), (M))
414 #define _mm_cmpistri(A, B, M) __builtin_ia32_pcmpistri128((A), (B), (M))
415 
416 #define _mm_cmpestrm(A, LA, B, LB, M) \
417  __builtin_ia32_pcmpestrm128((A), (LA), (B), (LB), (M))
418 #define _mm_cmpestri(A, LA, B, LB, M) \
419  __builtin_ia32_pcmpestri128((A), (LA), (B), (LB), (M))
420 
421 /* SSE4.2 Packed Comparison Intrinsics and EFlag Reading. */
422 #define _mm_cmpistra(A, B, M) \
423  __builtin_ia32_pcmpistria128((A), (B), (M))
424 #define _mm_cmpistrc(A, B, M) \
425  __builtin_ia32_pcmpistric128((A), (B), (M))
426 #define _mm_cmpistro(A, B, M) \
427  __builtin_ia32_pcmpistrio128((A), (B), (M))
428 #define _mm_cmpistrs(A, B, M) \
429  __builtin_ia32_pcmpistris128((A), (B), (M))
430 #define _mm_cmpistrz(A, B, M) \
431  __builtin_ia32_pcmpistriz128((A), (B), (M))
432 
433 #define _mm_cmpestra(A, LA, B, LB, M) \
434  __builtin_ia32_pcmpestria128((A), (LA), (B), (LB), (M))
435 #define _mm_cmpestrc(A, LA, B, LB, M) \
436  __builtin_ia32_pcmpestric128((A), (LA), (B), (LB), (M))
437 #define _mm_cmpestro(A, LA, B, LB, M) \
438  __builtin_ia32_pcmpestrio128((A), (LA), (B), (LB), (M))
439 #define _mm_cmpestrs(A, LA, B, LB, M) \
440  __builtin_ia32_pcmpestris128((A), (LA), (B), (LB), (M))
441 #define _mm_cmpestrz(A, LA, B, LB, M) \
442  __builtin_ia32_pcmpestriz128((A), (LA), (B), (LB), (M))
443 
444 /* SSE4.2 Compare Packed Data -- Greater Than. */
445 static __inline__ __m128i __DEFAULT_FN_ATTRS
446 _mm_cmpgt_epi64(__m128i __V1, __m128i __V2)
447 {
448  return (__m128i)((__v2di)__V1 > (__v2di)__V2);
449 }
450 
451 /* SSE4.2 Accumulate CRC32. */
452 static __inline__ unsigned int __DEFAULT_FN_ATTRS
453 _mm_crc32_u8(unsigned int __C, unsigned char __D)
454 {
455  return __builtin_ia32_crc32qi(__C, __D);
456 }
457 
458 static __inline__ unsigned int __DEFAULT_FN_ATTRS
459 _mm_crc32_u16(unsigned int __C, unsigned short __D)
460 {
461  return __builtin_ia32_crc32hi(__C, __D);
462 }
463 
464 static __inline__ unsigned int __DEFAULT_FN_ATTRS
465 _mm_crc32_u32(unsigned int __C, unsigned int __D)
466 {
467  return __builtin_ia32_crc32si(__C, __D);
468 }
469 
470 #ifdef __x86_64__
471 static __inline__ unsigned long long __DEFAULT_FN_ATTRS
472 _mm_crc32_u64(unsigned long long __C, unsigned long long __D)
473 {
474  return __builtin_ia32_crc32di(__C, __D);
475 }
476 #endif /* __x86_64__ */
477 
478 #undef __DEFAULT_FN_ATTRS
479 
480 #ifdef __POPCNT__
481 #include <popcntintrin.h>
482 #endif
483 
484 #endif /* __SSE4_2__ */
485 #endif /* __SSE4_1__ */
486 
487 #endif /* _SMMINTRIN_H */
#define __DEFAULT_FN_ATTRS
Definition: adxintrin.h:32