【发布时间】:2020-01-03 18:17:49
【问题描述】:
我想了解_mm256_permute2f128_ps() 的作用,但无法完全理解intel's code-example。
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[3:0]表示法。他们是否将其用作 4 字节掩码? But I've seen people invoke_mm256_permute2f128_pd(myVec, myVec, 5),其中 imm8 用作数字(数字 5)。在
SELECT4函数内部,control[1:0]是什么意思?控制是字节掩码,还是用作数字?它由多少字节组成?- 为什么在英特尔的示例中使用
IF control[3]。它不会撤消3:在CASE中的选择吗?如果我们一直在输出到tmp[127 to 0],为什么还要将其设置为零?
【问题讨论】:
标签: intel sse simd intrinsics avx