📄 mmintrin.h
字号:
{ return (__m64) __builtin_arm_wmulsh ((__v4hi)__m1, (__v4hi)__m2);}/* Multiply four signed 16-bit values in M1 by four signed 16-bit values in M2 and produce the high 16 bits of the 32-bit results. */static __inline __m64_mm_mulhi_pu16 (__m64 __m1, __m64 __m2){ return (__m64) __builtin_arm_wmuluh ((__v4hi)__m1, (__v4hi)__m2);}/* Multiply four 16-bit values in M1 by four 16-bit values in M2 and produce the low 16 bits of the results. */static __inline __m64_mm_mullo_pi16 (__m64 __m1, __m64 __m2){ return (__m64) __builtin_arm_wmulul ((__v4hi)__m1, (__v4hi)__m2);}/* Shift four 16-bit values in M left by COUNT. */static __inline __m64_mm_sll_pi16 (__m64 __m, __m64 __count){ return (__m64) __builtin_arm_wsllh ((__v4hi)__m, __count);}static __inline __m64_mm_slli_pi16 (__m64 __m, int __count){ return (__m64) __builtin_arm_wsllhi ((__v4hi)__m, __count);}/* Shift two 32-bit values in M left by COUNT. */static __inline __m64_mm_sll_pi32 (__m64 __m, __m64 __count){ return (__m64) __builtin_arm_wsllw ((__v2si)__m, __count);}static __inline __m64_mm_slli_pi32 (__m64 __m, int __count){ return (__m64) __builtin_arm_wsllwi ((__v2si)__m, __count);}/* Shift the 64-bit value in M left by COUNT. */static __inline __m64_mm_sll_si64 (__m64 __m, __m64 __count){ return (__m64) __builtin_arm_wslld (__m, __count);}static __inline __m64_mm_slli_si64 (__m64 __m, int __count){ return (__m64) __builtin_arm_wslldi (__m, __count);}/* Shift four 16-bit values in M right by COUNT; shift in the sign bit. */static __inline __m64_mm_sra_pi16 (__m64 __m, __m64 __count){ return (__m64) __builtin_arm_wsrah ((__v4hi)__m, __count);}static __inline __m64_mm_srai_pi16 (__m64 __m, int __count){ return (__m64) __builtin_arm_wsrahi ((__v4hi)__m, __count);}/* Shift two 32-bit values in M right by COUNT; shift in the sign bit. */static __inline __m64_mm_sra_pi32 (__m64 __m, __m64 __count){ return (__m64) __builtin_arm_wsraw ((__v2si)__m, __count);}static __inline __m64_mm_srai_pi32 (__m64 __m, int __count){ return (__m64) __builtin_arm_wsrawi ((__v2si)__m, __count);}/* Shift the 64-bit value in M right by COUNT; shift in the sign bit. */static __inline __m64_mm_sra_si64 (__m64 __m, __m64 __count){ return (__m64) __builtin_arm_wsrad (__m, __count);}static __inline __m64_mm_srai_si64 (__m64 __m, int __count){ return (__m64) __builtin_arm_wsradi (__m, __count);}/* Shift four 16-bit values in M right by COUNT; shift in zeros. */static __inline __m64_mm_srl_pi16 (__m64 __m, __m64 __count){ return (__m64) __builtin_arm_wsrlh ((__v4hi)__m, __count);}static __inline __m64_mm_srli_pi16 (__m64 __m, int __count){ return (__m64) __builtin_arm_wsrlhi ((__v4hi)__m, __count);}/* Shift two 32-bit values in M right by COUNT; shift in zeros. */static __inline __m64_mm_srl_pi32 (__m64 __m, __m64 __count){ return (__m64) __builtin_arm_wsrlw ((__v2si)__m, __count);}static __inline __m64_mm_srli_pi32 (__m64 __m, int __count){ return (__m64) __builtin_arm_wsrlwi ((__v2si)__m, __count);}/* Shift the 64-bit value in M left by COUNT; shift in zeros. */static __inline __m64_mm_srl_si64 (__m64 __m, __m64 __count){ return (__m64) __builtin_arm_wsrld (__m, __count);}static __inline __m64_mm_srli_si64 (__m64 __m, int __count){ return (__m64) __builtin_arm_wsrldi (__m, __count);}/* Rotate four 16-bit values in M right by COUNT. */static __inline __m64_mm_ror_pi16 (__m64 __m, __m64 __count){ return (__m64) __builtin_arm_wrorh ((__v4hi)__m, __count);}static __inline __m64_mm_rori_pi16 (__m64 __m, int __count){ return (__m64) __builtin_arm_wrorhi ((__v4hi)__m, __count);}/* Rotate two 32-bit values in M right by COUNT. */static __inline __m64_mm_ror_pi32 (__m64 __m, __m64 __count){ return (__m64) __builtin_arm_wrorw ((__v2si)__m, __count);}static __inline __m64_mm_rori_pi32 (__m64 __m, int __count){ return (__m64) __builtin_arm_wrorwi ((__v2si)__m, __count);}/* Rotate two 64-bit values in M right by COUNT. */static __inline __m64_mm_ror_si64 (__m64 __m, __m64 __count){ return (__m64) __builtin_arm_wrord (__m, __count);}static __inline __m64_mm_rori_si64 (__m64 __m, int __count){ return (__m64) __builtin_arm_wrordi (__m, __count);}/* Bit-wise AND the 64-bit values in M1 and M2. */static __inline __m64_mm_and_si64 (__m64 __m1, __m64 __m2){ return __builtin_arm_wand (__m1, __m2);}/* Bit-wise complement the 64-bit value in M1 and bit-wise AND it with the 64-bit value in M2. */static __inline __m64_mm_andnot_si64 (__m64 __m1, __m64 __m2){ return __builtin_arm_wandn (__m1, __m2);}/* Bit-wise inclusive OR the 64-bit values in M1 and M2. */static __inline __m64_mm_or_si64 (__m64 __m1, __m64 __m2){ return __builtin_arm_wor (__m1, __m2);}/* Bit-wise exclusive OR the 64-bit values in M1 and M2. */static __inline __m64_mm_xor_si64 (__m64 __m1, __m64 __m2){ return __builtin_arm_wxor (__m1, __m2);}/* Compare eight 8-bit values. The result of the comparison is 0xFF if the test is true and zero if false. */static __inline __m64_mm_cmpeq_pi8 (__m64 __m1, __m64 __m2){ return (__m64) __builtin_arm_wcmpeqb ((__v8qi)__m1, (__v8qi)__m2);}static __inline __m64_mm_cmpgt_pi8 (__m64 __m1, __m64 __m2){ return (__m64) __builtin_arm_wcmpgtsb ((__v8qi)__m1, (__v8qi)__m2);}static __inline __m64_mm_cmpgt_pu8 (__m64 __m1, __m64 __m2){ return (__m64) __builtin_arm_wcmpgtub ((__v8qi)__m1, (__v8qi)__m2);}/* Compare four 16-bit values. The result of the comparison is 0xFFFF if the test is true and zero if false. */static __inline __m64_mm_cmpeq_pi16 (__m64 __m1, __m64 __m2){ return (__m64) __builtin_arm_wcmpeqh ((__v4hi)__m1, (__v4hi)__m2);}static __inline __m64_mm_cmpgt_pi16 (__m64 __m1, __m64 __m2){ return (__m64) __builtin_arm_wcmpgtsh ((__v4hi)__m1, (__v4hi)__m2);}static __inline __m64_mm_cmpgt_pu16 (__m64 __m1, __m64 __m2){ return (__m64) __builtin_arm_wcmpgtuh ((__v4hi)__m1, (__v4hi)__m2);}/* Compare two 32-bit values. The result of the comparison is 0xFFFFFFFF if the test is true and zero if false. */static __inline __m64_mm_cmpeq_pi32 (__m64 __m1, __m64 __m2){ return (__m64) __builtin_arm_wcmpeqw ((__v2si)__m1, (__v2si)__m2);}static __inline __m64_mm_cmpgt_pi32 (__m64 __m1, __m64 __m2){ return (__m64) __builtin_arm_wcmpgtsw ((__v2si)__m1, (__v2si)__m2);}static __inline __m64_mm_cmpgt_pu32 (__m64 __m1, __m64 __m2){ return (__m64) __builtin_arm_wcmpgtuw ((__v2si)__m1, (__v2si)__m2);}/* Element-wise multiplication of unsigned 16-bit values __B and __C, followed by accumulate across all elements and __A. */static __inline __m64_mm_mac_pu16 (__m64 __A, __m64 __B, __m64 __C){ return __builtin_arm_wmacu (__A, (__v4hi)__B, (__v4hi)__C);}/* Element-wise multiplication of signed 16-bit values __B and __C, followed by accumulate across all elements and __A. */static __inline __m64_mm_mac_pi16 (__m64 __A, __m64 __B, __m64 __C){ return __builtin_arm_wmacs (__A, (__v4hi)__B, (__v4hi)__C);}/* Element-wise multiplication of unsigned 16-bit values __B and __C, followed by accumulate across all elements. */static __inline __m64_mm_macz_pu16 (__m64 __A, __m64 __B){ return __builtin_arm_wmacuz ((__v4hi)__A, (__v4hi)__B);}/* Element-wise multiplication of signed 16-bit values __B and __C, followed by accumulate across all elements. */static __inline __m64_mm_macz_pi16 (__m64 __A, __m64 __B){ return __builtin_arm_wmacsz ((__v4hi)__A, (__v4hi)__B);}/* Accumulate across all unsigned 8-bit values in __A. */static __inline __m64_mm_acc_pu8 (__m64 __A){ return __builtin_arm_waccb ((__v8qi)__A);}/* Accumulate across all unsigned 16-bit values in __A. */static __inline __m64_mm_acc_pu16 (__m64 __A){ return __builtin_arm_wacch ((__v4hi)__A);}/* Accumulate across all unsigned 32-bit values in __A. */static __inline __m64_mm_acc_pu32 (__m64 __A){ return __builtin_arm_waccw ((__v2si)__A);}static __inline __m64_mm_mia_si64 (__m64 __A, int __B, int __C){ return __builtin_arm_tmia (__A, __B, __C);}static __inline __m64_mm_miaph_si64 (__m64 __A, int __B, int __C){ return __builtin_arm_tmiaph (__A, __B, __C);}static __inline __m64_mm_miabb_si64 (__m64 __A, int __B, int __C){ return __builtin_arm_tmiabb (__A, __B, __C);}static __inline __m64_mm_miabt_si64 (__m64 __A, int __B, int __C){ return __builtin_arm_tmiabt (__A, __B, __C);}static __inline __m64_mm_miatb_si64 (__m64 __A, int __B, int __C){ return __builtin_arm_tmiatb (__A, __B, __C);}static __inline __m64_mm_miatt_si64 (__m64 __A, int __B, int __C){ return __builtin_arm_tmiatt (__A, __B, __C);}/* Extract one of the elements of A and sign extend. The selector N must be immediate. */#define _mm_extract_pi8(A, N) __builtin_arm_textrmsb ((__v8qi)(A), (N))#define _mm_extract_pi16(A, N) __builtin_arm_textrmsh ((__v4hi)(A), (N))#define _mm_extract_pi32(A, N) __builtin_arm_textrmsw ((__v2si)(A), (N))/* Extract one of the elements of A and zero extend. The selector N must be immediate. */#define _mm_extract_pu8(A, N) __builtin_arm_textrmub ((__v8qi)(A), (N))#define _mm_extract_pu16(A, N) __builtin_arm_textrmuh ((__v4hi)(A), (N))#define _mm_extract_pu32(A, N) __builtin_arm_textrmuw ((__v2si)(A), (N))/* Inserts word D into one of the elements of A. The selector N must be immediate. */#define _mm_insert_pi8(A, D, N) \ ((__m64) __builtin_arm_tinsrb ((__v8qi)(A), (D), (N)))#define _mm_insert_pi16(A, D, N) \ ((__m64) __builtin_arm_tinsrh ((__v4hi)(A), (D), (N)))#define _mm_insert_pi32(A, D, N) \ ((__m64) __builtin_arm_tinsrw ((__v2si)(A), (D), (N)))/* Compute the element-wise maximum of signed 8-bit values. */static __inline __m64_mm_max_pi8 (__m64 __A, __m64 __B){ return (__m64) __builtin_arm_wmaxsb ((__v8qi)__A, (__v8qi)__B);}/* Compute the element-wise maximum of signed 16-bit values. */static __inline __m64_mm_max_pi16 (__m64 __A, __m64 __B){ return (__m64) __builtin_arm_wmaxsh ((__v4hi)__A, (__v4hi)__B);}/* Compute the element-wise maximum of signed 32-bit values. */static __inline __m64_mm_max_pi32 (__m64 __A, __m64 __B){ return (__m64) __builtin_arm_wmaxsw ((__v2si)__A, (__v2si)__B);}/* Compute the element-wise maximum of unsigned 8-bit values. */static __inline __m64_mm_max_pu8 (__m64 __A, __m64 __B){ return (__m64) __builtin_arm_wmaxub ((__v8qi)__A, (__v8qi)__B);}/* Compute the element-wise maximum of unsigned 16-bit values. */static __inline __m64_mm_max_pu16 (__m64 __A, __m64 __B){ return (__m64) __builtin_arm_wmaxuh ((__v4hi)__A, (__v4hi)__B);}/* Compute the element-wise maximum of unsigned 32-bit values. */static __inline __m64_mm_max_pu32 (__m64 __A, __m64 __B){ return (__m64) __builtin_arm_wmaxuw ((__v2si)__A, (__v2si)__B);}/* Compute the element-wise minimum of signed 16-bit values. */static __inline __m64_mm_min_pi8 (__m64 __A, __m64 __B)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -