c++ - 试图理解 _mm256_permute2x128_si256 的英特尔内在指南解释
问题描述
我试图了解 _mm256_permute2x128_si256。是先将寄存器 a 的所有 256 位读入机箱,然后再将寄存器 b 的 256 位读入机箱吗?还是在向量 a 和向量 b 之间交错读取每 32 位?那么哪个向量的哪个 32 位被读取对应于 imm8 中的哪个位以什么顺序以及如何读取?谢谢!
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
解决方案
请参阅此网站,它比英特尔的文档提供更多信息:
推荐阅读
- c# - c# 显示可能的组合
- mysql - 按特定字段值 LIKE 先排序
- c++ - (struct *) 使用属性值名称初始化?
- xml - T-SQL XML 在一个父项下创建多个重复字段
- php - php 7 - 按键对多级关联数组进行排序,使其按字典顺序在每个级别上排序
- r - 如何找到相似的密度曲线?
- python - Python 模块 CiscoConfParse 仅返回接口上的第一个 IPv6 地址
- php - 使用 Axios 获取并保存 Excel 文件
- r - 使用 apply 函数用 file.info 填充数据框
- python - 更新 pytest-qt v3.1.0 夹具 qtmodeltester.check 显式测试 DisplayRole 的 string_types 时测试失败