intel向量扩展指令集编程参考

本文详细介绍了Intel向量扩展指令集,包括两操作数指令如加法、比较、位运算等,以及FMA指令,如融合乘加、融合乘减等浮点运算。这些指令用于高效处理大量数据,提高计算性能。
摘要由CSDN通过智能技术生成

两操作数指令

Multiple Sum of Absolute Differences:

很复杂的一条指令,目前还没有用到过。
__m128i _mm_mpsadbw_epu8 (__m128i s1, __m128i s2, const int mask);
__m256i _mm256_mpsadbw_epu8 (__m256i s1, __m256i s2, const int mask);

Packed Absolute Value:

对8,16,32位取绝对值。

指令组成:

_mm/_mm256

_abs

_epi8/epi16/epi32

Pack with Signed Saturation:

将16,32位打包位8,16位。

_mm/_mm256

_packs

_epi16/epi32

Pack with Unsigned Saturation:

_mm/_mm256

_packus

_epi32/epi16

Add Packed Integers:

加法,溢出取低位

_mm/_mm256

_add

_epi8/_epi16/_epi32/_epi64

Add Packed Signed Integers with Signed:

带饱和,有符号

_mm/_mm256

_adds

_epi8/_epi16/

Add Packed Unsigned Integers with Unsigned Saturation:

饱和,无符号

_mm/_mm256

_adds

_epu8/_epu16/

Byte Align:

两个向量偏移拼接

_mm/_mm256

_alignr

_epi8
在从SSE到AVX2升级过程中,由于该指令分别对128进行操作,因此要注意。

Logical AND:

逻辑与

_mm/_mm256

_and

_si128/_si256

Logical AND NOT:

逻辑与非 not src1 and src2

_mm/_mm256

_andnot

_si128/_si256

Average Packed Integers:

平均值

_mm/_mm256

_avg

_epu8/_epu16

Variable Blend Packed Bytes:

可变赋值,根据src3决定结果为src1或src2的对应位。第三个mask参数为寄存器。

_mm_blendv_epi8

Blend Packed Words:

可变赋值,第三个mask参数为int
在这里插入图片描述

_mm/_mm256

_blend

_epi16

Compare Packed Integers for Equality:

比较是否等于,等于目标为赋值0xff,否则为0。

_mm/_mm256

_cmpeq

_epi8/_epi16/_epi32/_epi64

Compare Packed Integers for Greater Than:

比较是否大于

_cmpgt

Packed Horizontal Add:

相邻位置打包相加
在这里插入图片描述

_mm/_mm256

_hadd

_epi16/_epi32

Packed Horizontal Add with Saturation:

相邻位置打包相加,饱和&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仟人斩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值