所有函数
16 位/32位/8位有符号整数向量的绝对值
__m256i _mm256_abs_epi16 (__m256i a)
__m256i _mm256_abs_epi32 (__m256i a)
__m256i _mm256_abs_epi8 (__m256i a)
分别获取16个16位/8个32位/32个8位有符号整数向量的取绝对值的结果。
16 位/32位/64位/8位有符号整数向量的相加
__m256i _mm256_add_epi16 (__m256i a, __m256i b)
__m256i _mm256_add_epi32 (__m256i a, __m256i b)
__m256i _mm256_add_epi64 (__m256i a, __m256i b)
__m256i _mm256_add_epi8 (__m256i a, __m256i b)
分别获取16个16位/8个32位/4个64位/32个8位有符号整数向量的对应相加的结果。
16 位/8位有符号/16位/8位无符号整数向量的包和处理相加
__m256i _mm256_adds_epi16 (__m256i a, __m256i b)
__m256i _mm256_adds_epi8 (__m256i a, __m256i b)
__m256i _mm256_adds_epu16 (__m256i a, __m256i b)
__m256i _mm256_adds_epu8 (__m256i a, __m256i b)
对于有符号整数,饱和处理会将结果限制在特定的范围内,以防止溢出。例如,如果进行加法运算时结果超过了有符号整数的最大值(例如,对于16位有符号整数,最大值为32767),饱和处理会将结果设为最大值(32767);如果结果小于最小值(例如,对于16位有符号整数,最小值为-32768),饱和处理会将结果设为最小值(-32768)。相当于clamp了一下。
没明白的指令
__m256i _mm256_alignr_epi8 (__m256i a, __m256i b, const int imm8)
__m256i _mm256_blend_epi16 (__m256i a, __m256i b, const int imm8)
__m128i _mm_blend_epi32 (__m128i a, __m128i b, const int imm8)
__m256i _mm256_blend_epi32 (__m256i a, __m256i b, const int imm8)
__m256i _mm256_blendv_epi8 (__m256i a, __m256i b, __m256i mask)
__m128i _mm_broadcastb_epi8 (__m128i a)
__m256i _mm256_broadcastb_epi8 (__m128i a)
__m128i _mm_broadcastd_epi32 (__m128i a)
__m256i _mm256_broadcastd_epi32 (__m128i a)
__m128i _mm_broadcastq_epi64 (__m128i a)
__m256i _mm256_broadcastq_epi64 (__m128i a)
__m128d _mm_broadcastsd_pd (__m128d a)
__m256d _mm256_broadcastsd_pd (__m128d a)
__m256i _mm_broadcastsi128_si256 (__m128i a)
__m256i _mm256_broadcastsi128_si256 (__m128i a)
__m128 _mm_broadcastss_ps (__m128 a)
__m256 _mm256_broadcastss_ps (__m128 a)
__m128i _mm_broadcastw_epi16 (__m128i a)
__m256i _mm256_broadcastw_epi16 (__m128i a)
对两个 256 位整数寄存器中的对应元素执行按位与操作
__m256i _mm256_and_si256 (__m256i a, __m256i b)
两个 256 位整数寄存器中的对应元素执行按位非与操作
__m256i _mm256_andnot_si256 (__m256i a, __m256i b)
对两个 256 位整数寄存器中的对应元素执行无符号16位/8位整数平均值计算
__m256i _mm256_avg_epu16 (__m256i a, __m256i b)
__m256i _mm256_avg_epu8 (__m256i a, __m256i b)
将 256 位整数寄存器中的数据向左/向右移动指定数量的字节
__m256i _mm256_bslli_epi128 (__m256i a, const int imm8)
__m256i _mm256_bsrli_epi128 (__m256i a, const int imm8)
两个 256 位整数寄存器中的对应元素执行相等性比较。
__m256i _mm256_cmpeq_epi16 (__m256i a, __m256i b)
__m256i _mm256_cmpeq_epi32 (__m256i a, __m256i b)
__m256i _mm256_cmpeq_epi64 (__m256i a, __m256i b)
__m256i _mm256_cmpeq_epi8 (__m256i a, __m256i b)
如果相等则相应位置的结果为全1(0xFFFF/0xFFFFFFFF/0xFFFFFFFFFFFFFFFF/0xFF),否则为全0
两个 256 位整数寄存器中的对应元素执行大于的比较
__m256i _mm256_cmpgt_epi16 (__m256i a, __m256i b)
__m256i _mm256_cmpgt_epi32 (__m256i a, __m256i b)
__m256i _mm256_cmpgt_epi64 (__m256i a, __m256i b)
__m256i _mm256_cmpgt_epi8 (__m256i a, __m256i b)
如果大于则相应位置的结果为全1(0xFFFF/0xFFFFFFFF/0xFFFFFFFFFFFFFFFF/0xFF),否则为全0
将 128 位整数寄存器中的 m 位有符号整数扩展为 n 位整数
__m256i _mm256_cvtepi16_epi32 (__m128i a)
__m256i _mm256_cvtepi16_epi64 (__m128i a)
__m256i _mm256_cvtepi32_epi64 (__m128i a)
__m256i _mm256_cvtepi8_epi16 (__m128i a)
__m256i _mm256_cvtepi8_epi32 (__m128i a)
__m256i _mm256_cvtepi8_epi64 (__m128i a)
__m256i _mm256_cvtepu16_epi32 (__m128i a)
__m256i _mm256_cvtepu16_epi64 (__m128i a)
__m256i _mm256_cvtepu32_epi64 (__m128i a)
__m256i _mm256_cvtepu8_epi16 (__m128i a)
__m256i _mm256_cvtepu8_epi32 (__m128i a)
__m256i _mm256_cvtepu8_epi64 (__m128i a)
以上的mn分别为16/16/32/8/8/8/16/16/32/8/8/8和32/64/64/16/32/64/32/64/64/16/32/64
从 256 位整数寄存器中按照索引index提取一个m位整数。
int _mm256_extract_epi16 (__m256i a, const int index)
int _mm256_extract_epi8 (__m256i a, const int index)
m分别为16和8
从 256 位整数寄存器中提取一个 128 位整数寄存器
__m128i _mm256_extracti128_si256 (__m256i a, const int imm8)
imm8为0取低128位,1取高128位
标签:__,mm256,16,整数,AVX256,m128i,指令集,m256i From: https://www.cnblogs.com/CallMeRoot/p/18049321