Merge -r 127928:132243 from trunk
[official-gcc.git] / gcc / config / i386 / bmmintrin.h
blob4254d0fc17c14c71f33bd2e4ac4497b62daadcc8
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 static __inline __m128 __attribute__((__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 static __inline __m128d __attribute__((__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 static __inline __m128 __attribute__((__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 static __inline __m128d __attribute__((__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 static __inline __m128 __attribute__((__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 static __inline __m128d __attribute__((__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 static __inline __m128 __attribute__((__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 static __inline __m128d __attribute__((__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 static __inline __m128 __attribute__((__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 static __inline __m128d __attribute__((__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 static __inline __m128 __attribute__((__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 static __inline __m128d __attribute__((__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 static __inline __m128 __attribute__((__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 static __inline __m128d __attribute__((__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 static __inline __m128 __attribute__((__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 static __inline __m128d __attribute__((__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 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__always_inline__, __artificial__))
210 _mm_haddw_epi8(__m128i __A)
212 return (__m128i) __builtin_ia32_phaddbw ((__v16qi)__A);
215 static __inline __m128i __attribute__((__always_inline__, __artificial__))
216 _mm_haddd_epi8(__m128i __A)
218 return (__m128i) __builtin_ia32_phaddbd ((__v16qi)__A);
221 static __inline __m128i __attribute__((__always_inline__, __artificial__))
222 _mm_haddq_epi8(__m128i __A)
224 return (__m128i) __builtin_ia32_phaddbq ((__v16qi)__A);
227 static __inline __m128i __attribute__((__always_inline__, __artificial__))
228 _mm_haddd_epi16(__m128i __A)
230 return (__m128i) __builtin_ia32_phaddwd ((__v8hi)__A);
233 static __inline __m128i __attribute__((__always_inline__, __artificial__))
234 _mm_haddq_epi16(__m128i __A)
236 return (__m128i) __builtin_ia32_phaddwq ((__v8hi)__A);
239 static __inline __m128i __attribute__((__always_inline__, __artificial__))
240 _mm_haddq_epi32(__m128i __A)
242 return (__m128i) __builtin_ia32_phadddq ((__v4si)__A);
245 static __inline __m128i __attribute__((__always_inline__, __artificial__))
246 _mm_haddw_epu8(__m128i __A)
248 return (__m128i) __builtin_ia32_phaddubw ((__v16qi)__A);
251 static __inline __m128i __attribute__((__always_inline__, __artificial__))
252 _mm_haddd_epu8(__m128i __A)
254 return (__m128i) __builtin_ia32_phaddubd ((__v16qi)__A);
257 static __inline __m128i __attribute__((__always_inline__, __artificial__))
258 _mm_haddq_epu8(__m128i __A)
260 return (__m128i) __builtin_ia32_phaddubq ((__v16qi)__A);
263 static __inline __m128i __attribute__((__always_inline__, __artificial__))
264 _mm_haddd_epu16(__m128i __A)
266 return (__m128i) __builtin_ia32_phadduwd ((__v8hi)__A);
269 static __inline __m128i __attribute__((__always_inline__, __artificial__))
270 _mm_haddq_epu16(__m128i __A)
272 return (__m128i) __builtin_ia32_phadduwq ((__v8hi)__A);
275 static __inline __m128i __attribute__((__always_inline__, __artificial__))
276 _mm_haddq_epu32(__m128i __A)
278 return (__m128i) __builtin_ia32_phaddudq ((__v4si)__A);
281 static __inline __m128i __attribute__((__always_inline__, __artificial__))
282 _mm_hsubw_epi8(__m128i __A)
284 return (__m128i) __builtin_ia32_phsubbw ((__v16qi)__A);
287 static __inline __m128i __attribute__((__always_inline__, __artificial__))
288 _mm_hsubd_epi16(__m128i __A)
290 return (__m128i) __builtin_ia32_phsubwd ((__v8hi)__A);
293 static __inline __m128i __attribute__((__always_inline__, __artificial__))
294 _mm_hsubq_epi32(__m128i __A)
296 return (__m128i) __builtin_ia32_phsubdq ((__v4si)__A);
299 /* Vector conditional move and permute */
300 static __inline __m128i __attribute__((__always_inline__, __artificial__))
301 _mm_cmov_si128(__m128i __A, __m128i __B, __m128i __C)
303 return (__m128i) __builtin_ia32_pcmov (__A, __B, __C);
306 static __inline __m128i __attribute__((__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 static __inline __m128 __attribute__((__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 static __inline __m128d __attribute__((__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 static __inline __m128i __attribute__((__always_inline__, __artificial__))
328 _mm_rot_epi8(__m128i __A, __m128i __B)
330 return (__m128i) __builtin_ia32_protb ((__v16qi)__A, (__v16qi)__B);
333 static __inline __m128i __attribute__((__always_inline__, __artificial__))
334 _mm_rot_epi16(__m128i __A, __m128i __B)
336 return (__m128i) __builtin_ia32_protw ((__v8hi)__A, (__v8hi)__B);
339 static __inline __m128i __attribute__((__always_inline__, __artificial__))
340 _mm_rot_epi32(__m128i __A, __m128i __B)
342 return (__m128i) __builtin_ia32_protd ((__v4si)__A, (__v4si)__B);
345 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__always_inline__, __artificial__))
355 _mm_roti_epi8(__m128i __A, const int __B)
357 return (__m128i) __builtin_ia32_protbi ((__v16qi)__A, __B);
360 static __inline __m128i __attribute__((__always_inline__, __artificial__))
361 _mm_roti_epi16(__m128i __A, const int __B)
363 return (__m128i) __builtin_ia32_protwi ((__v8hi)__A, __B);
366 static __inline __m128i __attribute__((__always_inline__, __artificial__))
367 _mm_roti_epi32(__m128i __A, const int __B)
369 return (__m128i) __builtin_ia32_protdi ((__v4si)__A, __B);
372 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__always_inline__, __artificial__))
391 _mm_shl_epi8(__m128i __A, __m128i __B)
393 return (__m128i) __builtin_ia32_pshlb ((__v16qi)__A, (__v16qi)__B);
396 static __inline __m128i __attribute__((__always_inline__, __artificial__))
397 _mm_shl_epi16(__m128i __A, __m128i __B)
399 return (__m128i) __builtin_ia32_pshlw ((__v8hi)__A, (__v8hi)__B);
402 static __inline __m128i __attribute__((__always_inline__, __artificial__))
403 _mm_shl_epi32(__m128i __A, __m128i __B)
405 return (__m128i) __builtin_ia32_pshld ((__v4si)__A, (__v4si)__B);
408 static __inline __m128i __attribute__((__always_inline__, __artificial__))
409 _mm_shl_epi64(__m128i __A, __m128i __B)
411 return (__m128i) __builtin_ia32_pshlq ((__v2di)__A, (__v2di)__B);
414 /* psha */
415 static __inline __m128i __attribute__((__always_inline__, __artificial__))
416 _mm_sha_epi8(__m128i __A, __m128i __B)
418 return (__m128i) __builtin_ia32_pshab ((__v16qi)__A, (__v16qi)__B);
421 static __inline __m128i __attribute__((__always_inline__, __artificial__))
422 _mm_sha_epi16(__m128i __A, __m128i __B)
424 return (__m128i) __builtin_ia32_pshaw ((__v8hi)__A, (__v8hi)__B);
427 static __inline __m128i __attribute__((__always_inline__, __artificial__))
428 _mm_sha_epi32(__m128i __A, __m128i __B)
430 return (__m128i) __builtin_ia32_pshad ((__v4si)__A, (__v4si)__B);
433 static __inline __m128i __attribute__((__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 static __inline __m128 __attribute__((__always_inline__, __artificial__))
443 _mm_comeq_ps(__m128 __A, __m128 __B)
445 return (__m128) __builtin_ia32_comeqps ((__v4sf)__A, (__v4sf)__B);
448 static __inline __m128 __attribute__((__always_inline__, __artificial__))
449 _mm_comlt_ps(__m128 __A, __m128 __B)
451 return (__m128) __builtin_ia32_comltps ((__v4sf)__A, (__v4sf)__B);
454 static __inline __m128 __attribute__((__always_inline__, __artificial__))
455 _mm_comle_ps(__m128 __A, __m128 __B)
457 return (__m128) __builtin_ia32_comleps ((__v4sf)__A, (__v4sf)__B);
460 static __inline __m128 __attribute__((__always_inline__, __artificial__))
461 _mm_comunord_ps(__m128 __A, __m128 __B)
463 return (__m128) __builtin_ia32_comunordps ((__v4sf)__A, (__v4sf)__B);
466 static __inline __m128 __attribute__((__always_inline__, __artificial__))
467 _mm_comneq_ps(__m128 __A, __m128 __B)
469 return (__m128) __builtin_ia32_comuneqps ((__v4sf)__A, (__v4sf)__B);
472 static __inline __m128 __attribute__((__always_inline__, __artificial__))
473 _mm_comnlt_ps(__m128 __A, __m128 __B)
475 return (__m128) __builtin_ia32_comunltps ((__v4sf)__A, (__v4sf)__B);
478 static __inline __m128 __attribute__((__always_inline__, __artificial__))
479 _mm_comnle_ps(__m128 __A, __m128 __B)
481 return (__m128) __builtin_ia32_comunleps ((__v4sf)__A, (__v4sf)__B);
485 static __inline __m128 __attribute__((__always_inline__, __artificial__))
486 _mm_comord_ps(__m128 __A, __m128 __B)
488 return (__m128) __builtin_ia32_comordps ((__v4sf)__A, (__v4sf)__B);
492 static __inline __m128 __attribute__((__always_inline__, __artificial__))
493 _mm_comueq_ps(__m128 __A, __m128 __B)
495 return (__m128) __builtin_ia32_comueqps ((__v4sf)__A, (__v4sf)__B);
498 static __inline __m128 __attribute__((__always_inline__, __artificial__))
499 _mm_comnge_ps(__m128 __A, __m128 __B)
501 return (__m128) __builtin_ia32_comungeps ((__v4sf)__A, (__v4sf)__B);
504 static __inline __m128 __attribute__((__always_inline__, __artificial__))
505 _mm_comngt_ps(__m128 __A, __m128 __B)
507 return (__m128) __builtin_ia32_comungtps ((__v4sf)__A, (__v4sf)__B);
510 static __inline __m128 __attribute__((__always_inline__, __artificial__))
511 _mm_comfalse_ps(__m128 __A, __m128 __B)
513 return (__m128) __builtin_ia32_comfalseps ((__v4sf)__A, (__v4sf)__B);
516 static __inline __m128 __attribute__((__always_inline__, __artificial__))
517 _mm_comoneq_ps(__m128 __A, __m128 __B)
519 return (__m128) __builtin_ia32_comneqps ((__v4sf)__A, (__v4sf)__B);
522 static __inline __m128 __attribute__((__always_inline__, __artificial__))
523 _mm_comge_ps(__m128 __A, __m128 __B)
525 return (__m128) __builtin_ia32_comgeps ((__v4sf)__A, (__v4sf)__B);
528 static __inline __m128 __attribute__((__always_inline__, __artificial__))
529 _mm_comgt_ps(__m128 __A, __m128 __B)
531 return (__m128) __builtin_ia32_comgtps ((__v4sf)__A, (__v4sf)__B);
534 static __inline __m128 __attribute__((__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 static __inline __m128d __attribute__((__always_inline__, __artificial__))
543 _mm_comeq_pd(__m128d __A, __m128d __B)
545 return (__m128d) __builtin_ia32_comeqpd ((__v2df)__A, (__v2df)__B);
548 static __inline __m128d __attribute__((__always_inline__, __artificial__))
549 _mm_comlt_pd(__m128d __A, __m128d __B)
551 return (__m128d) __builtin_ia32_comltpd ((__v2df)__A, (__v2df)__B);
554 static __inline __m128d __attribute__((__always_inline__, __artificial__))
555 _mm_comle_pd(__m128d __A, __m128d __B)
557 return (__m128d) __builtin_ia32_comlepd ((__v2df)__A, (__v2df)__B);
560 static __inline __m128d __attribute__((__always_inline__, __artificial__))
561 _mm_comunord_pd(__m128d __A, __m128d __B)
563 return (__m128d) __builtin_ia32_comunordpd ((__v2df)__A, (__v2df)__B);
566 static __inline __m128d __attribute__((__always_inline__, __artificial__))
567 _mm_comneq_pd(__m128d __A, __m128d __B)
569 return (__m128d) __builtin_ia32_comuneqpd ((__v2df)__A, (__v2df)__B);
572 static __inline __m128d __attribute__((__always_inline__, __artificial__))
573 _mm_comnlt_pd(__m128d __A, __m128d __B)
575 return (__m128d) __builtin_ia32_comunltpd ((__v2df)__A, (__v2df)__B);
578 static __inline __m128d __attribute__((__always_inline__, __artificial__))
579 _mm_comnle_pd(__m128d __A, __m128d __B)
581 return (__m128d) __builtin_ia32_comunlepd ((__v2df)__A, (__v2df)__B);
585 static __inline __m128d __attribute__((__always_inline__, __artificial__))
586 _mm_comord_pd(__m128d __A, __m128d __B)
588 return (__m128d) __builtin_ia32_comordpd ((__v2df)__A, (__v2df)__B);
591 static __inline __m128d __attribute__((__always_inline__, __artificial__))
592 _mm_comueq_pd(__m128d __A, __m128d __B)
594 return (__m128d) __builtin_ia32_comueqpd ((__v2df)__A, (__v2df)__B);
597 static __inline __m128d __attribute__((__always_inline__, __artificial__))
598 _mm_comnge_pd(__m128d __A, __m128d __B)
600 return (__m128d) __builtin_ia32_comungepd ((__v2df)__A, (__v2df)__B);
603 static __inline __m128d __attribute__((__always_inline__, __artificial__))
604 _mm_comngt_pd(__m128d __A, __m128d __B)
606 return (__m128d) __builtin_ia32_comungtpd ((__v2df)__A, (__v2df)__B);
609 static __inline __m128d __attribute__((__always_inline__, __artificial__))
610 _mm_comfalse_pd(__m128d __A, __m128d __B)
612 return (__m128d) __builtin_ia32_comfalsepd ((__v2df)__A, (__v2df)__B);
615 static __inline __m128d __attribute__((__always_inline__, __artificial__))
616 _mm_comoneq_pd(__m128d __A, __m128d __B)
618 return (__m128d) __builtin_ia32_comneqpd ((__v2df)__A, (__v2df)__B);
621 static __inline __m128d __attribute__((__always_inline__, __artificial__))
622 _mm_comge_pd(__m128d __A, __m128d __B)
624 return (__m128d) __builtin_ia32_comgepd ((__v2df)__A, (__v2df)__B);
627 static __inline __m128d __attribute__((__always_inline__, __artificial__))
628 _mm_comgt_pd(__m128d __A, __m128d __B)
630 return (__m128d) __builtin_ia32_comgtpd ((__v2df)__A, (__v2df)__B);
633 static __inline __m128d __attribute__((__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 static __inline __m128 __attribute__((__always_inline__, __artificial__))
641 _mm_comeq_ss(__m128 __A, __m128 __B)
643 return (__m128) __builtin_ia32_comeqss ((__v4sf)__A, (__v4sf)__B);
646 static __inline __m128 __attribute__((__always_inline__, __artificial__))
647 _mm_comlt_ss(__m128 __A, __m128 __B)
649 return (__m128) __builtin_ia32_comltss ((__v4sf)__A, (__v4sf)__B);
652 static __inline __m128 __attribute__((__always_inline__, __artificial__))
653 _mm_comle_ss(__m128 __A, __m128 __B)
655 return (__m128) __builtin_ia32_comless ((__v4sf)__A, (__v4sf)__B);
658 static __inline __m128 __attribute__((__always_inline__, __artificial__))
659 _mm_comunord_ss(__m128 __A, __m128 __B)
661 return (__m128) __builtin_ia32_comunordss ((__v4sf)__A, (__v4sf)__B);
664 static __inline __m128 __attribute__((__always_inline__, __artificial__))
665 _mm_comneq_ss(__m128 __A, __m128 __B)
667 return (__m128) __builtin_ia32_comuneqss ((__v4sf)__A, (__v4sf)__B);
670 static __inline __m128 __attribute__((__always_inline__, __artificial__))
671 _mm_comnlt_ss(__m128 __A, __m128 __B)
673 return (__m128) __builtin_ia32_comunltss ((__v4sf)__A, (__v4sf)__B);
676 static __inline __m128 __attribute__((__always_inline__, __artificial__))
677 _mm_comnle_ss(__m128 __A, __m128 __B)
679 return (__m128) __builtin_ia32_comunless ((__v4sf)__A, (__v4sf)__B);
683 static __inline __m128 __attribute__((__always_inline__, __artificial__))
684 _mm_comord_ss(__m128 __A, __m128 __B)
686 return (__m128) __builtin_ia32_comordss ((__v4sf)__A, (__v4sf)__B);
689 static __inline __m128 __attribute__((__always_inline__, __artificial__))
690 _mm_comueq_ss(__m128 __A, __m128 __B)
692 return (__m128) __builtin_ia32_comueqss ((__v4sf)__A, (__v4sf)__B);
695 static __inline __m128 __attribute__((__always_inline__, __artificial__))
696 _mm_comnge_ss(__m128 __A, __m128 __B)
698 return (__m128) __builtin_ia32_comungess ((__v4sf)__A, (__v4sf)__B);
701 static __inline __m128 __attribute__((__always_inline__, __artificial__))
702 _mm_comngt_ss(__m128 __A, __m128 __B)
704 return (__m128) __builtin_ia32_comungtss ((__v4sf)__A, (__v4sf)__B);
707 static __inline __m128 __attribute__((__always_inline__, __artificial__))
708 _mm_comfalse_ss(__m128 __A, __m128 __B)
710 return (__m128) __builtin_ia32_comfalsess ((__v4sf)__A, (__v4sf)__B);
713 static __inline __m128 __attribute__((__always_inline__, __artificial__))
714 _mm_comoneq_ss(__m128 __A, __m128 __B)
716 return (__m128) __builtin_ia32_comneqss ((__v4sf)__A, (__v4sf)__B);
719 static __inline __m128 __attribute__((__always_inline__, __artificial__))
720 _mm_comge_ss(__m128 __A, __m128 __B)
722 return (__m128) __builtin_ia32_comgess ((__v4sf)__A, (__v4sf)__B);
725 static __inline __m128 __attribute__((__always_inline__, __artificial__))
726 _mm_comgt_ss(__m128 __A, __m128 __B)
728 return (__m128) __builtin_ia32_comgtss ((__v4sf)__A, (__v4sf)__B);
731 static __inline __m128 __attribute__((__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 static __inline __m128d __attribute__((__always_inline__, __artificial__))
740 _mm_comeq_sd(__m128d __A, __m128d __B)
742 return (__m128d) __builtin_ia32_comeqsd ((__v2df)__A, (__v2df)__B);
745 static __inline __m128d __attribute__((__always_inline__, __artificial__))
746 _mm_comlt_sd(__m128d __A, __m128d __B)
748 return (__m128d) __builtin_ia32_comltsd ((__v2df)__A, (__v2df)__B);
751 static __inline __m128d __attribute__((__always_inline__, __artificial__))
752 _mm_comle_sd(__m128d __A, __m128d __B)
754 return (__m128d) __builtin_ia32_comlesd ((__v2df)__A, (__v2df)__B);
757 static __inline __m128d __attribute__((__always_inline__, __artificial__))
758 _mm_comunord_sd(__m128d __A, __m128d __B)
760 return (__m128d) __builtin_ia32_comunordsd ((__v2df)__A, (__v2df)__B);
763 static __inline __m128d __attribute__((__always_inline__, __artificial__))
764 _mm_comneq_sd(__m128d __A, __m128d __B)
766 return (__m128d) __builtin_ia32_comuneqsd ((__v2df)__A, (__v2df)__B);
769 static __inline __m128d __attribute__((__always_inline__, __artificial__))
770 _mm_comnlt_sd(__m128d __A, __m128d __B)
772 return (__m128d) __builtin_ia32_comunltsd ((__v2df)__A, (__v2df)__B);
775 static __inline __m128d __attribute__((__always_inline__, __artificial__))
776 _mm_comnle_sd(__m128d __A, __m128d __B)
778 return (__m128d) __builtin_ia32_comunlesd ((__v2df)__A, (__v2df)__B);
782 static __inline __m128d __attribute__((__always_inline__, __artificial__))
783 _mm_comord_sd(__m128d __A, __m128d __B)
785 return (__m128d) __builtin_ia32_comordsd ((__v2df)__A, (__v2df)__B);
788 static __inline __m128d __attribute__((__always_inline__, __artificial__))
789 _mm_comueq_sd(__m128d __A, __m128d __B)
791 return (__m128d) __builtin_ia32_comueqsd ((__v2df)__A, (__v2df)__B);
794 static __inline __m128d __attribute__((__always_inline__, __artificial__))
795 _mm_comnge_sd(__m128d __A, __m128d __B)
797 return (__m128d) __builtin_ia32_comungesd ((__v2df)__A, (__v2df)__B);
800 static __inline __m128d __attribute__((__always_inline__, __artificial__))
801 _mm_comngt_sd(__m128d __A, __m128d __B)
803 return (__m128d) __builtin_ia32_comungtsd ((__v2df)__A, (__v2df)__B);
806 static __inline __m128d __attribute__((__always_inline__, __artificial__))
807 _mm_comfalse_sd(__m128d __A, __m128d __B)
809 return (__m128d) __builtin_ia32_comfalsesd ((__v2df)__A, (__v2df)__B);
812 static __inline __m128d __attribute__((__always_inline__, __artificial__))
813 _mm_comoneq_sd(__m128d __A, __m128d __B)
815 return (__m128d) __builtin_ia32_comneqsd ((__v2df)__A, (__v2df)__B);
818 static __inline __m128d __attribute__((__always_inline__, __artificial__))
819 _mm_comge_sd(__m128d __A, __m128d __B)
821 return (__m128d) __builtin_ia32_comgesd ((__v2df)__A, (__v2df)__B);
824 static __inline __m128d __attribute__((__always_inline__, __artificial__))
825 _mm_comgt_sd(__m128d __A, __m128d __B)
827 return (__m128d) __builtin_ia32_comgtsd ((__v2df)__A, (__v2df)__B);
830 static __inline __m128d __attribute__((__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 static __inline __m128i __attribute__((__always_inline__, __artificial__))
840 _mm_comlt_epu8(__m128i __A, __m128i __B)
842 return (__m128i) __builtin_ia32_pcomltub ((__v16qi)__A, (__v16qi)__B);
845 static __inline __m128i __attribute__((__always_inline__, __artificial__))
846 _mm_comle_epu8(__m128i __A, __m128i __B)
848 return (__m128i) __builtin_ia32_pcomleub ((__v16qi)__A, (__v16qi)__B);
851 static __inline __m128i __attribute__((__always_inline__, __artificial__))
852 _mm_comgt_epu8(__m128i __A, __m128i __B)
854 return (__m128i) __builtin_ia32_pcomgtub ((__v16qi)__A, (__v16qi)__B);
857 static __inline __m128i __attribute__((__always_inline__, __artificial__))
858 _mm_comge_epu8(__m128i __A, __m128i __B)
860 return (__m128i) __builtin_ia32_pcomgeub ((__v16qi)__A, (__v16qi)__B);
863 static __inline __m128i __attribute__((__always_inline__, __artificial__))
864 _mm_comeq_epu8(__m128i __A, __m128i __B)
866 return (__m128i) __builtin_ia32_pcomequb ((__v16qi)__A, (__v16qi)__B);
869 static __inline __m128i __attribute__((__always_inline__, __artificial__))
870 _mm_comneq_epu8(__m128i __A, __m128i __B)
872 return (__m128i) __builtin_ia32_pcomnequb ((__v16qi)__A, (__v16qi)__B);
875 static __inline __m128i __attribute__((__always_inline__, __artificial__))
876 _mm_comfalse_epu8(__m128i __A, __m128i __B)
878 return (__m128i) __builtin_ia32_pcomfalseub ((__v16qi)__A, (__v16qi)__B);
881 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__always_inline__, __artificial__))
890 _mm_comlt_epu16(__m128i __A, __m128i __B)
892 return (__m128i) __builtin_ia32_pcomltuw ((__v8hi)__A, (__v8hi)__B);
895 static __inline __m128i __attribute__((__always_inline__, __artificial__))
896 _mm_comle_epu16(__m128i __A, __m128i __B)
898 return (__m128i) __builtin_ia32_pcomleuw ((__v8hi)__A, (__v8hi)__B);
901 static __inline __m128i __attribute__((__always_inline__, __artificial__))
902 _mm_comgt_epu16(__m128i __A, __m128i __B)
904 return (__m128i) __builtin_ia32_pcomgtuw ((__v8hi)__A, (__v8hi)__B);
907 static __inline __m128i __attribute__((__always_inline__, __artificial__))
908 _mm_comge_epu16(__m128i __A, __m128i __B)
910 return (__m128i) __builtin_ia32_pcomgeuw ((__v8hi)__A, (__v8hi)__B);
913 static __inline __m128i __attribute__((__always_inline__, __artificial__))
914 _mm_comeq_epu16(__m128i __A, __m128i __B)
916 return (__m128i) __builtin_ia32_pcomequw ((__v8hi)__A, (__v8hi)__B);
919 static __inline __m128i __attribute__((__always_inline__, __artificial__))
920 _mm_comneq_epu16(__m128i __A, __m128i __B)
922 return (__m128i) __builtin_ia32_pcomnequw ((__v8hi)__A, (__v8hi)__B);
925 static __inline __m128i __attribute__((__always_inline__, __artificial__))
926 _mm_comfalse_epu16(__m128i __A, __m128i __B)
928 return (__m128i) __builtin_ia32_pcomfalseuw ((__v8hi)__A, (__v8hi)__B);
931 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__always_inline__, __artificial__))
940 _mm_comlt_epu32(__m128i __A, __m128i __B)
942 return (__m128i) __builtin_ia32_pcomltud ((__v4si)__A, (__v4si)__B);
945 static __inline __m128i __attribute__((__always_inline__, __artificial__))
946 _mm_comle_epu32(__m128i __A, __m128i __B)
948 return (__m128i) __builtin_ia32_pcomleud ((__v4si)__A, (__v4si)__B);
951 static __inline __m128i __attribute__((__always_inline__, __artificial__))
952 _mm_comgt_epu32(__m128i __A, __m128i __B)
954 return (__m128i) __builtin_ia32_pcomgtud ((__v4si)__A, (__v4si)__B);
957 static __inline __m128i __attribute__((__always_inline__, __artificial__))
958 _mm_comge_epu32(__m128i __A, __m128i __B)
960 return (__m128i) __builtin_ia32_pcomgeud ((__v4si)__A, (__v4si)__B);
963 static __inline __m128i __attribute__((__always_inline__, __artificial__))
964 _mm_comeq_epu32(__m128i __A, __m128i __B)
966 return (__m128i) __builtin_ia32_pcomequd ((__v4si)__A, (__v4si)__B);
969 static __inline __m128i __attribute__((__always_inline__, __artificial__))
970 _mm_comneq_epu32(__m128i __A, __m128i __B)
972 return (__m128i) __builtin_ia32_pcomnequd ((__v4si)__A, (__v4si)__B);
975 static __inline __m128i __attribute__((__always_inline__, __artificial__))
976 _mm_comfalse_epu32(__m128i __A, __m128i __B)
978 return (__m128i) __builtin_ia32_pcomfalseud ((__v4si)__A, (__v4si)__B);
981 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__always_inline__, __artificial__))
990 _mm_comlt_epu64(__m128i __A, __m128i __B)
992 return (__m128i) __builtin_ia32_pcomltuq ((__v2di)__A, (__v2di)__B);
995 static __inline __m128i __attribute__((__always_inline__, __artificial__))
996 _mm_comle_epu64(__m128i __A, __m128i __B)
998 return (__m128i) __builtin_ia32_pcomleuq ((__v2di)__A, (__v2di)__B);
1001 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1002 _mm_comgt_epu64(__m128i __A, __m128i __B)
1004 return (__m128i) __builtin_ia32_pcomgtuq ((__v2di)__A, (__v2di)__B);
1007 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1008 _mm_comge_epu64(__m128i __A, __m128i __B)
1010 return (__m128i) __builtin_ia32_pcomgeuq ((__v2di)__A, (__v2di)__B);
1013 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1014 _mm_comeq_epu64(__m128i __A, __m128i __B)
1016 return (__m128i) __builtin_ia32_pcomequq ((__v2di)__A, (__v2di)__B);
1019 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1020 _mm_comneq_epu64(__m128i __A, __m128i __B)
1022 return (__m128i) __builtin_ia32_pcomnequq ((__v2di)__A, (__v2di)__B);
1025 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1026 _mm_comfalse_epu64(__m128i __A, __m128i __B)
1028 return (__m128i) __builtin_ia32_pcomfalseuq ((__v2di)__A, (__v2di)__B);
1031 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1040 _mm_comlt_epi8(__m128i __A, __m128i __B)
1042 return (__m128i) __builtin_ia32_pcomltb ((__v16qi)__A, (__v16qi)__B);
1045 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1046 _mm_comle_epi8(__m128i __A, __m128i __B)
1048 return (__m128i) __builtin_ia32_pcomleb ((__v16qi)__A, (__v16qi)__B);
1051 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1052 _mm_comgt_epi8(__m128i __A, __m128i __B)
1054 return (__m128i) __builtin_ia32_pcomgtb ((__v16qi)__A, (__v16qi)__B);
1057 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1058 _mm_comge_epi8(__m128i __A, __m128i __B)
1060 return (__m128i) __builtin_ia32_pcomgeb ((__v16qi)__A, (__v16qi)__B);
1063 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1064 _mm_comeq_epi8(__m128i __A, __m128i __B)
1066 return (__m128i) __builtin_ia32_pcomeqb ((__v16qi)__A, (__v16qi)__B);
1069 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1070 _mm_comneq_epi8(__m128i __A, __m128i __B)
1072 return (__m128i) __builtin_ia32_pcomneqb ((__v16qi)__A, (__v16qi)__B);
1075 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1076 _mm_comfalse_epi8(__m128i __A, __m128i __B)
1078 return (__m128i) __builtin_ia32_pcomfalseb ((__v16qi)__A, (__v16qi)__B);
1081 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1090 _mm_comlt_epi16(__m128i __A, __m128i __B)
1092 return (__m128i) __builtin_ia32_pcomltw ((__v8hi)__A, (__v8hi)__B);
1095 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1096 _mm_comle_epi16(__m128i __A, __m128i __B)
1098 return (__m128i) __builtin_ia32_pcomlew ((__v8hi)__A, (__v8hi)__B);
1101 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1102 _mm_comgt_epi16(__m128i __A, __m128i __B)
1104 return (__m128i) __builtin_ia32_pcomgtw ((__v8hi)__A, (__v8hi)__B);
1107 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1108 _mm_comge_epi16(__m128i __A, __m128i __B)
1110 return (__m128i) __builtin_ia32_pcomgew ((__v8hi)__A, (__v8hi)__B);
1113 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1114 _mm_comeq_epi16(__m128i __A, __m128i __B)
1116 return (__m128i) __builtin_ia32_pcomeqw ((__v8hi)__A, (__v8hi)__B);
1119 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1120 _mm_comneq_epi16(__m128i __A, __m128i __B)
1122 return (__m128i) __builtin_ia32_pcomneqw ((__v8hi)__A, (__v8hi)__B);
1125 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1126 _mm_comfalse_epi16(__m128i __A, __m128i __B)
1128 return (__m128i) __builtin_ia32_pcomfalsew ((__v8hi)__A, (__v8hi)__B);
1131 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1140 _mm_comlt_epi32(__m128i __A, __m128i __B)
1142 return (__m128i) __builtin_ia32_pcomltd ((__v4si)__A, (__v4si)__B);
1145 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1146 _mm_comle_epi32(__m128i __A, __m128i __B)
1148 return (__m128i) __builtin_ia32_pcomled ((__v4si)__A, (__v4si)__B);
1151 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1152 _mm_comgt_epi32(__m128i __A, __m128i __B)
1154 return (__m128i) __builtin_ia32_pcomgtd ((__v4si)__A, (__v4si)__B);
1157 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1158 _mm_comge_epi32(__m128i __A, __m128i __B)
1160 return (__m128i) __builtin_ia32_pcomged ((__v4si)__A, (__v4si)__B);
1163 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1164 _mm_comeq_epi32(__m128i __A, __m128i __B)
1166 return (__m128i) __builtin_ia32_pcomeqd ((__v4si)__A, (__v4si)__B);
1169 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1170 _mm_comneq_epi32(__m128i __A, __m128i __B)
1172 return (__m128i) __builtin_ia32_pcomneqd ((__v4si)__A, (__v4si)__B);
1175 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1176 _mm_comfalse_epi32(__m128i __A, __m128i __B)
1178 return (__m128i) __builtin_ia32_pcomfalsed ((__v4si)__A, (__v4si)__B);
1181 static __inline __m128i __attribute__((__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 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1190 _mm_comlt_epi64(__m128i __A, __m128i __B)
1192 return (__m128i) __builtin_ia32_pcomltq ((__v2di)__A, (__v2di)__B);
1195 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1196 _mm_comle_epi64(__m128i __A, __m128i __B)
1198 return (__m128i) __builtin_ia32_pcomleq ((__v2di)__A, (__v2di)__B);
1201 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1202 _mm_comgt_epi64(__m128i __A, __m128i __B)
1204 return (__m128i) __builtin_ia32_pcomgtq ((__v2di)__A, (__v2di)__B);
1207 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1208 _mm_comge_epi64(__m128i __A, __m128i __B)
1210 return (__m128i) __builtin_ia32_pcomgeq ((__v2di)__A, (__v2di)__B);
1213 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1214 _mm_comeq_epi64(__m128i __A, __m128i __B)
1216 return (__m128i) __builtin_ia32_pcomeqq ((__v2di)__A, (__v2di)__B);
1219 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1220 _mm_comneq_epi64(__m128i __A, __m128i __B)
1222 return (__m128i) __builtin_ia32_pcomneqq ((__v2di)__A, (__v2di)__B);
1225 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1226 _mm_comfalse_epi64(__m128i __A, __m128i __B)
1228 return (__m128i) __builtin_ia32_pcomfalseq ((__v2di)__A, (__v2di)__B);
1231 static __inline __m128i __attribute__((__always_inline__, __artificial__))
1232 _mm_comtrue_epi64(__m128i __A, __m128i __B)
1234 return (__m128i) __builtin_ia32_pcomtrueq ((__v2di)__A, (__v2di)__B);
1237 /* FRCZ */
1238 static __inline __m128 __attribute__((__always_inline__, __artificial__))
1239 _mm_frcz_ps (__m128 __A)
1241 return (__m128) __builtin_ia32_frczps ((__v4sf)__A);
1244 static __inline __m128d __attribute__((__always_inline__, __artificial__))
1245 _mm_frcz_pd (__m128d __A)
1247 return (__m128d) __builtin_ia32_frczpd ((__v2df)__A);
1250 static __inline __m128 __attribute__((__always_inline__, __artificial__))
1251 _mm_frcz_ss (__m128 __A, __m128 __B)
1253 return (__m128) __builtin_ia32_frczss ((__v4sf)__A, (__v4sf)__B);
1256 static __inline __m128d __attribute__((__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 */