📄 emmintrin.h
字号:
static __inline int
_mm_ucomilt_sd (__m128d __A, __m128d __B)
{
return __builtin_ia32_ucomisdlt ((__v2df)__A, (__v2df)__B);
}
static __inline int
_mm_ucomile_sd (__m128d __A, __m128d __B)
{
return __builtin_ia32_ucomisdle ((__v2df)__A, (__v2df)__B);
}
static __inline int
_mm_ucomigt_sd (__m128d __A, __m128d __B)
{
return __builtin_ia32_ucomisdgt ((__v2df)__A, (__v2df)__B);
}
static __inline int
_mm_ucomige_sd (__m128d __A, __m128d __B)
{
return __builtin_ia32_ucomisdge ((__v2df)__A, (__v2df)__B);
}
static __inline int
_mm_ucomineq_sd (__m128d __A, __m128d __B)
{
return __builtin_ia32_ucomisdneq ((__v2df)__A, (__v2df)__B);
}
/* Create a vector with element 0 as *P and the rest zero. */
static __inline __m128i
_mm_load_si128 (__m128i const *__P)
{
return (__m128i) __builtin_ia32_loaddqa ((char const *)__P);
}
static __inline __m128i
_mm_loadu_si128 (__m128i const *__P)
{
return (__m128i) __builtin_ia32_loaddqu ((char const *)__P);
}
static __inline __m128i
_mm_loadl_epi64 (__m128i const *__P)
{
return (__m128i) __builtin_ia32_movq2dq (*(unsigned long long *)__P);
}
static __inline void
_mm_store_si128 (__m128i *__P, __m128i __B)
{
__builtin_ia32_storedqa ((char *)__P, (__v16qi)__B);
}
static __inline void
_mm_storeu_si128 (__m128i *__P, __m128i __B)
{
__builtin_ia32_storedqu ((char *)__P, (__v16qi)__B);
}
static __inline void
_mm_storel_epi64 (__m128i *__P, __m128i __B)
{
*(long long *)__P = __builtin_ia32_movdq2q ((__v2di)__B);
}
static __inline __m64
_mm_movepi64_pi64 (__m128i __B)
{
return (__m64) __builtin_ia32_movdq2q ((__v2di)__B);
}
static __inline __m128i
_mm_move_epi64 (__m128i __A)
{
return (__m128i) __builtin_ia32_movq ((__v2di)__A);
}
/* Create a vector of zeros. */
static __inline __m128i
_mm_setzero_si128 (void)
{
return (__m128i) __builtin_ia32_setzero128 ();
}
static __inline __m128i
_mm_set_epi64 (__m64 __A, __m64 __B)
{
__v2di __tmp = (__v2di)__builtin_ia32_movq2dq ((unsigned long long)__A);
__v2di __tmp2 = (__v2di)__builtin_ia32_movq2dq ((unsigned long long)__B);
return (__m128i)__builtin_ia32_punpcklqdq128 (__tmp2, __tmp);
}
/* Create the vector [Z Y X W]. */
static __inline __m128i
_mm_set_epi32 (int __Z, int __Y, int __X, int __W)
{
union {
int __a[4];
__m128i __v;
} __u;
__u.__a[0] = __W;
__u.__a[1] = __X;
__u.__a[2] = __Y;
__u.__a[3] = __Z;
return __u.__v;
}
#ifdef __x86_64__
/* Create the vector [Z Y]. */
static __inline __m128i
_mm_set_epi64x (long long __Z, long long __Y)
{
union {
long __a[2];
__m128i __v;
} __u;
__u.__a[0] = __Y;
__u.__a[1] = __Z;
return __u.__v;
}
#endif
/* Create the vector [S T U V Z Y X W]. */
static __inline __m128i
_mm_set_epi16 (short __Z, short __Y, short __X, short __W,
short __V, short __U, short __T, short __S)
{
union {
short __a[8];
__m128i __v;
} __u;
__u.__a[0] = __S;
__u.__a[1] = __T;
__u.__a[2] = __U;
__u.__a[3] = __V;
__u.__a[4] = __W;
__u.__a[5] = __X;
__u.__a[6] = __Y;
__u.__a[7] = __Z;
return __u.__v;
}
/* Create the vector [S T U V Z Y X W]. */
static __inline __m128i
_mm_set_epi8 (char __Z, char __Y, char __X, char __W,
char __V, char __U, char __T, char __S,
char __Z1, char __Y1, char __X1, char __W1,
char __V1, char __U1, char __T1, char __S1)
{
union {
char __a[16];
__m128i __v;
} __u;
__u.__a[0] = __S1;
__u.__a[1] = __T1;
__u.__a[2] = __U1;
__u.__a[3] = __V1;
__u.__a[4] = __W1;
__u.__a[5] = __X1;
__u.__a[6] = __Y1;
__u.__a[7] = __Z1;
__u.__a[8] = __S;
__u.__a[9] = __T;
__u.__a[10] = __U;
__u.__a[11] = __V;
__u.__a[12] = __W;
__u.__a[13] = __X;
__u.__a[14] = __Y;
__u.__a[15] = __Z;
return __u.__v;
}
static __inline __m128i
_mm_set1_epi64 (__m64 __A)
{
__v2di __tmp = (__v2di)__builtin_ia32_movq2dq ((unsigned long long)__A);
return (__m128i)__builtin_ia32_punpcklqdq128 (__tmp, __tmp);
}
static __inline __m128i
_mm_set1_epi32 (int __A)
{
__v4si __tmp = (__v4si)__builtin_ia32_loadd (&__A);
return (__m128i) __builtin_ia32_pshufd ((__v4si)__tmp, _MM_SHUFFLE (0,0,0,0));
}
#ifdef __x86_64__
static __inline __m128i
_mm_set1_epi64x (long long __A)
{
__v2di __tmp = (__v2di)__builtin_ia32_movq2dq ((unsigned long long)__A);
return (__m128i) __builtin_ia32_shufpd ((__v2df)__tmp, (__v2df)__tmp, _MM_SHUFFLE2 (0,0));
}
#endif
static __inline __m128i
_mm_set1_epi16 (short __A)
{
int __Acopy = (unsigned short)__A;
__v4si __tmp = (__v4si)__builtin_ia32_loadd (&__Acopy);
__tmp = (__v4si)__builtin_ia32_punpcklwd128 ((__v8hi)__tmp, (__v8hi)__tmp);
return (__m128i) __builtin_ia32_pshufd ((__v4si)__tmp, _MM_SHUFFLE (0,0,0,0));
}
static __inline __m128i
_mm_set1_epi8 (char __A)
{
int __Acopy = (unsigned char)__A;
__v4si __tmp = (__v4si)__builtin_ia32_loadd (&__Acopy);
__tmp = (__v4si)__builtin_ia32_punpcklbw128 ((__v16qi)__tmp, (__v16qi)__tmp);
__tmp = (__v4si)__builtin_ia32_punpcklbw128 ((__v16qi)__tmp, (__v16qi)__tmp);
return (__m128i) __builtin_ia32_pshufd ((__v4si)__tmp, _MM_SHUFFLE (0,0,0,0));
}
static __inline __m128i
_mm_setr_epi64 (__m64 __A, __m64 __B)
{
__v2di __tmp = (__v2di)__builtin_ia32_movq2dq ((unsigned long long)__A);
__v2di __tmp2 = (__v2di)__builtin_ia32_movq2dq ((unsigned long long)__B);
return (__m128i)__builtin_ia32_punpcklqdq128 (__tmp, __tmp2);
}
/* Create the vector [Z Y X W]. */
static __inline __m128i
_mm_setr_epi32 (int __W, int __X, int __Y, int __Z)
{
union {
int __a[4];
__m128i __v;
} __u;
__u.__a[0] = __W;
__u.__a[1] = __X;
__u.__a[2] = __Y;
__u.__a[3] = __Z;
return __u.__v;
}
/* Create the vector [S T U V Z Y X W]. */
static __inline __m128i
_mm_setr_epi16 (short __S, short __T, short __U, short __V,
short __W, short __X, short __Y, short __Z)
{
union {
short __a[8];
__m128i __v;
} __u;
__u.__a[0] = __S;
__u.__a[1] = __T;
__u.__a[2] = __U;
__u.__a[3] = __V;
__u.__a[4] = __W;
__u.__a[5] = __X;
__u.__a[6] = __Y;
__u.__a[7] = __Z;
return __u.__v;
}
/* Create the vector [S T U V Z Y X W]. */
static __inline __m128i
_mm_setr_epi8 (char __S1, char __T1, char __U1, char __V1,
char __W1, char __X1, char __Y1, char __Z1,
char __S, char __T, char __U, char __V,
char __W, char __X, char __Y, char __Z)
{
union {
char __a[16];
__m128i __v;
} __u;
__u.__a[0] = __S1;
__u.__a[1] = __T1;
__u.__a[2] = __U1;
__u.__a[3] = __V1;
__u.__a[4] = __W1;
__u.__a[5] = __X1;
__u.__a[6] = __Y1;
__u.__a[7] = __Z1;
__u.__a[8] = __S;
__u.__a[9] = __T;
__u.__a[10] = __U;
__u.__a[11] = __V;
__u.__a[12] = __W;
__u.__a[13] = __X;
__u.__a[14] = __Y;
__u.__a[15] = __Z;
return __u.__v;
}
static __inline __m128d
_mm_cvtepi32_pd (__m128i __A)
{
return (__m128d)__builtin_ia32_cvtdq2pd ((__v4si) __A);
}
static __inline __m128
_mm_cvtepi32_ps (__m128i __A)
{
return (__m128)__builtin_ia32_cvtdq2ps ((__v4si) __A);
}
static __inline __m128i
_mm_cvtpd_epi32 (__m128d __A)
{
return (__m128i)__builtin_ia32_cvtpd2dq ((__v2df) __A);
}
static __inline __m64
_mm_cvtpd_pi32 (__m128d __A)
{
return (__m64)__builtin_ia32_cvtpd2pi ((__v2df) __A);
}
static __inline __m128
_mm_cvtpd_ps (__m128d __A)
{
return (__m128)__builtin_ia32_cvtpd2ps ((__v2df) __A);
}
static __inline __m128i
_mm_cvttpd_epi32 (__m128d __A)
{
return (__m128i)__builtin_ia32_cvttpd2dq ((__v2df) __A);
}
static __inline __m64
_mm_cvttpd_pi32 (__m128d __A)
{
return (__m64)__builtin_ia32_cvttpd2pi ((__v2df) __A);
}
static __inline __m128d
_mm_cvtpi32_pd (__m64 __A)
{
return (__m128d)__builtin_ia32_cvtpi2pd ((__v2si) __A);
}
static __inline __m128i
_mm_cvtps_epi32 (__m128 __A)
{
return (__m128i)__builtin_ia32_cvtps2dq ((__v4sf) __A);
}
static __inline __m128i
_mm_cvttps_epi32 (__m128 __A)
{
return (__m128i)__builtin_ia32_cvttps2dq ((__v4sf) __A);
}
static __inline __m128d
_mm_cvtps_pd (__m128 __A)
{
return (__m128d)__builtin_ia32_cvtps2pd ((__v4sf) __A);
}
static __inline int
_mm_cvtsd_si32 (__m128d __A)
{
return __builtin_ia32_cvtsd2si ((__v2df) __A);
}
#ifdef __x86_64__
static __inline long long
_mm_cvtsd_si64x (__m128d __A)
{
return __builtin_ia32_cvtsd2si64 ((__v2df) __A);
}
#endif
static __inline int
_mm_cvttsd_si32 (__m128d __A)
{
return __builtin_ia32_cvttsd2si ((__v2df) __A);
}
#ifdef __x86_64__
static __inline long long
_mm_cvttsd_si64x (__m128d __A)
{
return __builtin_ia32_cvttsd2si64 ((__v2df) __A);
}
#endif
static __inline __m128
_mm_cvtsd_ss (__m128 __A, __m128d __B)
{
return (__m128)__builtin_ia32_cvtsd2ss ((__v4sf) __A, (__v2df) __B);
}
static __inline __m128d
_mm_cvtsi32_sd (__m128d __A, int __B)
{
return (__m128d)__builtin_ia32_cvtsi2sd ((__v2df) __A, __B);
}
#ifdef __x86_64__
static __inline __m128d
_mm_cvtsi64x_sd (__m128d __A, long long __B)
{
return (__m128d)__builtin_ia32_cvtsi642sd ((__v2df) __A, __B);
}
#endif
static __inline __m128d
_mm_cvtss_sd (__m128d __A, __m128 __B)
{
return (__m128d)__builtin_ia32_cvtss2sd ((__v2df) __A, (__v4sf)__B);
}
#define _mm_shuffle_pd(__A, __B, __C) ((__m128d)__builtin_ia32_shufpd ((__v2df)__A, (__v2df)__B, (__C)))
static __inline __m128d
_mm_unpackhi_pd (__m128d __A, __m128d __B)
{
return (__m128d)__builtin_ia32_unpckhpd ((__v2df)__A, (__v2df)__B);
}
static __inline __m128d
_mm_unpacklo_pd (__m128d __A, __m128d __B)
{
return (__m128d)__builtin_ia32_unpcklpd ((__v2df)__A, (__v2df)__B);
}
static __inline __m128d
_mm_loadh_pd (__m128d __A, double const *__B)
{
return (__m128d)__builtin_ia32_loadhpd ((__v2df)__A, (__v2si *)__B);
}
static __inline void
_mm_storeh_pd (double *__A, __m128d __B)
{
__builtin_ia32_storehpd ((__v2si *)__A, (__v2df)__B);
}
static __inline __m128d
_mm_loadl_pd (__m128d __A, double const *__B)
{
return (__m128d)__builtin_ia32_loadlpd ((__v2df)__A, (__v2si *)__B);
}
static __inline void
_mm_storel_pd (double *__A, __m128d __B)
{
__builtin_ia32_storelpd ((__v2si *)__A, (__v2df)__B);
}
static __inline int
_mm_movemask_pd (__m128d __A)
{
return __builtin_ia32_movmskpd ((__v2df)__A);
}
static __inline __m128i
_mm_packs_epi16 (__m128i __A, __m128i __B)
{
return (__m128i)__builtin_ia32_packsswb128 ((__v8hi)__A, (__v8hi)__B);
}
static __inline __m128i
_mm_packs_epi32 (__m128i __A, __m128i __B)
{
return (__m128i)__builtin_ia32_packssdw128 ((__v4si)__A, (__v4si)__B);
}
static __inline __m128i
_mm_packus_epi16 (__m128i __A, __m128i __B)
{
return (__m128i)__builtin_ia32_packuswb128 ((__v8hi)__A, (__v8hi)__B);
}
static __inline __m128i
_mm_unpackhi_epi8 (__m128i __A, __m128i __B)
{
return (__m128i)__builtin_ia32_punpckhbw128 ((__v16qi)__A, (__v16qi)__B);
}
static __inline __m128i
_mm_unpackhi_epi16 (__m128i __A, __m128i __B)
{
return (__m128i)__builtin_ia32_punpckhwd128 ((__v8hi)__A, (__v8hi)__B);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -