blob: 7540aece51f28c4013b23540fcdddb033ed0e263 [file] [log] [blame]
Anders Carlsson37f2f002008-12-24 01:45:22 +00001/*===---- xmmintrin.h - SSE intrinsics -------------------------------------===
2 *
3 * Permission is hereby granted, free of charge, to any person obtaining a copy
4 * of this software and associated documentation files (the "Software"), to deal
5 * in the Software without restriction, including without limitation the rights
6 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 * copies of the Software, and to permit persons to whom the Software is
8 * furnished to do so, subject to the following conditions:
9 *
10 * The above copyright notice and this permission notice shall be included in
11 * all copies or substantial portions of the Software.
12 *
13 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 * THE SOFTWARE.
20 *
21 *===-----------------------------------------------------------------------===
22 */
23
24#ifndef __EMMINTRIN_H
25#define __EMMINTRIN_H
26
27#ifndef __SSE2__
28#error "SSE2 instruction set not enabled"
29#else
30
31#include <xmmintrin.h>
32
33typedef double __m128d __attribute__((__vector_size__(16)));
34typedef long long __m128i __attribute__((__vector_size__(16)));
35
36typedef int __v4si __attribute__((__vector_size__(16)));
Anders Carlsson07603aa2008-12-24 02:41:00 +000037typedef short __v8hi __attribute__((__vector_size__(16)));
Anders Carlsson445afa02008-12-24 02:11:54 +000038typedef char __v16qi __attribute__((__vector_size__(16)));
Anders Carlsson37f2f002008-12-24 01:45:22 +000039
40static inline __m128d __attribute__((__always_inline__)) _mm_add_sd(__m128d a, __m128d b)
41{
42 return __builtin_ia32_addsd(a, b);
43}
44
45static inline __m128d __attribute__((__always_inline__)) _mm_add_pd(__m128d a, __m128d b)
46{
47 return a + b;
48}
49
50static inline __m128d __attribute__((__always_inline__)) _mm_sub_sd(__m128d a, __m128d b)
51{
52 return __builtin_ia32_subsd(a, b);
53}
54
55static inline __m128d __attribute__((__always_inline__)) _mm_sub_pd(__m128d a, __m128d b)
56{
57 return a - b;
58}
59
60static inline __m128d __attribute__((__always_inline__)) _mm_mul_sd(__m128d a, __m128d b)
61{
62 return __builtin_ia32_mulsd(a, b);
63}
64
65static inline __m128d __attribute__((__always_inline__)) _mm_mul_pd(__m128d a, __m128d b)
66{
67 return a * b;
68}
69
70static inline __m128d __attribute__((__always_inline__)) _mm_div_sd(__m128d a, __m128d b)
71{
72 return __builtin_ia32_divsd(a, b);
73}
74
75static inline __m128d __attribute__((__always_inline__)) _mm_div_pd(__m128d a, __m128d b)
76{
77 return a / b;
78}
79
80static inline __m128d __attribute__((__always_inline__)) _mm_sqrt_sd(__m128d a, __m128d b)
81{
82 __m128d c = __builtin_ia32_sqrtsd(b);
83 return (__m128d) { c[0], a[1] };
84}
85
86static inline __m128d __attribute__((__always_inline__)) _mm_sqrt_pd(__m128d a)
87{
88 return __builtin_ia32_sqrtpd(a);
89}
90
91static inline __m128d __attribute__((__always_inline__)) _mm_min_sd(__m128d a, __m128d b)
92{
93 return __builtin_ia32_minsd(a, b);
94}
95
96static inline __m128d __attribute__((__always_inline__)) _mm_min_pd(__m128d a, __m128d b)
97{
98 return __builtin_ia32_minpd(a, b);
99}
100
101static inline __m128d __attribute__((__always_inline__)) _mm_max_sd(__m128d a, __m128d b)
102{
103 return __builtin_ia32_maxsd(a, b);
104}
105
106static inline __m128d __attribute__((__always_inline__)) _mm_max_pd(__m128d a, __m128d b)
107{
108 return __builtin_ia32_maxpd(a, b);
109}
110
111static inline __m128d __attribute__((__always_inline__)) _mm_and_pd(__m128d a, __m128d b)
112{
113 return __builtin_ia32_andpd(a, b);
114}
115
116static inline __m128d __attribute__((__always_inline__)) _mm_andnot_pd(__m128d a, __m128d b)
117{
118 return __builtin_ia32_andnpd(a, b);
119}
120
121static inline __m128d __attribute__((__always_inline__)) _mm_or_pd(__m128d a, __m128d b)
122{
123 return __builtin_ia32_orpd(a, b);
124}
125
126static inline __m128d __attribute__((__always_inline__)) _mm_xor_pd(__m128d a, __m128d b)
127{
128 return __builtin_ia32_xorpd(a, b);
129}
130
131static inline __m128d __attribute__((__always_inline__)) _mm_cmpeq_pd(__m128d a, __m128d b)
132{
133 return (__m128d)__builtin_ia32_cmpeqpd(a, b);
134}
135
136static inline __m128d __attribute__((__always_inline__)) _mm_cmplt_pd(__m128d a, __m128d b)
137{
138 return (__m128d)__builtin_ia32_cmpltpd(a, b);
139}
140
141static inline __m128d __attribute__((__always_inline__)) _mm_cmple_pd(__m128d a, __m128d b)
142{
143 return (__m128d)__builtin_ia32_cmplepd(a, b);
144}
145
146static inline __m128d __attribute__((__always_inline__)) _mm_cmpgt_pd(__m128d a, __m128d b)
147{
148 return (__m128d)__builtin_ia32_cmpltpd(b, a);
149}
150
151static inline __m128d __attribute__((__always_inline__)) _mm_cmpge_pd(__m128d a, __m128d b)
152{
153 return (__m128d)__builtin_ia32_cmplepd(b, a);
154}
155
156static inline __m128d __attribute__((__always_inline__)) _mm_cmpord_pd(__m128d a, __m128d b)
157{
158 return (__m128d)__builtin_ia32_cmpordpd(a, b);
159}
160
161static inline __m128d __attribute__((__always_inline__)) _mm_cmpunord_pd(__m128d a, __m128d b)
162{
163 return (__m128d)__builtin_ia32_cmpunordpd(a, b);
164}
165
166static inline __m128d __attribute__((__always_inline__)) _mm_cmpneq_pd(__m128d a, __m128d b)
167{
168 return (__m128d)__builtin_ia32_cmpneqpd(a, b);
169}
170
171static inline __m128d __attribute__((__always_inline__)) _mm_cmpnlt_pd(__m128d a, __m128d b)
172{
173 return (__m128d)__builtin_ia32_cmpnltpd(a, b);
174}
175
176static inline __m128d __attribute__((__always_inline__)) _mm_cmpnle_pd(__m128d a, __m128d b)
177{
178 return (__m128d)__builtin_ia32_cmpnlepd(a, b);
179}
180
181static inline __m128d __attribute__((__always_inline__)) _mm_cmpngt_pd(__m128d a, __m128d b)
182{
183 return (__m128d)__builtin_ia32_cmpnltpd(b, a);
184}
185
186static inline __m128d __attribute__((__always_inline__)) _mm_cmpnge_pd(__m128d a, __m128d b)
187{
188 return (__m128d)__builtin_ia32_cmpnlepd(b, a);
189}
190
191static inline __m128d __attribute__((__always_inline__)) _mm_cmpeq_sd(__m128d a, __m128d b)
192{
193 return (__m128d)__builtin_ia32_cmpeqsd(a, b);
194}
195
196static inline __m128d __attribute__((__always_inline__)) _mm_cmplt_sd(__m128d a, __m128d b)
197{
198 return (__m128d)__builtin_ia32_cmpltsd(a, b);
199}
200
201static inline __m128d __attribute__((__always_inline__)) _mm_cmple_sd(__m128d a, __m128d b)
202{
203 return (__m128d)__builtin_ia32_cmplesd(a, b);
204}
205
206static inline __m128d __attribute__((__always_inline__)) _mm_cmpgt_sd(__m128d a, __m128d b)
207{
208 return (__m128d)__builtin_ia32_cmpltsd(b, a);
209}
210
211static inline __m128d __attribute__((__always_inline__)) _mm_cmpge_sd(__m128d a, __m128d b)
212{
213 return (__m128d)__builtin_ia32_cmplesd(b, a);
214}
215
216static inline __m128d __attribute__((__always_inline__)) _mm_cmpord_sd(__m128d a, __m128d b)
217{
218 return (__m128d)__builtin_ia32_cmpordsd(a, b);
219}
220
221static inline __m128d __attribute__((__always_inline__)) _mm_cmpunord_sd(__m128d a, __m128d b)
222{
223 return (__m128d)__builtin_ia32_cmpunordsd(a, b);
224}
225
226static inline __m128d __attribute__((__always_inline__)) _mm_cmpneq_sd(__m128d a, __m128d b)
227{
228 return (__m128d)__builtin_ia32_cmpneqsd(a, b);
229}
230
231static inline __m128d __attribute__((__always_inline__)) _mm_cmpnlt_sd(__m128d a, __m128d b)
232{
233 return (__m128d)__builtin_ia32_cmpnltsd(a, b);
234}
235
236static inline __m128d __attribute__((__always_inline__)) _mm_cmpnle_sd(__m128d a, __m128d b)
237{
238 return (__m128d)__builtin_ia32_cmpnlesd(a, b);
239}
240
241static inline __m128d __attribute__((__always_inline__)) _mm_cmpngt_sd(__m128d a, __m128d b)
242{
243 return (__m128d)__builtin_ia32_cmpnltsd(b, a);
244}
245
246static inline __m128d __attribute__((__always_inline__)) _mm_cmpnge_sd(__m128d a, __m128d b)
247{
248 return (__m128d)__builtin_ia32_cmpnlesd(b, a);
249}
250
251static inline int __attribute__((__always_inline__)) _mm_comieq_sd(__m128d a, __m128d b)
252{
253 return __builtin_ia32_comisdeq(a, b);
254}
255
256static inline int __attribute__((__always_inline__)) _mm_comilt_sd(__m128d a, __m128d b)
257{
258 return __builtin_ia32_comisdlt(a, b);
259}
260
261static inline int __attribute__((__always_inline__)) _mm_comile_sd(__m128d a, __m128d b)
262{
263 return __builtin_ia32_comisdle(a, b);
264}
265
266static inline int __attribute__((__always_inline__)) _mm_comigt_sd(__m128d a, __m128d b)
267{
268 return __builtin_ia32_comisdgt(a, b);
269}
270
271static inline int __attribute__((__always_inline__)) _mm_comineq_sd(__m128d a, __m128d b)
272{
273 return __builtin_ia32_comisdneq(a, b);
274}
275
276static inline int __attribute__((__always_inline__)) _mm_ucomieq_sd(__m128d a, __m128d b)
277{
278 return __builtin_ia32_ucomisdeq(a, b);
279}
280
281static inline int __attribute__((__always_inline__)) _mm_ucomilt_sd(__m128d a, __m128d b)
282{
283 return __builtin_ia32_ucomisdlt(a, b);
284}
285
286static inline int __attribute__((__always_inline__)) _mm_ucomile_sd(__m128d a, __m128d b)
287{
288 return __builtin_ia32_ucomisdle(a, b);
289}
290
291static inline int __attribute__((__always_inline__)) _mm_ucomigt_sd(__m128d a, __m128d b)
292{
293 return __builtin_ia32_ucomisdgt(a, b);
294}
295
296static inline int __attribute__((__always_inline__)) _mm_ucomineq_sd(__m128d a, __m128d b)
297{
298 return __builtin_ia32_ucomisdneq(a, b);
299}
300
301static inline __m128 __attribute__((__always_inline__)) _mm_cvtpd_ps(__m128d a)
302{
303 return __builtin_ia32_cvtpd2ps(a);
304}
305
306static inline __m128d __attribute__((__always_inline__)) _mm_cvtps_pd(__m128 a)
307{
308 return __builtin_ia32_cvtps2pd(a);
309}
310
311static inline __m128d __attribute__((__always_inline__)) _mm_cvtepi32_pd(__m128i a)
312{
313 return __builtin_ia32_cvtdq2pd((__v4si)a);
314}
315
316static inline __m128i __attribute__((__always_inline__)) _mm_cvtpd_epi32(__m128d a)
317{
318 return __builtin_ia32_cvtpd2dq(a);
319}
320
321static inline int __attribute__((__always_inline__)) _mm_cvtsd_si32(__m128d a)
322{
323 return __builtin_ia32_cvtsd2si(a);
324}
325
326static inline __m128 __attribute__((__always_inline__)) _mm_cvtsd_ss(__m128 a, __m128d b)
327{
328 return __builtin_ia32_cvtsd2ss(a, b);
329}
330
331static inline __m128d __attribute__((__always_inline__)) _mm_cvtsi32_sd(__m128d a, int b)
332{
333 return __builtin_ia32_cvtsi2sd(a, b);
334}
335
336static inline __m128d __attribute__((__always_inline__)) _mm_cvtss_sd(__m128d a, __m128 b)
337{
338 return __builtin_ia32_cvtss2sd(a, b);
339}
340
341static inline __m128i __attribute__((__always_inline__)) _mm_cvttpd_epi32(__m128d a)
342{
343 return (__m128i)__builtin_ia32_cvttpd2dq(a);
344}
345
346static inline int __attribute__((__always_inline__)) _mm_cvttsd_si32(__m128d a)
347{
348 return __builtin_ia32_cvttsd2si(a);
349}
350
351static inline __m64 __attribute__((__always_inline__)) _mm_cvtpd_pi32(__m128d a)
352{
353 return (__m64)__builtin_ia32_cvtpd2pi(a);
354}
355
356static inline __m64 __attribute__((__always_inline__)) _mm_cvttpd_pi32(__m128d a)
357{
358 return (__m64)__builtin_ia32_cvttpd2pi(a);
359}
360
361static inline __m128d __attribute__((__always_inline__)) _mm_cvtpi32_pd(__m64 a)
362{
363 return __builtin_ia32_cvtpi2pd((__v2si)a);
364}
365
366static inline double __attribute__((__always_inline__)) _mm_cvtsd_f64(__m128d a)
367{
368 return a[0];
369}
370
Anders Carlsson445afa02008-12-24 02:11:54 +0000371static inline __m128d __attribute__((__always_inline__)) _mm_load_pd(double const *dp)
372{
373 return *(__m128d*)dp;
374}
375
376static inline __m128d __attribute__((__always_inline__)) _mm_load1_pd(double const *dp)
377{
378 return (__m128d){ dp[0], dp[0] };
379}
380
381static inline __m128d __attribute__((__always_inline__)) _mm_loadr_pd(double const *dp)
382{
383 return (__m128d){ dp[1], dp[0] };
384}
385
386static inline __m128d __attribute__((__always_inline__)) _mm_loadu_pd(double const *dp)
387{
388 return __builtin_ia32_loadupd(dp);
389}
390
391static inline __m128d __attribute__((__always_inline__)) _mm_load_sd(double const *dp)
392{
393 return (__m128d){ *dp, 0.0 };
394}
395
396static inline __m128d __attribute__((__always_inline__)) _mm_loadh_pd(__m128d a, double const *dp)
397{
398 return __builtin_shufflevector(a, *(__m128d *)dp, 0, 2);
399}
400
401static inline __m128d __attribute__((__always_inline__)) _mm_loadl_pd(__m128d a, double const *dp)
402{
403 return __builtin_shufflevector(a, *(__m128d *)dp, 2, 1);
404}
405
406static inline __m128d __attribute__((__always_inline__)) _mm_set_sd(double w)
407{
408 return (__m128d){ w, 0 };
409}
410
411static inline __m128d __attribute__((__always_inline__)) _mm_set1_pd(double w)
412{
413 return (__m128d){ w, w };
414}
415
416static inline __m128d __attribute__((__always_inline__)) _mm_set_pd(double w, double x)
417{
418 return (__m128d){ w, x };
419}
420
421static inline __m128d __attribute__((__always_inline__)) _mm_setr_pd(double w, double x)
422{
423 return (__m128d){ x, w };
424}
425
426static inline __m128d __attribute__((__always_inline__)) _mm_setzero_pd(void)
427{
428 return (__m128d){ 0, 0 };
429}
430
431static inline __m128d __attribute__((__always_inline__)) _mm_move_sd(__m128d a, __m128d b)
432{
433 return (__m128d){ b[0], a[1] };
434}
435
436static inline void __attribute__((__always_inline__)) _mm_store_sd(double *dp, __m128d a)
437{
438 dp[0] = a[0];
439}
440
441static inline void __attribute__((__always_inline__)) _mm_store1_pd(double *dp, __m128d a)
442{
443 dp[0] = a[0];
444 dp[1] = a[0];
445}
446
447static inline void __attribute__((__always_inline__)) _mm_store_pd(double *dp, __m128d a)
448{
449 *(__m128d *)dp = a;
450}
451
452static inline void __attribute__((__always_inline__)) _mm_storeu_pd(double *dp, __m128d a)
453{
454 __builtin_ia32_storeupd(dp, a);
455}
456
457static inline void __attribute__((__always_inline__)) _mm_storer_pd(double *dp, __m128d a)
458{
459 dp[0] = a[1];
460 dp[1] = a[0];
461}
462
463static inline void __attribute__((__always_inline__)) _mm_storeh_pd(double *dp, __m128d a)
464{
465 dp[0] = a[1];
466}
467
468static inline void __attribute__((__always_inline__)) _mm_storel_pd(double *dp, __m128d a)
469{
470 dp[0] = a[0];
471}
472
Anders Carlsson07603aa2008-12-24 02:41:00 +0000473static inline __m128i __attribute__((__always_inline__)) _mm_add_epi8(__m128i a, __m128i b)
474{
475 return (__m128i)((__v16qi)a + (__v16qi)b);
476}
477
478static inline __m128i __attribute__((__always_inline__)) _mm_add_epi16(__m128i a, __m128i b)
479{
480 return (__m128i)((__v8hi)a + (__v8hi)b);
481}
482
483static inline __m128i __attribute__((__always_inline__)) _mm_add_epi32(__m128i a, __m128i b)
484{
485 return (__m128i)((__v4si)a + (__v4si)b);
486}
487
488__m64 _mm_add_si64(__m64 a, __m64 b)
489{
490 return a + b;
491}
492
493static inline __m128i __attribute__((__always_inline__)) _mm_add_epi64(__m128i a, __m128i b)
494{
495 return a + b;
496}
497
498static inline __m128i __attribute__((__always_inline__)) _mm_adds_epi8(__m128i a, __m128i b)
499{
500 return (__m128i)__builtin_ia32_paddsb128((__v16qi)a, (__v16qi)b);
501}
502
503static inline __m128i __attribute__((__always_inline__)) _mm_adds_epi16(__m128i a, __m128i b)
504{
505 return (__m128i)__builtin_ia32_paddsw128((__v8hi)a, (__v8hi)b);
506}
507
508static inline __m128i __attribute__((__always_inline__)) _mm_adds_epu8(__m128i a, __m128i b)
509{
510 return (__m128i)__builtin_ia32_paddusb128((__v16qi)a, (__v16qi)b);
511}
512
513static inline __m128i __attribute__((__always_inline__)) _mm_adds_epu16(__m128i a, __m128i b)
514{
515 return (__m128i)__builtin_ia32_paddusw128((__v8hi)a, (__v8hi)b);
516}
517
518static inline __m128i __attribute__((__always_inline__)) _mm_avg_epu8(__m128i a, __m128i b)
519{
520 return (__m128i)__builtin_ia32_pavgb128((__v16qi)a, (__v16qi)b);
521}
522
523static inline __m128i __attribute__((__always_inline__)) _mm_avg_epu16(__m128i a, __m128i b)
524{
525 return (__m128i)__builtin_ia32_pavgw128((__v8hi)a, (__v8hi)b);
526}
527
528static inline __m128i __attribute__((__always_inline__)) _mm_madd_epi16(__m128i a, __m128i b)
529{
530 return (__m128i)__builtin_ia32_pmaddwd128((__v8hi)a, (__v8hi)b);
531}
532
533static inline __m128i __attribute__((__always_inline__)) _mm_max_epi16(__m128i a, __m128i b)
534{
535 return (__m128i)__builtin_ia32_pmaxsw128((__v8hi)a, (__v8hi)b);
536}
537
538static inline __m128i __attribute__((__always_inline__)) _mm_max_epu8(__m128i a, __m128i b)
539{
540 return (__m128i)__builtin_ia32_pmaxub128((__v16qi)a, (__v16qi)b);
541}
542
543static inline __m128i __attribute__((__always_inline__)) _mm_min_epi16(__m128i a, __m128i b)
544{
545 return (__m128i)__builtin_ia32_pminsw128((__v8hi)a, (__v8hi)b);
546}
547
548static inline __m128i __attribute__((__always_inline__)) _mm_min_epu8(__m128i a, __m128i b)
549{
550 return (__m128i)__builtin_ia32_pminub128((__v16qi)a, (__v16qi)b);
551}
552
553static inline __m128i __attribute__((__always_inline__)) _mm_mulhi_epi16(__m128i a, __m128i b)
554{
555 return (__m128i)__builtin_ia32_pmulhw128((__v8hi)a, (__v8hi)b);
556}
557
558static inline __m128i __attribute__((__always_inline__)) _mm_mulhi_epu16(__m128i a, __m128i b)
559{
560 return (__m128i)__builtin_ia32_pmulhuw128((__v8hi)a, (__v8hi)b);
561}
562
563static inline __m128i __attribute__((__always_inline__)) _mm_mullo_epi16(__m128i a, __m128i b)
564{
565 return (__m128i)__builtin_ia32_pmullw128((__v8hi)a, (__v8hi)b);
566}
567
568__m64 _mm_mul_su32(__m64 a, __m64 b)
569{
570 return __builtin_ia32_pmuludq((__v2si)a, (__v2si)b);
571}
572
573static inline __m128i __attribute__((__always_inline__)) _mm_mul_epu32(__m128i a, __m128i b)
574{
575 return __builtin_ia32_pmuludq128((__v4si)a, (__v4si)b);
576}
577
578static inline __m128i __attribute__((__always_inline__)) _mm_sad_epu(__m128i a, __m128i b)
579{
580 return __builtin_ia32_psadbw128((__v16qi)a, (__v16qi)b);
581}
582
583static inline __m128i __attribute__((__always_inline__)) _mm_sub_epi8(__m128i a, __m128i b)
584{
585 return (__m128i)((__v16qi)a - (__v16qi)b);
586}
587
588static inline __m128i __attribute__((__always_inline__)) _mm_sub_epi16(__m128i a, __m128i b)
589{
590 return (__m128i)((__v8hi)a - (__v8hi)b);
591}
592
593static inline __m128i __attribute__((__always_inline__)) _mm_sub_epi32(__m128i a, __m128i b)
594{
595 return (__m128i)((__v4si)a - (__v4si)b);
596}
597
598__m64 _mm_sub_si64(__m64 a, __m64 b)
599{
600 return a - b;
601}
602
603static inline __m128i __attribute__((__always_inline__)) _mm_sub_epi64(__m128i a, __m128i b)
604{
605 return a - b;
606}
607
608static inline __m128i __attribute__((__always_inline__)) _mm_subs_epi8(__m128i a, __m128i b)
609{
610 return (__m128i)__builtin_ia32_psubsb128((__v16qi)a, (__v16qi)b);
611}
612
613static inline __m128i __attribute__((__always_inline__)) _mm_subs_epi16(__m128i a, __m128i b)
614{
615 return (__m128i)__builtin_ia32_psubsw128((__v8hi)a, (__v8hi)b);
616}
617
618static inline __m128i __attribute__((__always_inline__)) _mm_subs_epu8(__m128i a, __m128i b)
619{
620 return (__m128i)__builtin_ia32_psubusb128((__v16qi)a, (__v16qi)b);
621}
622
623static inline __m128i __attribute__((__always_inline__)) _mm_subs_epu16(__m128i a, __m128i b)
624{
625 return (__m128i)__builtin_ia32_psubusw128((__v8hi)a, (__v8hi)b);
626}
627
Anders Carlsson37f2f002008-12-24 01:45:22 +0000628#endif /* __SSE2__ */
629
630#endif /* __EMMINTRIN_H */