10930b6e6c819aa5c871c4cfb7f8f4bb5a15af5afBenjamin Kramer/*===---- emmintrin.h - SSE2 intrinsics ------------------------------------===
237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson *
337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * Permission is hereby granted, free of charge, to any person obtaining a copy
437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * of this software and associated documentation files (the "Software"), to deal
537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * in the Software without restriction, including without limitation the rights
637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * copies of the Software, and to permit persons to whom the Software is
837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * furnished to do so, subject to the following conditions:
937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson *
1037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * The above copyright notice and this permission notice shall be included in
1137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * all copies or substantial portions of the Software.
1237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson *
1337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
1437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
1537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
1637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
1737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
1937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson * THE SOFTWARE.
2037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson *
2137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson *===-----------------------------------------------------------------------===
2237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson */
230930b6e6c819aa5c871c4cfb7f8f4bb5a15af5afBenjamin Kramer
2437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson#ifndef __EMMINTRIN_H
2537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson#define __EMMINTRIN_H
2637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson#ifndef __SSE2__
2837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson#error "SSE2 instruction set not enabled"
2937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson#else
3037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson#include <xmmintrin.h>
3237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlssontypedef double __m128d __attribute__((__vector_size__(16)));
3437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlssontypedef long long __m128i __attribute__((__vector_size__(16)));
3537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
36faf9404ae2001b949dd0b7ba9cd72a41d629a90bEric Christopher/* Type defines.  */
37faf9404ae2001b949dd0b7ba9cd72a41d629a90bEric Christophertypedef double __v2df __attribute__ ((__vector_size__ (16)));
38faf9404ae2001b949dd0b7ba9cd72a41d629a90bEric Christophertypedef long long __v2di __attribute__ ((__vector_size__ (16)));
3907603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlssontypedef short __v8hi __attribute__((__vector_size__(16)));
404bf4e3034e23cc3c177b7c6dda39b28e689e7ed6Anders Carlssontypedef char __v16qi __attribute__((__vector_size__(16)));
4137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
421bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
434f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_add_sd(__m128d __a, __m128d __b)
4437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
454f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __a[0] += __b[0];
464f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a;
4737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
4837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
491bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
504f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_add_pd(__m128d __a, __m128d __b)
5137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
524f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a + __b;
5337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
5437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
551bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
564f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sub_sd(__m128d __a, __m128d __b)
5737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
584f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __a[0] -= __b[0];
594f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a;
6037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
6137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
621bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
634f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sub_pd(__m128d __a, __m128d __b)
6437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
654f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a - __b;
6637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
6737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
681bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
694f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_mul_sd(__m128d __a, __m128d __b)
7037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
714f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __a[0] *= __b[0];
724f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a;
7337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
7437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
751bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
764f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_mul_pd(__m128d __a, __m128d __b)
7737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
784f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a * __b;
7937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
8037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
811bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
824f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_div_sd(__m128d __a, __m128d __b)
8337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
844f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __a[0] /= __b[0];
854f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a;
8637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
8737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
881bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
894f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_div_pd(__m128d __a, __m128d __b)
9037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
914f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a / __b;
9237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
9337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
941bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
954f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sqrt_sd(__m128d __a, __m128d __b)
9637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
974f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __m128d __c = __builtin_ia32_sqrtsd(__b);
984f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d) { __c[0], __a[1] };
9937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
10037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1011bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1024f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sqrt_pd(__m128d __a)
10337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1044f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_sqrtpd(__a);
10537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
10637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1071bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1084f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_min_sd(__m128d __a, __m128d __b)
10937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1104f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_minsd(__a, __b);
11137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
11237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1131bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1144f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_min_pd(__m128d __a, __m128d __b)
11537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1164f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_minpd(__a, __b);
11737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
11837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1191bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1204f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_max_sd(__m128d __a, __m128d __b)
12137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1224f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_maxsd(__a, __b);
12337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
12437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1251bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1264f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_max_pd(__m128d __a, __m128d __b)
12737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1284f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_maxpd(__a, __b);
12937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
13037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1311bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1324f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_and_pd(__m128d __a, __m128d __b)
13337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1344f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)((__v4si)__a & (__v4si)__b);
13537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
13637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1371bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1384f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_andnot_pd(__m128d __a, __m128d __b)
13937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1404f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)(~(__v4si)__a & (__v4si)__b);
14137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
14237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1431bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1444f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_or_pd(__m128d __a, __m128d __b)
14537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1464f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)((__v4si)__a | (__v4si)__b);
14737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
14837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1491bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1504f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_xor_pd(__m128d __a, __m128d __b)
15137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1524f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)((__v4si)__a ^ (__v4si)__b);
15337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
15437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1551bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1564f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpeq_pd(__m128d __a, __m128d __b)
15737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1584f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmppd(__a, __b, 0);
15937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
16037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1611bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1624f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmplt_pd(__m128d __a, __m128d __b)
16337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1644f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmppd(__a, __b, 1);
16537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
16637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1671bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1684f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmple_pd(__m128d __a, __m128d __b)
16937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1704f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmppd(__a, __b, 2);
17137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
17237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1731bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1744f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpgt_pd(__m128d __a, __m128d __b)
17537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1764f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmppd(__b, __a, 1);
17737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
17837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1791bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1804f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpge_pd(__m128d __a, __m128d __b)
18137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1824f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmppd(__b, __a, 2);
18337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
18437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1851bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1864f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpord_pd(__m128d __a, __m128d __b)
18737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1884f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmppd(__a, __b, 7);
18937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
19037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1911bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1924f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpunord_pd(__m128d __a, __m128d __b)
19337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
1944f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmppd(__a, __b, 3);
19537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
19637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
1971bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1984f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpneq_pd(__m128d __a, __m128d __b)
19937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2004f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmppd(__a, __b, 4);
20137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
20237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2031bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2044f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpnlt_pd(__m128d __a, __m128d __b)
20537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2064f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmppd(__a, __b, 5);
20737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
20837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2091bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2104f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpnle_pd(__m128d __a, __m128d __b)
21137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2124f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmppd(__a, __b, 6);
21337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
21437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2151bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2164f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpngt_pd(__m128d __a, __m128d __b)
21737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2184f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmppd(__b, __a, 5);
21937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
22037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2211bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2224f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpnge_pd(__m128d __a, __m128d __b)
22337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2244f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmppd(__b, __a, 6);
22537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
22637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2271bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2284f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpeq_sd(__m128d __a, __m128d __b)
22937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2304f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmpsd(__a, __b, 0);
23137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
23237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2331bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2344f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmplt_sd(__m128d __a, __m128d __b)
23537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2364f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmpsd(__a, __b, 1);
23737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
23837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2391bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2404f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmple_sd(__m128d __a, __m128d __b)
24137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2424f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmpsd(__a, __b, 2);
24337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
24437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2451bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2464f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpgt_sd(__m128d __a, __m128d __b)
24737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
248492d84c0f737840d6ff8f894879405dacb3dd88bManman Ren  __m128d __c = __builtin_ia32_cmpsd(__b, __a, 1);
249492d84c0f737840d6ff8f894879405dacb3dd88bManman Ren  return (__m128d) { __c[0], __a[1] };
25037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
25137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2521bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2534f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpge_sd(__m128d __a, __m128d __b)
25437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
255492d84c0f737840d6ff8f894879405dacb3dd88bManman Ren  __m128d __c = __builtin_ia32_cmpsd(__b, __a, 2);
256492d84c0f737840d6ff8f894879405dacb3dd88bManman Ren  return (__m128d) { __c[0], __a[1] };
25737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
25837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2591bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2604f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpord_sd(__m128d __a, __m128d __b)
26137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2624f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmpsd(__a, __b, 7);
26337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
26437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2651bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2664f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpunord_sd(__m128d __a, __m128d __b)
26737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2684f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmpsd(__a, __b, 3);
26937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
27037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2711bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2724f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpneq_sd(__m128d __a, __m128d __b)
27337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2744f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmpsd(__a, __b, 4);
27537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
27637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2771bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2784f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpnlt_sd(__m128d __a, __m128d __b)
27937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2804f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmpsd(__a, __b, 5);
28137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
28237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2831bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2844f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpnle_sd(__m128d __a, __m128d __b)
28537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
2864f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d)__builtin_ia32_cmpsd(__a, __b, 6);
28737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
28837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2891bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2904f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpngt_sd(__m128d __a, __m128d __b)
29137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
292492d84c0f737840d6ff8f894879405dacb3dd88bManman Ren  __m128d __c = __builtin_ia32_cmpsd(__b, __a, 5);
293492d84c0f737840d6ff8f894879405dacb3dd88bManman Ren  return (__m128d) { __c[0], __a[1] };
29437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
29537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
2961bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
2974f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpnge_sd(__m128d __a, __m128d __b)
29837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
299492d84c0f737840d6ff8f894879405dacb3dd88bManman Ren  __m128d __c = __builtin_ia32_cmpsd(__b, __a, 6);
300492d84c0f737840d6ff8f894879405dacb3dd88bManman Ren  return (__m128d) { __c[0], __a[1] };
30137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
30237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3031bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
3044f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_comieq_sd(__m128d __a, __m128d __b)
30537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3064f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_comisdeq(__a, __b);
30737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
30837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3091bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
3104f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_comilt_sd(__m128d __a, __m128d __b)
31137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3124f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_comisdlt(__a, __b);
31337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
31437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3151bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
3164f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_comile_sd(__m128d __a, __m128d __b)
31737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3184f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_comisdle(__a, __b);
31937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
32037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3211bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
3224f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_comigt_sd(__m128d __a, __m128d __b)
32337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3244f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_comisdgt(__a, __b);
32537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
32637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3271bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
3284f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_comige_sd(__m128d __a, __m128d __b)
3298052a4f1f62afb2a20fd453fa465fb4a11cfc5c6Eli Friedman{
3304f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_comisdge(__a, __b);
3318052a4f1f62afb2a20fd453fa465fb4a11cfc5c6Eli Friedman}
3328052a4f1f62afb2a20fd453fa465fb4a11cfc5c6Eli Friedman
3338052a4f1f62afb2a20fd453fa465fb4a11cfc5c6Eli Friedmanstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
3344f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_comineq_sd(__m128d __a, __m128d __b)
33537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3364f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_comisdneq(__a, __b);
33737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
33837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3391bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
3404f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_ucomieq_sd(__m128d __a, __m128d __b)
34137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3424f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_ucomisdeq(__a, __b);
34337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
34437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3451bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
3464f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_ucomilt_sd(__m128d __a, __m128d __b)
34737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3484f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_ucomisdlt(__a, __b);
34937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
35037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3511bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
3524f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_ucomile_sd(__m128d __a, __m128d __b)
35337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3544f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_ucomisdle(__a, __b);
35537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
35637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3571bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
3584f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_ucomigt_sd(__m128d __a, __m128d __b)
35937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3604f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_ucomisdgt(__a, __b);
36137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
36237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3631bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
3644f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_ucomige_sd(__m128d __a, __m128d __b)
365ef534ce30f70aa3bbedefc2a25a8e38110ae270dEli Friedman{
3664f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_ucomisdge(__a, __b);
367ef534ce30f70aa3bbedefc2a25a8e38110ae270dEli Friedman}
368ef534ce30f70aa3bbedefc2a25a8e38110ae270dEli Friedman
369ef534ce30f70aa3bbedefc2a25a8e38110ae270dEli Friedmanstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
3704f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_ucomineq_sd(__m128d __a, __m128d __b)
37137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3724f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_ucomisdneq(__a, __b);
37337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
37437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3751bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
3764f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtpd_ps(__m128d __a)
37737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3784f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_cvtpd2ps(__a);
37937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
38037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3811bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
3824f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtps_pd(__m128 __a)
38337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3844f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_cvtps2pd(__a);
38537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
38637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3871bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
3884f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtepi32_pd(__m128i __a)
38937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3904f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_cvtdq2pd((__v4si)__a);
39137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
39237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3931bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
3944f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtpd_epi32(__m128d __a)
39537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
3964f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_cvtpd2dq(__a);
39737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
39837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
3991bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
4004f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtsd_si32(__m128d __a)
40137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
4024f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_cvtsd2si(__a);
40337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
40437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
4051bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
4064f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtsd_ss(__m128 __a, __m128d __b)
40737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
4084f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __a[0] = __b[0];
4094f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a;
41037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
41137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
4121bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
4134f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtsi32_sd(__m128d __a, int __b)
41437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
4154f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __a[0] = __b;
4164f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a;
41737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
41837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
4191bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
4204f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtss_sd(__m128d __a, __m128 __b)
42137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
4224f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __a[0] = __b[0];
4234f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a;
42437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
42537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
4261bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
4274f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvttpd_epi32(__m128d __a)
42837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
4294f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_cvttpd2dq(__a);
43037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
43137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
4321bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
4334f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvttsd_si32(__m128d __a)
43437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
4354f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a[0];
43637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
43737f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
4381bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__))
4394f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtpd_pi32(__m128d __a)
44037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
4414f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m64)__builtin_ia32_cvtpd2pi(__a);
44237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
44337f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
4441bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__))
4454f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvttpd_pi32(__m128d __a)
44637f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
4474f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m64)__builtin_ia32_cvttpd2pi(__a);
44837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
44937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
4501bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
4514f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtpi32_pd(__m64 __a)
45237f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
4534f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_cvtpi2pd((__v2si)__a);
45437f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
45537f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
4561bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ double __attribute__((__always_inline__, __nodebug__))
4574f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtsd_f64(__m128d __a)
45837f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson{
4594f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a[0];
46037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson}
46137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
4621bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
4634f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_load_pd(double const *__dp)
464445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
4654f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return *(__m128d*)__dp;
466445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
467445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
4681bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
4694f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_load1_pd(double const *__dp)
470445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
4717c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  struct __mm_load1_pd_struct {
4724f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie    double __u;
4737c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  } __attribute__((__packed__, __may_alias__));
4744f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  double __u = ((struct __mm_load1_pd_struct*)__dp)->__u;
4754f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d){ __u, __u };
476445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
477445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
478db7351af8e9f9b46075e62137a29a84c666404b2Eli Friedman#define        _mm_load_pd1(dp)        _mm_load1_pd(dp)
479db7351af8e9f9b46075e62137a29a84c666404b2Eli Friedman
4801bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
4814f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_loadr_pd(double const *__dp)
482445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
4834f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __m128d __u = *(__m128d*)__dp;
4844f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_shufflevector(__u, __u, 1, 0);
485445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
486445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
4871bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
4884f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_loadu_pd(double const *__dp)
489445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
490eed92a18829575f316313659d6294fd2ef275838Bill Wendling  struct __loadu_pd {
4914f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie    __m128d __v;
4928e3ec9caeb2653b676896ddf05cdf826edc2c3f1Bill Wendling  } __attribute__((packed, may_alias));
4934f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return ((struct __loadu_pd*)__dp)->__v;
494445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
495445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
4961bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
4974f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_load_sd(double const *__dp)
498445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
4997c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  struct __mm_load_sd_struct {
5004f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie    double __u;
5017c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  } __attribute__((__packed__, __may_alias__));
5024f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  double __u = ((struct __mm_load_sd_struct*)__dp)->__u;
5034f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d){ __u, 0 };
504445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
505445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5061bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
5074f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_loadh_pd(__m128d __a, double const *__dp)
508445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
5097c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  struct __mm_loadh_pd_struct {
5104f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie    double __u;
5117c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  } __attribute__((__packed__, __may_alias__));
5124f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  double __u = ((struct __mm_loadh_pd_struct*)__dp)->__u;
5134f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d){ __a[0], __u };
514445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
515445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5161bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
5174f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_loadl_pd(__m128d __a, double const *__dp)
518445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
5197c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  struct __mm_loadl_pd_struct {
5204f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie    double __u;
5217c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  } __attribute__((__packed__, __may_alias__));
5224f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  double __u = ((struct __mm_loadl_pd_struct*)__dp)->__u;
5234f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d){ __u, __a[1] };
524445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
525445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5261bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
5274f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_set_sd(double __w)
528445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
5294f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d){ __w, 0 };
530445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
531445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5321bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
5334f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_set1_pd(double __w)
534445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
5354f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d){ __w, __w };
536445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
537445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5381bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
5394f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_set_pd(double __w, double __x)
540445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
5414f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d){ __x, __w };
542445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
543445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5441bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
5454f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_setr_pd(double __w, double __x)
546445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
5474f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d){ __w, __x };
548445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
549445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5501bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
551dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_setzero_pd(void)
552445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
553445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson  return (__m128d){ 0, 0 };
554445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
555445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5561bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
5574f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_move_sd(__m128d __a, __m128d __b)
558445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
5594f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128d){ __b[0], __a[1] };
560445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
561445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5621bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
5634f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_store_sd(double *__dp, __m128d __a)
564445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
5657c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  struct __mm_store_sd_struct {
5664f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie    double __u;
5677c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  } __attribute__((__packed__, __may_alias__));
5684f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  ((struct __mm_store_sd_struct*)__dp)->__u = __a[0];
569445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
570445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5711bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
5724f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_store1_pd(double *__dp, __m128d __a)
573445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
5747c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  struct __mm_store1_pd_struct {
5754f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie    double __u[2];
5767c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  } __attribute__((__packed__, __may_alias__));
5774f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  ((struct __mm_store1_pd_struct*)__dp)->__u[0] = __a[0];
5784f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  ((struct __mm_store1_pd_struct*)__dp)->__u[1] = __a[0];
579445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
580445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5811bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
5824f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_store_pd(double *__dp, __m128d __a)
583445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
5844f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  *(__m128d *)__dp = __a;
585445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
586445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5871bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
5884f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_storeu_pd(double *__dp, __m128d __a)
589445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
5904f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __builtin_ia32_storeupd(__dp, __a);
591445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
592445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
5931bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
5944f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_storer_pd(double *__dp, __m128d __a)
595445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
5964f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __a = __builtin_shufflevector(__a, __a, 1, 0);
5974f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  *(__m128d *)__dp = __a;
598445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
599445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
6001bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
6014f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_storeh_pd(double *__dp, __m128d __a)
602445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
6037c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  struct __mm_storeh_pd_struct {
6044f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie    double __u;
6057c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  } __attribute__((__packed__, __may_alias__));
6064f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  ((struct __mm_storeh_pd_struct*)__dp)->__u = __a[1];
607445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
608445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
6091bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
6104f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_storel_pd(double *__dp, __m128d __a)
611445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson{
6127c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  struct __mm_storeh_pd_struct {
6134f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie    double __u;
6147c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  } __attribute__((__packed__, __may_alias__));
6154f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  ((struct __mm_storeh_pd_struct*)__dp)->__u = __a[0];
616445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson}
617445afa04f5170292727b7601fb52c129420bc6a4Anders Carlsson
6181bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6194f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_add_epi8(__m128i __a, __m128i __b)
62007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6214f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v16qi)__a + (__v16qi)__b);
62207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
62307603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6241bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6254f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_add_epi16(__m128i __a, __m128i __b)
62607603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6274f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v8hi)__a + (__v8hi)__b);
62807603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
62907603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6301bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6314f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_add_epi32(__m128i __a, __m128i __b)
63207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6334f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v4si)__a + (__v4si)__b);
63407603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
63507603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6361bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__))
6374f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_add_si64(__m64 __a, __m64 __b)
63807603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6394f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a + __b;
64007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
64107603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6421bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6434f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_add_epi64(__m128i __a, __m128i __b)
64407603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6454f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a + __b;
64607603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
64707603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6481bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6494f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_adds_epi8(__m128i __a, __m128i __b)
65007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6514f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_paddsb128((__v16qi)__a, (__v16qi)__b);
65207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
65307603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6541bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6554f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_adds_epi16(__m128i __a, __m128i __b)
65607603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6574f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_paddsw128((__v8hi)__a, (__v8hi)__b);
65807603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
65907603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6601bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6614f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_adds_epu8(__m128i __a, __m128i __b)
66207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6634f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_paddusb128((__v16qi)__a, (__v16qi)__b);
66407603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
66507603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6661bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6674f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_adds_epu16(__m128i __a, __m128i __b)
66807603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6694f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_paddusw128((__v8hi)__a, (__v8hi)__b);
67007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
67107603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6721bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6734f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_avg_epu8(__m128i __a, __m128i __b)
67407603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6754f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_pavgb128((__v16qi)__a, (__v16qi)__b);
67607603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
67707603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6781bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6794f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_avg_epu16(__m128i __a, __m128i __b)
68007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6814f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_pavgw128((__v8hi)__a, (__v8hi)__b);
68207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
68307603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6841bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6854f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_madd_epi16(__m128i __a, __m128i __b)
68607603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6874f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_pmaddwd128((__v8hi)__a, (__v8hi)__b);
68807603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
68907603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6901bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6914f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_max_epi16(__m128i __a, __m128i __b)
69207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6934f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_pmaxsw128((__v8hi)__a, (__v8hi)__b);
69407603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
69507603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
6961bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
6974f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_max_epu8(__m128i __a, __m128i __b)
69807603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
6994f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_pmaxub128((__v16qi)__a, (__v16qi)__b);
70007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
70107603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7021bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7034f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_min_epi16(__m128i __a, __m128i __b)
70407603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7054f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_pminsw128((__v8hi)__a, (__v8hi)__b);
70607603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
70707603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7081bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7094f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_min_epu8(__m128i __a, __m128i __b)
71007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7114f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_pminub128((__v16qi)__a, (__v16qi)__b);
71207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
71307603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7141bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7154f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_mulhi_epi16(__m128i __a, __m128i __b)
71607603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7174f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_pmulhw128((__v8hi)__a, (__v8hi)__b);
71807603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
71907603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7201bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7214f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_mulhi_epu16(__m128i __a, __m128i __b)
72207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7234f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_pmulhuw128((__v8hi)__a, (__v8hi)__b);
72407603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
72507603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7261bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7274f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_mullo_epi16(__m128i __a, __m128i __b)
72807603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7294f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v8hi)__a * (__v8hi)__b);
73007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
73107603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7321bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__))
7334f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_mul_su32(__m64 __a, __m64 __b)
73407603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7354f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_pmuludq((__v2si)__a, (__v2si)__b);
73607603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
73707603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7381bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7394f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_mul_epu32(__m128i __a, __m128i __b)
74007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7414f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_pmuludq128((__v4si)__a, (__v4si)__b);
74207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
74307603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7441bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7454f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sad_epu8(__m128i __a, __m128i __b)
74607603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7474f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_psadbw128((__v16qi)__a, (__v16qi)__b);
74807603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
74907603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7501bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7514f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sub_epi8(__m128i __a, __m128i __b)
75207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7534f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v16qi)__a - (__v16qi)__b);
75407603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
75507603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7561bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7574f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sub_epi16(__m128i __a, __m128i __b)
75807603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7594f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v8hi)__a - (__v8hi)__b);
76007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
76107603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7621bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7634f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sub_epi32(__m128i __a, __m128i __b)
76407603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7654f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v4si)__a - (__v4si)__b);
76607603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
76707603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7681bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__))
7694f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sub_si64(__m64 __a, __m64 __b)
77007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7714f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a - __b;
77207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
77307603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7741bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7754f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sub_epi64(__m128i __a, __m128i __b)
77607603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7774f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a - __b;
77807603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
77907603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7801bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7814f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_subs_epi8(__m128i __a, __m128i __b)
78207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7834f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psubsb128((__v16qi)__a, (__v16qi)__b);
78407603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
78507603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7861bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7874f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_subs_epi16(__m128i __a, __m128i __b)
78807603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7894f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psubsw128((__v8hi)__a, (__v8hi)__b);
79007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
79107603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7921bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7934f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_subs_epu8(__m128i __a, __m128i __b)
79407603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
7954f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psubusb128((__v16qi)__a, (__v16qi)__b);
79607603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
79707603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
7981bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
7994f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_subs_epu16(__m128i __a, __m128i __b)
80007603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson{
8014f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psubusw128((__v8hi)__a, (__v8hi)__b);
80207603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson}
80307603aa9e57dc13889dd330cd29159003f1c45c3Anders Carlsson
8041bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8054f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_and_si128(__m128i __a, __m128i __b)
8060727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8074f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a & __b;
8080727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8090727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8101bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8114f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_andnot_si128(__m128i __a, __m128i __b)
8120727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8134f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return ~__a & __b;
8140727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8150727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8161bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8174f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_or_si128(__m128i __a, __m128i __b)
8180727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8194f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a | __b;
8200727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8210727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8221bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8234f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_xor_si128(__m128i __a, __m128i __b)
8240727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8254f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a ^ __b;
8260727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8270727df0c4118755e3f8462f077091443389021b6Anders Carlsson
82832bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson#define _mm_slli_si128(a, count) __extension__ ({ \
82932bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  __m128i __a = (a); \
83032bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  (__m128i)__builtin_ia32_pslldqi128(__a, (count)*8); })
8310727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8321bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8334f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_slli_epi16(__m128i __a, int __count)
8340727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8354f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psllwi128((__v8hi)__a, __count);
8360727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8370727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8381bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8394f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sll_epi16(__m128i __a, __m128i __count)
8400727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8414f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psllw128((__v8hi)__a, (__v8hi)__count);
8420727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8430727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8441bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8454f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_slli_epi32(__m128i __a, int __count)
8460727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8474f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_pslldi128((__v4si)__a, __count);
8480727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8490727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8501bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8514f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sll_epi32(__m128i __a, __m128i __count)
8520727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8534f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_pslld128((__v4si)__a, (__v4si)__count);
8540727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8550727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8561bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8574f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_slli_epi64(__m128i __a, int __count)
8580727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8594f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_psllqi128(__a, __count);
8600727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8610727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8621bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8634f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sll_epi64(__m128i __a, __m128i __count)
8640727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8654f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_psllq128(__a, __count);
8660727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8670727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8681bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8694f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_srai_epi16(__m128i __a, int __count)
8700727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8714f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psrawi128((__v8hi)__a, __count);
8720727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8730727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8741bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8754f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sra_epi16(__m128i __a, __m128i __count)
8760727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8774f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psraw128((__v8hi)__a, (__v8hi)__count);
8780727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8790727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8801bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8814f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_srai_epi32(__m128i __a, int __count)
8820727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8834f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psradi128((__v4si)__a, __count);
8840727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8850727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8861bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8874f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_sra_epi32(__m128i __a, __m128i __count)
8880727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
8894f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psrad128((__v4si)__a, (__v4si)__count);
8900727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
8910727df0c4118755e3f8462f077091443389021b6Anders Carlsson
892fcb0b2587ddd2e2250b2460e8dd942151380f359Chris Lattner
89332bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson#define _mm_srli_si128(a, count) __extension__ ({ \
89432bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  __m128i __a = (a); \
89532bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  (__m128i)__builtin_ia32_psrldqi128(__a, (count)*8); })
8960727df0c4118755e3f8462f077091443389021b6Anders Carlsson
8971bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
8984f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_srli_epi16(__m128i __a, int __count)
8990727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9004f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psrlwi128((__v8hi)__a, __count);
9010727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9020727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9031bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9044f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_srl_epi16(__m128i __a, __m128i __count)
9050727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9064f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psrlw128((__v8hi)__a, (__v8hi)__count);
9070727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9080727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9091bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9104f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_srli_epi32(__m128i __a, int __count)
9110727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9124f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psrldi128((__v4si)__a, __count);
9130727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9140727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9151bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9164f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_srl_epi32(__m128i __a, __m128i __count)
9170727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9184f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_psrld128((__v4si)__a, (__v4si)__count);
9190727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9200727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9211bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9224f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_srli_epi64(__m128i __a, int __count)
9230727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9244f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_psrlqi128(__a, __count);
9250727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9260727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9271bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9284f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_srl_epi64(__m128i __a, __m128i __count)
9290727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9304f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_psrlq128(__a, __count);
9310727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9320727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9331bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9344f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpeq_epi8(__m128i __a, __m128i __b)
9350727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9364f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v16qi)__a == (__v16qi)__b);
9370727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9380727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9391bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9404f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpeq_epi16(__m128i __a, __m128i __b)
9410727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9424f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v8hi)__a == (__v8hi)__b);
9430727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9440727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9451bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9464f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpeq_epi32(__m128i __a, __m128i __b)
9470727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9484f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v4si)__a == (__v4si)__b);
9490727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9500727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9511bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9524f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpgt_epi8(__m128i __a, __m128i __b)
9530727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
954279114c861d8746cedd1b0a991c0412054bcd53eNick Lewycky  /* This function always performs a signed comparison, but __v16qi is a char
955279114c861d8746cedd1b0a991c0412054bcd53eNick Lewycky     which may be signed or unsigned. */
956f42f85ce6c2c1ddbe57535898dfbe3a37f7199afNick Lewycky  typedef signed char __v16qs __attribute__((__vector_size__(16)));
9574f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v16qs)__a > (__v16qs)__b);
9580727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9590727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9601bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9614f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpgt_epi16(__m128i __a, __m128i __b)
9620727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9634f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v8hi)__a > (__v8hi)__b);
9640727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9650727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9661bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9674f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmpgt_epi32(__m128i __a, __m128i __b)
9680727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9694f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)((__v4si)__a > (__v4si)__b);
9700727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9710727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9721bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9734f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmplt_epi8(__m128i __a, __m128i __b)
9740727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9754f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return _mm_cmpgt_epi8(__b, __a);
9760727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9770727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9781bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9794f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmplt_epi16(__m128i __a, __m128i __b)
9800727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9814f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return _mm_cmpgt_epi16(__b, __a);
9820727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9830727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9841bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
9854f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cmplt_epi32(__m128i __a, __m128i __b)
9860727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9874f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return _mm_cmpgt_epi32(__b, __a);
9880727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9890727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9900727df0c4118755e3f8462f077091443389021b6Anders Carlsson#ifdef __x86_64__
9911bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
9924f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtsi64_sd(__m128d __a, long long __b)
9930727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
9944f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __a[0] = __b;
9954f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a;
9960727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
9970727df0c4118755e3f8462f077091443389021b6Anders Carlsson
9981bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ long long __attribute__((__always_inline__, __nodebug__))
9994f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtsd_si64(__m128d __a)
10000727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10014f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_cvtsd2si64(__a);
10020727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10030727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10041bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ long long __attribute__((__always_inline__, __nodebug__))
10054f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvttsd_si64(__m128d __a)
10060727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10074f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a[0];
10080727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10090727df0c4118755e3f8462f077091443389021b6Anders Carlsson#endif
10100727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10111bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
10124f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtepi32_ps(__m128i __a)
10130727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10144f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_cvtdq2ps((__v4si)__a);
10150727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10160727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10171bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
10184f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtps_epi32(__m128 __a)
10190727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10204f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_cvtps2dq(__a);
10210727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10220727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10231bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
10244f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvttps_epi32(__m128 __a)
10250727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10264f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_cvttps2dq(__a);
10270727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10280727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10291bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
10304f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtsi32_si128(int __a)
10310727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10324f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)(__v4si){ __a, 0, 0, 0 };
10330727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10340727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10350727df0c4118755e3f8462f077091443389021b6Anders Carlsson#ifdef __x86_64__
10361bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
10374f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtsi64_si128(long long __a)
10380727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10394f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i){ __a, 0 };
10400727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10410727df0c4118755e3f8462f077091443389021b6Anders Carlsson#endif
10420727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10431bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
10444f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtsi128_si32(__m128i __a)
10450727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10464f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __v4si __b = (__v4si)__a;
10474f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __b[0];
10480727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10490727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10500727df0c4118755e3f8462f077091443389021b6Anders Carlsson#ifdef __x86_64__
10511bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ long long __attribute__((__always_inline__, __nodebug__))
10524f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_cvtsi128_si64(__m128i __a)
10530727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10544f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __a[0];
10550727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10560727df0c4118755e3f8462f077091443389021b6Anders Carlsson#endif
10570727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10581bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
10594f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_load_si128(__m128i const *__p)
10600727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10614f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return *__p;
10620727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10630727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10641bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
10654f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_loadu_si128(__m128i const *__p)
10660727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
1067eed92a18829575f316313659d6294fd2ef275838Bill Wendling  struct __loadu_si128 {
10684f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie    __m128i __v;
10698e3ec9caeb2653b676896ddf05cdf826edc2c3f1Bill Wendling  } __attribute__((packed, may_alias));
10704f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return ((struct __loadu_si128*)__p)->__v;
10710727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10720727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10731bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
10744f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_loadl_epi64(__m128i const *__p)
10750727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10767c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  struct __mm_loadl_epi64_struct {
10774f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie    long long __u;
10787c06f6b319b272ea9e2df8ef03793c7b89e8dfabEli Friedman  } __attribute__((__packed__, __may_alias__));
10794f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i) { ((struct __mm_loadl_epi64_struct*)__p)->__u, 0};
10800727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10810727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10821bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
10839436ed50b0923368d5ae7a97f1b67c56b6837430Anders Carlsson_mm_set_epi64x(long long q1, long long q0)
10849436ed50b0923368d5ae7a97f1b67c56b6837430Anders Carlsson{
10859436ed50b0923368d5ae7a97f1b67c56b6837430Anders Carlsson  return (__m128i){ q0, q1 };
10869436ed50b0923368d5ae7a97f1b67c56b6837430Anders Carlsson}
10879436ed50b0923368d5ae7a97f1b67c56b6837430Anders Carlsson
10881bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1089dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_set_epi64(__m64 q1, __m64 q0)
10900727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10910727df0c4118755e3f8462f077091443389021b6Anders Carlsson  return (__m128i){ (long long)q0, (long long)q1 };
10920727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10930727df0c4118755e3f8462f077091443389021b6Anders Carlsson
10941bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1095dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_set_epi32(int i3, int i2, int i1, int i0)
10960727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
10970727df0c4118755e3f8462f077091443389021b6Anders Carlsson  return (__m128i)(__v4si){ i0, i1, i2, i3};
10980727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
10990727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11001bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1101dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_set_epi16(short w7, short w6, short w5, short w4, short w3, short w2, short w1, short w0)
11020727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11030727df0c4118755e3f8462f077091443389021b6Anders Carlsson  return (__m128i)(__v8hi){ w0, w1, w2, w3, w4, w5, w6, w7 };
11040727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11050727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11061bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1107dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_set_epi8(char b15, char b14, char b13, char b12, char b11, char b10, char b9, char b8, char b7, char b6, char b5, char b4, char b3, char b2, char b1, char b0)
11080727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11090727df0c4118755e3f8462f077091443389021b6Anders Carlsson  return (__m128i)(__v16qi){ b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15 };
11100727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11110727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11121bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
11134f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_set1_epi64x(long long __q)
11149436ed50b0923368d5ae7a97f1b67c56b6837430Anders Carlsson{
11154f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i){ __q, __q };
11169436ed50b0923368d5ae7a97f1b67c56b6837430Anders Carlsson}
11179436ed50b0923368d5ae7a97f1b67c56b6837430Anders Carlsson
11181bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
11194f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_set1_epi64(__m64 __q)
11200727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11214f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i){ (long long)__q, (long long)__q };
11220727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11230727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11241bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
11254f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_set1_epi32(int __i)
11260727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11274f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)(__v4si){ __i, __i, __i, __i };
11280727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11290727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11301bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
11314f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_set1_epi16(short __w)
11320727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11334f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)(__v8hi){ __w, __w, __w, __w, __w, __w, __w, __w };
11340727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11350727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11361bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
11374f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_set1_epi8(char __b)
11380727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11394f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)(__v16qi){ __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b, __b };
11400727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11410727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11421bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1143dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_setr_epi64(__m64 q0, __m64 q1)
11440727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11450727df0c4118755e3f8462f077091443389021b6Anders Carlsson  return (__m128i){ (long long)q0, (long long)q1 };
11460727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11470727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11481bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1149dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_setr_epi32(int i0, int i1, int i2, int i3)
11500727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11510727df0c4118755e3f8462f077091443389021b6Anders Carlsson  return (__m128i)(__v4si){ i0, i1, i2, i3};
11520727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11530727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11541bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1155dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_setr_epi16(short w0, short w1, short w2, short w3, short w4, short w5, short w6, short w7)
11560727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11570727df0c4118755e3f8462f077091443389021b6Anders Carlsson  return (__m128i)(__v8hi){ w0, w1, w2, w3, w4, w5, w6, w7 };
11580727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11590727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11601bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1161dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_setr_epi8(char b0, char b1, char b2, char b3, char b4, char b5, char b6, char b7, char b8, char b9, char b10, char b11, char b12, char b13, char b14, char b15)
11620727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11630727df0c4118755e3f8462f077091443389021b6Anders Carlsson  return (__m128i)(__v16qi){ b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15 };
11640727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11650727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11661bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1167dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_setzero_si128(void)
11680727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11690727df0c4118755e3f8462f077091443389021b6Anders Carlsson  return (__m128i){ 0LL, 0LL };
11700727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11710727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11721bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
11734f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_store_si128(__m128i *__p, __m128i __b)
11740727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11754f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  *__p = __b;
11760727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11770727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11781bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
11794f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_storeu_si128(__m128i *__p, __m128i __b)
11800727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11814f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __builtin_ia32_storedqu((char *)__p, (__v16qi)__b);
11820727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11830727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11841bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
11854f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_maskmoveu_si128(__m128i __d, __m128i __n, char *__p)
11860727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
11874f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __builtin_ia32_maskmovdqu((__v16qi)__d, (__v16qi)__n, __p);
11880727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11890727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11901bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
11914f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_storel_epi64(__m128i *__p, __m128i __a)
11920727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
1193c5713cfd87b028d3fcf2e11d8baa67fbc4e18916Chad Rosier  struct __mm_storel_epi64_struct {
11944f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie    long long __u;
1195c5713cfd87b028d3fcf2e11d8baa67fbc4e18916Chad Rosier  } __attribute__((__packed__, __may_alias__));
11964f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  ((struct __mm_storel_epi64_struct*)__p)->__u = __a[0];
11970727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
11980727df0c4118755e3f8462f077091443389021b6Anders Carlsson
11991bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
12004f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_stream_pd(double *__p, __m128d __a)
12010727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
12024f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __builtin_ia32_movntpd(__p, __a);
12030727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
12040727df0c4118755e3f8462f077091443389021b6Anders Carlsson
12051bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
12064f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_stream_si128(__m128i *__p, __m128i __a)
12070727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
12084f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __builtin_ia32_movntdq(__p, __a);
12090727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
12100727df0c4118755e3f8462f077091443389021b6Anders Carlsson
12111bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
12124f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_stream_si32(int *__p, int __a)
12130727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
12144f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __builtin_ia32_movnti(__p, __a);
12150727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
12160727df0c4118755e3f8462f077091443389021b6Anders Carlsson
12171bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
12184f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_clflush(void const *__p)
12190727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
12204f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __builtin_ia32_clflush(__p);
12210727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
12220727df0c4118755e3f8462f077091443389021b6Anders Carlsson
12231bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
1224dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_lfence(void)
12250727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
12260727df0c4118755e3f8462f077091443389021b6Anders Carlsson  __builtin_ia32_lfence();
12270727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
12280727df0c4118755e3f8462f077091443389021b6Anders Carlsson
12291bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
1230dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_mfence(void)
12310727df0c4118755e3f8462f077091443389021b6Anders Carlsson{
12320727df0c4118755e3f8462f077091443389021b6Anders Carlsson  __builtin_ia32_mfence();
12330727df0c4118755e3f8462f077091443389021b6Anders Carlsson}
12340727df0c4118755e3f8462f077091443389021b6Anders Carlsson
12351bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
12364f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_packs_epi16(__m128i __a, __m128i __b)
12374547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
12384f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_packsswb128((__v8hi)__a, (__v8hi)__b);
12394547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
12404547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
12411bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
12424f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_packs_epi32(__m128i __a, __m128i __b)
12434547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
12444f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_packssdw128((__v4si)__a, (__v4si)__b);
12454547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
12464547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
12471bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
12484f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_packus_epi16(__m128i __a, __m128i __b)
12494547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
12504f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_ia32_packuswb128((__v8hi)__a, (__v8hi)__b);
12514547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
12524547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
12531bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
12544f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_extract_epi16(__m128i __a, int __imm)
12554547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
12564f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __v8hi __b = (__v8hi)__a;
12574f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (unsigned short)__b[__imm];
12584547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
12594547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
12601bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
12614f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_insert_epi16(__m128i __a, int __b, int __imm)
12624547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
12634f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __v8hi __c = (__v8hi)__a;
12644f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  __c[__imm & 7] = __b;
12654f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__c;
12664547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
12674547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
12681bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
12694f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_movemask_epi8(__m128i __a)
12704547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
12714f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_pmovmskb128((__v16qi)__a);
12724547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
12734547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
127432bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson#define _mm_shuffle_epi32(a, imm) __extension__ ({ \
127532bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  __m128i __a = (a); \
127632bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  (__m128i)__builtin_shufflevector((__v4si)__a, (__v4si) _mm_set1_epi32(0), \
127732bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson                                   (imm) & 0x3, ((imm) & 0xc) >> 2, \
127832bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson                                   ((imm) & 0x30) >> 4, ((imm) & 0xc0) >> 6); })
127985e59d79e3033510d615625d1da421ac4fe7f38fChris Lattner
128032bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson#define _mm_shufflelo_epi16(a, imm) __extension__ ({ \
128132bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  __m128i __a = (a); \
128232bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  (__m128i)__builtin_shufflevector((__v8hi)__a, (__v8hi) _mm_set1_epi16(0), \
128332bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson                                   (imm) & 0x3, ((imm) & 0xc) >> 2, \
128432bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson                                   ((imm) & 0x30) >> 4, ((imm) & 0xc0) >> 6, \
128532bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson                                   4, 5, 6, 7); })
128685e59d79e3033510d615625d1da421ac4fe7f38fChris Lattner
128732bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson#define _mm_shufflehi_epi16(a, imm) __extension__ ({ \
128832bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  __m128i __a = (a); \
128932bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  (__m128i)__builtin_shufflevector((__v8hi)__a, (__v8hi) _mm_set1_epi16(0), \
129032bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson                                   0, 1, 2, 3, \
129132bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson                                   4 + (((imm) & 0x03) >> 0), \
129232bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson                                   4 + (((imm) & 0x0c) >> 2), \
129332bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson                                   4 + (((imm) & 0x30) >> 4), \
129432bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson                                   4 + (((imm) & 0xc0) >> 6)); })
12954547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
12961bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
12974f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_unpackhi_epi8(__m128i __a, __m128i __b)
12984547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
12994f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_shufflevector((__v16qi)__a, (__v16qi)__b, 8, 16+8, 9, 16+9, 10, 16+10, 11, 16+11, 12, 16+12, 13, 16+13, 14, 16+14, 15, 16+15);
13004547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13014547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13021bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
13034f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_unpackhi_epi16(__m128i __a, __m128i __b)
13044547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13054f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_shufflevector((__v8hi)__a, (__v8hi)__b, 4, 8+4, 5, 8+5, 6, 8+6, 7, 8+7);
13064547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13074547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13081bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
13094f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_unpackhi_epi32(__m128i __a, __m128i __b)
13104547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13114f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_shufflevector((__v4si)__a, (__v4si)__b, 2, 4+2, 3, 4+3);
13124547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13134547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13141bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
13154f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_unpackhi_epi64(__m128i __a, __m128i __b)
13164547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13174f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_shufflevector(__a, __b, 1, 2+1);
13184547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13194547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13201bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
13214f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_unpacklo_epi8(__m128i __a, __m128i __b)
13224547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13234f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_shufflevector((__v16qi)__a, (__v16qi)__b, 0, 16+0, 1, 16+1, 2, 16+2, 3, 16+3, 4, 16+4, 5, 16+5, 6, 16+6, 7, 16+7);
13244547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13254547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13261bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
13274f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_unpacklo_epi16(__m128i __a, __m128i __b)
13284547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13294f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_shufflevector((__v8hi)__a, (__v8hi)__b, 0, 8+0, 1, 8+1, 2, 8+2, 3, 8+3);
13304547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13314547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13321bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
13334f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_unpacklo_epi32(__m128i __a, __m128i __b)
13344547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13354f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_shufflevector((__v4si)__a, (__v4si)__b, 0, 4+0, 1, 4+1);
13364547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13374547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13381bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
13394f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_unpacklo_epi64(__m128i __a, __m128i __b)
13404547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13414f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i)__builtin_shufflevector(__a, __b, 0, 2+0);
13424547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13434547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13441bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m64 __attribute__((__always_inline__, __nodebug__))
13454f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_movepi64_pi64(__m128i __a)
13464547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13474f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m64)__a[0];
13484547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13494547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13501bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
13514f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_movpi64_pi64(__m64 __a)
13524547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13534f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return (__m128i){ (long long)__a, 0 };
13544547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13554547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13561bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
13574f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_move_epi64(__m128i __a)
13584547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13594f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_shufflevector(__a, (__m128i){ 0 }, 0, 2);
13604547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13614547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13621bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
13634f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_unpackhi_pd(__m128d __a, __m128d __b)
13644547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13654f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_shufflevector(__a, __b, 1, 2+1);
13664547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13674547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13681bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
13694f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_unpacklo_pd(__m128d __a, __m128d __b)
13704547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13714f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_shufflevector(__a, __b, 0, 2+0);
13724547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13734547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13741bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ int __attribute__((__always_inline__, __nodebug__))
13754f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie_mm_movemask_pd(__m128d __a)
13764547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
13774f918aed75d4927e88365541c7200f0b5fe5014bDavid Blaikie  return __builtin_ia32_movmskpd(__a);
13784547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13794547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
138032bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson#define _mm_shuffle_pd(a, b, i) __extension__ ({ \
138132bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  __m128d __a = (a); \
138232bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  __m128d __b = (b); \
138332bae37b821e6ade738849ac14e3d3de06afb0beBob Wilson  __builtin_shufflevector(__a, __b, (i) & 1, (((i) & 2) >> 1) + 2); })
13844547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13851bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
1386f0cdc84298103e57919674bd1781624c74ab76d3Reid Kleckner_mm_castpd_ps(__m128d __a)
13874547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
1388f0cdc84298103e57919674bd1781624c74ab76d3Reid Kleckner  return (__m128)__a;
13894547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13904547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13911bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1392f0cdc84298103e57919674bd1781624c74ab76d3Reid Kleckner_mm_castpd_si128(__m128d __a)
13934547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
1394f0cdc84298103e57919674bd1781624c74ab76d3Reid Kleckner  return (__m128i)__a;
13954547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
13964547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
13971bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1398f0cdc84298103e57919674bd1781624c74ab76d3Reid Kleckner_mm_castps_pd(__m128 __a)
13994547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
1400f0cdc84298103e57919674bd1781624c74ab76d3Reid Kleckner  return (__m128d)__a;
14014547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
14024547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
14031bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128i __attribute__((__always_inline__, __nodebug__))
1404f0cdc84298103e57919674bd1781624c74ab76d3Reid Kleckner_mm_castps_si128(__m128 __a)
14054547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
1406f0cdc84298103e57919674bd1781624c74ab76d3Reid Kleckner  return (__m128i)__a;
14074547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
14084547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
14091bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128 __attribute__((__always_inline__, __nodebug__))
1410f0cdc84298103e57919674bd1781624c74ab76d3Reid Kleckner_mm_castsi128_ps(__m128i __a)
14114547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
1412f0cdc84298103e57919674bd1781624c74ab76d3Reid Kleckner  return (__m128)__a;
14134547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
14144547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
14151bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ __m128d __attribute__((__always_inline__, __nodebug__))
1416f0cdc84298103e57919674bd1781624c74ab76d3Reid Kleckner_mm_castsi128_pd(__m128i __a)
14174547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson{
1418f0cdc84298103e57919674bd1781624c74ab76d3Reid Kleckner  return (__m128d)__a;
14194547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson}
14204547075dbb504de3fbae7cef669c773834ca1b40Anders Carlsson
14211bddbcbd11de09c7bcb48c3d661c447967db73a7Chris Lattnerstatic __inline__ void __attribute__((__always_inline__, __nodebug__))
1422dae4413d77b3e7599ce81307eb7a7d1dedbac547Mike Stump_mm_pause(void)
1423f1bc66008eb2d9d4b63706b384132e8148110951Anders Carlsson{
14244bcd44d3b38a9aece40142ea54c07288eb0517f6Anders Carlsson  __asm__ volatile ("pause");
1425f1bc66008eb2d9d4b63706b384132e8148110951Anders Carlsson}
1426f1bc66008eb2d9d4b63706b384132e8148110951Anders Carlsson
1427bbd1fa24fc939819079ca2c104b05dcfefe166b0Anders Carlsson#define _MM_SHUFFLE2(x, y) (((x) << 1) | (y))
1428f1bc66008eb2d9d4b63706b384132e8148110951Anders Carlsson
142937f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson#endif /* __SSE2__ */
143037f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson
143137f2f00d71ce8c0416d90ba8ddc7d5ac38ff241fAnders Carlsson#endif /* __EMMINTRIN_H */
1432