AVX2指令集

__m256i _mm256_permute2x128_si256 (__m256i a, __m256i b, const int imm8)

        作用:imm8是一个mask(8bit)。这个函数会依据imm8的前后4个bit的值[0:3]和[4:7]确定输出dst的前128bit和后128bit使用a还是b的数据。

DEFINE SELECT4(src1, src2, control) {
	CASE(control[1:0]) OF
	0:	tmp[127:0] := src1[127:0]
	1:	tmp[127:0] := src1[255:128]
	2:	tmp[127:0] := src2[127:0]
	3:	tmp[127:0] := src2[255:128]
	ESAC
	IF control[3]
		tmp[127:0] := 0
	FI
	RETURN tmp[127:0]
}
dst[127:0] := SELECT4(a[255:0], b[255:0], imm8[3:0])
dst[255:128] := SELECT4(a[255:0], b[255:0], imm8[7:4])
dst[MAX:256] := 0

        如图,imm8用一个字节表示,低四位用b表示,b的值代表dst的低128位从src1和src2的哪一部分取128bit。a的值表示dst的高128位从src1和src2的哪一部分取128bit。

        以下是举例

  • 若imm8=0x20 (0010 0000)

dst的低128位用src1的低128位,dst的高128位用src2的低128位

  • 若imm8=0x21 (0010 0001)

dst的低128位用src1的高128位,dst的高128位用src2的低128位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值