]> AND Private Git Repository - these_gilles.git/blob - DOCS/paper_snake_gpu/SNAKE_NO_SSE/emmintrin.h.gcov
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
modif finale lnivs + keywords
[these_gilles.git] / DOCS / paper_snake_gpu / SNAKE_NO_SSE / emmintrin.h.gcov
1         -:    0:Source:/cm/shared/apps/gcc/4.3.4/lib/gcc/x86_64-unknown-linux-gnu/4.3.4/include/emmintrin.h
2         -:    0:Programs:2
3         -:    1:/* Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
4         -:    2:
5         -:    3:   This file is part of GCC.
6         -:    4:
7         -:    5:   GCC is free software; you can redistribute it and/or modify
8         -:    6:   it under the terms of the GNU General Public License as published by
9         -:    7:   the Free Software Foundation; either version 2, or (at your option)
10         -:    8:   any later version.
11         -:    9:
12         -:   10:   GCC is distributed in the hope that it will be useful,
13         -:   11:   but WITHOUT ANY WARRANTY; without even the implied warranty of
14         -:   12:   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15         -:   13:   GNU General Public License for more details.
16         -:   14:
17         -:   15:   You should have received a copy of the GNU General Public License
18         -:   16:   along with GCC; see the file COPYING.  If not, write to
19         -:   17:   the Free Software Foundation, 51 Franklin Street, Fifth Floor,
20         -:   18:   Boston, MA 02110-1301, USA.  */
21         -:   19:
22         -:   20:/* As a special exception, if you include this header file into source
23         -:   21:   files compiled by GCC, this header file does not by itself cause
24         -:   22:   the resulting executable to be covered by the GNU General Public
25         -:   23:   License.  This exception does not however invalidate any other
26         -:   24:   reasons why the executable file might be covered by the GNU General
27         -:   25:   Public License.  */
28         -:   26:
29         -:   27:/* Implemented from the specification included in the Intel C++ Compiler
30         -:   28:   User Guide and Reference, version 9.0.  */
31         -:   29:
32         -:   30:#ifndef _EMMINTRIN_H_INCLUDED
33         -:   31:#define _EMMINTRIN_H_INCLUDED
34         -:   32:
35         -:   33:#ifndef __SSE2__
36         -:   34:# error "SSE2 instruction set not enabled"
37         -:   35:#else
38         -:   36:
39         -:   37:/* We need definitions from the SSE header files*/
40         -:   38:#include <xmmintrin.h>
41         -:   39:
42         -:   40:/* SSE2 */
43         -:   41:typedef double __v2df __attribute__ ((__vector_size__ (16)));
44         -:   42:typedef long long __v2di __attribute__ ((__vector_size__ (16)));
45         -:   43:typedef int __v4si __attribute__ ((__vector_size__ (16)));
46         -:   44:typedef short __v8hi __attribute__ ((__vector_size__ (16)));
47         -:   45:typedef char __v16qi __attribute__ ((__vector_size__ (16)));
48         -:   46:
49         -:   47:/* The Intel API is flexible enough that we must allow aliasing with other
50         -:   48:   vector types, and their scalar components.  */
51         -:   49:typedef long long __m128i __attribute__ ((__vector_size__ (16), __may_alias__));
52         -:   50:typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));
53         -:   51:
54         -:   52:/* Create a selector for use with the SHUFPD instruction.  */
55         -:   53:#define _MM_SHUFFLE2(fp1,fp0) \
56         -:   54: (((fp1) << 1) | (fp0))
57         -:   55:
58         -:   56:/* Create a vector with element 0 as F and the rest zero.  */
59         -:   57:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
60         -:   58:_mm_set_sd (double __F)
61         -:   59:{
62         -:   60:  return __extension__ (__m128d){ __F, 0.0 };
63         -:   61:}
64         -:   62:
65         -:   63:/* Create a vector with both elements equal to F.  */
66         -:   64:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
67         -:   65:_mm_set1_pd (double __F)
68         -:   66:{
69         -:   67:  return __extension__ (__m128d){ __F, __F };
70         -:   68:}
71         -:   69:
72         -:   70:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
73         -:   71:_mm_set_pd1 (double __F)
74         -:   72:{
75         -:   73:  return _mm_set1_pd (__F);
76         -:   74:}
77         -:   75:
78         -:   76:/* Create a vector with the lower value X and upper value W.  */
79         -:   77:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
80         -:   78:_mm_set_pd (double __W, double __X)
81         -:   79:{
82         -:   80:  return __extension__ (__m128d){ __X, __W };
83         -:   81:}
84         -:   82:
85         -:   83:/* Create a vector with the lower value W and upper value X.  */
86         -:   84:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
87         -:   85:_mm_setr_pd (double __W, double __X)
88         -:   86:{
89         -:   87:  return __extension__ (__m128d){ __W, __X };
90         -:   88:}
91         -:   89:
92         -:   90:/* Create a vector of zeros.  */
93         -:   91:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
94         -:   92:_mm_setzero_pd (void)
95         -:   93:{
96         -:   94:  return __extension__ (__m128d){ 0.0, 0.0 };
97         -:   95:}
98         -:   96:
99         -:   97:/* Sets the low DPFP value of A from the low value of B.  */
100         -:   98:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
101         -:   99:_mm_move_sd (__m128d __A, __m128d __B)
102         -:  100:{
103         -:  101:  return (__m128d) __builtin_ia32_movsd ((__v2df)__A, (__v2df)__B);
104         -:  102:}
105         -:  103:
106         -:  104:/* Load two DPFP values from P.  The address must be 16-byte aligned.  */
107         -:  105:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
108         -:  106:_mm_load_pd (double const *__P)
109         -:  107:{
110         -:  108:  return *(__m128d *)__P;
111         -:  109:}
112         -:  110:
113         -:  111:/* Load two DPFP values from P.  The address need not be 16-byte aligned.  */
114         -:  112:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
115         -:  113:_mm_loadu_pd (double const *__P)
116         -:  114:{
117         -:  115:  return __builtin_ia32_loadupd (__P);
118         -:  116:}
119         -:  117:
120         -:  118:/* Create a vector with all two elements equal to *P.  */
121         -:  119:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
122         -:  120:_mm_load1_pd (double const *__P)
123         -:  121:{
124         -:  122:  return _mm_set1_pd (*__P);
125         -:  123:}
126         -:  124:
127         -:  125:/* Create a vector with element 0 as *P and the rest zero.  */
128         -:  126:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
129         -:  127:_mm_load_sd (double const *__P)
130         -:  128:{
131         -:  129:  return _mm_set_sd (*__P);
132         -:  130:}
133         -:  131:
134         -:  132:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
135         -:  133:_mm_load_pd1 (double const *__P)
136         -:  134:{
137         -:  135:  return _mm_load1_pd (__P);
138         -:  136:}
139         -:  137:
140         -:  138:/* Load two DPFP values in reverse order.  The address must be aligned.  */
141         -:  139:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
142         -:  140:_mm_loadr_pd (double const *__P)
143         -:  141:{
144         -:  142:  __m128d __tmp = _mm_load_pd (__P);
145         -:  143:  return __builtin_ia32_shufpd (__tmp, __tmp, _MM_SHUFFLE2 (0,1));
146         -:  144:}
147         -:  145:
148         -:  146:/* Store two DPFP values.  The address must be 16-byte aligned.  */
149         -:  147:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
150         -:  148:_mm_store_pd (double *__P, __m128d __A)
151         -:  149:{
152         -:  150:  *(__m128d *)__P = __A;
153         -:  151:}
154         -:  152:
155         -:  153:/* Store two DPFP values.  The address need not be 16-byte aligned.  */
156         -:  154:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
157         -:  155:_mm_storeu_pd (double *__P, __m128d __A)
158         -:  156:{
159         -:  157:  __builtin_ia32_storeupd (__P, __A);
160         -:  158:}
161         -:  159:
162         -:  160:/* Stores the lower DPFP value.  */
163         -:  161:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
164         -:  162:_mm_store_sd (double *__P, __m128d __A)
165         -:  163:{
166         -:  164:  *__P = __builtin_ia32_vec_ext_v2df (__A, 0);
167         -:  165:}
168         -:  166:
169         -:  167:extern __inline double __attribute__((__gnu_inline__, __always_inline__, __artificial__))
170         -:  168:_mm_cvtsd_f64 (__m128d __A)
171         -:  169:{
172         -:  170:  return __builtin_ia32_vec_ext_v2df (__A, 0);
173         -:  171:}
174         -:  172:
175         -:  173:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
176         -:  174:_mm_storel_pd (double *__P, __m128d __A)
177         -:  175:{
178         -:  176:  _mm_store_sd (__P, __A);
179         -:  177:}
180         -:  178:
181         -:  179:/* Stores the upper DPFP value.  */
182         -:  180:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
183         -:  181:_mm_storeh_pd (double *__P, __m128d __A)
184         -:  182:{
185         -:  183:  *__P = __builtin_ia32_vec_ext_v2df (__A, 1);
186         -:  184:}
187         -:  185:
188         -:  186:/* Store the lower DPFP value across two words.
189         -:  187:   The address must be 16-byte aligned.  */
190         -:  188:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
191         -:  189:_mm_store1_pd (double *__P, __m128d __A)
192         -:  190:{
193         -:  191:  _mm_store_pd (__P, __builtin_ia32_shufpd (__A, __A, _MM_SHUFFLE2 (0,0)));
194         -:  192:}
195         -:  193:
196         -:  194:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
197         -:  195:_mm_store_pd1 (double *__P, __m128d __A)
198         -:  196:{
199         -:  197:  _mm_store1_pd (__P, __A);
200         -:  198:}
201         -:  199:
202         -:  200:/* Store two DPFP values in reverse order.  The address must be aligned.  */
203         -:  201:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
204         -:  202:_mm_storer_pd (double *__P, __m128d __A)
205         -:  203:{
206         -:  204:  _mm_store_pd (__P, __builtin_ia32_shufpd (__A, __A, _MM_SHUFFLE2 (0,1)));
207         -:  205:}
208         -:  206:
209         -:  207:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
210         -:  208:_mm_cvtsi128_si32 (__m128i __A)
211         -:  209:{
212         -:  210:  return __builtin_ia32_vec_ext_v4si ((__v4si)__A, 0);
213         -:  211:}
214         -:  212:
215         -:  213:#ifdef __x86_64__
216         -:  214:/* Intel intrinsic.  */
217         -:  215:extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
218         -:  216:_mm_cvtsi128_si64 (__m128i __A)
219         -:  217:{
220         -:  218:  return __builtin_ia32_vec_ext_v2di ((__v2di)__A, 0);
221         -:  219:}
222         -:  220:
223         -:  221:/* Microsoft intrinsic.  */
224         -:  222:extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
225         -:  223:_mm_cvtsi128_si64x (__m128i __A)
226         -:  224:{
227         -:  225:  return __builtin_ia32_vec_ext_v2di ((__v2di)__A, 0);
228         -:  226:}
229         -:  227:#endif
230         -:  228:
231         -:  229:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
232         -:  230:_mm_add_pd (__m128d __A, __m128d __B)
233         -:  231:{
234         -:  232:  return (__m128d)__builtin_ia32_addpd ((__v2df)__A, (__v2df)__B);
235         -:  233:}
236         -:  234:
237         -:  235:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
238         -:  236:_mm_add_sd (__m128d __A, __m128d __B)
239         -:  237:{
240         -:  238:  return (__m128d)__builtin_ia32_addsd ((__v2df)__A, (__v2df)__B);
241         -:  239:}
242         -:  240:
243         -:  241:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
244         -:  242:_mm_sub_pd (__m128d __A, __m128d __B)
245         -:  243:{
246         -:  244:  return (__m128d)__builtin_ia32_subpd ((__v2df)__A, (__v2df)__B);
247         -:  245:}
248         -:  246:
249         -:  247:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
250         -:  248:_mm_sub_sd (__m128d __A, __m128d __B)
251         -:  249:{
252         -:  250:  return (__m128d)__builtin_ia32_subsd ((__v2df)__A, (__v2df)__B);
253         -:  251:}
254         -:  252:
255         -:  253:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
256         -:  254:_mm_mul_pd (__m128d __A, __m128d __B)
257         -:  255:{
258         -:  256:  return (__m128d)__builtin_ia32_mulpd ((__v2df)__A, (__v2df)__B);
259         -:  257:}
260         -:  258:
261         -:  259:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
262         -:  260:_mm_mul_sd (__m128d __A, __m128d __B)
263         -:  261:{
264         -:  262:  return (__m128d)__builtin_ia32_mulsd ((__v2df)__A, (__v2df)__B);
265         -:  263:}
266         -:  264:
267         -:  265:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
268         -:  266:_mm_div_pd (__m128d __A, __m128d __B)
269         -:  267:{
270         -:  268:  return (__m128d)__builtin_ia32_divpd ((__v2df)__A, (__v2df)__B);
271         -:  269:}
272         -:  270:
273         -:  271:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
274         -:  272:_mm_div_sd (__m128d __A, __m128d __B)
275         -:  273:{
276         -:  274:  return (__m128d)__builtin_ia32_divsd ((__v2df)__A, (__v2df)__B);
277         -:  275:}
278         -:  276:
279         -:  277:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
280         -:  278:_mm_sqrt_pd (__m128d __A)
281         -:  279:{
282         -:  280:  return (__m128d)__builtin_ia32_sqrtpd ((__v2df)__A);
283         -:  281:}
284         -:  282:
285         -:  283:/* Return pair {sqrt (A[0), B[1]}.  */
286         -:  284:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
287         -:  285:_mm_sqrt_sd (__m128d __A, __m128d __B)
288         -:  286:{
289         -:  287:  __v2df __tmp = __builtin_ia32_movsd ((__v2df)__A, (__v2df)__B);
290         -:  288:  return (__m128d)__builtin_ia32_sqrtsd ((__v2df)__tmp);
291         -:  289:}
292         -:  290:
293         -:  291:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
294         -:  292:_mm_min_pd (__m128d __A, __m128d __B)
295         -:  293:{
296         -:  294:  return (__m128d)__builtin_ia32_minpd ((__v2df)__A, (__v2df)__B);
297         -:  295:}
298         -:  296:
299         -:  297:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
300         -:  298:_mm_min_sd (__m128d __A, __m128d __B)
301         -:  299:{
302         -:  300:  return (__m128d)__builtin_ia32_minsd ((__v2df)__A, (__v2df)__B);
303         -:  301:}
304         -:  302:
305         -:  303:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
306         -:  304:_mm_max_pd (__m128d __A, __m128d __B)
307         -:  305:{
308         -:  306:  return (__m128d)__builtin_ia32_maxpd ((__v2df)__A, (__v2df)__B);
309         -:  307:}
310         -:  308:
311         -:  309:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
312         -:  310:_mm_max_sd (__m128d __A, __m128d __B)
313         -:  311:{
314         -:  312:  return (__m128d)__builtin_ia32_maxsd ((__v2df)__A, (__v2df)__B);
315         -:  313:}
316         -:  314:
317         -:  315:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
318         -:  316:_mm_and_pd (__m128d __A, __m128d __B)
319         -:  317:{
320         -:  318:  return (__m128d)__builtin_ia32_andpd ((__v2df)__A, (__v2df)__B);
321         -:  319:}
322         -:  320:
323         -:  321:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
324         -:  322:_mm_andnot_pd (__m128d __A, __m128d __B)
325         -:  323:{
326         -:  324:  return (__m128d)__builtin_ia32_andnpd ((__v2df)__A, (__v2df)__B);
327         -:  325:}
328         -:  326:
329         -:  327:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
330         -:  328:_mm_or_pd (__m128d __A, __m128d __B)
331         -:  329:{
332         -:  330:  return (__m128d)__builtin_ia32_orpd ((__v2df)__A, (__v2df)__B);
333         -:  331:}
334         -:  332:
335         -:  333:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
336         -:  334:_mm_xor_pd (__m128d __A, __m128d __B)
337         -:  335:{
338         -:  336:  return (__m128d)__builtin_ia32_xorpd ((__v2df)__A, (__v2df)__B);
339         -:  337:}
340         -:  338:
341         -:  339:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
342         -:  340:_mm_cmpeq_pd (__m128d __A, __m128d __B)
343         -:  341:{
344         -:  342:  return (__m128d)__builtin_ia32_cmpeqpd ((__v2df)__A, (__v2df)__B);
345         -:  343:}
346         -:  344:
347         -:  345:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
348         -:  346:_mm_cmplt_pd (__m128d __A, __m128d __B)
349         -:  347:{
350         -:  348:  return (__m128d)__builtin_ia32_cmpltpd ((__v2df)__A, (__v2df)__B);
351         -:  349:}
352         -:  350:
353         -:  351:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
354         -:  352:_mm_cmple_pd (__m128d __A, __m128d __B)
355         -:  353:{
356         -:  354:  return (__m128d)__builtin_ia32_cmplepd ((__v2df)__A, (__v2df)__B);
357         -:  355:}
358         -:  356:
359         -:  357:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
360         -:  358:_mm_cmpgt_pd (__m128d __A, __m128d __B)
361         -:  359:{
362         -:  360:  return (__m128d)__builtin_ia32_cmpgtpd ((__v2df)__A, (__v2df)__B);
363         -:  361:}
364         -:  362:
365         -:  363:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
366         -:  364:_mm_cmpge_pd (__m128d __A, __m128d __B)
367         -:  365:{
368         -:  366:  return (__m128d)__builtin_ia32_cmpgepd ((__v2df)__A, (__v2df)__B);
369         -:  367:}
370         -:  368:
371         -:  369:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
372         -:  370:_mm_cmpneq_pd (__m128d __A, __m128d __B)
373         -:  371:{
374         -:  372:  return (__m128d)__builtin_ia32_cmpneqpd ((__v2df)__A, (__v2df)__B);
375         -:  373:}
376         -:  374:
377         -:  375:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
378         -:  376:_mm_cmpnlt_pd (__m128d __A, __m128d __B)
379         -:  377:{
380         -:  378:  return (__m128d)__builtin_ia32_cmpnltpd ((__v2df)__A, (__v2df)__B);
381         -:  379:}
382         -:  380:
383         -:  381:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
384         -:  382:_mm_cmpnle_pd (__m128d __A, __m128d __B)
385         -:  383:{
386         -:  384:  return (__m128d)__builtin_ia32_cmpnlepd ((__v2df)__A, (__v2df)__B);
387         -:  385:}
388         -:  386:
389         -:  387:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
390         -:  388:_mm_cmpngt_pd (__m128d __A, __m128d __B)
391         -:  389:{
392         -:  390:  return (__m128d)__builtin_ia32_cmpngtpd ((__v2df)__A, (__v2df)__B);
393         -:  391:}
394         -:  392:
395         -:  393:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
396         -:  394:_mm_cmpnge_pd (__m128d __A, __m128d __B)
397         -:  395:{
398         -:  396:  return (__m128d)__builtin_ia32_cmpngepd ((__v2df)__A, (__v2df)__B);
399         -:  397:}
400         -:  398:
401         -:  399:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
402         -:  400:_mm_cmpord_pd (__m128d __A, __m128d __B)
403         -:  401:{
404         -:  402:  return (__m128d)__builtin_ia32_cmpordpd ((__v2df)__A, (__v2df)__B);
405         -:  403:}
406         -:  404:
407         -:  405:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
408         -:  406:_mm_cmpunord_pd (__m128d __A, __m128d __B)
409         -:  407:{
410         -:  408:  return (__m128d)__builtin_ia32_cmpunordpd ((__v2df)__A, (__v2df)__B);
411         -:  409:}
412         -:  410:
413         -:  411:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
414         -:  412:_mm_cmpeq_sd (__m128d __A, __m128d __B)
415         -:  413:{
416         -:  414:  return (__m128d)__builtin_ia32_cmpeqsd ((__v2df)__A, (__v2df)__B);
417         -:  415:}
418         -:  416:
419         -:  417:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
420         -:  418:_mm_cmplt_sd (__m128d __A, __m128d __B)
421         -:  419:{
422         -:  420:  return (__m128d)__builtin_ia32_cmpltsd ((__v2df)__A, (__v2df)__B);
423         -:  421:}
424         -:  422:
425         -:  423:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
426         -:  424:_mm_cmple_sd (__m128d __A, __m128d __B)
427         -:  425:{
428         -:  426:  return (__m128d)__builtin_ia32_cmplesd ((__v2df)__A, (__v2df)__B);
429         -:  427:}
430         -:  428:
431         -:  429:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
432         -:  430:_mm_cmpgt_sd (__m128d __A, __m128d __B)
433         -:  431:{
434         -:  432:  return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
435         -:  433:                                         (__v2df)
436         -:  434:                                         __builtin_ia32_cmpltsd ((__v2df) __B,
437         -:  435:                                                                 (__v2df)
438         -:  436:                                                                 __A));
439         -:  437:}
440         -:  438:
441         -:  439:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
442         -:  440:_mm_cmpge_sd (__m128d __A, __m128d __B)
443         -:  441:{
444         -:  442:  return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
445         -:  443:                                         (__v2df)
446         -:  444:                                         __builtin_ia32_cmplesd ((__v2df) __B,
447         -:  445:                                                                 (__v2df)
448         -:  446:                                                                 __A));
449         -:  447:}
450         -:  448:
451         -:  449:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
452         -:  450:_mm_cmpneq_sd (__m128d __A, __m128d __B)
453         -:  451:{
454         -:  452:  return (__m128d)__builtin_ia32_cmpneqsd ((__v2df)__A, (__v2df)__B);
455         -:  453:}
456         -:  454:
457         -:  455:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
458         -:  456:_mm_cmpnlt_sd (__m128d __A, __m128d __B)
459         -:  457:{
460         -:  458:  return (__m128d)__builtin_ia32_cmpnltsd ((__v2df)__A, (__v2df)__B);
461         -:  459:}
462         -:  460:
463         -:  461:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
464         -:  462:_mm_cmpnle_sd (__m128d __A, __m128d __B)
465         -:  463:{
466         -:  464:  return (__m128d)__builtin_ia32_cmpnlesd ((__v2df)__A, (__v2df)__B);
467         -:  465:}
468         -:  466:
469         -:  467:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
470         -:  468:_mm_cmpngt_sd (__m128d __A, __m128d __B)
471         -:  469:{
472         -:  470:  return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
473         -:  471:                                         (__v2df)
474         -:  472:                                         __builtin_ia32_cmpnltsd ((__v2df) __B,
475         -:  473:                                                                  (__v2df)
476         -:  474:                                                                  __A));
477         -:  475:}
478         -:  476:
479         -:  477:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
480         -:  478:_mm_cmpnge_sd (__m128d __A, __m128d __B)
481         -:  479:{
482         -:  480:  return (__m128d) __builtin_ia32_movsd ((__v2df) __A,
483         -:  481:                                         (__v2df)
484         -:  482:                                         __builtin_ia32_cmpnlesd ((__v2df) __B,
485         -:  483:                                                                  (__v2df)
486         -:  484:                                                                  __A));
487         -:  485:}
488         -:  486:
489         -:  487:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
490         -:  488:_mm_cmpord_sd (__m128d __A, __m128d __B)
491         -:  489:{
492         -:  490:  return (__m128d)__builtin_ia32_cmpordsd ((__v2df)__A, (__v2df)__B);
493         -:  491:}
494         -:  492:
495         -:  493:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
496         -:  494:_mm_cmpunord_sd (__m128d __A, __m128d __B)
497         -:  495:{
498         -:  496:  return (__m128d)__builtin_ia32_cmpunordsd ((__v2df)__A, (__v2df)__B);
499         -:  497:}
500         -:  498:
501         -:  499:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
502         -:  500:_mm_comieq_sd (__m128d __A, __m128d __B)
503         -:  501:{
504         -:  502:  return __builtin_ia32_comisdeq ((__v2df)__A, (__v2df)__B);
505         -:  503:}
506         -:  504:
507         -:  505:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
508         -:  506:_mm_comilt_sd (__m128d __A, __m128d __B)
509         -:  507:{
510         -:  508:  return __builtin_ia32_comisdlt ((__v2df)__A, (__v2df)__B);
511         -:  509:}
512         -:  510:
513         -:  511:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
514         -:  512:_mm_comile_sd (__m128d __A, __m128d __B)
515         -:  513:{
516         -:  514:  return __builtin_ia32_comisdle ((__v2df)__A, (__v2df)__B);
517         -:  515:}
518         -:  516:
519         -:  517:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
520         -:  518:_mm_comigt_sd (__m128d __A, __m128d __B)
521         -:  519:{
522         -:  520:  return __builtin_ia32_comisdgt ((__v2df)__A, (__v2df)__B);
523         -:  521:}
524         -:  522:
525         -:  523:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
526         -:  524:_mm_comige_sd (__m128d __A, __m128d __B)
527         -:  525:{
528         -:  526:  return __builtin_ia32_comisdge ((__v2df)__A, (__v2df)__B);
529         -:  527:}
530         -:  528:
531         -:  529:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
532         -:  530:_mm_comineq_sd (__m128d __A, __m128d __B)
533         -:  531:{
534         -:  532:  return __builtin_ia32_comisdneq ((__v2df)__A, (__v2df)__B);
535         -:  533:}
536         -:  534:
537         -:  535:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
538         -:  536:_mm_ucomieq_sd (__m128d __A, __m128d __B)
539         -:  537:{
540         -:  538:  return __builtin_ia32_ucomisdeq ((__v2df)__A, (__v2df)__B);
541         -:  539:}
542         -:  540:
543         -:  541:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
544         -:  542:_mm_ucomilt_sd (__m128d __A, __m128d __B)
545         -:  543:{
546         -:  544:  return __builtin_ia32_ucomisdlt ((__v2df)__A, (__v2df)__B);
547         -:  545:}
548         -:  546:
549         -:  547:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
550         -:  548:_mm_ucomile_sd (__m128d __A, __m128d __B)
551         -:  549:{
552         -:  550:  return __builtin_ia32_ucomisdle ((__v2df)__A, (__v2df)__B);
553         -:  551:}
554         -:  552:
555         -:  553:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
556         -:  554:_mm_ucomigt_sd (__m128d __A, __m128d __B)
557         -:  555:{
558         -:  556:  return __builtin_ia32_ucomisdgt ((__v2df)__A, (__v2df)__B);
559         -:  557:}
560         -:  558:
561         -:  559:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
562         -:  560:_mm_ucomige_sd (__m128d __A, __m128d __B)
563         -:  561:{
564         -:  562:  return __builtin_ia32_ucomisdge ((__v2df)__A, (__v2df)__B);
565         -:  563:}
566         -:  564:
567         -:  565:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
568         -:  566:_mm_ucomineq_sd (__m128d __A, __m128d __B)
569         -:  567:{
570         -:  568:  return __builtin_ia32_ucomisdneq ((__v2df)__A, (__v2df)__B);
571         -:  569:}
572         -:  570:
573         -:  571:/* Create a vector of Qi, where i is the element number.  */
574         -:  572:
575         -:  573:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
576         -:  574:_mm_set_epi64x (long long __q1, long long __q0)
577         -:  575:{
578         -:  576:  return __extension__ (__m128i)(__v2di){ __q0, __q1 };
579         -:  577:}
580         -:  578:
581         -:  579:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
582         -:  580:_mm_set_epi64 (__m64 __q1,  __m64 __q0)
583         -:  581:{
584         -:  582:  return _mm_set_epi64x ((long long)__q1, (long long)__q0);
585         -:  583:}
586         -:  584:
587         -:  585:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
588         -:  586:_mm_set_epi32 (int __q3, int __q2, int __q1, int __q0)
589         -:  587:{
590         -:  588:  return __extension__ (__m128i)(__v4si){ __q0, __q1, __q2, __q3 };
591         -:  589:}
592         -:  590:
593         -:  591:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
594         -:  592:_mm_set_epi16 (short __q7, short __q6, short __q5, short __q4,
595         -:  593:               short __q3, short __q2, short __q1, short __q0)
596         -:  594:{
597         -:  595:  return __extension__ (__m128i)(__v8hi){
598         -:  596:    __q0, __q1, __q2, __q3, __q4, __q5, __q6, __q7 };
599         -:  597:}
600         -:  598:
601         -:  599:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
602         -:  600:_mm_set_epi8 (char __q15, char __q14, char __q13, char __q12,
603         -:  601:              char __q11, char __q10, char __q09, char __q08,
604         -:  602:              char __q07, char __q06, char __q05, char __q04,
605         -:  603:              char __q03, char __q02, char __q01, char __q00)
606         -:  604:{
607         -:  605:  return __extension__ (__m128i)(__v16qi){
608         -:  606:    __q00, __q01, __q02, __q03, __q04, __q05, __q06, __q07,
609         -:  607:    __q08, __q09, __q10, __q11, __q12, __q13, __q14, __q15
610         -:  608:  };
611         -:  609:}
612         -:  610:
613         -:  611:/* Set all of the elements of the vector to A.  */
614         -:  612:
615         -:  613:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
616         -:  614:_mm_set1_epi64x (long long __A)
617         -:  615:{
618         -:  616:  return _mm_set_epi64x (__A, __A);
619         -:  617:}
620         -:  618:
621         -:  619:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
622         -:  620:_mm_set1_epi64 (__m64 __A)
623         -:  621:{
624         -:  622:  return _mm_set_epi64 (__A, __A);
625         -:  623:}
626         -:  624:
627         -:  625:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
628         -:  626:_mm_set1_epi32 (int __A)
629         -:  627:{
630         -:  628:  return _mm_set_epi32 (__A, __A, __A, __A);
631         -:  629:}
632         -:  630:
633         -:  631:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
634         -:  632:_mm_set1_epi16 (short __A)
635         -:  633:{
636         -:  634:  return _mm_set_epi16 (__A, __A, __A, __A, __A, __A, __A, __A);
637         -:  635:}
638         -:  636:
639         -:  637:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
640         -:  638:_mm_set1_epi8 (char __A)
641         -:  639:{
642         -:  640:  return _mm_set_epi8 (__A, __A, __A, __A, __A, __A, __A, __A,
643         -:  641:                       __A, __A, __A, __A, __A, __A, __A, __A);
644         -:  642:}
645         -:  643:
646         -:  644:/* Create a vector of Qi, where i is the element number.
647         -:  645:   The parameter order is reversed from the _mm_set_epi* functions.  */
648         -:  646:
649         -:  647:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
650         -:  648:_mm_setr_epi64 (__m64 __q0, __m64 __q1)
651         -:  649:{
652         -:  650:  return _mm_set_epi64 (__q1, __q0);
653         -:  651:}
654         -:  652:
655         -:  653:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
656         -:  654:_mm_setr_epi32 (int __q0, int __q1, int __q2, int __q3)
657         -:  655:{
658         -:  656:  return _mm_set_epi32 (__q3, __q2, __q1, __q0);
659         -:  657:}
660         -:  658:
661         -:  659:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
662         -:  660:_mm_setr_epi16 (short __q0, short __q1, short __q2, short __q3,
663         -:  661:                short __q4, short __q5, short __q6, short __q7)
664         -:  662:{
665         -:  663:  return _mm_set_epi16 (__q7, __q6, __q5, __q4, __q3, __q2, __q1, __q0);
666         -:  664:}
667         -:  665:
668         -:  666:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
669         -:  667:_mm_setr_epi8 (char __q00, char __q01, char __q02, char __q03,
670         -:  668:               char __q04, char __q05, char __q06, char __q07,
671         -:  669:               char __q08, char __q09, char __q10, char __q11,
672         -:  670:               char __q12, char __q13, char __q14, char __q15)
673         -:  671:{
674         -:  672:  return _mm_set_epi8 (__q15, __q14, __q13, __q12, __q11, __q10, __q09, __q08,
675         -:  673:                       __q07, __q06, __q05, __q04, __q03, __q02, __q01, __q00);
676         -:  674:}
677         -:  675:
678         -:  676:/* Create a vector with element 0 as *P and the rest zero.  */
679         -:  677:
680         -:  678:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
681         -:  679:_mm_load_si128 (__m128i const *__P)
682         -:  680:{
683         -:  681:  return *__P;
684         -:  682:}
685         -:  683:
686         -:  684:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
687         -:  685:_mm_loadu_si128 (__m128i const *__P)
688         -:  686:{
689         -:  687:  return (__m128i) __builtin_ia32_loaddqu ((char const *)__P);
690         -:  688:}
691         -:  689:
692         -:  690:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
693         -:  691:_mm_loadl_epi64 (__m128i const *__P)
694         -:  692:{
695         -:  693:  return _mm_set_epi64 ((__m64)0LL, *(__m64 *)__P);
696         -:  694:}
697         -:  695:
698         -:  696:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
699         -:  697:_mm_store_si128 (__m128i *__P, __m128i __B)
700         -:  698:{
701         -:  699:  *__P = __B;
702         -:  700:}
703         -:  701:
704         -:  702:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
705         -:  703:_mm_storeu_si128 (__m128i *__P, __m128i __B)
706         -:  704:{
707         -:  705:  __builtin_ia32_storedqu ((char *)__P, (__v16qi)__B);
708         -:  706:}
709         -:  707:
710         -:  708:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
711         -:  709:_mm_storel_epi64 (__m128i *__P, __m128i __B)
712         -:  710:{
713         -:  711:  *(long long *)__P = __builtin_ia32_vec_ext_v2di ((__v2di)__B, 0);
714         -:  712:}
715         -:  713:
716         -:  714:extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
717         -:  715:_mm_movepi64_pi64 (__m128i __B)
718         -:  716:{
719         -:  717:  return (__m64) __builtin_ia32_vec_ext_v2di ((__v2di)__B, 0);
720         -:  718:}
721         -:  719:
722         -:  720:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
723         -:  721:_mm_movpi64_epi64 (__m64 __A)
724         -:  722:{
725         -:  723:  return _mm_set_epi64 ((__m64)0LL, __A);
726         -:  724:}
727         -:  725:
728         -:  726:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
729         -:  727:_mm_move_epi64 (__m128i __A)
730         -:  728:{
731         -:  729:  return _mm_set_epi64 ((__m64)0LL, _mm_movepi64_pi64 (__A));
732         -:  730:}
733         -:  731:
734         -:  732:/* Create a vector of zeros.  */
735         -:  733:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
736         -:  734:_mm_setzero_si128 (void)
737         -:  735:{
738     43292:  736:  return __extension__ (__m128i)(__v4si){ 0, 0, 0, 0 };
739         -:  737:}
740         -:  738:
741         -:  739:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
742         -:  740:_mm_cvtepi32_pd (__m128i __A)
743         -:  741:{
744         -:  742:  return (__m128d)__builtin_ia32_cvtdq2pd ((__v4si) __A);
745         -:  743:}
746         -:  744:
747         -:  745:extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
748         -:  746:_mm_cvtepi32_ps (__m128i __A)
749         -:  747:{
750         -:  748:  return (__m128)__builtin_ia32_cvtdq2ps ((__v4si) __A);
751         -:  749:}
752         -:  750:
753         -:  751:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
754         -:  752:_mm_cvtpd_epi32 (__m128d __A)
755         -:  753:{
756         -:  754:  return (__m128i)__builtin_ia32_cvtpd2dq ((__v2df) __A);
757         -:  755:}
758         -:  756:
759         -:  757:extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
760         -:  758:_mm_cvtpd_pi32 (__m128d __A)
761         -:  759:{
762         -:  760:  return (__m64)__builtin_ia32_cvtpd2pi ((__v2df) __A);
763         -:  761:}
764         -:  762:
765         -:  763:extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
766         -:  764:_mm_cvtpd_ps (__m128d __A)
767         -:  765:{
768         -:  766:  return (__m128)__builtin_ia32_cvtpd2ps ((__v2df) __A);
769         -:  767:}
770         -:  768:
771         -:  769:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
772         -:  770:_mm_cvttpd_epi32 (__m128d __A)
773         -:  771:{
774         -:  772:  return (__m128i)__builtin_ia32_cvttpd2dq ((__v2df) __A);
775         -:  773:}
776         -:  774:
777         -:  775:extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
778         -:  776:_mm_cvttpd_pi32 (__m128d __A)
779         -:  777:{
780         -:  778:  return (__m64)__builtin_ia32_cvttpd2pi ((__v2df) __A);
781         -:  779:}
782         -:  780:
783         -:  781:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
784         -:  782:_mm_cvtpi32_pd (__m64 __A)
785         -:  783:{
786         -:  784:  return (__m128d)__builtin_ia32_cvtpi2pd ((__v2si) __A);
787         -:  785:}
788         -:  786:
789         -:  787:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
790         -:  788:_mm_cvtps_epi32 (__m128 __A)
791         -:  789:{
792         -:  790:  return (__m128i)__builtin_ia32_cvtps2dq ((__v4sf) __A);
793         -:  791:}
794         -:  792:
795         -:  793:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
796         -:  794:_mm_cvttps_epi32 (__m128 __A)
797         -:  795:{
798         -:  796:  return (__m128i)__builtin_ia32_cvttps2dq ((__v4sf) __A);
799         -:  797:}
800         -:  798:
801         -:  799:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
802         -:  800:_mm_cvtps_pd (__m128 __A)
803         -:  801:{
804         -:  802:  return (__m128d)__builtin_ia32_cvtps2pd ((__v4sf) __A);
805         -:  803:}
806         -:  804:
807         -:  805:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
808         -:  806:_mm_cvtsd_si32 (__m128d __A)
809         -:  807:{
810         -:  808:  return __builtin_ia32_cvtsd2si ((__v2df) __A);
811         -:  809:}
812         -:  810:
813         -:  811:#ifdef __x86_64__
814         -:  812:/* Intel intrinsic.  */
815         -:  813:extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
816         -:  814:_mm_cvtsd_si64 (__m128d __A)
817         -:  815:{
818         -:  816:  return __builtin_ia32_cvtsd2si64 ((__v2df) __A);
819         -:  817:}
820         -:  818:
821         -:  819:/* Microsoft intrinsic.  */
822         -:  820:extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
823         -:  821:_mm_cvtsd_si64x (__m128d __A)
824         -:  822:{
825         -:  823:  return __builtin_ia32_cvtsd2si64 ((__v2df) __A);
826         -:  824:}
827         -:  825:#endif
828         -:  826:
829         -:  827:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
830         -:  828:_mm_cvttsd_si32 (__m128d __A)
831         -:  829:{
832         -:  830:  return __builtin_ia32_cvttsd2si ((__v2df) __A);
833         -:  831:}
834         -:  832:
835         -:  833:#ifdef __x86_64__
836         -:  834:/* Intel intrinsic.  */
837         -:  835:extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
838         -:  836:_mm_cvttsd_si64 (__m128d __A)
839         -:  837:{
840         -:  838:  return __builtin_ia32_cvttsd2si64 ((__v2df) __A);
841         -:  839:}
842         -:  840:
843         -:  841:/* Microsoft intrinsic.  */
844         -:  842:extern __inline long long __attribute__((__gnu_inline__, __always_inline__, __artificial__))
845         -:  843:_mm_cvttsd_si64x (__m128d __A)
846         -:  844:{
847         -:  845:  return __builtin_ia32_cvttsd2si64 ((__v2df) __A);
848         -:  846:}
849         -:  847:#endif
850         -:  848:
851         -:  849:extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
852         -:  850:_mm_cvtsd_ss (__m128 __A, __m128d __B)
853         -:  851:{
854         -:  852:  return (__m128)__builtin_ia32_cvtsd2ss ((__v4sf) __A, (__v2df) __B);
855         -:  853:}
856         -:  854:
857         -:  855:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
858         -:  856:_mm_cvtsi32_sd (__m128d __A, int __B)
859         -:  857:{
860         -:  858:  return (__m128d)__builtin_ia32_cvtsi2sd ((__v2df) __A, __B);
861         -:  859:}
862         -:  860:
863         -:  861:#ifdef __x86_64__
864         -:  862:/* Intel intrinsic.  */
865         -:  863:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
866         -:  864:_mm_cvtsi64_sd (__m128d __A, long long __B)
867         -:  865:{
868         -:  866:  return (__m128d)__builtin_ia32_cvtsi642sd ((__v2df) __A, __B);
869         -:  867:}
870         -:  868:
871         -:  869:/* Microsoft intrinsic.  */
872         -:  870:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
873         -:  871:_mm_cvtsi64x_sd (__m128d __A, long long __B)
874         -:  872:{
875         -:  873:  return (__m128d)__builtin_ia32_cvtsi642sd ((__v2df) __A, __B);
876         -:  874:}
877         -:  875:#endif
878         -:  876:
879         -:  877:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
880         -:  878:_mm_cvtss_sd (__m128d __A, __m128 __B)
881         -:  879:{
882         -:  880:  return (__m128d)__builtin_ia32_cvtss2sd ((__v2df) __A, (__v4sf)__B);
883         -:  881:}
884         -:  882:
885         -:  883:#ifdef __OPTIMIZE__
886         -:  884:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
887         -:  885:_mm_shuffle_pd(__m128d __A, __m128d __B, const int __mask)
888         -:  886:{
889         -:  887:  return (__m128d)__builtin_ia32_shufpd ((__v2df)__A, (__v2df)__B, __mask);
890         -:  888:}
891         -:  889:#else
892         -:  890:#define _mm_shuffle_pd(A, B, N)                                         \
893         -:  891:  ((__m128d)__builtin_ia32_shufpd ((__v2df)(__m128d)(A),                \
894         -:  892:                                   (__v2df)(__m128d)(B), (int)(N)))
895         -:  893:#endif
896         -:  894:
897         -:  895:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
898         -:  896:_mm_unpackhi_pd (__m128d __A, __m128d __B)
899         -:  897:{
900         -:  898:  return (__m128d)__builtin_ia32_unpckhpd ((__v2df)__A, (__v2df)__B);
901         -:  899:}
902         -:  900:
903         -:  901:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
904         -:  902:_mm_unpacklo_pd (__m128d __A, __m128d __B)
905         -:  903:{
906         -:  904:  return (__m128d)__builtin_ia32_unpcklpd ((__v2df)__A, (__v2df)__B);
907         -:  905:}
908         -:  906:
909         -:  907:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
910         -:  908:_mm_loadh_pd (__m128d __A, double const *__B)
911         -:  909:{
912         -:  910:  return (__m128d)__builtin_ia32_loadhpd ((__v2df)__A, __B);
913         -:  911:}
914         -:  912:
915         -:  913:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
916         -:  914:_mm_loadl_pd (__m128d __A, double const *__B)
917         -:  915:{
918         -:  916:  return (__m128d)__builtin_ia32_loadlpd ((__v2df)__A, __B);
919         -:  917:}
920         -:  918:
921         -:  919:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
922         -:  920:_mm_movemask_pd (__m128d __A)
923         -:  921:{
924         -:  922:  return __builtin_ia32_movmskpd ((__v2df)__A);
925         -:  923:}
926         -:  924:
927         -:  925:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
928         -:  926:_mm_packs_epi16 (__m128i __A, __m128i __B)
929         -:  927:{
930         -:  928:  return (__m128i)__builtin_ia32_packsswb128 ((__v8hi)__A, (__v8hi)__B);
931         -:  929:}
932         -:  930:
933         -:  931:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
934         -:  932:_mm_packs_epi32 (__m128i __A, __m128i __B)
935         -:  933:{
936         -:  934:  return (__m128i)__builtin_ia32_packssdw128 ((__v4si)__A, (__v4si)__B);
937         -:  935:}
938         -:  936:
939         -:  937:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
940         -:  938:_mm_packus_epi16 (__m128i __A, __m128i __B)
941         -:  939:{
942         -:  940:  return (__m128i)__builtin_ia32_packuswb128 ((__v8hi)__A, (__v8hi)__B);
943         -:  941:}
944         -:  942:
945         -:  943:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
946         -:  944:_mm_unpackhi_epi8 (__m128i __A, __m128i __B)
947         -:  945:{
948         -:  946:  return (__m128i)__builtin_ia32_punpckhbw128 ((__v16qi)__A, (__v16qi)__B);
949         -:  947:}
950         -:  948:
951         -:  949:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
952         -:  950:_mm_unpackhi_epi16 (__m128i __A, __m128i __B)
953         -:  951:{
954         -:  952:  return (__m128i)__builtin_ia32_punpckhwd128 ((__v8hi)__A, (__v8hi)__B);
955         -:  953:}
956         -:  954:
957         -:  955:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
958         -:  956:_mm_unpackhi_epi32 (__m128i __A, __m128i __B)
959         -:  957:{
960         -:  958:  return (__m128i)__builtin_ia32_punpckhdq128 ((__v4si)__A, (__v4si)__B);
961         -:  959:}
962         -:  960:
963         -:  961:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
964         -:  962:_mm_unpackhi_epi64 (__m128i __A, __m128i __B)
965         -:  963:{
966         -:  964:  return (__m128i)__builtin_ia32_punpckhqdq128 ((__v2di)__A, (__v2di)__B);
967         -:  965:}
968         -:  966:
969         -:  967:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
970         -:  968:_mm_unpacklo_epi8 (__m128i __A, __m128i __B)
971         -:  969:{
972         -:  970:  return (__m128i)__builtin_ia32_punpcklbw128 ((__v16qi)__A, (__v16qi)__B);
973         -:  971:}
974         -:  972:
975         -:  973:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
976         -:  974:_mm_unpacklo_epi16 (__m128i __A, __m128i __B)
977         -:  975:{
978         -:  976:  return (__m128i)__builtin_ia32_punpcklwd128 ((__v8hi)__A, (__v8hi)__B);
979         -:  977:}
980         -:  978:
981         -:  979:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
982         -:  980:_mm_unpacklo_epi32 (__m128i __A, __m128i __B)
983         -:  981:{
984         -:  982:  return (__m128i)__builtin_ia32_punpckldq128 ((__v4si)__A, (__v4si)__B);
985         -:  983:}
986         -:  984:
987         -:  985:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
988         -:  986:_mm_unpacklo_epi64 (__m128i __A, __m128i __B)
989         -:  987:{
990         -:  988:  return (__m128i)__builtin_ia32_punpcklqdq128 ((__v2di)__A, (__v2di)__B);
991         -:  989:}
992         -:  990:
993         -:  991:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
994         -:  992:_mm_add_epi8 (__m128i __A, __m128i __B)
995         -:  993:{
996         -:  994:  return (__m128i)__builtin_ia32_paddb128 ((__v16qi)__A, (__v16qi)__B);
997         -:  995:}
998         -:  996:
999         -:  997:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1000         -:  998:_mm_add_epi16 (__m128i __A, __m128i __B)
1001         -:  999:{
1002         -: 1000:  return (__m128i)__builtin_ia32_paddw128 ((__v8hi)__A, (__v8hi)__B);
1003         -: 1001:}
1004         -: 1002:
1005         -: 1003:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1006         -: 1004:_mm_add_epi32 (__m128i __A, __m128i __B)
1007         -: 1005:{
1008         -: 1006:  return (__m128i)__builtin_ia32_paddd128 ((__v4si)__A, (__v4si)__B);
1009         -: 1007:}
1010         -: 1008:
1011         -: 1009:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1012         -: 1010:_mm_add_epi64 (__m128i __A, __m128i __B)
1013         -: 1011:{
1014  47449782: 1012:  return (__m128i)__builtin_ia32_paddq128 ((__v2di)__A, (__v2di)__B);
1015 call    0 returned 11241643
1016 call    1 returned 12483248
1017 call    2 never executed
1018 call    3 returned 11241643
1019 call    4 returned 12483248
1020 call    5 never executed
1021         -: 1013:}
1022         -: 1014:
1023         -: 1015:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1024         -: 1016:_mm_adds_epi8 (__m128i __A, __m128i __B)
1025         -: 1017:{
1026         -: 1018:  return (__m128i)__builtin_ia32_paddsb128 ((__v16qi)__A, (__v16qi)__B);
1027         -: 1019:}
1028         -: 1020:
1029         -: 1021:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1030         -: 1022:_mm_adds_epi16 (__m128i __A, __m128i __B)
1031         -: 1023:{
1032         -: 1024:  return (__m128i)__builtin_ia32_paddsw128 ((__v8hi)__A, (__v8hi)__B);
1033         -: 1025:}
1034         -: 1026:
1035         -: 1027:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1036         -: 1028:_mm_adds_epu8 (__m128i __A, __m128i __B)
1037         -: 1029:{
1038         -: 1030:  return (__m128i)__builtin_ia32_paddusb128 ((__v16qi)__A, (__v16qi)__B);
1039         -: 1031:}
1040         -: 1032:
1041         -: 1033:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1042         -: 1034:_mm_adds_epu16 (__m128i __A, __m128i __B)
1043         -: 1035:{
1044         -: 1036:  return (__m128i)__builtin_ia32_paddusw128 ((__v8hi)__A, (__v8hi)__B);
1045         -: 1037:}
1046         -: 1038:
1047         -: 1039:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1048         -: 1040:_mm_sub_epi8 (__m128i __A, __m128i __B)
1049         -: 1041:{
1050         -: 1042:  return (__m128i)__builtin_ia32_psubb128 ((__v16qi)__A, (__v16qi)__B);
1051         -: 1043:}
1052         -: 1044:
1053         -: 1045:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1054         -: 1046:_mm_sub_epi16 (__m128i __A, __m128i __B)
1055         -: 1047:{
1056         -: 1048:  return (__m128i)__builtin_ia32_psubw128 ((__v8hi)__A, (__v8hi)__B);
1057         -: 1049:}
1058         -: 1050:
1059         -: 1051:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1060         -: 1052:_mm_sub_epi32 (__m128i __A, __m128i __B)
1061         -: 1053:{
1062         -: 1054:  return (__m128i)__builtin_ia32_psubd128 ((__v4si)__A, (__v4si)__B);
1063         -: 1055:}
1064         -: 1056:
1065         -: 1057:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1066         -: 1058:_mm_sub_epi64 (__m128i __A, __m128i __B)
1067         -: 1059:{
1068         -: 1060:  return (__m128i)__builtin_ia32_psubq128 ((__v2di)__A, (__v2di)__B);
1069         -: 1061:}
1070         -: 1062:
1071         -: 1063:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1072         -: 1064:_mm_subs_epi8 (__m128i __A, __m128i __B)
1073         -: 1065:{
1074         -: 1066:  return (__m128i)__builtin_ia32_psubsb128 ((__v16qi)__A, (__v16qi)__B);
1075         -: 1067:}
1076         -: 1068:
1077         -: 1069:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1078         -: 1070:_mm_subs_epi16 (__m128i __A, __m128i __B)
1079         -: 1071:{
1080         -: 1072:  return (__m128i)__builtin_ia32_psubsw128 ((__v8hi)__A, (__v8hi)__B);
1081         -: 1073:}
1082         -: 1074:
1083         -: 1075:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1084         -: 1076:_mm_subs_epu8 (__m128i __A, __m128i __B)
1085         -: 1077:{
1086         -: 1078:  return (__m128i)__builtin_ia32_psubusb128 ((__v16qi)__A, (__v16qi)__B);
1087         -: 1079:}
1088         -: 1080:
1089         -: 1081:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1090         -: 1082:_mm_subs_epu16 (__m128i __A, __m128i __B)
1091         -: 1083:{
1092         -: 1084:  return (__m128i)__builtin_ia32_psubusw128 ((__v8hi)__A, (__v8hi)__B);
1093         -: 1085:}
1094         -: 1086:
1095         -: 1087:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1096         -: 1088:_mm_madd_epi16 (__m128i __A, __m128i __B)
1097         -: 1089:{
1098         -: 1090:  return (__m128i)__builtin_ia32_pmaddwd128 ((__v8hi)__A, (__v8hi)__B);
1099         -: 1091:}
1100         -: 1092:
1101         -: 1093:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1102         -: 1094:_mm_mulhi_epi16 (__m128i __A, __m128i __B)
1103         -: 1095:{
1104         -: 1096:  return (__m128i)__builtin_ia32_pmulhw128 ((__v8hi)__A, (__v8hi)__B);
1105         -: 1097:}
1106         -: 1098:
1107         -: 1099:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1108         -: 1100:_mm_mullo_epi16 (__m128i __A, __m128i __B)
1109         -: 1101:{
1110         -: 1102:  return (__m128i)__builtin_ia32_pmullw128 ((__v8hi)__A, (__v8hi)__B);
1111         -: 1103:}
1112         -: 1104:
1113         -: 1105:extern __inline __m64 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1114         -: 1106:_mm_mul_su32 (__m64 __A, __m64 __B)
1115         -: 1107:{
1116         -: 1108:  return (__m64)__builtin_ia32_pmuludq ((__v2si)__A, (__v2si)__B);
1117         -: 1109:}
1118         -: 1110:
1119         -: 1111:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1120         -: 1112:_mm_mul_epu32 (__m128i __A, __m128i __B)
1121         -: 1113:{
1122         -: 1114:  return (__m128i)__builtin_ia32_pmuludq128 ((__v4si)__A, (__v4si)__B);
1123         -: 1115:}
1124         -: 1116:
1125         -: 1117:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1126         -: 1118:_mm_slli_epi16 (__m128i __A, int __B)
1127         -: 1119:{
1128         -: 1120:  return (__m128i)__builtin_ia32_psllwi128 ((__v8hi)__A, __B);
1129         -: 1121:}
1130         -: 1122:
1131         -: 1123:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1132         -: 1124:_mm_slli_epi32 (__m128i __A, int __B)
1133         -: 1125:{
1134         -: 1126:  return (__m128i)__builtin_ia32_pslldi128 ((__v4si)__A, __B);
1135         -: 1127:}
1136         -: 1128:
1137         -: 1129:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1138         -: 1130:_mm_slli_epi64 (__m128i __A, int __B)
1139         -: 1131:{
1140         -: 1132:  return (__m128i)__builtin_ia32_psllqi128 ((__v2di)__A, __B);
1141         -: 1133:}
1142         -: 1134:
1143         -: 1135:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1144         -: 1136:_mm_srai_epi16 (__m128i __A, int __B)
1145         -: 1137:{
1146         -: 1138:  return (__m128i)__builtin_ia32_psrawi128 ((__v8hi)__A, __B);
1147         -: 1139:}
1148         -: 1140:
1149         -: 1141:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1150         -: 1142:_mm_srai_epi32 (__m128i __A, int __B)
1151         -: 1143:{
1152         -: 1144:  return (__m128i)__builtin_ia32_psradi128 ((__v4si)__A, __B);
1153         -: 1145:}
1154         -: 1146:
1155         -: 1147:#ifdef __OPTIMIZE__
1156         -: 1148:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1157         -: 1149:_mm_srli_si128 (__m128i __A, const int __N)
1158         -: 1150:{
1159         -: 1151:  return (__m128i)__builtin_ia32_psrldqi128 (__A, __N * 8);
1160         -: 1152:}
1161         -: 1153:
1162         -: 1154:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1163         -: 1155:_mm_slli_si128 (__m128i __A, const int __N)
1164         -: 1156:{
1165         -: 1157:  return (__m128i)__builtin_ia32_pslldqi128 (__A, __N * 8);
1166         -: 1158:}
1167         -: 1159:#else
1168         -: 1160:#define _mm_srli_si128(A, N) \
1169         -: 1161:  ((__m128i)__builtin_ia32_psrldqi128 ((__m128i)(A), (int)(N) * 8))
1170         -: 1162:#define _mm_slli_si128(A, N) \
1171         -: 1163:  ((__m128i)__builtin_ia32_pslldqi128 ((__m128i)(A), (int)(N) * 8))
1172         -: 1164:#endif
1173         -: 1165:
1174         -: 1166:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1175         -: 1167:_mm_srli_epi16 (__m128i __A, int __B)
1176         -: 1168:{
1177         -: 1169:  return (__m128i)__builtin_ia32_psrlwi128 ((__v8hi)__A, __B);
1178         -: 1170:}
1179         -: 1171:
1180         -: 1172:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1181         -: 1173:_mm_srli_epi32 (__m128i __A, int __B)
1182         -: 1174:{
1183         -: 1175:  return (__m128i)__builtin_ia32_psrldi128 ((__v4si)__A, __B);
1184         -: 1176:}
1185         -: 1177:
1186         -: 1178:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1187         -: 1179:_mm_srli_epi64 (__m128i __A, int __B)
1188         -: 1180:{
1189         -: 1181:  return (__m128i)__builtin_ia32_psrlqi128 ((__v2di)__A, __B);
1190         -: 1182:}
1191         -: 1183:
1192         -: 1184:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1193         -: 1185:_mm_sll_epi16 (__m128i __A, __m128i __B)
1194         -: 1186:{
1195         -: 1187:  return (__m128i)__builtin_ia32_psllw128((__v8hi)__A, (__v8hi)__B);
1196         -: 1188:}
1197         -: 1189:
1198         -: 1190:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1199         -: 1191:_mm_sll_epi32 (__m128i __A, __m128i __B)
1200         -: 1192:{
1201         -: 1193:  return (__m128i)__builtin_ia32_pslld128((__v4si)__A, (__v4si)__B);
1202         -: 1194:}
1203         -: 1195:
1204         -: 1196:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1205         -: 1197:_mm_sll_epi64 (__m128i __A, __m128i __B)
1206         -: 1198:{
1207         -: 1199:  return (__m128i)__builtin_ia32_psllq128((__v2di)__A, (__v2di)__B);
1208         -: 1200:}
1209         -: 1201:
1210         -: 1202:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1211         -: 1203:_mm_sra_epi16 (__m128i __A, __m128i __B)
1212         -: 1204:{
1213         -: 1205:  return (__m128i)__builtin_ia32_psraw128 ((__v8hi)__A, (__v8hi)__B);
1214         -: 1206:}
1215         -: 1207:
1216         -: 1208:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1217         -: 1209:_mm_sra_epi32 (__m128i __A, __m128i __B)
1218         -: 1210:{
1219         -: 1211:  return (__m128i)__builtin_ia32_psrad128 ((__v4si)__A, (__v4si)__B);
1220         -: 1212:}
1221         -: 1213:
1222         -: 1214:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1223         -: 1215:_mm_srl_epi16 (__m128i __A, __m128i __B)
1224         -: 1216:{
1225         -: 1217:  return (__m128i)__builtin_ia32_psrlw128 ((__v8hi)__A, (__v8hi)__B);
1226         -: 1218:}
1227         -: 1219:
1228         -: 1220:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1229         -: 1221:_mm_srl_epi32 (__m128i __A, __m128i __B)
1230         -: 1222:{
1231         -: 1223:  return (__m128i)__builtin_ia32_psrld128 ((__v4si)__A, (__v4si)__B);
1232         -: 1224:}
1233         -: 1225:
1234         -: 1226:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1235         -: 1227:_mm_srl_epi64 (__m128i __A, __m128i __B)
1236         -: 1228:{
1237         -: 1229:  return (__m128i)__builtin_ia32_psrlq128 ((__v2di)__A, (__v2di)__B);
1238         -: 1230:}
1239         -: 1231:
1240         -: 1232:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1241         -: 1233:_mm_and_si128 (__m128i __A, __m128i __B)
1242         -: 1234:{
1243         -: 1235:  return (__m128i)__builtin_ia32_pand128 ((__v2di)__A, (__v2di)__B);
1244         -: 1236:}
1245         -: 1237:
1246         -: 1238:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1247         -: 1239:_mm_andnot_si128 (__m128i __A, __m128i __B)
1248         -: 1240:{
1249         -: 1241:  return (__m128i)__builtin_ia32_pandn128 ((__v2di)__A, (__v2di)__B);
1250         -: 1242:}
1251         -: 1243:
1252         -: 1244:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1253         -: 1245:_mm_or_si128 (__m128i __A, __m128i __B)
1254         -: 1246:{
1255         -: 1247:  return (__m128i)__builtin_ia32_por128 ((__v2di)__A, (__v2di)__B);
1256         -: 1248:}
1257         -: 1249:
1258         -: 1250:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1259         -: 1251:_mm_xor_si128 (__m128i __A, __m128i __B)
1260         -: 1252:{
1261         -: 1253:  return (__m128i)__builtin_ia32_pxor128 ((__v2di)__A, (__v2di)__B);
1262         -: 1254:}
1263         -: 1255:
1264         -: 1256:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1265         -: 1257:_mm_cmpeq_epi8 (__m128i __A, __m128i __B)
1266         -: 1258:{
1267         -: 1259:  return (__m128i)__builtin_ia32_pcmpeqb128 ((__v16qi)__A, (__v16qi)__B);
1268         -: 1260:}
1269         -: 1261:
1270         -: 1262:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1271         -: 1263:_mm_cmpeq_epi16 (__m128i __A, __m128i __B)
1272         -: 1264:{
1273         -: 1265:  return (__m128i)__builtin_ia32_pcmpeqw128 ((__v8hi)__A, (__v8hi)__B);
1274         -: 1266:}
1275         -: 1267:
1276         -: 1268:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1277         -: 1269:_mm_cmpeq_epi32 (__m128i __A, __m128i __B)
1278         -: 1270:{
1279         -: 1271:  return (__m128i)__builtin_ia32_pcmpeqd128 ((__v4si)__A, (__v4si)__B);
1280         -: 1272:}
1281         -: 1273:
1282         -: 1274:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1283         -: 1275:_mm_cmplt_epi8 (__m128i __A, __m128i __B)
1284         -: 1276:{
1285         -: 1277:  return (__m128i)__builtin_ia32_pcmpgtb128 ((__v16qi)__B, (__v16qi)__A);
1286         -: 1278:}
1287         -: 1279:
1288         -: 1280:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1289         -: 1281:_mm_cmplt_epi16 (__m128i __A, __m128i __B)
1290         -: 1282:{
1291         -: 1283:  return (__m128i)__builtin_ia32_pcmpgtw128 ((__v8hi)__B, (__v8hi)__A);
1292         -: 1284:}
1293         -: 1285:
1294         -: 1286:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1295         -: 1287:_mm_cmplt_epi32 (__m128i __A, __m128i __B)
1296         -: 1288:{
1297         -: 1289:  return (__m128i)__builtin_ia32_pcmpgtd128 ((__v4si)__B, (__v4si)__A);
1298         -: 1290:}
1299         -: 1291:
1300         -: 1292:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1301         -: 1293:_mm_cmpgt_epi8 (__m128i __A, __m128i __B)
1302         -: 1294:{
1303         -: 1295:  return (__m128i)__builtin_ia32_pcmpgtb128 ((__v16qi)__A, (__v16qi)__B);
1304         -: 1296:}
1305         -: 1297:
1306         -: 1298:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1307         -: 1299:_mm_cmpgt_epi16 (__m128i __A, __m128i __B)
1308         -: 1300:{
1309         -: 1301:  return (__m128i)__builtin_ia32_pcmpgtw128 ((__v8hi)__A, (__v8hi)__B);
1310         -: 1302:}
1311         -: 1303:
1312         -: 1304:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1313         -: 1305:_mm_cmpgt_epi32 (__m128i __A, __m128i __B)
1314         -: 1306:{
1315         -: 1307:  return (__m128i)__builtin_ia32_pcmpgtd128 ((__v4si)__A, (__v4si)__B);
1316         -: 1308:}
1317         -: 1309:
1318         -: 1310:#ifdef __OPTIMIZE__
1319         -: 1311:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1320         -: 1312:_mm_extract_epi16 (__m128i const __A, int const __N)
1321         -: 1313:{
1322         -: 1314:  return __builtin_ia32_vec_ext_v8hi ((__v8hi)__A, __N);
1323         -: 1315:}
1324         -: 1316:
1325         -: 1317:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1326         -: 1318:_mm_insert_epi16 (__m128i const __A, int const __D, int const __N)
1327         -: 1319:{
1328         -: 1320:  return (__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)__A, __D, __N);
1329         -: 1321:}
1330         -: 1322:#else
1331         -: 1323:#define _mm_extract_epi16(A, N) \
1332         -: 1324:  ((int) __builtin_ia32_vec_ext_v8hi ((__v8hi)(__m128i)(A), (int)(N)))
1333         -: 1325:#define _mm_insert_epi16(A, D, N)                               \
1334         -: 1326:  ((__m128i) __builtin_ia32_vec_set_v8hi ((__v8hi)(__m128i)(A), \
1335         -: 1327:                                          (int)(D), (int)(N)))
1336         -: 1328:#endif
1337         -: 1329:
1338         -: 1330:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1339         -: 1331:_mm_max_epi16 (__m128i __A, __m128i __B)
1340         -: 1332:{
1341         -: 1333:  return (__m128i)__builtin_ia32_pmaxsw128 ((__v8hi)__A, (__v8hi)__B);
1342         -: 1334:}
1343         -: 1335:
1344         -: 1336:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1345         -: 1337:_mm_max_epu8 (__m128i __A, __m128i __B)
1346         -: 1338:{
1347         -: 1339:  return (__m128i)__builtin_ia32_pmaxub128 ((__v16qi)__A, (__v16qi)__B);
1348         -: 1340:}
1349         -: 1341:
1350         -: 1342:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1351         -: 1343:_mm_min_epi16 (__m128i __A, __m128i __B)
1352         -: 1344:{
1353         -: 1345:  return (__m128i)__builtin_ia32_pminsw128 ((__v8hi)__A, (__v8hi)__B);
1354         -: 1346:}
1355         -: 1347:
1356         -: 1348:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1357         -: 1349:_mm_min_epu8 (__m128i __A, __m128i __B)
1358         -: 1350:{
1359         -: 1351:  return (__m128i)__builtin_ia32_pminub128 ((__v16qi)__A, (__v16qi)__B);
1360         -: 1352:}
1361         -: 1353:
1362         -: 1354:extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1363         -: 1355:_mm_movemask_epi8 (__m128i __A)
1364         -: 1356:{
1365         -: 1357:  return __builtin_ia32_pmovmskb128 ((__v16qi)__A);
1366         -: 1358:}
1367         -: 1359:
1368         -: 1360:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1369         -: 1361:_mm_mulhi_epu16 (__m128i __A, __m128i __B)
1370         -: 1362:{
1371         -: 1363:  return (__m128i)__builtin_ia32_pmulhuw128 ((__v8hi)__A, (__v8hi)__B);
1372         -: 1364:}
1373         -: 1365:
1374         -: 1366:#ifdef __OPTIMIZE__
1375         -: 1367:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1376         -: 1368:_mm_shufflehi_epi16 (__m128i __A, const int __mask)
1377         -: 1369:{
1378         -: 1370:  return (__m128i)__builtin_ia32_pshufhw ((__v8hi)__A, __mask);
1379         -: 1371:}
1380         -: 1372:
1381         -: 1373:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1382         -: 1374:_mm_shufflelo_epi16 (__m128i __A, const int __mask)
1383         -: 1375:{
1384         -: 1376:  return (__m128i)__builtin_ia32_pshuflw ((__v8hi)__A, __mask);
1385         -: 1377:}
1386         -: 1378:
1387         -: 1379:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1388         -: 1380:_mm_shuffle_epi32 (__m128i __A, const int __mask)
1389         -: 1381:{
1390         -: 1382:  return (__m128i)__builtin_ia32_pshufd ((__v4si)__A, __mask);
1391         -: 1383:}
1392         -: 1384:#else
1393         -: 1385:#define _mm_shufflehi_epi16(A, N) \
1394         -: 1386:  ((__m128i)__builtin_ia32_pshufhw ((__v8hi)(__m128i)(A), (int)(N)))
1395         -: 1387:#define _mm_shufflelo_epi16(A, N) \
1396         -: 1388:  ((__m128i)__builtin_ia32_pshuflw ((__v8hi)(__m128i)(A), (int)(N)))
1397         -: 1389:#define _mm_shuffle_epi32(A, N) \
1398         -: 1390:  ((__m128i)__builtin_ia32_pshufd ((__v4si)(__m128i)(A), (int)(N)))
1399         -: 1391:#endif
1400         -: 1392:
1401         -: 1393:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1402         -: 1394:_mm_maskmoveu_si128 (__m128i __A, __m128i __B, char *__C)
1403         -: 1395:{
1404         -: 1396:  __builtin_ia32_maskmovdqu ((__v16qi)__A, (__v16qi)__B, __C);
1405         -: 1397:}
1406         -: 1398:
1407         -: 1399:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1408         -: 1400:_mm_avg_epu8 (__m128i __A, __m128i __B)
1409         -: 1401:{
1410         -: 1402:  return (__m128i)__builtin_ia32_pavgb128 ((__v16qi)__A, (__v16qi)__B);
1411         -: 1403:}
1412         -: 1404:
1413         -: 1405:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1414         -: 1406:_mm_avg_epu16 (__m128i __A, __m128i __B)
1415         -: 1407:{
1416         -: 1408:  return (__m128i)__builtin_ia32_pavgw128 ((__v8hi)__A, (__v8hi)__B);
1417         -: 1409:}
1418         -: 1410:
1419         -: 1411:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1420         -: 1412:_mm_sad_epu8 (__m128i __A, __m128i __B)
1421         -: 1413:{
1422         -: 1414:  return (__m128i)__builtin_ia32_psadbw128 ((__v16qi)__A, (__v16qi)__B);
1423         -: 1415:}
1424         -: 1416:
1425         -: 1417:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1426         -: 1418:_mm_stream_si32 (int *__A, int __B)
1427         -: 1419:{
1428         -: 1420:  __builtin_ia32_movnti (__A, __B);
1429         -: 1421:}
1430         -: 1422:
1431         -: 1423:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1432         -: 1424:_mm_stream_si128 (__m128i *__A, __m128i __B)
1433         -: 1425:{
1434         -: 1426:  __builtin_ia32_movntdq ((__v2di *)__A, (__v2di)__B);
1435         -: 1427:}
1436         -: 1428:
1437         -: 1429:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1438         -: 1430:_mm_stream_pd (double *__A, __m128d __B)
1439         -: 1431:{
1440         -: 1432:  __builtin_ia32_movntpd (__A, (__v2df)__B);
1441         -: 1433:}
1442         -: 1434:
1443         -: 1435:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1444         -: 1436:_mm_clflush (void const *__A)
1445         -: 1437:{
1446         -: 1438:  __builtin_ia32_clflush (__A);
1447         -: 1439:}
1448         -: 1440:
1449         -: 1441:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1450         -: 1442:_mm_lfence (void)
1451         -: 1443:{
1452         -: 1444:  __builtin_ia32_lfence ();
1453         -: 1445:}
1454         -: 1446:
1455         -: 1447:extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1456         -: 1448:_mm_mfence (void)
1457         -: 1449:{
1458         -: 1450:  __builtin_ia32_mfence ();
1459         -: 1451:}
1460         -: 1452:
1461         -: 1453:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1462         -: 1454:_mm_cvtsi32_si128 (int __A)
1463         -: 1455:{
1464         -: 1456:  return _mm_set_epi32 (0, 0, 0, __A);
1465         -: 1457:}
1466         -: 1458:
1467         -: 1459:#ifdef __x86_64__
1468         -: 1460:/* Intel intrinsic.  */
1469         -: 1461:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1470         -: 1462:_mm_cvtsi64_si128 (long long __A)
1471         -: 1463:{
1472         -: 1464:  return _mm_set_epi64x (0, __A);
1473         -: 1465:}
1474         -: 1466:
1475         -: 1467:/* Microsoft intrinsic.  */
1476         -: 1468:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1477         -: 1469:_mm_cvtsi64x_si128 (long long __A)
1478         -: 1470:{
1479         -: 1471:  return _mm_set_epi64x (0, __A);
1480         -: 1472:}
1481         -: 1473:#endif
1482         -: 1474:
1483         -: 1475:/* Casts between various SP, DP, INT vector types.  Note that these do no
1484         -: 1476:   conversion of values, they just change the type.  */
1485         -: 1477:extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1486         -: 1478:_mm_castpd_ps(__m128d __A)
1487         -: 1479:{
1488         -: 1480:  return (__m128) __A;
1489         -: 1481:}
1490         -: 1482:
1491         -: 1483:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1492         -: 1484:_mm_castpd_si128(__m128d __A)
1493         -: 1485:{
1494         -: 1486:  return (__m128i) __A;
1495         -: 1487:}
1496         -: 1488:
1497         -: 1489:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1498         -: 1490:_mm_castps_pd(__m128 __A)
1499         -: 1491:{
1500         -: 1492:  return (__m128d) __A;
1501         -: 1493:}
1502         -: 1494:
1503         -: 1495:extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1504         -: 1496:_mm_castps_si128(__m128 __A)
1505         -: 1497:{
1506         -: 1498:  return (__m128i) __A;
1507         -: 1499:}
1508         -: 1500:
1509         -: 1501:extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1510         -: 1502:_mm_castsi128_ps(__m128i __A)
1511         -: 1503:{
1512         -: 1504:  return (__m128) __A;
1513         -: 1505:}
1514         -: 1506:
1515         -: 1507:extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
1516         -: 1508:_mm_castsi128_pd(__m128i __A)
1517         -: 1509:{
1518         -: 1510:  return (__m128d) __A;
1519         -: 1511:}
1520         -: 1512:
1521         -: 1513:#endif /* __SSE2__  */
1522         -: 1514:
1523         -: 1515:#endif /* _EMMINTRIN_H_INCLUDED */