#ifndef __RUCC_EMMINTRIN_H
#define __RUCC_EMMINTRIN_H
#include <xmmintrin.h>
typedef double __v2df __attribute__((__vector_size__(16)));
typedef long long __v2di __attribute__((__vector_size__(16)));
typedef unsigned long long __v2du __attribute__((__vector_size__(16)));
typedef short __v8hi __attribute__((__vector_size__(16)));
typedef unsigned short __v8hu __attribute__((__vector_size__(16)));
typedef char __v16qi __attribute__((__vector_size__(16)));
typedef unsigned char __v16qu __attribute__((__vector_size__(16)));
typedef long long __m128i __attribute__((__vector_size__(16), __may_alias__));
typedef double __m128d __attribute__((__vector_size__(16), __may_alias__));
typedef long long __m128i_u __attribute__((__vector_size__(16), __may_alias__, __aligned__(1)));
typedef double __m128d_u __attribute__((__vector_size__(16), __may_alias__, __aligned__(1)));
static __inline__ double __attribute__((__always_inline__)) __rucc_round_to_integral_d(double __x)
{
double __magic = 4503599627370496.0;
double __size = __x < 0.0 ? -__x : __x;
double __answer;
if (!(__size < __magic))
return __x;
__answer = (__size + __magic) - __magic;
return __x < 0.0 ? -__answer : __answer;
}
static __inline__ int __attribute__((__always_inline__)) __rucc_double_to_int(double __x)
{
double __rounded = __rucc_round_to_integral_d(__x);
if (!(__rounded >= -2147483648.0) || !(__rounded < 2147483648.0))
return (-2147483647 - 1);
return (int)__rounded;
}
static __inline__ long long __attribute__((__always_inline__)) __rucc_double_to_long(double __x)
{
double __rounded = __rucc_round_to_integral_d(__x);
if (!(__rounded >= -9223372036854775808.0) || !(__rounded < 9223372036854775808.0))
return (-9223372036854775807LL - 1);
return (long long)__rounded;
}
static __inline__ int __attribute__((__always_inline__)) __rucc_double_to_int_trunc(double __x)
{
if (!(__x > -2147483649.0) || !(__x < 2147483648.0))
return (-2147483647 - 1);
return (int)__x;
}
static __inline__ long long __attribute__((__always_inline__))
__rucc_double_to_long_trunc(double __x)
{
if (!(__x >= -9223372036854775808.0) || !(__x < 9223372036854775808.0))
return (-9223372036854775807LL - 1);
return (long long)__x;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_setzero_pd(void)
{
return (__m128d)(__v2df){ 0.0, 0.0 };
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_undefined_pd(void)
{
__m128d __answer;
return __answer;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_add_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2df)__a + (__v2df)__b);
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_add_sd(__m128d __a, __m128d __b)
{
__v2df __answer = (__v2df)__a;
__answer[0] = __answer[0] + ((__v2df)__b)[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_sub_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2df)__a - (__v2df)__b);
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_sub_sd(__m128d __a, __m128d __b)
{
__v2df __answer = (__v2df)__a;
__answer[0] = __answer[0] - ((__v2df)__b)[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_mul_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2df)__a * (__v2df)__b);
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_mul_sd(__m128d __a, __m128d __b)
{
__v2df __answer = (__v2df)__a;
__answer[0] = __answer[0] * ((__v2df)__b)[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_div_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2df)__a / (__v2df)__b);
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_div_sd(__m128d __a, __m128d __b)
{
__v2df __answer = (__v2df)__a;
__answer[0] = __answer[0] / ((__v2df)__b)[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_min_pd(__m128d __a, __m128d __b)
{
__v2df __x = (__v2df)__a, __y = (__v2df)__b;
return (__m128d)(__v2df){ __x[0] < __y[0] ? __x[0] : __y[0],
__x[1] < __y[1] ? __x[1] : __y[1] };
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_min_sd(__m128d __a, __m128d __b)
{
__v2df __answer = (__v2df)__a;
double __y = ((__v2df)__b)[0];
__answer[0] = __answer[0] < __y ? __answer[0] : __y;
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_max_pd(__m128d __a, __m128d __b)
{
__v2df __x = (__v2df)__a, __y = (__v2df)__b;
return (__m128d)(__v2df){ __x[0] > __y[0] ? __x[0] : __y[0],
__x[1] > __y[1] ? __x[1] : __y[1] };
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_max_sd(__m128d __a, __m128d __b)
{
__v2df __answer = (__v2df)__a;
double __y = ((__v2df)__b)[0];
__answer[0] = __answer[0] > __y ? __answer[0] : __y;
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_and_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2du)__a & (__v2du)__b);
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_andnot_pd(__m128d __a, __m128d __b)
{
return (__m128d)(~(__v2du)__a & (__v2du)__b);
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_or_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2du)__a | (__v2du)__b);
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_xor_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2du)__a ^ (__v2du)__b);
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cmpeq_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2di)((__v2df)__a == (__v2df)__b));
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cmplt_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2di)((__v2df)__a < (__v2df)__b));
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cmple_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2di)((__v2df)__a <= (__v2df)__b));
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cmpgt_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2di)((__v2df)__a > (__v2df)__b));
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cmpge_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2di)((__v2df)__a >= (__v2df)__b));
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpneq_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2di)((__v2df)__a != (__v2df)__b));
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpnlt_pd(__m128d __a, __m128d __b)
{
return (__m128d)(~(__v2di)((__v2df)__a < (__v2df)__b));
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpnle_pd(__m128d __a, __m128d __b)
{
return (__m128d)(~(__v2di)((__v2df)__a <= (__v2df)__b));
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpngt_pd(__m128d __a, __m128d __b)
{
return (__m128d)(~(__v2di)((__v2df)__a > (__v2df)__b));
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpnge_pd(__m128d __a, __m128d __b)
{
return (__m128d)(~(__v2di)((__v2df)__a >= (__v2df)__b));
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpord_pd(__m128d __a, __m128d __b)
{
return (__m128d)((__v2di)((__v2df)__a == (__v2df)__a) & (__v2di)((__v2df)__b == (__v2df)__b));
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpunord_pd(__m128d __a, __m128d __b)
{
return (__m128d)(~((__v2di)((__v2df)__a == (__v2df)__a) & (__v2di)((__v2df)__b == (__v2df)__b)));
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cmpeq_sd(__m128d __a, __m128d __b)
{
__v2du __answer = (__v2du)__a;
__answer[0] = (unsigned long long)((__v2di)((__v2df)__a == (__v2df)__b))[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cmplt_sd(__m128d __a, __m128d __b)
{
__v2du __answer = (__v2du)__a;
__answer[0] = (unsigned long long)((__v2di)((__v2df)__a < (__v2df)__b))[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cmple_sd(__m128d __a, __m128d __b)
{
__v2du __answer = (__v2du)__a;
__answer[0] = (unsigned long long)((__v2di)((__v2df)__a <= (__v2df)__b))[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cmpgt_sd(__m128d __a, __m128d __b)
{
__v2du __answer = (__v2du)__a;
__answer[0] = (unsigned long long)((__v2di)((__v2df)__a > (__v2df)__b))[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cmpge_sd(__m128d __a, __m128d __b)
{
__v2du __answer = (__v2du)__a;
__answer[0] = (unsigned long long)((__v2di)((__v2df)__a >= (__v2df)__b))[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpneq_sd(__m128d __a, __m128d __b)
{
__v2du __answer = (__v2du)__a;
__answer[0] = (unsigned long long)((__v2di)((__v2df)__a != (__v2df)__b))[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpnlt_sd(__m128d __a, __m128d __b)
{
__v2du __answer = (__v2du)__a;
__answer[0] = (unsigned long long)(~(__v2di)((__v2df)__a < (__v2df)__b))[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpnle_sd(__m128d __a, __m128d __b)
{
__v2du __answer = (__v2du)__a;
__answer[0] = (unsigned long long)(~(__v2di)((__v2df)__a <= (__v2df)__b))[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpngt_sd(__m128d __a, __m128d __b)
{
__v2du __answer = (__v2du)__a;
__answer[0] = (unsigned long long)(~(__v2di)((__v2df)__a > (__v2df)__b))[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpnge_sd(__m128d __a, __m128d __b)
{
__v2du __answer = (__v2du)__a;
__answer[0] = (unsigned long long)(~(__v2di)((__v2df)__a >= (__v2df)__b))[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpord_sd(__m128d __a, __m128d __b)
{
__v2du __answer = (__v2du)__a;
double __x = ((__v2df)__a)[0], __y = ((__v2df)__b)[0];
__answer[0] = __x == __x && __y == __y ? ~0ULL : 0ULL;
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmpunord_sd(__m128d __a, __m128d __b)
{
__v2du __answer = (__v2du)__a;
double __x = ((__v2df)__a)[0], __y = ((__v2df)__b)[0];
__answer[0] = __x == __x && __y == __y ? 0ULL : ~0ULL;
return (__m128d)__answer;
}
static __inline__ int __attribute__((__always_inline__)) _mm_comieq_sd(__m128d __a, __m128d __b)
{
return ((__v2df)__a)[0] == ((__v2df)__b)[0];
}
static __inline__ int __attribute__((__always_inline__)) _mm_comilt_sd(__m128d __a, __m128d __b)
{
return ((__v2df)__a)[0] < ((__v2df)__b)[0];
}
static __inline__ int __attribute__((__always_inline__)) _mm_comile_sd(__m128d __a, __m128d __b)
{
return ((__v2df)__a)[0] <= ((__v2df)__b)[0];
}
static __inline__ int __attribute__((__always_inline__)) _mm_comigt_sd(__m128d __a, __m128d __b)
{
return ((__v2df)__a)[0] > ((__v2df)__b)[0];
}
static __inline__ int __attribute__((__always_inline__)) _mm_comige_sd(__m128d __a, __m128d __b)
{
return ((__v2df)__a)[0] >= ((__v2df)__b)[0];
}
static __inline__ int __attribute__((__always_inline__)) _mm_comineq_sd(__m128d __a, __m128d __b)
{
return ((__v2df)__a)[0] != ((__v2df)__b)[0];
}
static __inline__ int __attribute__((__always_inline__)) _mm_ucomieq_sd(__m128d __a, __m128d __b)
{
return ((__v2df)__a)[0] == ((__v2df)__b)[0];
}
static __inline__ int __attribute__((__always_inline__)) _mm_ucomilt_sd(__m128d __a, __m128d __b)
{
return ((__v2df)__a)[0] < ((__v2df)__b)[0];
}
static __inline__ int __attribute__((__always_inline__)) _mm_ucomile_sd(__m128d __a, __m128d __b)
{
return ((__v2df)__a)[0] <= ((__v2df)__b)[0];
}
static __inline__ int __attribute__((__always_inline__)) _mm_ucomigt_sd(__m128d __a, __m128d __b)
{
return ((__v2df)__a)[0] > ((__v2df)__b)[0];
}
static __inline__ int __attribute__((__always_inline__)) _mm_ucomige_sd(__m128d __a, __m128d __b)
{
return ((__v2df)__a)[0] >= ((__v2df)__b)[0];
}
static __inline__ int __attribute__((__always_inline__)) _mm_ucomineq_sd(__m128d __a, __m128d __b)
{
return ((__v2df)__a)[0] != ((__v2df)__b)[0];
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmp_pd(__m128d __a, __m128d __b, const int __predicate)
{
switch (__predicate & 31)
{
case 0:
return _mm_cmpeq_pd(__a, __b);
case 1:
return _mm_cmplt_pd(__a, __b);
case 2:
return _mm_cmple_pd(__a, __b);
case 3:
return _mm_cmpunord_pd(__a, __b);
case 4:
return _mm_cmpneq_pd(__a, __b);
case 5:
return _mm_cmpnlt_pd(__a, __b);
case 6:
return _mm_cmpnle_pd(__a, __b);
case 7:
return _mm_cmpord_pd(__a, __b);
default:
return _mm_setzero_pd();
}
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cmp_sd(__m128d __a, __m128d __b, const int __predicate)
{
switch (__predicate & 31)
{
case 0:
return _mm_cmpeq_sd(__a, __b);
case 1:
return _mm_cmplt_sd(__a, __b);
case 2:
return _mm_cmple_sd(__a, __b);
case 3:
return _mm_cmpunord_sd(__a, __b);
case 4:
return _mm_cmpneq_sd(__a, __b);
case 5:
return _mm_cmpnlt_sd(__a, __b);
case 6:
return _mm_cmpnle_sd(__a, __b);
case 7:
return _mm_cmpord_sd(__a, __b);
default:
{
__v2du __answer = (__v2du)__a;
__answer[0] = 0ULL;
return (__m128d)__answer;
}
}
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_set_pd(double __x, double __w)
{
return (__m128d)(__v2df){ __w, __x };
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_setr_pd(double __w, double __x)
{
return (__m128d)(__v2df){ __w, __x };
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_set1_pd(double __w)
{
return (__m128d)(__v2df){ __w, __w };
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_set_pd1(double __w)
{
return _mm_set1_pd(__w);
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_set_sd(double __w)
{
return (__m128d)(__v2df){ __w, 0.0 };
}
static __inline__ double __attribute__((__always_inline__)) _mm_cvtsd_f64(__m128d __a)
{
return ((__v2df)__a)[0];
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_move_sd(__m128d __a, __m128d __b)
{
__v2df __answer = (__v2df)__a;
__answer[0] = ((__v2df)__b)[0];
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_unpackhi_pd(__m128d __a, __m128d __b)
{
return (__m128d)(__v2df){ ((__v2df)__a)[1], ((__v2df)__b)[1] };
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_unpacklo_pd(__m128d __a, __m128d __b)
{
return (__m128d)(__v2df){ ((__v2df)__a)[0], ((__v2df)__b)[0] };
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_shuffle_pd(__m128d __a, __m128d __b, const int __mask)
{
return (__m128d)(__v2df){ ((__v2df)__a)[__mask & 1], ((__v2df)__b)[(__mask >> 1) & 1] };
}
static __inline__ int __attribute__((__always_inline__)) _mm_movemask_pd(__m128d __a)
{
__v2du __from = (__v2du)__a;
return (int)((__from[0] >> 63) | ((__from[1] >> 63) << 1));
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_load_pd(double const *__p)
{
return *(const __m128d *)__p;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_loadu_pd(double const *__p)
{
return *(const __m128d_u *)__p;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_load_sd(double const *__p)
{
return _mm_set_sd(*__p);
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_load1_pd(double const *__p)
{
return _mm_set1_pd(*__p);
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_load_pd1(double const *__p)
{
return _mm_load1_pd(__p);
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_loadr_pd(double const *__p)
{
__v2df __from = (__v2df)*(const __m128d *)__p;
return (__m128d)(__v2df){ __from[1], __from[0] };
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_loadh_pd(__m128d __a, double const *__p)
{
__v2df __answer = (__v2df)__a;
__answer[1] = *__p;
return (__m128d)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_loadl_pd(__m128d __a, double const *__p)
{
__v2df __answer = (__v2df)__a;
__answer[0] = *__p;
return (__m128d)__answer;
}
static __inline__ void __attribute__((__always_inline__)) _mm_store_pd(double *__p, __m128d __a)
{
*(__m128d *)__p = __a;
}
static __inline__ void __attribute__((__always_inline__)) _mm_storeu_pd(double *__p, __m128d __a)
{
*(__m128d_u *)__p = __a;
}
static __inline__ void __attribute__((__always_inline__)) _mm_store_sd(double *__p, __m128d __a)
{
*__p = ((__v2df)__a)[0];
}
static __inline__ void __attribute__((__always_inline__)) _mm_store1_pd(double *__p, __m128d __a)
{
*(__m128d *)__p = _mm_set1_pd(((__v2df)__a)[0]);
}
static __inline__ void __attribute__((__always_inline__)) _mm_store_pd1(double *__p, __m128d __a)
{
_mm_store1_pd(__p, __a);
}
static __inline__ void __attribute__((__always_inline__)) _mm_storer_pd(double *__p, __m128d __a)
{
__v2df __from = (__v2df)__a;
*(__m128d *)__p = (__m128d)(__v2df){ __from[1], __from[0] };
}
static __inline__ void __attribute__((__always_inline__)) _mm_storeh_pd(double *__p, __m128d __a)
{
*__p = ((__v2df)__a)[1];
}
static __inline__ void __attribute__((__always_inline__)) _mm_storel_pd(double *__p, __m128d __a)
{
*__p = ((__v2df)__a)[0];
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_setzero_si128(void)
{
return (__m128i)(__v2di){ 0LL, 0LL };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_undefined_si128(void)
{
__m128i __answer;
return __answer;
}
static __inline__ __m128 __attribute__((__always_inline__)) _mm_castpd_ps(__m128d __a)
{
return (__m128)__a;
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_castpd_si128(__m128d __a)
{
return (__m128i)__a;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_castps_pd(__m128 __a)
{
return (__m128d)__a;
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_castps_si128(__m128 __a)
{
return (__m128i)__a;
}
static __inline__ __m128 __attribute__((__always_inline__)) _mm_castsi128_ps(__m128i __a)
{
return (__m128)__a;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_castsi128_pd(__m128i __a)
{
return (__m128d)__a;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_set_epi64x(long long __q1, long long __q0)
{
return (__m128i)(__v2di){ __q0, __q1 };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_set_epi64(__m64 __q1, __m64 __q0)
{
return (__m128i)(__v2di){ ((__v1di)__q0)[0], ((__v1di)__q1)[0] };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_set_epi32(int __q3, int __q2, int __q1, int __q0)
{
return (__m128i)(__v4si){ __q0, __q1, __q2, __q3 };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_set_epi16(short __q7, short __q6, short __q5, short __q4, short __q3, short __q2, short __q1,
short __q0)
{
return (__m128i)(__v8hi){ __q0, __q1, __q2, __q3, __q4, __q5, __q6, __q7 };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_set_epi8(char __q15, char __q14, char __q13, char __q12, char __q11, char __q10, char __q09,
char __q08, char __q07, char __q06, char __q05, char __q04, char __q03, char __q02,
char __q01, char __q00)
{
return (__m128i)(__v16qi){ __q00, __q01, __q02, __q03, __q04, __q05, __q06, __q07,
__q08, __q09, __q10, __q11, __q12, __q13, __q14, __q15 };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_setr_epi64(__m64 __q0, __m64 __q1)
{
return (__m128i)(__v2di){ ((__v1di)__q0)[0], ((__v1di)__q1)[0] };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_setr_epi32(int __q0, int __q1, int __q2, int __q3)
{
return (__m128i)(__v4si){ __q0, __q1, __q2, __q3 };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_setr_epi16(short __q0, short __q1, short __q2, short __q3, short __q4, short __q5, short __q6,
short __q7)
{
return (__m128i)(__v8hi){ __q0, __q1, __q2, __q3, __q4, __q5, __q6, __q7 };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_setr_epi8(char __q00, char __q01, char __q02, char __q03, char __q04, char __q05, char __q06,
char __q07, char __q08, char __q09, char __q10, char __q11, char __q12, char __q13,
char __q14, char __q15)
{
return (__m128i)(__v16qi){ __q00, __q01, __q02, __q03, __q04, __q05, __q06, __q07,
__q08, __q09, __q10, __q11, __q12, __q13, __q14, __q15 };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_set1_epi64x(long long __a)
{
return (__m128i)(__v2di){ __a, __a };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_set1_epi64(__m64 __a)
{
return _mm_set1_epi64x(((__v1di)__a)[0]);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_set1_epi32(int __a)
{
return (__m128i)(__v4si){ __a, __a, __a, __a };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_set1_epi16(short __a)
{
return (__m128i)(__v8hi){ __a, __a, __a, __a, __a, __a, __a, __a };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_set1_epi8(char __a)
{
return (__m128i)(__v16qi){ __a, __a, __a, __a, __a, __a, __a, __a,
__a, __a, __a, __a, __a, __a, __a, __a };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_cvtsi32_si128(int __a)
{
return (__m128i)(__v4si){ __a, 0, 0, 0 };
}
static __inline__ int __attribute__((__always_inline__)) _mm_cvtsi128_si32(__m128i __a)
{
return ((__v4si)__a)[0];
}
#ifdef __x86_64__
static __inline__ __m128i __attribute__((__always_inline__)) _mm_cvtsi64_si128(long long __a)
{
return (__m128i)(__v2di){ __a, 0LL };
}
static __inline__ long long __attribute__((__always_inline__)) _mm_cvtsi128_si64(__m128i __a)
{
return ((__v2di)__a)[0];
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_cvtsi64x_si128(long long __a)
{
return (__m128i)(__v2di){ __a, 0LL };
}
static __inline__ long long __attribute__((__always_inline__)) _mm_cvtsi128_si64x(__m128i __a)
{
return ((__v2di)__a)[0];
}
#endif
static __inline__ __m64 __attribute__((__always_inline__)) _mm_movepi64_pi64(__m128i __a)
{
return (__m64)(__v1di){ ((__v2di)__a)[0] };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_movpi64_epi64(__m64 __a)
{
return (__m128i)(__v2di){ ((__v1di)__a)[0], 0LL };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_move_epi64(__m128i __a)
{
return (__m128i)(__v2di){ ((__v2di)__a)[0], 0LL };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_add_epi8(__m128i __a, __m128i __b)
{
return (__m128i)((__v16qu)__a + (__v16qu)__b);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_add_epi16(__m128i __a, __m128i __b)
{
return (__m128i)((__v8hu)__a + (__v8hu)__b);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_add_epi32(__m128i __a, __m128i __b)
{
return (__m128i)((__v4su)__a + (__v4su)__b);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_add_epi64(__m128i __a, __m128i __b)
{
return (__m128i)((__v2du)__a + (__v2du)__b);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_sub_epi8(__m128i __a, __m128i __b)
{
return (__m128i)((__v16qu)__a - (__v16qu)__b);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_sub_epi16(__m128i __a, __m128i __b)
{
return (__m128i)((__v8hu)__a - (__v8hu)__b);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_sub_epi32(__m128i __a, __m128i __b)
{
return (__m128i)((__v4su)__a - (__v4su)__b);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_sub_epi64(__m128i __a, __m128i __b)
{
return (__m128i)((__v2du)__a - (__v2du)__b);
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_adds_epi8(__m128i __a, __m128i __b)
{
__v16qi __x = (__v16qi)__a, __y = (__v16qi)__b, __answer;
int __i;
for (__i = 0; __i < 16; __i++)
__answer[__i] = __rucc_sat_qi((int)__x[__i] + (int)__y[__i]);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_adds_epi16(__m128i __a, __m128i __b)
{
__v8hi __x = (__v8hi)__a, __y = (__v8hi)__b, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
__answer[__i] = __rucc_sat_hi((int)__x[__i] + (int)__y[__i]);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_adds_epu8(__m128i __a, __m128i __b)
{
__v16qu __x = (__v16qu)__a, __y = (__v16qu)__b, __answer;
int __i;
for (__i = 0; __i < 16; __i++)
__answer[__i] = __rucc_sat_qu((int)__x[__i] + (int)__y[__i]);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_adds_epu16(__m128i __a, __m128i __b)
{
__v8hu __x = (__v8hu)__a, __y = (__v8hu)__b, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
__answer[__i] = __rucc_sat_hu((int)__x[__i] + (int)__y[__i]);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_subs_epi8(__m128i __a, __m128i __b)
{
__v16qi __x = (__v16qi)__a, __y = (__v16qi)__b, __answer;
int __i;
for (__i = 0; __i < 16; __i++)
__answer[__i] = __rucc_sat_qi((int)__x[__i] - (int)__y[__i]);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_subs_epi16(__m128i __a, __m128i __b)
{
__v8hi __x = (__v8hi)__a, __y = (__v8hi)__b, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
__answer[__i] = __rucc_sat_hi((int)__x[__i] - (int)__y[__i]);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_subs_epu8(__m128i __a, __m128i __b)
{
__v16qu __x = (__v16qu)__a, __y = (__v16qu)__b, __answer;
int __i;
for (__i = 0; __i < 16; __i++)
__answer[__i] = __rucc_sat_qu((int)__x[__i] - (int)__y[__i]);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_subs_epu16(__m128i __a, __m128i __b)
{
__v8hu __x = (__v8hu)__a, __y = (__v8hu)__b, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
__answer[__i] = __rucc_sat_hu((int)__x[__i] - (int)__y[__i]);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_mullo_epi16(__m128i __a, __m128i __b)
{
return (__m128i)((__v8hu)__a * (__v8hu)__b);
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_mulhi_epi16(__m128i __a, __m128i __b)
{
__v8hi __x = (__v8hi)__a, __y = (__v8hi)__b, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
__answer[__i] = (short)(((int)__x[__i] * (int)__y[__i]) >> 16);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_mulhi_epu16(__m128i __a, __m128i __b)
{
__v8hu __x = (__v8hu)__a, __y = (__v8hu)__b, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
__answer[__i] = (unsigned short)(((unsigned int)__x[__i] * (unsigned int)__y[__i]) >> 16);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_madd_epi16(__m128i __a, __m128i __b)
{
__v8hi __x = (__v8hi)__a, __y = (__v8hi)__b;
__v4si __answer;
int __i;
for (__i = 0; __i < 4; __i++)
__answer[__i] = (int)((unsigned int)((int)__x[__i * 2] * (int)__y[__i * 2])
+ (unsigned int)((int)__x[__i * 2 + 1] * (int)__y[__i * 2 + 1]));
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_mul_epu32(__m128i __a, __m128i __b)
{
__v4su __x = (__v4su)__a, __y = (__v4su)__b;
return (__m128i)(__v2du){ (unsigned long long)__x[0] * (unsigned long long)__y[0],
(unsigned long long)__x[2] * (unsigned long long)__y[2] };
}
static __inline__ __m64 __attribute__((__always_inline__)) _mm_mul_su32(__m64 __a, __m64 __b)
{
__v2su __x = (__v2su)__a, __y = (__v2su)__b;
return (__m64)(__v1du){ (unsigned long long)__x[0] * (unsigned long long)__y[0] };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_sad_epu8(__m128i __a, __m128i __b)
{
__v16qu __x = (__v16qu)__a, __y = (__v16qu)__b;
int __half, __i;
__v2di __answer = (__v2di){ 0LL, 0LL };
for (__half = 0; __half < 2; __half++)
{
int __total = 0;
for (__i = 0; __i < 8; __i++)
{
int __difference = (int)__x[__half * 8 + __i] - (int)__y[__half * 8 + __i];
__total += __difference < 0 ? -__difference : __difference;
}
__answer[__half] = __total;
}
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_max_epi16(__m128i __a, __m128i __b)
{
__v8hi __x = (__v8hi)__a, __y = (__v8hi)__b, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
__answer[__i] = __x[__i] > __y[__i] ? __x[__i] : __y[__i];
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_min_epi16(__m128i __a, __m128i __b)
{
__v8hi __x = (__v8hi)__a, __y = (__v8hi)__b, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
__answer[__i] = __x[__i] < __y[__i] ? __x[__i] : __y[__i];
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_max_epu8(__m128i __a, __m128i __b)
{
__v16qu __x = (__v16qu)__a, __y = (__v16qu)__b, __answer;
int __i;
for (__i = 0; __i < 16; __i++)
__answer[__i] = __x[__i] > __y[__i] ? __x[__i] : __y[__i];
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_min_epu8(__m128i __a, __m128i __b)
{
__v16qu __x = (__v16qu)__a, __y = (__v16qu)__b, __answer;
int __i;
for (__i = 0; __i < 16; __i++)
__answer[__i] = __x[__i] < __y[__i] ? __x[__i] : __y[__i];
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_avg_epu8(__m128i __a, __m128i __b)
{
__v16qu __x = (__v16qu)__a, __y = (__v16qu)__b, __answer;
int __i;
for (__i = 0; __i < 16; __i++)
__answer[__i] = (unsigned char)(((unsigned int)__x[__i] + (unsigned int)__y[__i] + 1u) >> 1);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_avg_epu16(__m128i __a, __m128i __b)
{
__v8hu __x = (__v8hu)__a, __y = (__v8hu)__b, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
__answer[__i] = (unsigned short)(((unsigned int)__x[__i] + (unsigned int)__y[__i] + 1u) >> 1);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_and_si128(__m128i __a, __m128i __b)
{
return (__m128i)((__v2du)__a & (__v2du)__b);
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_andnot_si128(__m128i __a, __m128i __b)
{
return (__m128i)(~(__v2du)__a & (__v2du)__b);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_or_si128(__m128i __a, __m128i __b)
{
return (__m128i)((__v2du)__a | (__v2du)__b);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_xor_si128(__m128i __a, __m128i __b)
{
return (__m128i)((__v2du)__a ^ (__v2du)__b);
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_cmpeq_epi8(__m128i __a, __m128i __b)
{
return (__m128i)((__v16qi)((__v16qi)__a == (__v16qi)__b));
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_cmpeq_epi16(__m128i __a, __m128i __b)
{
return (__m128i)((__v8hi)((__v8hi)__a == (__v8hi)__b));
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_cmpeq_epi32(__m128i __a, __m128i __b)
{
return (__m128i)((__v4si)((__v4si)__a == (__v4si)__b));
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_cmpgt_epi8(__m128i __a, __m128i __b)
{
return (__m128i)((__v16qi)((__v16qi)__a > (__v16qi)__b));
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_cmpgt_epi16(__m128i __a, __m128i __b)
{
return (__m128i)((__v8hi)((__v8hi)__a > (__v8hi)__b));
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_cmpgt_epi32(__m128i __a, __m128i __b)
{
return (__m128i)((__v4si)((__v4si)__a > (__v4si)__b));
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_cmplt_epi8(__m128i __a, __m128i __b)
{
return _mm_cmpgt_epi8(__b, __a);
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_cmplt_epi16(__m128i __a, __m128i __b)
{
return _mm_cmpgt_epi16(__b, __a);
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_cmplt_epi32(__m128i __a, __m128i __b)
{
return _mm_cmpgt_epi32(__b, __a);
}
static __inline__ unsigned long long __attribute__((__always_inline__))
__rucc_count128(__m128i __n)
{
return ((__v2du)__n)[0];
}
static __inline__ __m128i __attribute__((__always_inline__))
__rucc_sllw128(__m128i __a, unsigned long long __n)
{
__v8hu __x = (__v8hu)__a, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
__answer[__i] = __n > 15 ? 0 : (unsigned short)(__x[__i] << __n);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
__rucc_srlw128(__m128i __a, unsigned long long __n)
{
__v8hu __x = (__v8hu)__a, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
__answer[__i] = __n > 15 ? 0 : (unsigned short)(__x[__i] >> __n);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
__rucc_sraw128(__m128i __a, unsigned long long __n)
{
__v8hi __x = (__v8hi)__a, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
__answer[__i] = (short)((int)__x[__i] >> (__n > 15 ? 15 : (int)__n));
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
__rucc_slld128(__m128i __a, unsigned long long __n)
{
__v4su __x = (__v4su)__a, __answer;
int __i;
for (__i = 0; __i < 4; __i++)
__answer[__i] = __n > 31 ? 0u : __x[__i] << __n;
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
__rucc_srld128(__m128i __a, unsigned long long __n)
{
__v4su __x = (__v4su)__a, __answer;
int __i;
for (__i = 0; __i < 4; __i++)
__answer[__i] = __n > 31 ? 0u : __x[__i] >> __n;
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
__rucc_srad128(__m128i __a, unsigned long long __n)
{
__v4si __x = (__v4si)__a, __answer;
int __i;
for (__i = 0; __i < 4; __i++)
__answer[__i] = __x[__i] >> (__n > 31 ? 31 : (int)__n);
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
__rucc_sllq128(__m128i __a, unsigned long long __n)
{
__v2du __x = (__v2du)__a;
return (__m128i)(__v2du){ __n > 63 ? 0ULL : __x[0] << __n, __n > 63 ? 0ULL : __x[1] << __n };
}
static __inline__ __m128i __attribute__((__always_inline__))
__rucc_srlq128(__m128i __a, unsigned long long __n)
{
__v2du __x = (__v2du)__a;
return (__m128i)(__v2du){ __n > 63 ? 0ULL : __x[0] >> __n, __n > 63 ? 0ULL : __x[1] >> __n };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_sll_epi16(__m128i __a, __m128i __b)
{
return __rucc_sllw128(__a, __rucc_count128(__b));
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_slli_epi16(__m128i __a, int __n)
{
return __rucc_sllw128(__a, (unsigned long long)(unsigned int)__n);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_srl_epi16(__m128i __a, __m128i __b)
{
return __rucc_srlw128(__a, __rucc_count128(__b));
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_srli_epi16(__m128i __a, int __n)
{
return __rucc_srlw128(__a, (unsigned long long)(unsigned int)__n);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_sra_epi16(__m128i __a, __m128i __b)
{
return __rucc_sraw128(__a, __rucc_count128(__b));
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_srai_epi16(__m128i __a, int __n)
{
return __rucc_sraw128(__a, (unsigned long long)(unsigned int)__n);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_sll_epi32(__m128i __a, __m128i __b)
{
return __rucc_slld128(__a, __rucc_count128(__b));
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_slli_epi32(__m128i __a, int __n)
{
return __rucc_slld128(__a, (unsigned long long)(unsigned int)__n);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_srl_epi32(__m128i __a, __m128i __b)
{
return __rucc_srld128(__a, __rucc_count128(__b));
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_srli_epi32(__m128i __a, int __n)
{
return __rucc_srld128(__a, (unsigned long long)(unsigned int)__n);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_sra_epi32(__m128i __a, __m128i __b)
{
return __rucc_srad128(__a, __rucc_count128(__b));
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_srai_epi32(__m128i __a, int __n)
{
return __rucc_srad128(__a, (unsigned long long)(unsigned int)__n);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_sll_epi64(__m128i __a, __m128i __b)
{
return __rucc_sllq128(__a, __rucc_count128(__b));
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_slli_epi64(__m128i __a, int __n)
{
return __rucc_sllq128(__a, (unsigned long long)(unsigned int)__n);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_srl_epi64(__m128i __a, __m128i __b)
{
return __rucc_srlq128(__a, __rucc_count128(__b));
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_srli_epi64(__m128i __a, int __n)
{
return __rucc_srlq128(__a, (unsigned long long)(unsigned int)__n);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_slli_si128(__m128i __a, int __n)
{
__v16qu __from = (__v16qu)__a, __answer;
int __i;
for (__i = 0; __i < 16; __i++)
__answer[__i] = __n > 15 || __n < 0 || __i < __n ? 0 : __from[__i - __n];
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_srli_si128(__m128i __a, int __n)
{
__v16qu __from = (__v16qu)__a, __answer;
int __i;
for (__i = 0; __i < 16; __i++)
__answer[__i] = __n > 15 || __n < 0 || __i + __n > 15 ? 0 : __from[__i + __n];
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_bslli_si128(__m128i __a, int __n)
{
return _mm_slli_si128(__a, __n);
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_bsrli_si128(__m128i __a, int __n)
{
return _mm_srli_si128(__a, __n);
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_packs_epi16(__m128i __a, __m128i __b)
{
__v8hi __x = (__v8hi)__a, __y = (__v8hi)__b;
__v16qi __answer;
int __i;
for (__i = 0; __i < 8; __i++)
{
__answer[__i] = __rucc_sat_qi((int)__x[__i]);
__answer[__i + 8] = __rucc_sat_qi((int)__y[__i]);
}
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_packs_epi32(__m128i __a, __m128i __b)
{
__v4si __x = (__v4si)__a, __y = (__v4si)__b;
__v8hi __answer;
int __i;
for (__i = 0; __i < 4; __i++)
{
__answer[__i] = __rucc_sat_hi(__x[__i]);
__answer[__i + 4] = __rucc_sat_hi(__y[__i]);
}
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_packus_epi16(__m128i __a, __m128i __b)
{
__v8hi __x = (__v8hi)__a, __y = (__v8hi)__b;
__v16qu __answer;
int __i;
for (__i = 0; __i < 8; __i++)
{
__answer[__i] = __rucc_sat_qu((int)__x[__i]);
__answer[__i + 8] = __rucc_sat_qu((int)__y[__i]);
}
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_unpackhi_epi8(__m128i __a, __m128i __b)
{
__v16qi __x = (__v16qi)__a, __y = (__v16qi)__b, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
{
__answer[__i * 2] = __x[__i + 8];
__answer[__i * 2 + 1] = __y[__i + 8];
}
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_unpacklo_epi8(__m128i __a, __m128i __b)
{
__v16qi __x = (__v16qi)__a, __y = (__v16qi)__b, __answer;
int __i;
for (__i = 0; __i < 8; __i++)
{
__answer[__i * 2] = __x[__i];
__answer[__i * 2 + 1] = __y[__i];
}
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_unpackhi_epi16(__m128i __a, __m128i __b)
{
__v8hi __x = (__v8hi)__a, __y = (__v8hi)__b;
return (__m128i)(__v8hi){ __x[4], __y[4], __x[5], __y[5], __x[6], __y[6], __x[7], __y[7] };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_unpacklo_epi16(__m128i __a, __m128i __b)
{
__v8hi __x = (__v8hi)__a, __y = (__v8hi)__b;
return (__m128i)(__v8hi){ __x[0], __y[0], __x[1], __y[1], __x[2], __y[2], __x[3], __y[3] };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_unpackhi_epi32(__m128i __a, __m128i __b)
{
__v4si __x = (__v4si)__a, __y = (__v4si)__b;
return (__m128i)(__v4si){ __x[2], __y[2], __x[3], __y[3] };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_unpacklo_epi32(__m128i __a, __m128i __b)
{
__v4si __x = (__v4si)__a, __y = (__v4si)__b;
return (__m128i)(__v4si){ __x[0], __y[0], __x[1], __y[1] };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_unpackhi_epi64(__m128i __a, __m128i __b)
{
return (__m128i)(__v2di){ ((__v2di)__a)[1], ((__v2di)__b)[1] };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_unpacklo_epi64(__m128i __a, __m128i __b)
{
return (__m128i)(__v2di){ ((__v2di)__a)[0], ((__v2di)__b)[0] };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_shuffle_epi32(__m128i __a, const int __mask)
{
__v4si __from = (__v4si)__a;
return (__m128i)(__v4si){ __from[__mask & 3], __from[(__mask >> 2) & 3],
__from[(__mask >> 4) & 3], __from[(__mask >> 6) & 3] };
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_shufflehi_epi16(__m128i __a, const int __mask)
{
__v8hi __from = (__v8hi)__a, __answer = __from;
__answer[4] = __from[4 + (__mask & 3)];
__answer[5] = __from[4 + ((__mask >> 2) & 3)];
__answer[6] = __from[4 + ((__mask >> 4) & 3)];
__answer[7] = __from[4 + ((__mask >> 6) & 3)];
return (__m128i)__answer;
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_shufflelo_epi16(__m128i __a, const int __mask)
{
__v8hi __from = (__v8hi)__a, __answer = __from;
__answer[0] = __from[__mask & 3];
__answer[1] = __from[(__mask >> 2) & 3];
__answer[2] = __from[(__mask >> 4) & 3];
__answer[3] = __from[(__mask >> 6) & 3];
return (__m128i)__answer;
}
static __inline__ int __attribute__((__always_inline__))
_mm_extract_epi16(__m128i __a, const int __n)
{
return (int)((__v8hu)__a)[__n & 7];
}
static __inline__ __m128i __attribute__((__always_inline__))
_mm_insert_epi16(__m128i __a, const int __d, const int __n)
{
__v8hi __answer = (__v8hi)__a;
__answer[__n & 7] = (short)__d;
return (__m128i)__answer;
}
static __inline__ int __attribute__((__always_inline__)) _mm_movemask_epi8(__m128i __a)
{
__v16qu __from = (__v16qu)__a;
int __i, __answer = 0;
for (__i = 0; __i < 16; __i++)
__answer |= (int)(__from[__i] >> 7) << __i;
return __answer;
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_load_si128(__m128i const *__p)
{
return *__p;
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_loadu_si128(__m128i_u const *__p)
{
return *(const __m128i_u *)__p;
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_loadl_epi64(__m128i_u const *__p)
{
long long __from;
__builtin_memcpy(&__from, __p, sizeof __from);
return (__m128i)(__v2di){ __from, 0LL };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_loadu_si16(void const *__p)
{
short __from;
__builtin_memcpy(&__from, __p, sizeof __from);
return (__m128i)(__v8hi){ __from, 0, 0, 0, 0, 0, 0, 0 };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_loadu_si32(void const *__p)
{
int __from;
__builtin_memcpy(&__from, __p, sizeof __from);
return (__m128i)(__v4si){ __from, 0, 0, 0 };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_loadu_si64(void const *__p)
{
long long __from;
__builtin_memcpy(&__from, __p, sizeof __from);
return (__m128i)(__v2di){ __from, 0LL };
}
static __inline__ void __attribute__((__always_inline__)) _mm_store_si128(__m128i *__p, __m128i __b)
{
*__p = __b;
}
static __inline__ void __attribute__((__always_inline__))
_mm_storeu_si128(__m128i_u *__p, __m128i __b)
{
*(__m128i_u *)__p = __b;
}
static __inline__ void __attribute__((__always_inline__))
_mm_storel_epi64(__m128i_u *__p, __m128i __b)
{
long long __from = ((__v2di)__b)[0];
__builtin_memcpy(__p, &__from, sizeof __from);
}
static __inline__ void __attribute__((__always_inline__)) _mm_storeu_si16(void *__p, __m128i __b)
{
short __from = ((__v8hi)__b)[0];
__builtin_memcpy(__p, &__from, sizeof __from);
}
static __inline__ void __attribute__((__always_inline__)) _mm_storeu_si32(void *__p, __m128i __b)
{
int __from = ((__v4si)__b)[0];
__builtin_memcpy(__p, &__from, sizeof __from);
}
static __inline__ void __attribute__((__always_inline__)) _mm_storeu_si64(void *__p, __m128i __b)
{
long long __from = ((__v2di)__b)[0];
__builtin_memcpy(__p, &__from, sizeof __from);
}
static __inline__ void __attribute__((__always_inline__))
_mm_maskmoveu_si128(__m128i __a, __m128i __mask, char *__p)
{
__v16qu __from = (__v16qu)__a, __which = (__v16qu)__mask;
int __i;
for (__i = 0; __i < 16; __i++)
if ((__which[__i] & 0x80u) != 0u)
__p[__i] = (char)__from[__i];
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cvtepi32_pd(__m128i __a)
{
__v4si __from = (__v4si)__a;
return (__m128d)(__v2df){ (double)__from[0], (double)__from[1] };
}
static __inline__ __m128 __attribute__((__always_inline__)) _mm_cvtepi32_ps(__m128i __a)
{
__v4si __from = (__v4si)__a;
return (__m128)(__v4sf){ (float)__from[0], (float)__from[1], (float)__from[2],
(float)__from[3] };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_cvtpd_epi32(__m128d __a)
{
__v2df __from = (__v2df)__a;
return (__m128i)(__v4si){ __rucc_double_to_int(__from[0]), __rucc_double_to_int(__from[1]), 0,
0 };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_cvttpd_epi32(__m128d __a)
{
__v2df __from = (__v2df)__a;
return (__m128i)(__v4si){ __rucc_double_to_int_trunc(__from[0]),
__rucc_double_to_int_trunc(__from[1]), 0, 0 };
}
static __inline__ __m128 __attribute__((__always_inline__)) _mm_cvtpd_ps(__m128d __a)
{
__v2df __from = (__v2df)__a;
return (__m128)(__v4sf){ (float)__from[0], (float)__from[1], 0.0f, 0.0f };
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cvtps_pd(__m128 __a)
{
__v4sf __from = (__v4sf)__a;
return (__m128d)(__v2df){ (double)__from[0], (double)__from[1] };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_cvtps_epi32(__m128 __a)
{
__v4sf __from = (__v4sf)__a;
return (__m128i)(__v4si){ __rucc_float_to_int(__from[0]), __rucc_float_to_int(__from[1]),
__rucc_float_to_int(__from[2]), __rucc_float_to_int(__from[3]) };
}
static __inline__ __m128i __attribute__((__always_inline__)) _mm_cvttps_epi32(__m128 __a)
{
__v4sf __from = (__v4sf)__a;
return (__m128i)(__v4si){
__rucc_float_to_int_trunc(__from[0]), __rucc_float_to_int_trunc(__from[1]),
__rucc_float_to_int_trunc(__from[2]), __rucc_float_to_int_trunc(__from[3])
};
}
static __inline__ __m64 __attribute__((__always_inline__)) _mm_cvtpd_pi32(__m128d __a)
{
__v2df __from = (__v2df)__a;
return (__m64)(__v2si){ __rucc_double_to_int(__from[0]), __rucc_double_to_int(__from[1]) };
}
static __inline__ __m64 __attribute__((__always_inline__)) _mm_cvttpd_pi32(__m128d __a)
{
__v2df __from = (__v2df)__a;
return (__m64)(__v2si){ __rucc_double_to_int_trunc(__from[0]),
__rucc_double_to_int_trunc(__from[1]) };
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cvtpi32_pd(__m64 __a)
{
__v2si __from = (__v2si)__a;
return (__m128d)(__v2df){ (double)__from[0], (double)__from[1] };
}
static __inline__ int __attribute__((__always_inline__)) _mm_cvtsd_si32(__m128d __a)
{
return __rucc_double_to_int(((__v2df)__a)[0]);
}
static __inline__ int __attribute__((__always_inline__)) _mm_cvttsd_si32(__m128d __a)
{
return __rucc_double_to_int_trunc(((__v2df)__a)[0]);
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cvtsi32_sd(__m128d __a, int __b)
{
__v2df __answer = (__v2df)__a;
__answer[0] = (double)__b;
return (__m128d)__answer;
}
static __inline__ __m128 __attribute__((__always_inline__)) _mm_cvtsd_ss(__m128 __a, __m128d __b)
{
__v4sf __answer = (__v4sf)__a;
__answer[0] = (float)((__v2df)__b)[0];
return (__m128)__answer;
}
static __inline__ __m128d __attribute__((__always_inline__)) _mm_cvtss_sd(__m128d __a, __m128 __b)
{
__v2df __answer = (__v2df)__a;
__answer[0] = (double)((__v4sf)__b)[0];
return (__m128d)__answer;
}
#ifdef __x86_64__
static __inline__ long long __attribute__((__always_inline__)) _mm_cvtsd_si64(__m128d __a)
{
return __rucc_double_to_long(((__v2df)__a)[0]);
}
static __inline__ long long __attribute__((__always_inline__)) _mm_cvttsd_si64(__m128d __a)
{
return __rucc_double_to_long_trunc(((__v2df)__a)[0]);
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cvtsi64_sd(__m128d __a, long long __b)
{
__v2df __answer = (__v2df)__a;
__answer[0] = (double)__b;
return (__m128d)__answer;
}
static __inline__ long long __attribute__((__always_inline__)) _mm_cvtsd_si64x(__m128d __a)
{
return __rucc_double_to_long(((__v2df)__a)[0]);
}
static __inline__ long long __attribute__((__always_inline__)) _mm_cvttsd_si64x(__m128d __a)
{
return __rucc_double_to_long_trunc(((__v2df)__a)[0]);
}
static __inline__ __m128d __attribute__((__always_inline__))
_mm_cvtsi64x_sd(__m128d __a, long long __b)
{
__v2df __answer = (__v2df)__a;
__answer[0] = (double)__b;
return (__m128d)__answer;
}
#endif
static __inline__ void __attribute__((__always_inline__)) _mm_clflush(void const *__p)
{
(void)__p;
}
static __inline__ void __attribute__((__always_inline__)) _mm_lfence(void)
{
__atomic_thread_fence(__ATOMIC_SEQ_CST);
}
static __inline__ void __attribute__((__always_inline__)) _mm_mfence(void)
{
__atomic_thread_fence(__ATOMIC_SEQ_CST);
}
static __inline__ void __attribute__((__always_inline__)) _mm_stream_pd(double *__p, __m128d __a)
{
*(__m128d *)__p = __a;
}
static __inline__ void __attribute__((__always_inline__))
_mm_stream_si128(__m128i *__p, __m128i __a)
{
*__p = __a;
}
static __inline__ void __attribute__((__always_inline__)) _mm_stream_si32(int *__p, int __a)
{
*__p = __a;
}
#ifdef __x86_64__
static __inline__ void __attribute__((__always_inline__))
_mm_stream_si64(long long *__p, long long __a)
{
*__p = __a;
}
#endif
#endif