Install gcc-4.4.0-tdm-1-core-2.tar.gz
[msysgit.git] / mingw / lib / gcc / mingw32 / 4.4.0 / include / bmmintrin.h
blobe92768c25dc0fee0a1aecc86a9b7944d0af92af8
1 /* Copyright (C) 2007, 2008, 2009 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 3, 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 Under Section 7 of GPL version 3, you are granted additional
16 permissions described in the GCC Runtime Library Exception, version
17 3.1, as published by the Free Software Foundation.
19 You should have received a copy of the GNU General Public License and
20 a copy of the GCC Runtime Library Exception along with this program;
21 see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22 <http://www.gnu.org/licenses/>. */
24 #ifndef _BMMINTRIN_H_INCLUDED
25 #define _BMMINTRIN_H_INCLUDED
27 #ifndef __SSE5__
28 # error "SSE5 instruction set not enabled"
29 #else
31 /* We need definitions from the SSE4A, SSE3, SSE2 and SSE header files. */
32 #include <ammintrin.h>
33 #include <mmintrin-common.h>
35 /* Floating point multiply/add type instructions */
36 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
37 _mm_macc_ps(__m128 __A, __m128 __B, __m128 __C)
39 return (__m128) __builtin_ia32_fmaddps ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
42 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
43 _mm_macc_pd(__m128d __A, __m128d __B, __m128d __C)
45 return (__m128d) __builtin_ia32_fmaddpd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
48 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
49 _mm_macc_ss(__m128 __A, __m128 __B, __m128 __C)
51 return (__m128) __builtin_ia32_fmaddss ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
54 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
55 _mm_macc_sd(__m128d __A, __m128d __B, __m128d __C)
57 return (__m128d) __builtin_ia32_fmaddsd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
60 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
61 _mm_msub_ps(__m128 __A, __m128 __B, __m128 __C)
63 return (__m128) __builtin_ia32_fmsubps ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
66 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
67 _mm_msub_pd(__m128d __A, __m128d __B, __m128d __C)
69 return (__m128d) __builtin_ia32_fmsubpd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
72 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
73 _mm_msub_ss(__m128 __A, __m128 __B, __m128 __C)
75 return (__m128) __builtin_ia32_fmsubss ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
78 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
79 _mm_msub_sd(__m128d __A, __m128d __B, __m128d __C)
81 return (__m128d) __builtin_ia32_fmsubsd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
84 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
85 _mm_nmacc_ps(__m128 __A, __m128 __B, __m128 __C)
87 return (__m128) __builtin_ia32_fnmaddps ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
90 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
91 _mm_nmacc_pd(__m128d __A, __m128d __B, __m128d __C)
93 return (__m128d) __builtin_ia32_fnmaddpd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
96 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
97 _mm_nmacc_ss(__m128 __A, __m128 __B, __m128 __C)
99 return (__m128) __builtin_ia32_fnmaddss ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
102 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
103 _mm_nmacc_sd(__m128d __A, __m128d __B, __m128d __C)
105 return (__m128d) __builtin_ia32_fnmaddsd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
108 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
109 _mm_nmsub_ps(__m128 __A, __m128 __B, __m128 __C)
111 return (__m128) __builtin_ia32_fnmsubps ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
114 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
115 _mm_nmsub_pd(__m128d __A, __m128d __B, __m128d __C)
117 return (__m128d) __builtin_ia32_fnmsubpd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
120 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
121 _mm_nmsub_ss(__m128 __A, __m128 __B, __m128 __C)
123 return (__m128) __builtin_ia32_fnmsubss ((__v4sf)__A, (__v4sf)__B, (__v4sf)__C);
126 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
127 _mm_nmsub_sd(__m128d __A, __m128d __B, __m128d __C)
129 return (__m128d) __builtin_ia32_fnmsubsd ((__v2df)__A, (__v2df)__B, (__v2df)__C);
132 /* Integer multiply/add intructions. */
133 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
134 _mm_maccs_epi16(__m128i __A, __m128i __B, __m128i __C)
136 return (__m128i) __builtin_ia32_pmacssww ((__v8hi)__A,(__v8hi)__B, (__v8hi)__C);
139 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
140 _mm_macc_epi16(__m128i __A, __m128i __B, __m128i __C)
142 return (__m128i) __builtin_ia32_pmacsww ((__v8hi)__A, (__v8hi)__B, (__v8hi)__C);
145 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
146 _mm_maccsd_epi16(__m128i __A, __m128i __B, __m128i __C)
148 return (__m128i) __builtin_ia32_pmacsswd ((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
151 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
152 _mm_maccd_epi16(__m128i __A, __m128i __B, __m128i __C)
154 return (__m128i) __builtin_ia32_pmacswd ((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
157 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
158 _mm_maccs_epi32(__m128i __A, __m128i __B, __m128i __C)
160 return (__m128i) __builtin_ia32_pmacssdd ((__v4si)__A, (__v4si)__B, (__v4si)__C);
163 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
164 _mm_macc_epi32(__m128i __A, __m128i __B, __m128i __C)
166 return (__m128i) __builtin_ia32_pmacsdd ((__v4si)__A, (__v4si)__B, (__v4si)__C);
169 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
170 _mm_maccslo_epi32(__m128i __A, __m128i __B, __m128i __C)
172 return (__m128i) __builtin_ia32_pmacssdql ((__v4si)__A, (__v4si)__B, (__v2di)__C);
175 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
176 _mm_macclo_epi32(__m128i __A, __m128i __B, __m128i __C)
178 return (__m128i) __builtin_ia32_pmacsdql ((__v4si)__A, (__v4si)__B, (__v2di)__C);
181 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
182 _mm_maccshi_epi32(__m128i __A, __m128i __B, __m128i __C)
184 return (__m128i) __builtin_ia32_pmacssdqh ((__v4si)__A, (__v4si)__B, (__v2di)__C);
187 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
188 _mm_macchi_epi32(__m128i __A, __m128i __B, __m128i __C)
190 return (__m128i) __builtin_ia32_pmacsdqh ((__v4si)__A, (__v4si)__B, (__v2di)__C);
193 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
194 _mm_maddsd_epi16(__m128i __A, __m128i __B, __m128i __C)
196 return (__m128i) __builtin_ia32_pmadcsswd ((__v8hi)__A,(__v8hi)__B,(__v4si)__C);
199 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
200 _mm_maddd_epi16(__m128i __A, __m128i __B, __m128i __C)
202 return (__m128i) __builtin_ia32_pmadcswd ((__v8hi)__A,(__v8hi)__B,(__v4si)__C);
205 /* Packed Integer Horizontal Add and Subtract */
206 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
207 _mm_haddw_epi8(__m128i __A)
209 return (__m128i) __builtin_ia32_phaddbw ((__v16qi)__A);
212 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
213 _mm_haddd_epi8(__m128i __A)
215 return (__m128i) __builtin_ia32_phaddbd ((__v16qi)__A);
218 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
219 _mm_haddq_epi8(__m128i __A)
221 return (__m128i) __builtin_ia32_phaddbq ((__v16qi)__A);
224 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
225 _mm_haddd_epi16(__m128i __A)
227 return (__m128i) __builtin_ia32_phaddwd ((__v8hi)__A);
230 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
231 _mm_haddq_epi16(__m128i __A)
233 return (__m128i) __builtin_ia32_phaddwq ((__v8hi)__A);
236 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
237 _mm_haddq_epi32(__m128i __A)
239 return (__m128i) __builtin_ia32_phadddq ((__v4si)__A);
242 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
243 _mm_haddw_epu8(__m128i __A)
245 return (__m128i) __builtin_ia32_phaddubw ((__v16qi)__A);
248 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
249 _mm_haddd_epu8(__m128i __A)
251 return (__m128i) __builtin_ia32_phaddubd ((__v16qi)__A);
254 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
255 _mm_haddq_epu8(__m128i __A)
257 return (__m128i) __builtin_ia32_phaddubq ((__v16qi)__A);
260 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
261 _mm_haddd_epu16(__m128i __A)
263 return (__m128i) __builtin_ia32_phadduwd ((__v8hi)__A);
266 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
267 _mm_haddq_epu16(__m128i __A)
269 return (__m128i) __builtin_ia32_phadduwq ((__v8hi)__A);
272 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
273 _mm_haddq_epu32(__m128i __A)
275 return (__m128i) __builtin_ia32_phaddudq ((__v4si)__A);
278 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
279 _mm_hsubw_epi8(__m128i __A)
281 return (__m128i) __builtin_ia32_phsubbw ((__v16qi)__A);
284 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
285 _mm_hsubd_epi16(__m128i __A)
287 return (__m128i) __builtin_ia32_phsubwd ((__v8hi)__A);
290 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
291 _mm_hsubq_epi32(__m128i __A)
293 return (__m128i) __builtin_ia32_phsubdq ((__v4si)__A);
296 /* Vector conditional move and permute */
297 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
298 _mm_cmov_si128(__m128i __A, __m128i __B, __m128i __C)
300 return (__m128i) __builtin_ia32_pcmov (__A, __B, __C);
303 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
304 _mm_perm_epi8(__m128i __A, __m128i __B, __m128i __C)
306 return (__m128i) __builtin_ia32_pperm ((__v16qi)__A, (__v16qi)__B, (__v16qi)__C);
309 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
310 _mm_perm_ps(__m128 __A, __m128 __B, __m128i __C)
312 return (__m128) __builtin_ia32_permps ((__m128)__A, (__m128)__B, (__v16qi)__C);
315 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
316 _mm_perm_pd(__m128d __A, __m128d __B, __m128i __C)
318 return (__m128d) __builtin_ia32_permpd ((__m128d)__A, (__m128d)__B, (__v16qi)__C);
321 /* Packed Integer Rotates and Shifts */
323 /* Rotates - Non-Immediate form */
324 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
325 _mm_rot_epi8(__m128i __A, __m128i __B)
327 return (__m128i) __builtin_ia32_protb ((__v16qi)__A, (__v16qi)__B);
330 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
331 _mm_rot_epi16(__m128i __A, __m128i __B)
333 return (__m128i) __builtin_ia32_protw ((__v8hi)__A, (__v8hi)__B);
336 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
337 _mm_rot_epi32(__m128i __A, __m128i __B)
339 return (__m128i) __builtin_ia32_protd ((__v4si)__A, (__v4si)__B);
342 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
343 _mm_rot_epi64(__m128i __A, __m128i __B)
345 return (__m128i) __builtin_ia32_protq ((__v2di)__A, (__v2di)__B);
349 /* Rotates - Immediate form */
350 #ifdef __OPTIMIZE__
351 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
352 _mm_roti_epi8(__m128i __A, const int __B)
354 return (__m128i) __builtin_ia32_protbi ((__v16qi)__A, __B);
357 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
358 _mm_roti_epi16(__m128i __A, const int __B)
360 return (__m128i) __builtin_ia32_protwi ((__v8hi)__A, __B);
363 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
364 _mm_roti_epi32(__m128i __A, const int __B)
366 return (__m128i) __builtin_ia32_protdi ((__v4si)__A, __B);
369 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
370 _mm_roti_epi64(__m128i __A, const int __B)
372 return (__m128i) __builtin_ia32_protqi ((__v2di)__A, __B);
374 #else
375 #define _mm_roti_epi8(A, N) \
376 ((__m128i) __builtin_ia32_protbi ((__v16qi)(__m128i)(A), (int)(N)))
377 #define _mm_roti_epi16(A, N) \
378 ((__m128i) __builtin_ia32_protwi ((__v8hi)(__m128i)(A), (int)(N)))
379 #define _mm_roti_epi32(A, N) \
380 ((__m128i) __builtin_ia32_protdi ((__v4si)(__m128i)(A), (int)(N)))
381 #define _mm_roti_epi64(A, N) \
382 ((__m128i) __builtin_ia32_protqi ((__v2di)(__m128i)(A), (int)(N)))
383 #endif
385 /* pshl */
387 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
388 _mm_shl_epi8(__m128i __A, __m128i __B)
390 return (__m128i) __builtin_ia32_pshlb ((__v16qi)__A, (__v16qi)__B);
393 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
394 _mm_shl_epi16(__m128i __A, __m128i __B)
396 return (__m128i) __builtin_ia32_pshlw ((__v8hi)__A, (__v8hi)__B);
399 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
400 _mm_shl_epi32(__m128i __A, __m128i __B)
402 return (__m128i) __builtin_ia32_pshld ((__v4si)__A, (__v4si)__B);
405 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
406 _mm_shl_epi64(__m128i __A, __m128i __B)
408 return (__m128i) __builtin_ia32_pshlq ((__v2di)__A, (__v2di)__B);
411 /* psha */
412 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
413 _mm_sha_epi8(__m128i __A, __m128i __B)
415 return (__m128i) __builtin_ia32_pshab ((__v16qi)__A, (__v16qi)__B);
418 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
419 _mm_sha_epi16(__m128i __A, __m128i __B)
421 return (__m128i) __builtin_ia32_pshaw ((__v8hi)__A, (__v8hi)__B);
424 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
425 _mm_sha_epi32(__m128i __A, __m128i __B)
427 return (__m128i) __builtin_ia32_pshad ((__v4si)__A, (__v4si)__B);
430 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
431 _mm_sha_epi64(__m128i __A, __m128i __B)
433 return (__m128i) __builtin_ia32_pshaq ((__v2di)__A, (__v2di)__B);
436 /* Compare and Predicate Generation */
438 /* com (floating point, packed single) */
439 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
440 _mm_comeq_ps(__m128 __A, __m128 __B)
442 return (__m128) __builtin_ia32_comeqps ((__v4sf)__A, (__v4sf)__B);
445 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
446 _mm_comlt_ps(__m128 __A, __m128 __B)
448 return (__m128) __builtin_ia32_comltps ((__v4sf)__A, (__v4sf)__B);
451 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
452 _mm_comle_ps(__m128 __A, __m128 __B)
454 return (__m128) __builtin_ia32_comleps ((__v4sf)__A, (__v4sf)__B);
457 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
458 _mm_comunord_ps(__m128 __A, __m128 __B)
460 return (__m128) __builtin_ia32_comunordps ((__v4sf)__A, (__v4sf)__B);
463 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
464 _mm_comneq_ps(__m128 __A, __m128 __B)
466 return (__m128) __builtin_ia32_comuneqps ((__v4sf)__A, (__v4sf)__B);
469 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
470 _mm_comnlt_ps(__m128 __A, __m128 __B)
472 return (__m128) __builtin_ia32_comunltps ((__v4sf)__A, (__v4sf)__B);
475 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
476 _mm_comnle_ps(__m128 __A, __m128 __B)
478 return (__m128) __builtin_ia32_comunleps ((__v4sf)__A, (__v4sf)__B);
482 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
483 _mm_comord_ps(__m128 __A, __m128 __B)
485 return (__m128) __builtin_ia32_comordps ((__v4sf)__A, (__v4sf)__B);
489 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
490 _mm_comueq_ps(__m128 __A, __m128 __B)
492 return (__m128) __builtin_ia32_comueqps ((__v4sf)__A, (__v4sf)__B);
495 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
496 _mm_comnge_ps(__m128 __A, __m128 __B)
498 return (__m128) __builtin_ia32_comungeps ((__v4sf)__A, (__v4sf)__B);
501 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
502 _mm_comngt_ps(__m128 __A, __m128 __B)
504 return (__m128) __builtin_ia32_comungtps ((__v4sf)__A, (__v4sf)__B);
507 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
508 _mm_comfalse_ps(__m128 __A, __m128 __B)
510 return (__m128) __builtin_ia32_comfalseps ((__v4sf)__A, (__v4sf)__B);
513 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
514 _mm_comoneq_ps(__m128 __A, __m128 __B)
516 return (__m128) __builtin_ia32_comneqps ((__v4sf)__A, (__v4sf)__B);
519 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
520 _mm_comge_ps(__m128 __A, __m128 __B)
522 return (__m128) __builtin_ia32_comgeps ((__v4sf)__A, (__v4sf)__B);
525 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
526 _mm_comgt_ps(__m128 __A, __m128 __B)
528 return (__m128) __builtin_ia32_comgtps ((__v4sf)__A, (__v4sf)__B);
531 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
532 _mm_comtrue_ps(__m128 __A, __m128 __B)
534 return (__m128) __builtin_ia32_comtrueps ((__v4sf)__A, (__v4sf)__B);
537 /* com (floating point, packed double) */
539 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
540 _mm_comeq_pd(__m128d __A, __m128d __B)
542 return (__m128d) __builtin_ia32_comeqpd ((__v2df)__A, (__v2df)__B);
545 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
546 _mm_comlt_pd(__m128d __A, __m128d __B)
548 return (__m128d) __builtin_ia32_comltpd ((__v2df)__A, (__v2df)__B);
551 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
552 _mm_comle_pd(__m128d __A, __m128d __B)
554 return (__m128d) __builtin_ia32_comlepd ((__v2df)__A, (__v2df)__B);
557 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
558 _mm_comunord_pd(__m128d __A, __m128d __B)
560 return (__m128d) __builtin_ia32_comunordpd ((__v2df)__A, (__v2df)__B);
563 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
564 _mm_comneq_pd(__m128d __A, __m128d __B)
566 return (__m128d) __builtin_ia32_comuneqpd ((__v2df)__A, (__v2df)__B);
569 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
570 _mm_comnlt_pd(__m128d __A, __m128d __B)
572 return (__m128d) __builtin_ia32_comunltpd ((__v2df)__A, (__v2df)__B);
575 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
576 _mm_comnle_pd(__m128d __A, __m128d __B)
578 return (__m128d) __builtin_ia32_comunlepd ((__v2df)__A, (__v2df)__B);
582 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
583 _mm_comord_pd(__m128d __A, __m128d __B)
585 return (__m128d) __builtin_ia32_comordpd ((__v2df)__A, (__v2df)__B);
588 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
589 _mm_comueq_pd(__m128d __A, __m128d __B)
591 return (__m128d) __builtin_ia32_comueqpd ((__v2df)__A, (__v2df)__B);
594 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
595 _mm_comnge_pd(__m128d __A, __m128d __B)
597 return (__m128d) __builtin_ia32_comungepd ((__v2df)__A, (__v2df)__B);
600 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
601 _mm_comngt_pd(__m128d __A, __m128d __B)
603 return (__m128d) __builtin_ia32_comungtpd ((__v2df)__A, (__v2df)__B);
606 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
607 _mm_comfalse_pd(__m128d __A, __m128d __B)
609 return (__m128d) __builtin_ia32_comfalsepd ((__v2df)__A, (__v2df)__B);
612 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
613 _mm_comoneq_pd(__m128d __A, __m128d __B)
615 return (__m128d) __builtin_ia32_comneqpd ((__v2df)__A, (__v2df)__B);
618 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
619 _mm_comge_pd(__m128d __A, __m128d __B)
621 return (__m128d) __builtin_ia32_comgepd ((__v2df)__A, (__v2df)__B);
624 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
625 _mm_comgt_pd(__m128d __A, __m128d __B)
627 return (__m128d) __builtin_ia32_comgtpd ((__v2df)__A, (__v2df)__B);
630 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
631 _mm_comtrue_pd(__m128d __A, __m128d __B)
633 return (__m128d) __builtin_ia32_comtruepd ((__v2df)__A, (__v2df)__B);
636 /* com (floating point, scalar single) */
637 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
638 _mm_comeq_ss(__m128 __A, __m128 __B)
640 return (__m128) __builtin_ia32_comeqss ((__v4sf)__A, (__v4sf)__B);
643 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
644 _mm_comlt_ss(__m128 __A, __m128 __B)
646 return (__m128) __builtin_ia32_comltss ((__v4sf)__A, (__v4sf)__B);
649 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
650 _mm_comle_ss(__m128 __A, __m128 __B)
652 return (__m128) __builtin_ia32_comless ((__v4sf)__A, (__v4sf)__B);
655 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
656 _mm_comunord_ss(__m128 __A, __m128 __B)
658 return (__m128) __builtin_ia32_comunordss ((__v4sf)__A, (__v4sf)__B);
661 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
662 _mm_comneq_ss(__m128 __A, __m128 __B)
664 return (__m128) __builtin_ia32_comuneqss ((__v4sf)__A, (__v4sf)__B);
667 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
668 _mm_comnlt_ss(__m128 __A, __m128 __B)
670 return (__m128) __builtin_ia32_comunltss ((__v4sf)__A, (__v4sf)__B);
673 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
674 _mm_comnle_ss(__m128 __A, __m128 __B)
676 return (__m128) __builtin_ia32_comunless ((__v4sf)__A, (__v4sf)__B);
680 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
681 _mm_comord_ss(__m128 __A, __m128 __B)
683 return (__m128) __builtin_ia32_comordss ((__v4sf)__A, (__v4sf)__B);
686 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
687 _mm_comueq_ss(__m128 __A, __m128 __B)
689 return (__m128) __builtin_ia32_comueqss ((__v4sf)__A, (__v4sf)__B);
692 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
693 _mm_comnge_ss(__m128 __A, __m128 __B)
695 return (__m128) __builtin_ia32_comungess ((__v4sf)__A, (__v4sf)__B);
698 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
699 _mm_comngt_ss(__m128 __A, __m128 __B)
701 return (__m128) __builtin_ia32_comungtss ((__v4sf)__A, (__v4sf)__B);
704 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
705 _mm_comfalse_ss(__m128 __A, __m128 __B)
707 return (__m128) __builtin_ia32_comfalsess ((__v4sf)__A, (__v4sf)__B);
710 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
711 _mm_comoneq_ss(__m128 __A, __m128 __B)
713 return (__m128) __builtin_ia32_comneqss ((__v4sf)__A, (__v4sf)__B);
716 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
717 _mm_comge_ss(__m128 __A, __m128 __B)
719 return (__m128) __builtin_ia32_comgess ((__v4sf)__A, (__v4sf)__B);
722 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
723 _mm_comgt_ss(__m128 __A, __m128 __B)
725 return (__m128) __builtin_ia32_comgtss ((__v4sf)__A, (__v4sf)__B);
728 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
729 _mm_comtrue_ss(__m128 __A, __m128 __B)
731 return (__m128) __builtin_ia32_comtruess ((__v4sf)__A, (__v4sf)__B);
734 /* com (floating point, scalar double) */
736 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
737 _mm_comeq_sd(__m128d __A, __m128d __B)
739 return (__m128d) __builtin_ia32_comeqsd ((__v2df)__A, (__v2df)__B);
742 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
743 _mm_comlt_sd(__m128d __A, __m128d __B)
745 return (__m128d) __builtin_ia32_comltsd ((__v2df)__A, (__v2df)__B);
748 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
749 _mm_comle_sd(__m128d __A, __m128d __B)
751 return (__m128d) __builtin_ia32_comlesd ((__v2df)__A, (__v2df)__B);
754 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
755 _mm_comunord_sd(__m128d __A, __m128d __B)
757 return (__m128d) __builtin_ia32_comunordsd ((__v2df)__A, (__v2df)__B);
760 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
761 _mm_comneq_sd(__m128d __A, __m128d __B)
763 return (__m128d) __builtin_ia32_comuneqsd ((__v2df)__A, (__v2df)__B);
766 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
767 _mm_comnlt_sd(__m128d __A, __m128d __B)
769 return (__m128d) __builtin_ia32_comunltsd ((__v2df)__A, (__v2df)__B);
772 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
773 _mm_comnle_sd(__m128d __A, __m128d __B)
775 return (__m128d) __builtin_ia32_comunlesd ((__v2df)__A, (__v2df)__B);
779 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
780 _mm_comord_sd(__m128d __A, __m128d __B)
782 return (__m128d) __builtin_ia32_comordsd ((__v2df)__A, (__v2df)__B);
785 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
786 _mm_comueq_sd(__m128d __A, __m128d __B)
788 return (__m128d) __builtin_ia32_comueqsd ((__v2df)__A, (__v2df)__B);
791 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
792 _mm_comnge_sd(__m128d __A, __m128d __B)
794 return (__m128d) __builtin_ia32_comungesd ((__v2df)__A, (__v2df)__B);
797 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
798 _mm_comngt_sd(__m128d __A, __m128d __B)
800 return (__m128d) __builtin_ia32_comungtsd ((__v2df)__A, (__v2df)__B);
803 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
804 _mm_comfalse_sd(__m128d __A, __m128d __B)
806 return (__m128d) __builtin_ia32_comfalsesd ((__v2df)__A, (__v2df)__B);
809 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
810 _mm_comoneq_sd(__m128d __A, __m128d __B)
812 return (__m128d) __builtin_ia32_comneqsd ((__v2df)__A, (__v2df)__B);
815 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
816 _mm_comge_sd(__m128d __A, __m128d __B)
818 return (__m128d) __builtin_ia32_comgesd ((__v2df)__A, (__v2df)__B);
821 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
822 _mm_comgt_sd(__m128d __A, __m128d __B)
824 return (__m128d) __builtin_ia32_comgtsd ((__v2df)__A, (__v2df)__B);
827 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
828 _mm_comtrue_sd(__m128d __A, __m128d __B)
830 return (__m128d) __builtin_ia32_comtruesd ((__v2df)__A, (__v2df)__B);
834 /*pcom (integer, unsinged bytes) */
836 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
837 _mm_comlt_epu8(__m128i __A, __m128i __B)
839 return (__m128i) __builtin_ia32_pcomltub ((__v16qi)__A, (__v16qi)__B);
842 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
843 _mm_comle_epu8(__m128i __A, __m128i __B)
845 return (__m128i) __builtin_ia32_pcomleub ((__v16qi)__A, (__v16qi)__B);
848 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
849 _mm_comgt_epu8(__m128i __A, __m128i __B)
851 return (__m128i) __builtin_ia32_pcomgtub ((__v16qi)__A, (__v16qi)__B);
854 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
855 _mm_comge_epu8(__m128i __A, __m128i __B)
857 return (__m128i) __builtin_ia32_pcomgeub ((__v16qi)__A, (__v16qi)__B);
860 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
861 _mm_comeq_epu8(__m128i __A, __m128i __B)
863 return (__m128i) __builtin_ia32_pcomequb ((__v16qi)__A, (__v16qi)__B);
866 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
867 _mm_comneq_epu8(__m128i __A, __m128i __B)
869 return (__m128i) __builtin_ia32_pcomnequb ((__v16qi)__A, (__v16qi)__B);
872 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
873 _mm_comfalse_epu8(__m128i __A, __m128i __B)
875 return (__m128i) __builtin_ia32_pcomfalseub ((__v16qi)__A, (__v16qi)__B);
878 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
879 _mm_comtrue_epu8(__m128i __A, __m128i __B)
881 return (__m128i) __builtin_ia32_pcomtrueub ((__v16qi)__A, (__v16qi)__B);
884 /*pcom (integer, unsinged words) */
886 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
887 _mm_comlt_epu16(__m128i __A, __m128i __B)
889 return (__m128i) __builtin_ia32_pcomltuw ((__v8hi)__A, (__v8hi)__B);
892 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
893 _mm_comle_epu16(__m128i __A, __m128i __B)
895 return (__m128i) __builtin_ia32_pcomleuw ((__v8hi)__A, (__v8hi)__B);
898 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
899 _mm_comgt_epu16(__m128i __A, __m128i __B)
901 return (__m128i) __builtin_ia32_pcomgtuw ((__v8hi)__A, (__v8hi)__B);
904 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
905 _mm_comge_epu16(__m128i __A, __m128i __B)
907 return (__m128i) __builtin_ia32_pcomgeuw ((__v8hi)__A, (__v8hi)__B);
910 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
911 _mm_comeq_epu16(__m128i __A, __m128i __B)
913 return (__m128i) __builtin_ia32_pcomequw ((__v8hi)__A, (__v8hi)__B);
916 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
917 _mm_comneq_epu16(__m128i __A, __m128i __B)
919 return (__m128i) __builtin_ia32_pcomnequw ((__v8hi)__A, (__v8hi)__B);
922 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
923 _mm_comfalse_epu16(__m128i __A, __m128i __B)
925 return (__m128i) __builtin_ia32_pcomfalseuw ((__v8hi)__A, (__v8hi)__B);
928 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
929 _mm_comtrue_epu16(__m128i __A, __m128i __B)
931 return (__m128i) __builtin_ia32_pcomtrueuw ((__v8hi)__A, (__v8hi)__B);
934 /*pcom (integer, unsinged double words) */
936 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
937 _mm_comlt_epu32(__m128i __A, __m128i __B)
939 return (__m128i) __builtin_ia32_pcomltud ((__v4si)__A, (__v4si)__B);
942 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
943 _mm_comle_epu32(__m128i __A, __m128i __B)
945 return (__m128i) __builtin_ia32_pcomleud ((__v4si)__A, (__v4si)__B);
948 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
949 _mm_comgt_epu32(__m128i __A, __m128i __B)
951 return (__m128i) __builtin_ia32_pcomgtud ((__v4si)__A, (__v4si)__B);
954 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
955 _mm_comge_epu32(__m128i __A, __m128i __B)
957 return (__m128i) __builtin_ia32_pcomgeud ((__v4si)__A, (__v4si)__B);
960 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
961 _mm_comeq_epu32(__m128i __A, __m128i __B)
963 return (__m128i) __builtin_ia32_pcomequd ((__v4si)__A, (__v4si)__B);
966 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
967 _mm_comneq_epu32(__m128i __A, __m128i __B)
969 return (__m128i) __builtin_ia32_pcomnequd ((__v4si)__A, (__v4si)__B);
972 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
973 _mm_comfalse_epu32(__m128i __A, __m128i __B)
975 return (__m128i) __builtin_ia32_pcomfalseud ((__v4si)__A, (__v4si)__B);
978 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
979 _mm_comtrue_epu32(__m128i __A, __m128i __B)
981 return (__m128i) __builtin_ia32_pcomtrueud ((__v4si)__A, (__v4si)__B);
984 /*pcom (integer, unsinged quad words) */
986 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
987 _mm_comlt_epu64(__m128i __A, __m128i __B)
989 return (__m128i) __builtin_ia32_pcomltuq ((__v2di)__A, (__v2di)__B);
992 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
993 _mm_comle_epu64(__m128i __A, __m128i __B)
995 return (__m128i) __builtin_ia32_pcomleuq ((__v2di)__A, (__v2di)__B);
998 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
999 _mm_comgt_epu64(__m128i __A, __m128i __B)
1001 return (__m128i) __builtin_ia32_pcomgtuq ((__v2di)__A, (__v2di)__B);
1004 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1005 _mm_comge_epu64(__m128i __A, __m128i __B)
1007 return (__m128i) __builtin_ia32_pcomgeuq ((__v2di)__A, (__v2di)__B);
1010 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1011 _mm_comeq_epu64(__m128i __A, __m128i __B)
1013 return (__m128i) __builtin_ia32_pcomequq ((__v2di)__A, (__v2di)__B);
1016 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1017 _mm_comneq_epu64(__m128i __A, __m128i __B)
1019 return (__m128i) __builtin_ia32_pcomnequq ((__v2di)__A, (__v2di)__B);
1022 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1023 _mm_comfalse_epu64(__m128i __A, __m128i __B)
1025 return (__m128i) __builtin_ia32_pcomfalseuq ((__v2di)__A, (__v2di)__B);
1028 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1029 _mm_comtrue_epu64(__m128i __A, __m128i __B)
1031 return (__m128i) __builtin_ia32_pcomtrueuq ((__v2di)__A, (__v2di)__B);
1034 /*pcom (integer, signed bytes) */
1036 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1037 _mm_comlt_epi8(__m128i __A, __m128i __B)
1039 return (__m128i) __builtin_ia32_pcomltb ((__v16qi)__A, (__v16qi)__B);
1042 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1043 _mm_comle_epi8(__m128i __A, __m128i __B)
1045 return (__m128i) __builtin_ia32_pcomleb ((__v16qi)__A, (__v16qi)__B);
1048 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1049 _mm_comgt_epi8(__m128i __A, __m128i __B)
1051 return (__m128i) __builtin_ia32_pcomgtb ((__v16qi)__A, (__v16qi)__B);
1054 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1055 _mm_comge_epi8(__m128i __A, __m128i __B)
1057 return (__m128i) __builtin_ia32_pcomgeb ((__v16qi)__A, (__v16qi)__B);
1060 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1061 _mm_comeq_epi8(__m128i __A, __m128i __B)
1063 return (__m128i) __builtin_ia32_pcomeqb ((__v16qi)__A, (__v16qi)__B);
1066 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1067 _mm_comneq_epi8(__m128i __A, __m128i __B)
1069 return (__m128i) __builtin_ia32_pcomneqb ((__v16qi)__A, (__v16qi)__B);
1072 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1073 _mm_comfalse_epi8(__m128i __A, __m128i __B)
1075 return (__m128i) __builtin_ia32_pcomfalseb ((__v16qi)__A, (__v16qi)__B);
1078 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1079 _mm_comtrue_epi8(__m128i __A, __m128i __B)
1081 return (__m128i) __builtin_ia32_pcomtrueb ((__v16qi)__A, (__v16qi)__B);
1084 /*pcom (integer, signed words) */
1086 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1087 _mm_comlt_epi16(__m128i __A, __m128i __B)
1089 return (__m128i) __builtin_ia32_pcomltw ((__v8hi)__A, (__v8hi)__B);
1092 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1093 _mm_comle_epi16(__m128i __A, __m128i __B)
1095 return (__m128i) __builtin_ia32_pcomlew ((__v8hi)__A, (__v8hi)__B);
1098 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1099 _mm_comgt_epi16(__m128i __A, __m128i __B)
1101 return (__m128i) __builtin_ia32_pcomgtw ((__v8hi)__A, (__v8hi)__B);
1104 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1105 _mm_comge_epi16(__m128i __A, __m128i __B)
1107 return (__m128i) __builtin_ia32_pcomgew ((__v8hi)__A, (__v8hi)__B);
1110 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1111 _mm_comeq_epi16(__m128i __A, __m128i __B)
1113 return (__m128i) __builtin_ia32_pcomeqw ((__v8hi)__A, (__v8hi)__B);
1116 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1117 _mm_comneq_epi16(__m128i __A, __m128i __B)
1119 return (__m128i) __builtin_ia32_pcomneqw ((__v8hi)__A, (__v8hi)__B);
1122 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1123 _mm_comfalse_epi16(__m128i __A, __m128i __B)
1125 return (__m128i) __builtin_ia32_pcomfalsew ((__v8hi)__A, (__v8hi)__B);
1128 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1129 _mm_comtrue_epi16(__m128i __A, __m128i __B)
1131 return (__m128i) __builtin_ia32_pcomtruew ((__v8hi)__A, (__v8hi)__B);
1134 /*pcom (integer, signed double words) */
1136 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1137 _mm_comlt_epi32(__m128i __A, __m128i __B)
1139 return (__m128i) __builtin_ia32_pcomltd ((__v4si)__A, (__v4si)__B);
1142 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1143 _mm_comle_epi32(__m128i __A, __m128i __B)
1145 return (__m128i) __builtin_ia32_pcomled ((__v4si)__A, (__v4si)__B);
1148 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1149 _mm_comgt_epi32(__m128i __A, __m128i __B)
1151 return (__m128i) __builtin_ia32_pcomgtd ((__v4si)__A, (__v4si)__B);
1154 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1155 _mm_comge_epi32(__m128i __A, __m128i __B)
1157 return (__m128i) __builtin_ia32_pcomged ((__v4si)__A, (__v4si)__B);
1160 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1161 _mm_comeq_epi32(__m128i __A, __m128i __B)
1163 return (__m128i) __builtin_ia32_pcomeqd ((__v4si)__A, (__v4si)__B);
1166 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1167 _mm_comneq_epi32(__m128i __A, __m128i __B)
1169 return (__m128i) __builtin_ia32_pcomneqd ((__v4si)__A, (__v4si)__B);
1172 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1173 _mm_comfalse_epi32(__m128i __A, __m128i __B)
1175 return (__m128i) __builtin_ia32_pcomfalsed ((__v4si)__A, (__v4si)__B);
1178 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1179 _mm_comtrue_epi32(__m128i __A, __m128i __B)
1181 return (__m128i) __builtin_ia32_pcomtrued ((__v4si)__A, (__v4si)__B);
1184 /*pcom (integer, signed quad words) */
1186 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1187 _mm_comlt_epi64(__m128i __A, __m128i __B)
1189 return (__m128i) __builtin_ia32_pcomltq ((__v2di)__A, (__v2di)__B);
1192 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1193 _mm_comle_epi64(__m128i __A, __m128i __B)
1195 return (__m128i) __builtin_ia32_pcomleq ((__v2di)__A, (__v2di)__B);
1198 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1199 _mm_comgt_epi64(__m128i __A, __m128i __B)
1201 return (__m128i) __builtin_ia32_pcomgtq ((__v2di)__A, (__v2di)__B);
1204 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1205 _mm_comge_epi64(__m128i __A, __m128i __B)
1207 return (__m128i) __builtin_ia32_pcomgeq ((__v2di)__A, (__v2di)__B);
1210 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1211 _mm_comeq_epi64(__m128i __A, __m128i __B)
1213 return (__m128i) __builtin_ia32_pcomeqq ((__v2di)__A, (__v2di)__B);
1216 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1217 _mm_comneq_epi64(__m128i __A, __m128i __B)
1219 return (__m128i) __builtin_ia32_pcomneqq ((__v2di)__A, (__v2di)__B);
1222 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1223 _mm_comfalse_epi64(__m128i __A, __m128i __B)
1225 return (__m128i) __builtin_ia32_pcomfalseq ((__v2di)__A, (__v2di)__B);
1228 extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1229 _mm_comtrue_epi64(__m128i __A, __m128i __B)
1231 return (__m128i) __builtin_ia32_pcomtrueq ((__v2di)__A, (__v2di)__B);
1234 /* FRCZ */
1235 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1236 _mm_frcz_ps (__m128 __A)
1238 return (__m128) __builtin_ia32_frczps ((__v4sf)__A);
1241 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1242 _mm_frcz_pd (__m128d __A)
1244 return (__m128d) __builtin_ia32_frczpd ((__v2df)__A);
1247 extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1248 _mm_frcz_ss (__m128 __A, __m128 __B)
1250 return (__m128) __builtin_ia32_frczss ((__v4sf)__A, (__v4sf)__B);
1253 extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1254 _mm_frcz_sd (__m128d __A, __m128d __B)
1256 return (__m128d) __builtin_ia32_frczsd ((__v2df)__A, (__v2df)__B);
1259 #endif /* __SSE5__ */
1261 #endif /* _BMMINTRIN_H_INCLUDED */