【发布时间】:2021-06-23 13:12:15
【问题描述】:
_mm_i32gather_epi32() 的当前 Intel 内在函数指南将每个子字的计算地址描述为:
addr := base_addr + SignExtend64(vindex[m+31:m]) * ZeroExtend64(scale) * 8
最后 8 个让我感到困惑。假设 addr 和 base_addr 以字节为单位,scale 的值是 1、2、4 或 8,那么您只能从基地址开始索引 8 个字节的步长。这是文档中的错误,还是我遗漏了什么?我检查的所有收集指令的描述方式都相同。
A previous question 引用了没有 8 的文档,这表明发生了一些变化。
【问题讨论】:
-
看起来像是英特尔指令指南中的错字。 SDM 没有为 VPGATHERDD 提及任何固定的 8 乘数。
-
嗯,浪费了两个小时!
-
Intels
[x:y]索引总是引用比特数。
标签: c++ simd intrinsics avx avx2