xopintrin.h revision 1.1.1.1.8.2 1 1.1.1.1.8.2 tls /* Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
2 1.1.1.1.8.2 tls
3 1.1.1.1.8.2 tls This file is part of GCC.
4 1.1.1.1.8.2 tls
5 1.1.1.1.8.2 tls GCC is free software; you can redistribute it and/or modify
6 1.1.1.1.8.2 tls it under the terms of the GNU General Public License as published by
7 1.1.1.1.8.2 tls the Free Software Foundation; either version 3, or (at your option)
8 1.1.1.1.8.2 tls any later version.
9 1.1.1.1.8.2 tls
10 1.1.1.1.8.2 tls GCC is distributed in the hope that it will be useful,
11 1.1.1.1.8.2 tls but WITHOUT ANY WARRANTY; without even the implied warranty of
12 1.1.1.1.8.2 tls MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 1.1.1.1.8.2 tls GNU General Public License for more details.
14 1.1.1.1.8.2 tls
15 1.1.1.1.8.2 tls Under Section 7 of GPL version 3, you are granted additional
16 1.1.1.1.8.2 tls permissions described in the GCC Runtime Library Exception, version
17 1.1.1.1.8.2 tls 3.1, as published by the Free Software Foundation.
18 1.1.1.1.8.2 tls
19 1.1.1.1.8.2 tls You should have received a copy of the GNU General Public License and
20 1.1.1.1.8.2 tls a copy of the GCC Runtime Library Exception along with this program;
21 1.1.1.1.8.2 tls see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
22 1.1.1.1.8.2 tls <http://www.gnu.org/licenses/>. */
23 1.1.1.1.8.2 tls
24 1.1.1.1.8.2 tls #ifndef _X86INTRIN_H_INCLUDED
25 1.1.1.1.8.2 tls # error "Never use <xopintrin.h> directly; include <x86intrin.h> instead."
26 1.1.1.1.8.2 tls #endif
27 1.1.1.1.8.2 tls
28 1.1.1.1.8.2 tls #ifndef _XOPMMINTRIN_H_INCLUDED
29 1.1.1.1.8.2 tls #define _XOPMMINTRIN_H_INCLUDED
30 1.1.1.1.8.2 tls
31 1.1.1.1.8.2 tls #ifndef __XOP__
32 1.1.1.1.8.2 tls # error "XOP instruction set not enabled"
33 1.1.1.1.8.2 tls #else
34 1.1.1.1.8.2 tls
35 1.1.1.1.8.2 tls #include <fma4intrin.h>
36 1.1.1.1.8.2 tls
37 1.1.1.1.8.2 tls /* Integer multiply/add intructions. */
38 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
39 1.1.1.1.8.2 tls _mm_maccs_epi16(__m128i __A, __m128i __B, __m128i __C)
40 1.1.1.1.8.2 tls {
41 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpmacssww ((__v8hi)__A,(__v8hi)__B, (__v8hi)__C);
42 1.1.1.1.8.2 tls }
43 1.1.1.1.8.2 tls
44 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
45 1.1.1.1.8.2 tls _mm_macc_epi16(__m128i __A, __m128i __B, __m128i __C)
46 1.1.1.1.8.2 tls {
47 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpmacsww ((__v8hi)__A, (__v8hi)__B, (__v8hi)__C);
48 1.1.1.1.8.2 tls }
49 1.1.1.1.8.2 tls
50 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
51 1.1.1.1.8.2 tls _mm_maccsd_epi16(__m128i __A, __m128i __B, __m128i __C)
52 1.1.1.1.8.2 tls {
53 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpmacsswd ((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
54 1.1.1.1.8.2 tls }
55 1.1.1.1.8.2 tls
56 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
57 1.1.1.1.8.2 tls _mm_maccd_epi16(__m128i __A, __m128i __B, __m128i __C)
58 1.1.1.1.8.2 tls {
59 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpmacswd ((__v8hi)__A, (__v8hi)__B, (__v4si)__C);
60 1.1.1.1.8.2 tls }
61 1.1.1.1.8.2 tls
62 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
63 1.1.1.1.8.2 tls _mm_maccs_epi32(__m128i __A, __m128i __B, __m128i __C)
64 1.1.1.1.8.2 tls {
65 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpmacssdd ((__v4si)__A, (__v4si)__B, (__v4si)__C);
66 1.1.1.1.8.2 tls }
67 1.1.1.1.8.2 tls
68 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
69 1.1.1.1.8.2 tls _mm_macc_epi32(__m128i __A, __m128i __B, __m128i __C)
70 1.1.1.1.8.2 tls {
71 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpmacsdd ((__v4si)__A, (__v4si)__B, (__v4si)__C);
72 1.1.1.1.8.2 tls }
73 1.1.1.1.8.2 tls
74 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
75 1.1.1.1.8.2 tls _mm_maccslo_epi32(__m128i __A, __m128i __B, __m128i __C)
76 1.1.1.1.8.2 tls {
77 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpmacssdql ((__v4si)__A, (__v4si)__B, (__v2di)__C);
78 1.1.1.1.8.2 tls }
79 1.1.1.1.8.2 tls
80 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
81 1.1.1.1.8.2 tls _mm_macclo_epi32(__m128i __A, __m128i __B, __m128i __C)
82 1.1.1.1.8.2 tls {
83 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpmacsdql ((__v4si)__A, (__v4si)__B, (__v2di)__C);
84 1.1.1.1.8.2 tls }
85 1.1.1.1.8.2 tls
86 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
87 1.1.1.1.8.2 tls _mm_maccshi_epi32(__m128i __A, __m128i __B, __m128i __C)
88 1.1.1.1.8.2 tls {
89 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpmacssdqh ((__v4si)__A, (__v4si)__B, (__v2di)__C);
90 1.1.1.1.8.2 tls }
91 1.1.1.1.8.2 tls
92 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
93 1.1.1.1.8.2 tls _mm_macchi_epi32(__m128i __A, __m128i __B, __m128i __C)
94 1.1.1.1.8.2 tls {
95 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpmacsdqh ((__v4si)__A, (__v4si)__B, (__v2di)__C);
96 1.1.1.1.8.2 tls }
97 1.1.1.1.8.2 tls
98 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
99 1.1.1.1.8.2 tls _mm_maddsd_epi16(__m128i __A, __m128i __B, __m128i __C)
100 1.1.1.1.8.2 tls {
101 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpmadcsswd ((__v8hi)__A,(__v8hi)__B,(__v4si)__C);
102 1.1.1.1.8.2 tls }
103 1.1.1.1.8.2 tls
104 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
105 1.1.1.1.8.2 tls _mm_maddd_epi16(__m128i __A, __m128i __B, __m128i __C)
106 1.1.1.1.8.2 tls {
107 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpmadcswd ((__v8hi)__A,(__v8hi)__B,(__v4si)__C);
108 1.1.1.1.8.2 tls }
109 1.1.1.1.8.2 tls
110 1.1.1.1.8.2 tls /* Packed Integer Horizontal Add and Subtract */
111 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
112 1.1.1.1.8.2 tls _mm_haddw_epi8(__m128i __A)
113 1.1.1.1.8.2 tls {
114 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphaddbw ((__v16qi)__A);
115 1.1.1.1.8.2 tls }
116 1.1.1.1.8.2 tls
117 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
118 1.1.1.1.8.2 tls _mm_haddd_epi8(__m128i __A)
119 1.1.1.1.8.2 tls {
120 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphaddbd ((__v16qi)__A);
121 1.1.1.1.8.2 tls }
122 1.1.1.1.8.2 tls
123 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
124 1.1.1.1.8.2 tls _mm_haddq_epi8(__m128i __A)
125 1.1.1.1.8.2 tls {
126 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphaddbq ((__v16qi)__A);
127 1.1.1.1.8.2 tls }
128 1.1.1.1.8.2 tls
129 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
130 1.1.1.1.8.2 tls _mm_haddd_epi16(__m128i __A)
131 1.1.1.1.8.2 tls {
132 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphaddwd ((__v8hi)__A);
133 1.1.1.1.8.2 tls }
134 1.1.1.1.8.2 tls
135 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
136 1.1.1.1.8.2 tls _mm_haddq_epi16(__m128i __A)
137 1.1.1.1.8.2 tls {
138 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphaddwq ((__v8hi)__A);
139 1.1.1.1.8.2 tls }
140 1.1.1.1.8.2 tls
141 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
142 1.1.1.1.8.2 tls _mm_haddq_epi32(__m128i __A)
143 1.1.1.1.8.2 tls {
144 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphadddq ((__v4si)__A);
145 1.1.1.1.8.2 tls }
146 1.1.1.1.8.2 tls
147 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
148 1.1.1.1.8.2 tls _mm_haddw_epu8(__m128i __A)
149 1.1.1.1.8.2 tls {
150 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphaddubw ((__v16qi)__A);
151 1.1.1.1.8.2 tls }
152 1.1.1.1.8.2 tls
153 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
154 1.1.1.1.8.2 tls _mm_haddd_epu8(__m128i __A)
155 1.1.1.1.8.2 tls {
156 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphaddubd ((__v16qi)__A);
157 1.1.1.1.8.2 tls }
158 1.1.1.1.8.2 tls
159 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
160 1.1.1.1.8.2 tls _mm_haddq_epu8(__m128i __A)
161 1.1.1.1.8.2 tls {
162 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphaddubq ((__v16qi)__A);
163 1.1.1.1.8.2 tls }
164 1.1.1.1.8.2 tls
165 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
166 1.1.1.1.8.2 tls _mm_haddd_epu16(__m128i __A)
167 1.1.1.1.8.2 tls {
168 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphadduwd ((__v8hi)__A);
169 1.1.1.1.8.2 tls }
170 1.1.1.1.8.2 tls
171 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
172 1.1.1.1.8.2 tls _mm_haddq_epu16(__m128i __A)
173 1.1.1.1.8.2 tls {
174 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphadduwq ((__v8hi)__A);
175 1.1.1.1.8.2 tls }
176 1.1.1.1.8.2 tls
177 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
178 1.1.1.1.8.2 tls _mm_haddq_epu32(__m128i __A)
179 1.1.1.1.8.2 tls {
180 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphaddudq ((__v4si)__A);
181 1.1.1.1.8.2 tls }
182 1.1.1.1.8.2 tls
183 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
184 1.1.1.1.8.2 tls _mm_hsubw_epi8(__m128i __A)
185 1.1.1.1.8.2 tls {
186 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphsubbw ((__v16qi)__A);
187 1.1.1.1.8.2 tls }
188 1.1.1.1.8.2 tls
189 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
190 1.1.1.1.8.2 tls _mm_hsubd_epi16(__m128i __A)
191 1.1.1.1.8.2 tls {
192 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphsubwd ((__v8hi)__A);
193 1.1.1.1.8.2 tls }
194 1.1.1.1.8.2 tls
195 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
196 1.1.1.1.8.2 tls _mm_hsubq_epi32(__m128i __A)
197 1.1.1.1.8.2 tls {
198 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vphsubdq ((__v4si)__A);
199 1.1.1.1.8.2 tls }
200 1.1.1.1.8.2 tls
201 1.1.1.1.8.2 tls /* Vector conditional move and permute */
202 1.1.1.1.8.2 tls
203 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
204 1.1.1.1.8.2 tls _mm_cmov_si128(__m128i __A, __m128i __B, __m128i __C)
205 1.1.1.1.8.2 tls {
206 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcmov (__A, __B, __C);
207 1.1.1.1.8.2 tls }
208 1.1.1.1.8.2 tls
209 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
210 1.1.1.1.8.2 tls _mm_perm_epi8(__m128i __A, __m128i __B, __m128i __C)
211 1.1.1.1.8.2 tls {
212 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpperm ((__v16qi)__A, (__v16qi)__B, (__v16qi)__C);
213 1.1.1.1.8.2 tls }
214 1.1.1.1.8.2 tls
215 1.1.1.1.8.2 tls /* Packed Integer Rotates and Shifts
216 1.1.1.1.8.2 tls Rotates - Non-Immediate form */
217 1.1.1.1.8.2 tls
218 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
219 1.1.1.1.8.2 tls _mm_rot_epi8(__m128i __A, __m128i __B)
220 1.1.1.1.8.2 tls {
221 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vprotb ((__v16qi)__A, (__v16qi)__B);
222 1.1.1.1.8.2 tls }
223 1.1.1.1.8.2 tls
224 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
225 1.1.1.1.8.2 tls _mm_rot_epi16(__m128i __A, __m128i __B)
226 1.1.1.1.8.2 tls {
227 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vprotw ((__v8hi)__A, (__v8hi)__B);
228 1.1.1.1.8.2 tls }
229 1.1.1.1.8.2 tls
230 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
231 1.1.1.1.8.2 tls _mm_rot_epi32(__m128i __A, __m128i __B)
232 1.1.1.1.8.2 tls {
233 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vprotd ((__v4si)__A, (__v4si)__B);
234 1.1.1.1.8.2 tls }
235 1.1.1.1.8.2 tls
236 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
237 1.1.1.1.8.2 tls _mm_rot_epi64(__m128i __A, __m128i __B)
238 1.1.1.1.8.2 tls {
239 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vprotq ((__v2di)__A, (__v2di)__B);
240 1.1.1.1.8.2 tls }
241 1.1.1.1.8.2 tls
242 1.1.1.1.8.2 tls /* Rotates - Immediate form */
243 1.1.1.1.8.2 tls
244 1.1.1.1.8.2 tls #ifdef __OPTIMIZE__
245 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
246 1.1.1.1.8.2 tls _mm_roti_epi8(__m128i __A, const int __B)
247 1.1.1.1.8.2 tls {
248 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vprotbi ((__v16qi)__A, __B);
249 1.1.1.1.8.2 tls }
250 1.1.1.1.8.2 tls
251 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
252 1.1.1.1.8.2 tls _mm_roti_epi16(__m128i __A, const int __B)
253 1.1.1.1.8.2 tls {
254 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vprotwi ((__v8hi)__A, __B);
255 1.1.1.1.8.2 tls }
256 1.1.1.1.8.2 tls
257 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
258 1.1.1.1.8.2 tls _mm_roti_epi32(__m128i __A, const int __B)
259 1.1.1.1.8.2 tls {
260 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vprotdi ((__v4si)__A, __B);
261 1.1.1.1.8.2 tls }
262 1.1.1.1.8.2 tls
263 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
264 1.1.1.1.8.2 tls _mm_roti_epi64(__m128i __A, const int __B)
265 1.1.1.1.8.2 tls {
266 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vprotqi ((__v2di)__A, __B);
267 1.1.1.1.8.2 tls }
268 1.1.1.1.8.2 tls #else
269 1.1.1.1.8.2 tls #define _mm_roti_epi8(A, N) \
270 1.1.1.1.8.2 tls ((__m128i) __builtin_ia32_vprotbi ((__v16qi)(__m128i)(A), (int)(N)))
271 1.1.1.1.8.2 tls #define _mm_roti_epi16(A, N) \
272 1.1.1.1.8.2 tls ((__m128i) __builtin_ia32_vprotwi ((__v8hi)(__m128i)(A), (int)(N)))
273 1.1.1.1.8.2 tls #define _mm_roti_epi32(A, N) \
274 1.1.1.1.8.2 tls ((__m128i) __builtin_ia32_vprotdi ((__v4si)(__m128i)(A), (int)(N)))
275 1.1.1.1.8.2 tls #define _mm_roti_epi64(A, N) \
276 1.1.1.1.8.2 tls ((__m128i) __builtin_ia32_vprotqi ((__v2di)(__m128i)(A), (int)(N)))
277 1.1.1.1.8.2 tls #endif
278 1.1.1.1.8.2 tls
279 1.1.1.1.8.2 tls /* Shifts */
280 1.1.1.1.8.2 tls
281 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
282 1.1.1.1.8.2 tls _mm_shl_epi8(__m128i __A, __m128i __B)
283 1.1.1.1.8.2 tls {
284 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpshlb ((__v16qi)__A, (__v16qi)__B);
285 1.1.1.1.8.2 tls }
286 1.1.1.1.8.2 tls
287 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
288 1.1.1.1.8.2 tls _mm_shl_epi16(__m128i __A, __m128i __B)
289 1.1.1.1.8.2 tls {
290 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpshlw ((__v8hi)__A, (__v8hi)__B);
291 1.1.1.1.8.2 tls }
292 1.1.1.1.8.2 tls
293 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
294 1.1.1.1.8.2 tls _mm_shl_epi32(__m128i __A, __m128i __B)
295 1.1.1.1.8.2 tls {
296 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpshld ((__v4si)__A, (__v4si)__B);
297 1.1.1.1.8.2 tls }
298 1.1.1.1.8.2 tls
299 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
300 1.1.1.1.8.2 tls _mm_shl_epi64(__m128i __A, __m128i __B)
301 1.1.1.1.8.2 tls {
302 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpshlq ((__v2di)__A, (__v2di)__B);
303 1.1.1.1.8.2 tls }
304 1.1.1.1.8.2 tls
305 1.1.1.1.8.2 tls
306 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
307 1.1.1.1.8.2 tls _mm_sha_epi8(__m128i __A, __m128i __B)
308 1.1.1.1.8.2 tls {
309 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpshab ((__v16qi)__A, (__v16qi)__B);
310 1.1.1.1.8.2 tls }
311 1.1.1.1.8.2 tls
312 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
313 1.1.1.1.8.2 tls _mm_sha_epi16(__m128i __A, __m128i __B)
314 1.1.1.1.8.2 tls {
315 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpshaw ((__v8hi)__A, (__v8hi)__B);
316 1.1.1.1.8.2 tls }
317 1.1.1.1.8.2 tls
318 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
319 1.1.1.1.8.2 tls _mm_sha_epi32(__m128i __A, __m128i __B)
320 1.1.1.1.8.2 tls {
321 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpshad ((__v4si)__A, (__v4si)__B);
322 1.1.1.1.8.2 tls }
323 1.1.1.1.8.2 tls
324 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
325 1.1.1.1.8.2 tls _mm_sha_epi64(__m128i __A, __m128i __B)
326 1.1.1.1.8.2 tls {
327 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpshaq ((__v2di)__A, (__v2di)__B);
328 1.1.1.1.8.2 tls }
329 1.1.1.1.8.2 tls
330 1.1.1.1.8.2 tls /* Compare and Predicate Generation
331 1.1.1.1.8.2 tls pcom (integer, unsinged bytes) */
332 1.1.1.1.8.2 tls
333 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
334 1.1.1.1.8.2 tls _mm_comlt_epu8(__m128i __A, __m128i __B)
335 1.1.1.1.8.2 tls {
336 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomltub ((__v16qi)__A, (__v16qi)__B);
337 1.1.1.1.8.2 tls }
338 1.1.1.1.8.2 tls
339 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
340 1.1.1.1.8.2 tls _mm_comle_epu8(__m128i __A, __m128i __B)
341 1.1.1.1.8.2 tls {
342 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomleub ((__v16qi)__A, (__v16qi)__B);
343 1.1.1.1.8.2 tls }
344 1.1.1.1.8.2 tls
345 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
346 1.1.1.1.8.2 tls _mm_comgt_epu8(__m128i __A, __m128i __B)
347 1.1.1.1.8.2 tls {
348 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgtub ((__v16qi)__A, (__v16qi)__B);
349 1.1.1.1.8.2 tls }
350 1.1.1.1.8.2 tls
351 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
352 1.1.1.1.8.2 tls _mm_comge_epu8(__m128i __A, __m128i __B)
353 1.1.1.1.8.2 tls {
354 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgeub ((__v16qi)__A, (__v16qi)__B);
355 1.1.1.1.8.2 tls }
356 1.1.1.1.8.2 tls
357 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
358 1.1.1.1.8.2 tls _mm_comeq_epu8(__m128i __A, __m128i __B)
359 1.1.1.1.8.2 tls {
360 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomequb ((__v16qi)__A, (__v16qi)__B);
361 1.1.1.1.8.2 tls }
362 1.1.1.1.8.2 tls
363 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
364 1.1.1.1.8.2 tls _mm_comneq_epu8(__m128i __A, __m128i __B)
365 1.1.1.1.8.2 tls {
366 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomnequb ((__v16qi)__A, (__v16qi)__B);
367 1.1.1.1.8.2 tls }
368 1.1.1.1.8.2 tls
369 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
370 1.1.1.1.8.2 tls _mm_comfalse_epu8(__m128i __A, __m128i __B)
371 1.1.1.1.8.2 tls {
372 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomfalseub ((__v16qi)__A, (__v16qi)__B);
373 1.1.1.1.8.2 tls }
374 1.1.1.1.8.2 tls
375 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
376 1.1.1.1.8.2 tls _mm_comtrue_epu8(__m128i __A, __m128i __B)
377 1.1.1.1.8.2 tls {
378 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomtrueub ((__v16qi)__A, (__v16qi)__B);
379 1.1.1.1.8.2 tls }
380 1.1.1.1.8.2 tls
381 1.1.1.1.8.2 tls /*pcom (integer, unsinged words) */
382 1.1.1.1.8.2 tls
383 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
384 1.1.1.1.8.2 tls _mm_comlt_epu16(__m128i __A, __m128i __B)
385 1.1.1.1.8.2 tls {
386 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomltuw ((__v8hi)__A, (__v8hi)__B);
387 1.1.1.1.8.2 tls }
388 1.1.1.1.8.2 tls
389 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
390 1.1.1.1.8.2 tls _mm_comle_epu16(__m128i __A, __m128i __B)
391 1.1.1.1.8.2 tls {
392 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomleuw ((__v8hi)__A, (__v8hi)__B);
393 1.1.1.1.8.2 tls }
394 1.1.1.1.8.2 tls
395 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
396 1.1.1.1.8.2 tls _mm_comgt_epu16(__m128i __A, __m128i __B)
397 1.1.1.1.8.2 tls {
398 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgtuw ((__v8hi)__A, (__v8hi)__B);
399 1.1.1.1.8.2 tls }
400 1.1.1.1.8.2 tls
401 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
402 1.1.1.1.8.2 tls _mm_comge_epu16(__m128i __A, __m128i __B)
403 1.1.1.1.8.2 tls {
404 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgeuw ((__v8hi)__A, (__v8hi)__B);
405 1.1.1.1.8.2 tls }
406 1.1.1.1.8.2 tls
407 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
408 1.1.1.1.8.2 tls _mm_comeq_epu16(__m128i __A, __m128i __B)
409 1.1.1.1.8.2 tls {
410 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomequw ((__v8hi)__A, (__v8hi)__B);
411 1.1.1.1.8.2 tls }
412 1.1.1.1.8.2 tls
413 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
414 1.1.1.1.8.2 tls _mm_comneq_epu16(__m128i __A, __m128i __B)
415 1.1.1.1.8.2 tls {
416 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomnequw ((__v8hi)__A, (__v8hi)__B);
417 1.1.1.1.8.2 tls }
418 1.1.1.1.8.2 tls
419 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
420 1.1.1.1.8.2 tls _mm_comfalse_epu16(__m128i __A, __m128i __B)
421 1.1.1.1.8.2 tls {
422 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomfalseuw ((__v8hi)__A, (__v8hi)__B);
423 1.1.1.1.8.2 tls }
424 1.1.1.1.8.2 tls
425 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
426 1.1.1.1.8.2 tls _mm_comtrue_epu16(__m128i __A, __m128i __B)
427 1.1.1.1.8.2 tls {
428 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomtrueuw ((__v8hi)__A, (__v8hi)__B);
429 1.1.1.1.8.2 tls }
430 1.1.1.1.8.2 tls
431 1.1.1.1.8.2 tls /*pcom (integer, unsinged double words) */
432 1.1.1.1.8.2 tls
433 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
434 1.1.1.1.8.2 tls _mm_comlt_epu32(__m128i __A, __m128i __B)
435 1.1.1.1.8.2 tls {
436 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomltud ((__v4si)__A, (__v4si)__B);
437 1.1.1.1.8.2 tls }
438 1.1.1.1.8.2 tls
439 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
440 1.1.1.1.8.2 tls _mm_comle_epu32(__m128i __A, __m128i __B)
441 1.1.1.1.8.2 tls {
442 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomleud ((__v4si)__A, (__v4si)__B);
443 1.1.1.1.8.2 tls }
444 1.1.1.1.8.2 tls
445 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
446 1.1.1.1.8.2 tls _mm_comgt_epu32(__m128i __A, __m128i __B)
447 1.1.1.1.8.2 tls {
448 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgtud ((__v4si)__A, (__v4si)__B);
449 1.1.1.1.8.2 tls }
450 1.1.1.1.8.2 tls
451 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
452 1.1.1.1.8.2 tls _mm_comge_epu32(__m128i __A, __m128i __B)
453 1.1.1.1.8.2 tls {
454 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgeud ((__v4si)__A, (__v4si)__B);
455 1.1.1.1.8.2 tls }
456 1.1.1.1.8.2 tls
457 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
458 1.1.1.1.8.2 tls _mm_comeq_epu32(__m128i __A, __m128i __B)
459 1.1.1.1.8.2 tls {
460 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomequd ((__v4si)__A, (__v4si)__B);
461 1.1.1.1.8.2 tls }
462 1.1.1.1.8.2 tls
463 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
464 1.1.1.1.8.2 tls _mm_comneq_epu32(__m128i __A, __m128i __B)
465 1.1.1.1.8.2 tls {
466 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomnequd ((__v4si)__A, (__v4si)__B);
467 1.1.1.1.8.2 tls }
468 1.1.1.1.8.2 tls
469 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
470 1.1.1.1.8.2 tls _mm_comfalse_epu32(__m128i __A, __m128i __B)
471 1.1.1.1.8.2 tls {
472 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomfalseud ((__v4si)__A, (__v4si)__B);
473 1.1.1.1.8.2 tls }
474 1.1.1.1.8.2 tls
475 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
476 1.1.1.1.8.2 tls _mm_comtrue_epu32(__m128i __A, __m128i __B)
477 1.1.1.1.8.2 tls {
478 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomtrueud ((__v4si)__A, (__v4si)__B);
479 1.1.1.1.8.2 tls }
480 1.1.1.1.8.2 tls
481 1.1.1.1.8.2 tls /*pcom (integer, unsinged quad words) */
482 1.1.1.1.8.2 tls
483 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
484 1.1.1.1.8.2 tls _mm_comlt_epu64(__m128i __A, __m128i __B)
485 1.1.1.1.8.2 tls {
486 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomltuq ((__v2di)__A, (__v2di)__B);
487 1.1.1.1.8.2 tls }
488 1.1.1.1.8.2 tls
489 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
490 1.1.1.1.8.2 tls _mm_comle_epu64(__m128i __A, __m128i __B)
491 1.1.1.1.8.2 tls {
492 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomleuq ((__v2di)__A, (__v2di)__B);
493 1.1.1.1.8.2 tls }
494 1.1.1.1.8.2 tls
495 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
496 1.1.1.1.8.2 tls _mm_comgt_epu64(__m128i __A, __m128i __B)
497 1.1.1.1.8.2 tls {
498 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgtuq ((__v2di)__A, (__v2di)__B);
499 1.1.1.1.8.2 tls }
500 1.1.1.1.8.2 tls
501 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
502 1.1.1.1.8.2 tls _mm_comge_epu64(__m128i __A, __m128i __B)
503 1.1.1.1.8.2 tls {
504 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgeuq ((__v2di)__A, (__v2di)__B);
505 1.1.1.1.8.2 tls }
506 1.1.1.1.8.2 tls
507 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
508 1.1.1.1.8.2 tls _mm_comeq_epu64(__m128i __A, __m128i __B)
509 1.1.1.1.8.2 tls {
510 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomequq ((__v2di)__A, (__v2di)__B);
511 1.1.1.1.8.2 tls }
512 1.1.1.1.8.2 tls
513 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
514 1.1.1.1.8.2 tls _mm_comneq_epu64(__m128i __A, __m128i __B)
515 1.1.1.1.8.2 tls {
516 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomnequq ((__v2di)__A, (__v2di)__B);
517 1.1.1.1.8.2 tls }
518 1.1.1.1.8.2 tls
519 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
520 1.1.1.1.8.2 tls _mm_comfalse_epu64(__m128i __A, __m128i __B)
521 1.1.1.1.8.2 tls {
522 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomfalseuq ((__v2di)__A, (__v2di)__B);
523 1.1.1.1.8.2 tls }
524 1.1.1.1.8.2 tls
525 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
526 1.1.1.1.8.2 tls _mm_comtrue_epu64(__m128i __A, __m128i __B)
527 1.1.1.1.8.2 tls {
528 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomtrueuq ((__v2di)__A, (__v2di)__B);
529 1.1.1.1.8.2 tls }
530 1.1.1.1.8.2 tls
531 1.1.1.1.8.2 tls /*pcom (integer, signed bytes) */
532 1.1.1.1.8.2 tls
533 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
534 1.1.1.1.8.2 tls _mm_comlt_epi8(__m128i __A, __m128i __B)
535 1.1.1.1.8.2 tls {
536 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomltb ((__v16qi)__A, (__v16qi)__B);
537 1.1.1.1.8.2 tls }
538 1.1.1.1.8.2 tls
539 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
540 1.1.1.1.8.2 tls _mm_comle_epi8(__m128i __A, __m128i __B)
541 1.1.1.1.8.2 tls {
542 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomleb ((__v16qi)__A, (__v16qi)__B);
543 1.1.1.1.8.2 tls }
544 1.1.1.1.8.2 tls
545 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
546 1.1.1.1.8.2 tls _mm_comgt_epi8(__m128i __A, __m128i __B)
547 1.1.1.1.8.2 tls {
548 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgtb ((__v16qi)__A, (__v16qi)__B);
549 1.1.1.1.8.2 tls }
550 1.1.1.1.8.2 tls
551 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
552 1.1.1.1.8.2 tls _mm_comge_epi8(__m128i __A, __m128i __B)
553 1.1.1.1.8.2 tls {
554 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgeb ((__v16qi)__A, (__v16qi)__B);
555 1.1.1.1.8.2 tls }
556 1.1.1.1.8.2 tls
557 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
558 1.1.1.1.8.2 tls _mm_comeq_epi8(__m128i __A, __m128i __B)
559 1.1.1.1.8.2 tls {
560 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomeqb ((__v16qi)__A, (__v16qi)__B);
561 1.1.1.1.8.2 tls }
562 1.1.1.1.8.2 tls
563 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
564 1.1.1.1.8.2 tls _mm_comneq_epi8(__m128i __A, __m128i __B)
565 1.1.1.1.8.2 tls {
566 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomneqb ((__v16qi)__A, (__v16qi)__B);
567 1.1.1.1.8.2 tls }
568 1.1.1.1.8.2 tls
569 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
570 1.1.1.1.8.2 tls _mm_comfalse_epi8(__m128i __A, __m128i __B)
571 1.1.1.1.8.2 tls {
572 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomfalseb ((__v16qi)__A, (__v16qi)__B);
573 1.1.1.1.8.2 tls }
574 1.1.1.1.8.2 tls
575 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
576 1.1.1.1.8.2 tls _mm_comtrue_epi8(__m128i __A, __m128i __B)
577 1.1.1.1.8.2 tls {
578 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomtrueb ((__v16qi)__A, (__v16qi)__B);
579 1.1.1.1.8.2 tls }
580 1.1.1.1.8.2 tls
581 1.1.1.1.8.2 tls /*pcom (integer, signed words) */
582 1.1.1.1.8.2 tls
583 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
584 1.1.1.1.8.2 tls _mm_comlt_epi16(__m128i __A, __m128i __B)
585 1.1.1.1.8.2 tls {
586 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomltw ((__v8hi)__A, (__v8hi)__B);
587 1.1.1.1.8.2 tls }
588 1.1.1.1.8.2 tls
589 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
590 1.1.1.1.8.2 tls _mm_comle_epi16(__m128i __A, __m128i __B)
591 1.1.1.1.8.2 tls {
592 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomlew ((__v8hi)__A, (__v8hi)__B);
593 1.1.1.1.8.2 tls }
594 1.1.1.1.8.2 tls
595 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
596 1.1.1.1.8.2 tls _mm_comgt_epi16(__m128i __A, __m128i __B)
597 1.1.1.1.8.2 tls {
598 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgtw ((__v8hi)__A, (__v8hi)__B);
599 1.1.1.1.8.2 tls }
600 1.1.1.1.8.2 tls
601 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
602 1.1.1.1.8.2 tls _mm_comge_epi16(__m128i __A, __m128i __B)
603 1.1.1.1.8.2 tls {
604 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgew ((__v8hi)__A, (__v8hi)__B);
605 1.1.1.1.8.2 tls }
606 1.1.1.1.8.2 tls
607 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
608 1.1.1.1.8.2 tls _mm_comeq_epi16(__m128i __A, __m128i __B)
609 1.1.1.1.8.2 tls {
610 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomeqw ((__v8hi)__A, (__v8hi)__B);
611 1.1.1.1.8.2 tls }
612 1.1.1.1.8.2 tls
613 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
614 1.1.1.1.8.2 tls _mm_comneq_epi16(__m128i __A, __m128i __B)
615 1.1.1.1.8.2 tls {
616 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomneqw ((__v8hi)__A, (__v8hi)__B);
617 1.1.1.1.8.2 tls }
618 1.1.1.1.8.2 tls
619 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
620 1.1.1.1.8.2 tls _mm_comfalse_epi16(__m128i __A, __m128i __B)
621 1.1.1.1.8.2 tls {
622 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomfalsew ((__v8hi)__A, (__v8hi)__B);
623 1.1.1.1.8.2 tls }
624 1.1.1.1.8.2 tls
625 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
626 1.1.1.1.8.2 tls _mm_comtrue_epi16(__m128i __A, __m128i __B)
627 1.1.1.1.8.2 tls {
628 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomtruew ((__v8hi)__A, (__v8hi)__B);
629 1.1.1.1.8.2 tls }
630 1.1.1.1.8.2 tls
631 1.1.1.1.8.2 tls /*pcom (integer, signed double words) */
632 1.1.1.1.8.2 tls
633 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
634 1.1.1.1.8.2 tls _mm_comlt_epi32(__m128i __A, __m128i __B)
635 1.1.1.1.8.2 tls {
636 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomltd ((__v4si)__A, (__v4si)__B);
637 1.1.1.1.8.2 tls }
638 1.1.1.1.8.2 tls
639 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
640 1.1.1.1.8.2 tls _mm_comle_epi32(__m128i __A, __m128i __B)
641 1.1.1.1.8.2 tls {
642 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomled ((__v4si)__A, (__v4si)__B);
643 1.1.1.1.8.2 tls }
644 1.1.1.1.8.2 tls
645 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
646 1.1.1.1.8.2 tls _mm_comgt_epi32(__m128i __A, __m128i __B)
647 1.1.1.1.8.2 tls {
648 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgtd ((__v4si)__A, (__v4si)__B);
649 1.1.1.1.8.2 tls }
650 1.1.1.1.8.2 tls
651 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
652 1.1.1.1.8.2 tls _mm_comge_epi32(__m128i __A, __m128i __B)
653 1.1.1.1.8.2 tls {
654 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomged ((__v4si)__A, (__v4si)__B);
655 1.1.1.1.8.2 tls }
656 1.1.1.1.8.2 tls
657 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
658 1.1.1.1.8.2 tls _mm_comeq_epi32(__m128i __A, __m128i __B)
659 1.1.1.1.8.2 tls {
660 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomeqd ((__v4si)__A, (__v4si)__B);
661 1.1.1.1.8.2 tls }
662 1.1.1.1.8.2 tls
663 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
664 1.1.1.1.8.2 tls _mm_comneq_epi32(__m128i __A, __m128i __B)
665 1.1.1.1.8.2 tls {
666 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomneqd ((__v4si)__A, (__v4si)__B);
667 1.1.1.1.8.2 tls }
668 1.1.1.1.8.2 tls
669 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
670 1.1.1.1.8.2 tls _mm_comfalse_epi32(__m128i __A, __m128i __B)
671 1.1.1.1.8.2 tls {
672 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomfalsed ((__v4si)__A, (__v4si)__B);
673 1.1.1.1.8.2 tls }
674 1.1.1.1.8.2 tls
675 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
676 1.1.1.1.8.2 tls _mm_comtrue_epi32(__m128i __A, __m128i __B)
677 1.1.1.1.8.2 tls {
678 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomtrued ((__v4si)__A, (__v4si)__B);
679 1.1.1.1.8.2 tls }
680 1.1.1.1.8.2 tls
681 1.1.1.1.8.2 tls /*pcom (integer, signed quad words) */
682 1.1.1.1.8.2 tls
683 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
684 1.1.1.1.8.2 tls _mm_comlt_epi64(__m128i __A, __m128i __B)
685 1.1.1.1.8.2 tls {
686 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomltq ((__v2di)__A, (__v2di)__B);
687 1.1.1.1.8.2 tls }
688 1.1.1.1.8.2 tls
689 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
690 1.1.1.1.8.2 tls _mm_comle_epi64(__m128i __A, __m128i __B)
691 1.1.1.1.8.2 tls {
692 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomleq ((__v2di)__A, (__v2di)__B);
693 1.1.1.1.8.2 tls }
694 1.1.1.1.8.2 tls
695 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
696 1.1.1.1.8.2 tls _mm_comgt_epi64(__m128i __A, __m128i __B)
697 1.1.1.1.8.2 tls {
698 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgtq ((__v2di)__A, (__v2di)__B);
699 1.1.1.1.8.2 tls }
700 1.1.1.1.8.2 tls
701 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
702 1.1.1.1.8.2 tls _mm_comge_epi64(__m128i __A, __m128i __B)
703 1.1.1.1.8.2 tls {
704 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomgeq ((__v2di)__A, (__v2di)__B);
705 1.1.1.1.8.2 tls }
706 1.1.1.1.8.2 tls
707 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
708 1.1.1.1.8.2 tls _mm_comeq_epi64(__m128i __A, __m128i __B)
709 1.1.1.1.8.2 tls {
710 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomeqq ((__v2di)__A, (__v2di)__B);
711 1.1.1.1.8.2 tls }
712 1.1.1.1.8.2 tls
713 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
714 1.1.1.1.8.2 tls _mm_comneq_epi64(__m128i __A, __m128i __B)
715 1.1.1.1.8.2 tls {
716 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomneqq ((__v2di)__A, (__v2di)__B);
717 1.1.1.1.8.2 tls }
718 1.1.1.1.8.2 tls
719 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
720 1.1.1.1.8.2 tls _mm_comfalse_epi64(__m128i __A, __m128i __B)
721 1.1.1.1.8.2 tls {
722 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomfalseq ((__v2di)__A, (__v2di)__B);
723 1.1.1.1.8.2 tls }
724 1.1.1.1.8.2 tls
725 1.1.1.1.8.2 tls extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
726 1.1.1.1.8.2 tls _mm_comtrue_epi64(__m128i __A, __m128i __B)
727 1.1.1.1.8.2 tls {
728 1.1.1.1.8.2 tls return (__m128i) __builtin_ia32_vpcomtrueq ((__v2di)__A, (__v2di)__B);
729 1.1.1.1.8.2 tls }
730 1.1.1.1.8.2 tls
731 1.1.1.1.8.2 tls /* FRCZ */
732 1.1.1.1.8.2 tls
733 1.1.1.1.8.2 tls extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
734 1.1.1.1.8.2 tls _mm_frcz_ps (__m128 __A)
735 1.1.1.1.8.2 tls {
736 1.1.1.1.8.2 tls return (__m128) __builtin_ia32_vfrczps ((__v4sf)__A);
737 1.1.1.1.8.2 tls }
738 1.1.1.1.8.2 tls
739 1.1.1.1.8.2 tls extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
740 1.1.1.1.8.2 tls _mm_frcz_pd (__m128d __A)
741 1.1.1.1.8.2 tls {
742 1.1.1.1.8.2 tls return (__m128d) __builtin_ia32_vfrczpd ((__v2df)__A);
743 1.1.1.1.8.2 tls }
744 1.1.1.1.8.2 tls
745 1.1.1.1.8.2 tls extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
746 1.1.1.1.8.2 tls _mm_frcz_ss (__m128 __A, __m128 __B)
747 1.1.1.1.8.2 tls {
748 1.1.1.1.8.2 tls return (__m128) __builtin_ia32_vfrczss ((__v4sf)__A, (__v4sf)__B);
749 1.1.1.1.8.2 tls }
750 1.1.1.1.8.2 tls
751 1.1.1.1.8.2 tls extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
752 1.1.1.1.8.2 tls _mm_frcz_sd (__m128d __A, __m128d __B)
753 1.1.1.1.8.2 tls {
754 1.1.1.1.8.2 tls return (__m128d) __builtin_ia32_vfrczsd ((__v2df)__A, (__v2df)__B);
755 1.1.1.1.8.2 tls }
756 1.1.1.1.8.2 tls
757 1.1.1.1.8.2 tls extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
758 1.1.1.1.8.2 tls _mm256_frcz_ps (__m256 __A)
759 1.1.1.1.8.2 tls {
760 1.1.1.1.8.2 tls return (__m256) __builtin_ia32_vfrczps256 ((__v8sf)__A);
761 1.1.1.1.8.2 tls }
762 1.1.1.1.8.2 tls
763 1.1.1.1.8.2 tls extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
764 1.1.1.1.8.2 tls _mm256_frcz_pd (__m256d __A)
765 1.1.1.1.8.2 tls {
766 1.1.1.1.8.2 tls return (__m256d) __builtin_ia32_vfrczpd256 ((__v4df)__A);
767 1.1.1.1.8.2 tls }
768 1.1.1.1.8.2 tls
769 1.1.1.1.8.2 tls /* PERMIL2 */
770 1.1.1.1.8.2 tls
771 1.1.1.1.8.2 tls #ifdef __OPTIMIZE__
772 1.1.1.1.8.2 tls extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
773 1.1.1.1.8.2 tls _mm_permute2_pd (__m128d __X, __m128d __Y, __m128i __C, const int __I)
774 1.1.1.1.8.2 tls {
775 1.1.1.1.8.2 tls return (__m128d) __builtin_ia32_vpermil2pd ((__v2df)__X,
776 1.1.1.1.8.2 tls (__v2df)__Y,
777 1.1.1.1.8.2 tls (__v2di)__C,
778 1.1.1.1.8.2 tls __I);
779 1.1.1.1.8.2 tls }
780 1.1.1.1.8.2 tls
781 1.1.1.1.8.2 tls extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
782 1.1.1.1.8.2 tls _mm256_permute2_pd (__m256d __X, __m256d __Y, __m256i __C, const int __I)
783 1.1.1.1.8.2 tls {
784 1.1.1.1.8.2 tls return (__m256d) __builtin_ia32_vpermil2pd256 ((__v4df)__X,
785 1.1.1.1.8.2 tls (__v4df)__Y,
786 1.1.1.1.8.2 tls (__v4di)__C,
787 1.1.1.1.8.2 tls __I);
788 1.1.1.1.8.2 tls }
789 1.1.1.1.8.2 tls
790 1.1.1.1.8.2 tls extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
791 1.1.1.1.8.2 tls _mm_permute2_ps (__m128 __X, __m128 __Y, __m128i __C, const int __I)
792 1.1.1.1.8.2 tls {
793 1.1.1.1.8.2 tls return (__m128) __builtin_ia32_vpermil2ps ((__v4sf)__X,
794 1.1.1.1.8.2 tls (__v4sf)__Y,
795 1.1.1.1.8.2 tls (__v4si)__C,
796 1.1.1.1.8.2 tls __I);
797 1.1.1.1.8.2 tls }
798 1.1.1.1.8.2 tls
799 1.1.1.1.8.2 tls extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
800 1.1.1.1.8.2 tls _mm256_permute2_ps (__m256 __X, __m256 __Y, __m256i __C, const int __I)
801 1.1.1.1.8.2 tls {
802 1.1.1.1.8.2 tls return (__m256) __builtin_ia32_vpermil2ps256 ((__v8sf)__X,
803 1.1.1.1.8.2 tls (__v8sf)__Y,
804 1.1.1.1.8.2 tls (__v8si)__C,
805 1.1.1.1.8.2 tls __I);
806 1.1.1.1.8.2 tls }
807 1.1.1.1.8.2 tls #else
808 1.1.1.1.8.2 tls #define _mm_permute2_pd(X, Y, C, I) \
809 1.1.1.1.8.2 tls ((__m128d) __builtin_ia32_vpermil2pd ((__v2df)(__m128d)(X), \
810 1.1.1.1.8.2 tls (__v2df)(__m128d)(Y), \
811 1.1.1.1.8.2 tls (__v2di)(__m128d)(C), \
812 1.1.1.1.8.2 tls (int)(I)))
813 1.1.1.1.8.2 tls
814 1.1.1.1.8.2 tls #define _mm256_permute2_pd(X, Y, C, I) \
815 1.1.1.1.8.2 tls ((__m256d) __builtin_ia32_vpermil2pd256 ((__v4df)(__m256d)(X), \
816 1.1.1.1.8.2 tls (__v4df)(__m256d)(Y), \
817 1.1.1.1.8.2 tls (__v4di)(__m256d)(C), \
818 1.1.1.1.8.2 tls (int)(I)))
819 1.1.1.1.8.2 tls
820 1.1.1.1.8.2 tls #define _mm_permute2_ps(X, Y, C, I) \
821 1.1.1.1.8.2 tls ((__m128) __builtin_ia32_vpermil2ps ((__v4sf)(__m128)(X), \
822 1.1.1.1.8.2 tls (__v4sf)(__m128)(Y), \
823 1.1.1.1.8.2 tls (__v4si)(__m128)(C), \
824 1.1.1.1.8.2 tls (int)(I)))
825 1.1.1.1.8.2 tls
826 1.1.1.1.8.2 tls #define _mm256_permute2_ps(X, Y, C, I) \
827 1.1.1.1.8.2 tls ((__m256) __builtin_ia32_vpermil2ps256 ((__v8sf)(__m256)(X), \
828 1.1.1.1.8.2 tls (__v8sf)(__m256)(Y), \
829 1.1.1.1.8.2 tls (__v8si)(__m256)(C), \
830 1.1.1.1.8.2 tls (int)(I)))
831 1.1.1.1.8.2 tls #endif /* __OPTIMIZE__ */
832 1.1.1.1.8.2 tls
833 1.1.1.1.8.2 tls #endif /* __XOP__ */
834 1.1.1.1.8.2 tls
835 1.1.1.1.8.2 tls #endif /* _XOPMMINTRIN_H_INCLUDED */
836