Revert 137452.
[official-gcc.git] / gcc / config / i386 / bmmintrin.h
blobd7c69e576a9e4622ab8108bcbcc0ebcfd09ab5c4
1 /* Copyright (C) 2007 Free Software Foundation, Inc.
3 This file is part of GCC.
5 GCC is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2, or (at your option)
8 any later version.
10 GCC is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with GCC; see the file COPYING. If not, write to
17 the Free Software Foundation, 51 Franklin Street, Fifth Floor,
18 Boston, MA 02110-1301, USA. */
20 /* As a special exception, if you include this header file into source
21 files compiled by GCC, this header file does not by itself cause
22 the resulting executable to be covered by the GNU General Public
23 License. This exception does not however invalidate any other
24 reasons why the executable file might be covered by the GNU General
25 Public License. */
27 #ifndef _BMMINTRIN_H_INCLUDED
28 #define _BMMINTRIN_H_INCLUDED
30 #ifndef __SSE5__
31 # error "SSE5 instruction set not enabled"
32 #else
34 /* We need definitions from the SSE4A, SSE3, SSE2 and SSE header files. */
35 #include <ammintrin.h>
36 #include <mmintrin-common.h>
38 /* Floating point multiply/add type instructions */
39 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
40 _mm_macc_ps(__m128 __A, __m128 __B, __m128 __C)
42 return (__m128) __builtin_ia32_fmaddps ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
45 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
46 _mm_macc_pd(__m128d __A, __m128d __B, __m128d __C)
48 return (__m128d) __builtin_ia32_fmaddpd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
51 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
52 _mm_macc_ss(__m128 __A, __m128 __B, __m128 __C)
54 return (__m128) __builtin_ia32_fmaddss ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
57 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
58 _mm_macc_sd(__m128d __A, __m128d __B, __m128d __C)
60 return (__m128d) __builtin_ia32_fmaddsd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
63 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
64 _mm_msub_ps(__m128 __A, __m128 __B, __m128 __C)
66 return (__m128) __builtin_ia32_fmsubps ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
69 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
70 _mm_msub_pd(__m128d __A, __m128d __B, __m128d __C)
72 return (__m128d) __builtin_ia32_fmsubpd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
75 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
76 _mm_msub_ss(__m128 __A, __m128 __B, __m128 __C)
78 return (__m128) __builtin_ia32_fmsubss ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
81 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
82 _mm_msub_sd(__m128d __A, __m128d __B, __m128d __C)
84 return (__m128d) __builtin_ia32_fmsubsd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
87 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
88 _mm_nmacc_ps(__m128 __A, __m128 __B, __m128 __C)
90 return (__m128) __builtin_ia32_fnmaddps ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
93 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
94 _mm_nmacc_pd(__m128d __A, __m128d __B, __m128d __C)
96 return (__m128d) __builtin_ia32_fnmaddpd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
99 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
100 _mm_nmacc_ss(__m128 __A, __m128 __B, __m128 __C)
102 return (__m128) __builtin_ia32_fnmaddss ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
105 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
106 _mm_nmacc_sd(__m128d __A, __m128d __B, __m128d __C)
108 return (__m128d) __builtin_ia32_fnmaddsd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
111 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
112 _mm_nmsub_ps(__m128 __A, __m128 __B, __m128 __C)
114 return (__m128) __builtin_ia32_fnmsubps ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
117 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
118 _mm_nmsub_pd(__m128d __A, __m128d __B, __m128d __C)
120 return (__m128d) __builtin_ia32_fnmsubpd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
123 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
124 _mm_nmsub_ss(__m128 __A, __m128 __B, __m128 __C)
126 return (__m128) __builtin_ia32_fnmsubss ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
129 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
130 _mm_nmsub_sd(__m128d __A, __m128d __B, __m128d __C)
132 return (__m128d) __builtin_ia32_fnmsubsd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
135 /* Integer multiply/add intructions. */
136 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
137 _mm_maccs_epi16(__m128i __A, __m128i __B, __m128i __C)
139 return (__m128i) __builtin_ia32_pmacssww ((__v8hi)__A,(__v8hi)__B, (__v8hi)__C);
142 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
143 _mm_macc_epi16(__m128i __A, __m128i __B, __m128i __C)
145 return (__m128i) __builtin_ia32_pmacsww ((__v8hi)__A, (__v8hi)__B, (__v8hi)__C);
148 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
149 _mm_maccsd_epi16(__m128i __A, __m128i __B, __m128i __C)
151 return (__m128i) __builtin_ia32_pmacsswd ((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
154 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
155 _mm_maccd_epi16(__m128i __A, __m128i __B, __m128i __C)
157 return (__m128i) __builtin_ia32_pmacswd ((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
160 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
161 _mm_maccs_epi32(__m128i __A, __m128i __B, __m128i __C)
163 return (__m128i) __builtin_ia32_pmacssdd ((__v4si)__A, (__v4si)__B, (__v4si)__C);
166 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
167 _mm_macc_epi32(__m128i __A, __m128i __B, __m128i __C)
169 return (__m128i) __builtin_ia32_pmacsdd ((__v4si)__A, (__v4si)__B, (__v4si)__C);
172 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
173 _mm_maccslo_epi32(__m128i __A, __m128i __B, __m128i __C)
175 return (__m128i) __builtin_ia32_pmacssdql ((__v4si)__A, (__v4si)__B, (__v2di)__C);
178 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
179 _mm_macclo_epi32(__m128i __A, __m128i __B, __m128i __C)
181 return (__m128i) __builtin_ia32_pmacsdql ((__v4si)__A, (__v4si)__B, (__v2di)__C);
184 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
185 _mm_maccshi_epi32(__m128i __A, __m128i __B, __m128i __C)
187 return (__m128i) __builtin_ia32_pmacssdqh ((__v4si)__A, (__v4si)__B, (__v2di)__C);
190 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
191 _mm_macchi_epi32(__m128i __A, __m128i __B, __m128i __C)
193 return (__m128i) __builtin_ia32_pmacsdqh ((__v4si)__A, (__v4si)__B, (__v2di)__C);
196 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
197 _mm_maddsd_epi16(__m128i __A, __m128i __B, __m128i __C)
199 return (__m128i) __builtin_ia32_pmadcsswd ((__v8hi)__A,(__v8hi)__B,(__v4si)__C);
202 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
203 _mm_maddd_epi16(__m128i __A, __m128i __B, __m128i __C)
205 return (__m128i) __builtin_ia32_pmadcswd ((__v8hi)__A,(__v8hi)__B,(__v4si)__C);
208 /* Packed Integer Horizontal Add and Subtract */
209 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
210 _mm_haddw_epi8(__m128i __A)
212 return (__m128i) __builtin_ia32_phaddbw ((__v16qi)__A);
215 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
216 _mm_haddd_epi8(__m128i __A)
218 return (__m128i) __builtin_ia32_phaddbd ((__v16qi)__A);
221 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
222 _mm_haddq_epi8(__m128i __A)
224 return (__m128i) __builtin_ia32_phaddbq ((__v16qi)__A);
227 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
228 _mm_haddd_epi16(__m128i __A)
230 return (__m128i) __builtin_ia32_phaddwd ((__v8hi)__A);
233 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
234 _mm_haddq_epi16(__m128i __A)
236 return (__m128i) __builtin_ia32_phaddwq ((__v8hi)__A);
239 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
240 _mm_haddq_epi32(__m128i __A)
242 return (__m128i) __builtin_ia32_phadddq ((__v4si)__A);
245 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
246 _mm_haddw_epu8(__m128i __A)
248 return (__m128i) __builtin_ia32_phaddubw ((__v16qi)__A);
251 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
252 _mm_haddd_epu8(__m128i __A)
254 return (__m128i) __builtin_ia32_phaddubd ((__v16qi)__A);
257 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
258 _mm_haddq_epu8(__m128i __A)
260 return (__m128i) __builtin_ia32_phaddubq ((__v16qi)__A);
263 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
264 _mm_haddd_epu16(__m128i __A)
266 return (__m128i) __builtin_ia32_phadduwd ((__v8hi)__A);
269 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
270 _mm_haddq_epu16(__m128i __A)
272 return (__m128i) __builtin_ia32_phadduwq ((__v8hi)__A);
275 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
276 _mm_haddq_epu32(__m128i __A)
278 return (__m128i) __builtin_ia32_phaddudq ((__v4si)__A);
281 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
282 _mm_hsubw_epi8(__m128i __A)
284 return (__m128i) __builtin_ia32_phsubbw ((__v16qi)__A);
287 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
288 _mm_hsubd_epi16(__m128i __A)
290 return (__m128i) __builtin_ia32_phsubwd ((__v8hi)__A);
293 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
294 _mm_hsubq_epi32(__m128i __A)
296 return (__m128i) __builtin_ia32_phsubdq ((__v4si)__A);
299 /* Vector conditional move and permute */
300 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
301 _mm_cmov_si128(__m128i __A, __m128i __B, __m128i __C)
303 return (__m128i) __builtin_ia32_pcmov (__A, __B, __C);
306 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
307 _mm_perm_epi8(__m128i __A, __m128i __B, __m128i __C)
309 return (__m128i) __builtin_ia32_pperm ((__v16qi)__A, (__v16qi)__B, (__v16qi)__C);
312 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
313 _mm_perm_ps(__m128 __A, __m128 __B, __m128i __C)
315 return (__m128) __builtin_ia32_permps ((__m128)__A, (__m128)__B, (__v16qi)__C);
318 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
319 _mm_perm_pd(__m128d __A, __m128d __B, __m128i __C)
321 return (__m128d) __builtin_ia32_permpd ((__m128d)__A, (__m128d)__B, (__v16qi)__C);
324 /* Packed Integer Rotates and Shifts */
326 /* Rotates - Non-Immediate form */
327 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
328 _mm_rot_epi8(__m128i __A, __m128i __B)
330 return (__m128i) __builtin_ia32_protb ((__v16qi)__A, (__v16qi)__B);
333 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
334 _mm_rot_epi16(__m128i __A, __m128i __B)
336 return (__m128i) __builtin_ia32_protw ((__v8hi)__A, (__v8hi)__B);
339 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
340 _mm_rot_epi32(__m128i __A, __m128i __B)
342 return (__m128i) __builtin_ia32_protd ((__v4si)__A, (__v4si)__B);
345 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
346 _mm_rot_epi64(__m128i __A, __m128i __B)
348 return (__m128i) __builtin_ia32_protq ((__v2di)__A, (__v2di)__B);
352 /* Rotates - Immediate form */
353 #ifdef __OPTIMIZE__
354 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
355 _mm_roti_epi8(__m128i __A, const int __B)
357 return (__m128i) __builtin_ia32_protbi ((__v16qi)__A, __B);
360 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
361 _mm_roti_epi16(__m128i __A, const int __B)
363 return (__m128i) __builtin_ia32_protwi ((__v8hi)__A, __B);
366 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
367 _mm_roti_epi32(__m128i __A, const int __B)
369 return (__m128i) __builtin_ia32_protdi ((__v4si)__A, __B);
372 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
373 _mm_roti_epi64(__m128i __A, const int __B)
375 return (__m128i) __builtin_ia32_protqi ((__v2di)__A, __B);
377 #else
378 #define _mm_roti_epi8(A, N) \
379 ((__m128i) __builtin_ia32_protbi ((__v16qi)(__m128i)(A), (int)(N)))
380 #define _mm_roti_epi16(A, N) \
381 ((__m128i) __builtin_ia32_protwi ((__v8hi)(__m128i)(A), (int)(N)))
382 #define _mm_roti_epi32(A, N) \
383 ((__m128i) __builtin_ia32_protdi ((__v4si)(__m128i)(A), (int)(N)))
384 #define _mm_roti_epi64(A, N) \
385 ((__m128i) __builtin_ia32_protqi ((__v2di)(__m128i)(A), (int)(N)))
386 #endif
388 /* pshl */
390 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
391 _mm_shl_epi8(__m128i __A, __m128i __B)
393 return (__m128i) __builtin_ia32_pshlb ((__v16qi)__A, (__v16qi)__B);
396 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
397 _mm_shl_epi16(__m128i __A, __m128i __B)
399 return (__m128i) __builtin_ia32_pshlw ((__v8hi)__A, (__v8hi)__B);
402 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
403 _mm_shl_epi32(__m128i __A, __m128i __B)
405 return (__m128i) __builtin_ia32_pshld ((__v4si)__A, (__v4si)__B);
408 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
409 _mm_shl_epi64(__m128i __A, __m128i __B)
411 return (__m128i) __builtin_ia32_pshlq ((__v2di)__A, (__v2di)__B);
414 /* psha */
415 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
416 _mm_sha_epi8(__m128i __A, __m128i __B)
418 return (__m128i) __builtin_ia32_pshab ((__v16qi)__A, (__v16qi)__B);
421 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
422 _mm_sha_epi16(__m128i __A, __m128i __B)
424 return (__m128i) __builtin_ia32_pshaw ((__v8hi)__A, (__v8hi)__B);
427 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
428 _mm_sha_epi32(__m128i __A, __m128i __B)
430 return (__m128i) __builtin_ia32_pshad ((__v4si)__A, (__v4si)__B);
433 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
434 _mm_sha_epi64(__m128i __A, __m128i __B)
436 return (__m128i) __builtin_ia32_pshaq ((__v2di)__A, (__v2di)__B);
439 /* Compare and Predicate Generation */
441 /* com (floating point, packed single) */
442 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
443 _mm_comeq_ps(__m128 __A, __m128 __B)
445 return (__m128) __builtin_ia32_comeqps ((__v4sf)__A, (__v4sf)__B);
448 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
449 _mm_comlt_ps(__m128 __A, __m128 __B)
451 return (__m128) __builtin_ia32_comltps ((__v4sf)__A, (__v4sf)__B);
454 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
455 _mm_comle_ps(__m128 __A, __m128 __B)
457 return (__m128) __builtin_ia32_comleps ((__v4sf)__A, (__v4sf)__B);
460 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
461 _mm_comunord_ps(__m128 __A, __m128 __B)
463 return (__m128) __builtin_ia32_comunordps ((__v4sf)__A, (__v4sf)__B);
466 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
467 _mm_comneq_ps(__m128 __A, __m128 __B)
469 return (__m128) __builtin_ia32_comuneqps ((__v4sf)__A, (__v4sf)__B);
472 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
473 _mm_comnlt_ps(__m128 __A, __m128 __B)
475 return (__m128) __builtin_ia32_comunltps ((__v4sf)__A, (__v4sf)__B);
478 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
479 _mm_comnle_ps(__m128 __A, __m128 __B)
481 return (__m128) __builtin_ia32_comunleps ((__v4sf)__A, (__v4sf)__B);
485 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
486 _mm_comord_ps(__m128 __A, __m128 __B)
488 return (__m128) __builtin_ia32_comordps ((__v4sf)__A, (__v4sf)__B);
492 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
493 _mm_comueq_ps(__m128 __A, __m128 __B)
495 return (__m128) __builtin_ia32_comueqps ((__v4sf)__A, (__v4sf)__B);
498 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
499 _mm_comnge_ps(__m128 __A, __m128 __B)
501 return (__m128) __builtin_ia32_comungeps ((__v4sf)__A, (__v4sf)__B);
504 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
505 _mm_comngt_ps(__m128 __A, __m128 __B)
507 return (__m128) __builtin_ia32_comungtps ((__v4sf)__A, (__v4sf)__B);
510 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
511 _mm_comfalse_ps(__m128 __A, __m128 __B)
513 return (__m128) __builtin_ia32_comfalseps ((__v4sf)__A, (__v4sf)__B);
516 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
517 _mm_comoneq_ps(__m128 __A, __m128 __B)
519 return (__m128) __builtin_ia32_comneqps ((__v4sf)__A, (__v4sf)__B);
522 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
523 _mm_comge_ps(__m128 __A, __m128 __B)
525 return (__m128) __builtin_ia32_comgeps ((__v4sf)__A, (__v4sf)__B);
528 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
529 _mm_comgt_ps(__m128 __A, __m128 __B)
531 return (__m128) __builtin_ia32_comgtps ((__v4sf)__A, (__v4sf)__B);
534 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
535 _mm_comtrue_ps(__m128 __A, __m128 __B)
537 return (__m128) __builtin_ia32_comtrueps ((__v4sf)__A, (__v4sf)__B);
540 /* com (floating point, packed double) */
542 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
543 _mm_comeq_pd(__m128d __A, __m128d __B)
545 return (__m128d) __builtin_ia32_comeqpd ((__v2df)__A, (__v2df)__B);
548 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
549 _mm_comlt_pd(__m128d __A, __m128d __B)
551 return (__m128d) __builtin_ia32_comltpd ((__v2df)__A, (__v2df)__B);
554 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
555 _mm_comle_pd(__m128d __A, __m128d __B)
557 return (__m128d) __builtin_ia32_comlepd ((__v2df)__A, (__v2df)__B);
560 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
561 _mm_comunord_pd(__m128d __A, __m128d __B)
563 return (__m128d) __builtin_ia32_comunordpd ((__v2df)__A, (__v2df)__B);
566 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
567 _mm_comneq_pd(__m128d __A, __m128d __B)
569 return (__m128d) __builtin_ia32_comuneqpd ((__v2df)__A, (__v2df)__B);
572 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
573 _mm_comnlt_pd(__m128d __A, __m128d __B)
575 return (__m128d) __builtin_ia32_comunltpd ((__v2df)__A, (__v2df)__B);
578 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
579 _mm_comnle_pd(__m128d __A, __m128d __B)
581 return (__m128d) __builtin_ia32_comunlepd ((__v2df)__A, (__v2df)__B);
585 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
586 _mm_comord_pd(__m128d __A, __m128d __B)
588 return (__m128d) __builtin_ia32_comordpd ((__v2df)__A, (__v2df)__B);
591 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
592 _mm_comueq_pd(__m128d __A, __m128d __B)
594 return (__m128d) __builtin_ia32_comueqpd ((__v2df)__A, (__v2df)__B);
597 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
598 _mm_comnge_pd(__m128d __A, __m128d __B)
600 return (__m128d) __builtin_ia32_comungepd ((__v2df)__A, (__v2df)__B);
603 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
604 _mm_comngt_pd(__m128d __A, __m128d __B)
606 return (__m128d) __builtin_ia32_comungtpd ((__v2df)__A, (__v2df)__B);
609 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
610 _mm_comfalse_pd(__m128d __A, __m128d __B)
612 return (__m128d) __builtin_ia32_comfalsepd ((__v2df)__A, (__v2df)__B);
615 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
616 _mm_comoneq_pd(__m128d __A, __m128d __B)
618 return (__m128d) __builtin_ia32_comneqpd ((__v2df)__A, (__v2df)__B);
621 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
622 _mm_comge_pd(__m128d __A, __m128d __B)
624 return (__m128d) __builtin_ia32_comgepd ((__v2df)__A, (__v2df)__B);
627 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
628 _mm_comgt_pd(__m128d __A, __m128d __B)
630 return (__m128d) __builtin_ia32_comgtpd ((__v2df)__A, (__v2df)__B);
633 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
634 _mm_comtrue_pd(__m128d __A, __m128d __B)
636 return (__m128d) __builtin_ia32_comtruepd ((__v2df)__A, (__v2df)__B);
639 /* com (floating point, scalar single) */
640 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
641 _mm_comeq_ss(__m128 __A, __m128 __B)
643 return (__m128) __builtin_ia32_comeqss ((__v4sf)__A, (__v4sf)__B);
646 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
647 _mm_comlt_ss(__m128 __A, __m128 __B)
649 return (__m128) __builtin_ia32_comltss ((__v4sf)__A, (__v4sf)__B);
652 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
653 _mm_comle_ss(__m128 __A, __m128 __B)
655 return (__m128) __builtin_ia32_comless ((__v4sf)__A, (__v4sf)__B);
658 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
659 _mm_comunord_ss(__m128 __A, __m128 __B)
661 return (__m128) __builtin_ia32_comunordss ((__v4sf)__A, (__v4sf)__B);
664 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
665 _mm_comneq_ss(__m128 __A, __m128 __B)
667 return (__m128) __builtin_ia32_comuneqss ((__v4sf)__A, (__v4sf)__B);
670 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
671 _mm_comnlt_ss(__m128 __A, __m128 __B)
673 return (__m128) __builtin_ia32_comunltss ((__v4sf)__A, (__v4sf)__B);
676 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
677 _mm_comnle_ss(__m128 __A, __m128 __B)
679 return (__m128) __builtin_ia32_comunless ((__v4sf)__A, (__v4sf)__B);
683 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
684 _mm_comord_ss(__m128 __A, __m128 __B)
686 return (__m128) __builtin_ia32_comordss ((__v4sf)__A, (__v4sf)__B);
689 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
690 _mm_comueq_ss(__m128 __A, __m128 __B)
692 return (__m128) __builtin_ia32_comueqss ((__v4sf)__A, (__v4sf)__B);
695 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
696 _mm_comnge_ss(__m128 __A, __m128 __B)
698 return (__m128) __builtin_ia32_comungess ((__v4sf)__A, (__v4sf)__B);
701 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
702 _mm_comngt_ss(__m128 __A, __m128 __B)
704 return (__m128) __builtin_ia32_comungtss ((__v4sf)__A, (__v4sf)__B);
707 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
708 _mm_comfalse_ss(__m128 __A, __m128 __B)
710 return (__m128) __builtin_ia32_comfalsess ((__v4sf)__A, (__v4sf)__B);
713 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
714 _mm_comoneq_ss(__m128 __A, __m128 __B)
716 return (__m128) __builtin_ia32_comneqss ((__v4sf)__A, (__v4sf)__B);
719 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
720 _mm_comge_ss(__m128 __A, __m128 __B)
722 return (__m128) __builtin_ia32_comgess ((__v4sf)__A, (__v4sf)__B);
725 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
726 _mm_comgt_ss(__m128 __A, __m128 __B)
728 return (__m128) __builtin_ia32_comgtss ((__v4sf)__A, (__v4sf)__B);
731 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
732 _mm_comtrue_ss(__m128 __A, __m128 __B)
734 return (__m128) __builtin_ia32_comtruess ((__v4sf)__A, (__v4sf)__B);
737 /* com (floating point, scalar double) */
739 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
740 _mm_comeq_sd(__m128d __A, __m128d __B)
742 return (__m128d) __builtin_ia32_comeqsd ((__v2df)__A, (__v2df)__B);
745 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
746 _mm_comlt_sd(__m128d __A, __m128d __B)
748 return (__m128d) __builtin_ia32_comltsd ((__v2df)__A, (__v2df)__B);
751 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
752 _mm_comle_sd(__m128d __A, __m128d __B)
754 return (__m128d) __builtin_ia32_comlesd ((__v2df)__A, (__v2df)__B);
757 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
758 _mm_comunord_sd(__m128d __A, __m128d __B)
760 return (__m128d) __builtin_ia32_comunordsd ((__v2df)__A, (__v2df)__B);
763 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
764 _mm_comneq_sd(__m128d __A, __m128d __B)
766 return (__m128d) __builtin_ia32_comuneqsd ((__v2df)__A, (__v2df)__B);
769 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
770 _mm_comnlt_sd(__m128d __A, __m128d __B)
772 return (__m128d) __builtin_ia32_comunltsd ((__v2df)__A, (__v2df)__B);
775 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
776 _mm_comnle_sd(__m128d __A, __m128d __B)
778 return (__m128d) __builtin_ia32_comunlesd ((__v2df)__A, (__v2df)__B);
782 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
783 _mm_comord_sd(__m128d __A, __m128d __B)
785 return (__m128d) __builtin_ia32_comordsd ((__v2df)__A, (__v2df)__B);
788 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
789 _mm_comueq_sd(__m128d __A, __m128d __B)
791 return (__m128d) __builtin_ia32_comueqsd ((__v2df)__A, (__v2df)__B);
794 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
795 _mm_comnge_sd(__m128d __A, __m128d __B)
797 return (__m128d) __builtin_ia32_comungesd ((__v2df)__A, (__v2df)__B);
800 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
801 _mm_comngt_sd(__m128d __A, __m128d __B)
803 return (__m128d) __builtin_ia32_comungtsd ((__v2df)__A, (__v2df)__B);
806 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
807 _mm_comfalse_sd(__m128d __A, __m128d __B)
809 return (__m128d) __builtin_ia32_comfalsesd ((__v2df)__A, (__v2df)__B);
812 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
813 _mm_comoneq_sd(__m128d __A, __m128d __B)
815 return (__m128d) __builtin_ia32_comneqsd ((__v2df)__A, (__v2df)__B);
818 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
819 _mm_comge_sd(__m128d __A, __m128d __B)
821 return (__m128d) __builtin_ia32_comgesd ((__v2df)__A, (__v2df)__B);
824 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
825 _mm_comgt_sd(__m128d __A, __m128d __B)
827 return (__m128d) __builtin_ia32_comgtsd ((__v2df)__A, (__v2df)__B);
830 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
831 _mm_comtrue_sd(__m128d __A, __m128d __B)
833 return (__m128d) __builtin_ia32_comtruesd ((__v2df)__A, (__v2df)__B);
837 /*pcom (integer, unsinged bytes) */
839 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
840 _mm_comlt_epu8(__m128i __A, __m128i __B)
842 return (__m128i) __builtin_ia32_pcomltub ((__v16qi)__A, (__v16qi)__B);
845 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
846 _mm_comle_epu8(__m128i __A, __m128i __B)
848 return (__m128i) __builtin_ia32_pcomleub ((__v16qi)__A, (__v16qi)__B);
851 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
852 _mm_comgt_epu8(__m128i __A, __m128i __B)
854 return (__m128i) __builtin_ia32_pcomgtub ((__v16qi)__A, (__v16qi)__B);
857 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
858 _mm_comge_epu8(__m128i __A, __m128i __B)
860 return (__m128i) __builtin_ia32_pcomgeub ((__v16qi)__A, (__v16qi)__B);
863 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
864 _mm_comeq_epu8(__m128i __A, __m128i __B)
866 return (__m128i) __builtin_ia32_pcomequb ((__v16qi)__A, (__v16qi)__B);
869 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
870 _mm_comneq_epu8(__m128i __A, __m128i __B)
872 return (__m128i) __builtin_ia32_pcomnequb ((__v16qi)__A, (__v16qi)__B);
875 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
876 _mm_comfalse_epu8(__m128i __A, __m128i __B)
878 return (__m128i) __builtin_ia32_pcomfalseub ((__v16qi)__A, (__v16qi)__B);
881 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
882 _mm_comtrue_epu8(__m128i __A, __m128i __B)
884 return (__m128i) __builtin_ia32_pcomtrueub ((__v16qi)__A, (__v16qi)__B);
887 /*pcom (integer, unsinged words) */
889 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
890 _mm_comlt_epu16(__m128i __A, __m128i __B)
892 return (__m128i) __builtin_ia32_pcomltuw ((__v8hi)__A, (__v8hi)__B);
895 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
896 _mm_comle_epu16(__m128i __A, __m128i __B)
898 return (__m128i) __builtin_ia32_pcomleuw ((__v8hi)__A, (__v8hi)__B);
901 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
902 _mm_comgt_epu16(__m128i __A, __m128i __B)
904 return (__m128i) __builtin_ia32_pcomgtuw ((__v8hi)__A, (__v8hi)__B);
907 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
908 _mm_comge_epu16(__m128i __A, __m128i __B)
910 return (__m128i) __builtin_ia32_pcomgeuw ((__v8hi)__A, (__v8hi)__B);
913 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
914 _mm_comeq_epu16(__m128i __A, __m128i __B)
916 return (__m128i) __builtin_ia32_pcomequw ((__v8hi)__A, (__v8hi)__B);
919 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
920 _mm_comneq_epu16(__m128i __A, __m128i __B)
922 return (__m128i) __builtin_ia32_pcomnequw ((__v8hi)__A, (__v8hi)__B);
925 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
926 _mm_comfalse_epu16(__m128i __A, __m128i __B)
928 return (__m128i) __builtin_ia32_pcomfalseuw ((__v8hi)__A, (__v8hi)__B);
931 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
932 _mm_comtrue_epu16(__m128i __A, __m128i __B)
934 return (__m128i) __builtin_ia32_pcomtrueuw ((__v8hi)__A, (__v8hi)__B);
937 /*pcom (integer, unsinged double words) */
939 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
940 _mm_comlt_epu32(__m128i __A, __m128i __B)
942 return (__m128i) __builtin_ia32_pcomltud ((__v4si)__A, (__v4si)__B);
945 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
946 _mm_comle_epu32(__m128i __A, __m128i __B)
948 return (__m128i) __builtin_ia32_pcomleud ((__v4si)__A, (__v4si)__B);
951 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
952 _mm_comgt_epu32(__m128i __A, __m128i __B)
954 return (__m128i) __builtin_ia32_pcomgtud ((__v4si)__A, (__v4si)__B);
957 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
958 _mm_comge_epu32(__m128i __A, __m128i __B)
960 return (__m128i) __builtin_ia32_pcomgeud ((__v4si)__A, (__v4si)__B);
963 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
964 _mm_comeq_epu32(__m128i __A, __m128i __B)
966 return (__m128i) __builtin_ia32_pcomequd ((__v4si)__A, (__v4si)__B);
969 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
970 _mm_comneq_epu32(__m128i __A, __m128i __B)
972 return (__m128i) __builtin_ia32_pcomnequd ((__v4si)__A, (__v4si)__B);
975 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
976 _mm_comfalse_epu32(__m128i __A, __m128i __B)
978 return (__m128i) __builtin_ia32_pcomfalseud ((__v4si)__A, (__v4si)__B);
981 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
982 _mm_comtrue_epu32(__m128i __A, __m128i __B)
984 return (__m128i) __builtin_ia32_pcomtrueud ((__v4si)__A, (__v4si)__B);
987 /*pcom (integer, unsinged quad words) */
989 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
990 _mm_comlt_epu64(__m128i __A, __m128i __B)
992 return (__m128i) __builtin_ia32_pcomltuq ((__v2di)__A, (__v2di)__B);
995 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
996 _mm_comle_epu64(__m128i __A, __m128i __B)
998 return (__m128i) __builtin_ia32_pcomleuq ((__v2di)__A, (__v2di)__B);
1001 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1002 _mm_comgt_epu64(__m128i __A, __m128i __B)
1004 return (__m128i) __builtin_ia32_pcomgtuq ((__v2di)__A, (__v2di)__B);
1007 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1008 _mm_comge_epu64(__m128i __A, __m128i __B)
1010 return (__m128i) __builtin_ia32_pcomgeuq ((__v2di)__A, (__v2di)__B);
1013 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1014 _mm_comeq_epu64(__m128i __A, __m128i __B)
1016 return (__m128i) __builtin_ia32_pcomequq ((__v2di)__A, (__v2di)__B);
1019 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1020 _mm_comneq_epu64(__m128i __A, __m128i __B)
1022 return (__m128i) __builtin_ia32_pcomnequq ((__v2di)__A, (__v2di)__B);
1025 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1026 _mm_comfalse_epu64(__m128i __A, __m128i __B)
1028 return (__m128i) __builtin_ia32_pcomfalseuq ((__v2di)__A, (__v2di)__B);
1031 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1032 _mm_comtrue_epu64(__m128i __A, __m128i __B)
1034 return (__m128i) __builtin_ia32_pcomtrueuq ((__v2di)__A, (__v2di)__B);
1037 /*pcom (integer, signed bytes) */
1039 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1040 _mm_comlt_epi8(__m128i __A, __m128i __B)
1042 return (__m128i) __builtin_ia32_pcomltb ((__v16qi)__A, (__v16qi)__B);
1045 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1046 _mm_comle_epi8(__m128i __A, __m128i __B)
1048 return (__m128i) __builtin_ia32_pcomleb ((__v16qi)__A, (__v16qi)__B);
1051 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1052 _mm_comgt_epi8(__m128i __A, __m128i __B)
1054 return (__m128i) __builtin_ia32_pcomgtb ((__v16qi)__A, (__v16qi)__B);
1057 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1058 _mm_comge_epi8(__m128i __A, __m128i __B)
1060 return (__m128i) __builtin_ia32_pcomgeb ((__v16qi)__A, (__v16qi)__B);
1063 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1064 _mm_comeq_epi8(__m128i __A, __m128i __B)
1066 return (__m128i) __builtin_ia32_pcomeqb ((__v16qi)__A, (__v16qi)__B);
1069 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1070 _mm_comneq_epi8(__m128i __A, __m128i __B)
1072 return (__m128i) __builtin_ia32_pcomneqb ((__v16qi)__A, (__v16qi)__B);
1075 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1076 _mm_comfalse_epi8(__m128i __A, __m128i __B)
1078 return (__m128i) __builtin_ia32_pcomfalseb ((__v16qi)__A, (__v16qi)__B);
1081 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1082 _mm_comtrue_epi8(__m128i __A, __m128i __B)
1084 return (__m128i) __builtin_ia32_pcomtrueb ((__v16qi)__A, (__v16qi)__B);
1087 /*pcom (integer, signed words) */
1089 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1090 _mm_comlt_epi16(__m128i __A, __m128i __B)
1092 return (__m128i) __builtin_ia32_pcomltw ((__v8hi)__A, (__v8hi)__B);
1095 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1096 _mm_comle_epi16(__m128i __A, __m128i __B)
1098 return (__m128i) __builtin_ia32_pcomlew ((__v8hi)__A, (__v8hi)__B);
1101 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1102 _mm_comgt_epi16(__m128i __A, __m128i __B)
1104 return (__m128i) __builtin_ia32_pcomgtw ((__v8hi)__A, (__v8hi)__B);
1107 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1108 _mm_comge_epi16(__m128i __A, __m128i __B)
1110 return (__m128i) __builtin_ia32_pcomgew ((__v8hi)__A, (__v8hi)__B);
1113 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1114 _mm_comeq_epi16(__m128i __A, __m128i __B)
1116 return (__m128i) __builtin_ia32_pcomeqw ((__v8hi)__A, (__v8hi)__B);
1119 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1120 _mm_comneq_epi16(__m128i __A, __m128i __B)
1122 return (__m128i) __builtin_ia32_pcomneqw ((__v8hi)__A, (__v8hi)__B);
1125 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1126 _mm_comfalse_epi16(__m128i __A, __m128i __B)
1128 return (__m128i) __builtin_ia32_pcomfalsew ((__v8hi)__A, (__v8hi)__B);
1131 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1132 _mm_comtrue_epi16(__m128i __A, __m128i __B)
1134 return (__m128i) __builtin_ia32_pcomtruew ((__v8hi)__A, (__v8hi)__B);
1137 /*pcom (integer, signed double words) */
1139 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1140 _mm_comlt_epi32(__m128i __A, __m128i __B)
1142 return (__m128i) __builtin_ia32_pcomltd ((__v4si)__A, (__v4si)__B);
1145 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1146 _mm_comle_epi32(__m128i __A, __m128i __B)
1148 return (__m128i) __builtin_ia32_pcomled ((__v4si)__A, (__v4si)__B);
1151 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1152 _mm_comgt_epi32(__m128i __A, __m128i __B)
1154 return (__m128i) __builtin_ia32_pcomgtd ((__v4si)__A, (__v4si)__B);
1157 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1158 _mm_comge_epi32(__m128i __A, __m128i __B)
1160 return (__m128i) __builtin_ia32_pcomged ((__v4si)__A, (__v4si)__B);
1163 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1164 _mm_comeq_epi32(__m128i __A, __m128i __B)
1166 return (__m128i) __builtin_ia32_pcomeqd ((__v4si)__A, (__v4si)__B);
1169 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1170 _mm_comneq_epi32(__m128i __A, __m128i __B)
1172 return (__m128i) __builtin_ia32_pcomneqd ((__v4si)__A, (__v4si)__B);
1175 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1176 _mm_comfalse_epi32(__m128i __A, __m128i __B)
1178 return (__m128i) __builtin_ia32_pcomfalsed ((__v4si)__A, (__v4si)__B);
1181 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1182 _mm_comtrue_epi32(__m128i __A, __m128i __B)
1184 return (__m128i) __builtin_ia32_pcomtrued ((__v4si)__A, (__v4si)__B);
1187 /*pcom (integer, signed quad words) */
1189 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1190 _mm_comlt_epi64(__m128i __A, __m128i __B)
1192 return (__m128i) __builtin_ia32_pcomltq ((__v2di)__A, (__v2di)__B);
1195 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1196 _mm_comle_epi64(__m128i __A, __m128i __B)
1198 return (__m128i) __builtin_ia32_pcomleq ((__v2di)__A, (__v2di)__B);
1201 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1202 _mm_comgt_epi64(__m128i __A, __m128i __B)
1204 return (__m128i) __builtin_ia32_pcomgtq ((__v2di)__A, (__v2di)__B);
1207 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1208 _mm_comge_epi64(__m128i __A, __m128i __B)
1210 return (__m128i) __builtin_ia32_pcomgeq ((__v2di)__A, (__v2di)__B);
1213 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1214 _mm_comeq_epi64(__m128i __A, __m128i __B)
1216 return (__m128i) __builtin_ia32_pcomeqq ((__v2di)__A, (__v2di)__B);
1219 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1220 _mm_comneq_epi64(__m128i __A, __m128i __B)
1222 return (__m128i) __builtin_ia32_pcomneqq ((__v2di)__A, (__v2di)__B);
1225 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1226 _mm_comfalse_epi64(__m128i __A, __m128i __B)
1228 return (__m128i) __builtin_ia32_pcomfalseq ((__v2di)__A, (__v2di)__B);
1231 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1232 _mm_comtrue_epi64(__m128i __A, __m128i __B)
1234 return (__m128i) __builtin_ia32_pcomtrueq ((__v2di)__A, (__v2di)__B);
1237 /* FRCZ */
1238 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1239 _mm_frcz_ps (__m128 __A)
1241 return (__m128) __builtin_ia32_frczps ((__v4sf)__A);
1244 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1245 _mm_frcz_pd (__m128d __A)
1247 return (__m128d) __builtin_ia32_frczpd ((__v2df)__A);
1250 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1251 _mm_frcz_ss (__m128 __A, __m128 __B)
1253 return (__m128) __builtin_ia32_frczss ((__v4sf)__A, (__v4sf)__B);
1256 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1257 _mm_frcz_sd (__m128d __A, __m128d __B)
1259 return (__m128d) __builtin_ia32_frczsd ((__v2df)__A, (__v2df)__B);
1262 #endif /* __SSE5__ */
1264 #endif /* _BMMINTRIN_H_INCLUDED */