相关疑难解决方法(0)

使用AVX2收集指令时加载地址计算

查看AVX2内在函数文档,收集了加载指令,例如VPGATHERDD:

__m128i _mm_i32gather_epi32 (int const * base, __m128i index, const int scale);
Run Code Online (Sandbox Code Playgroud)

从文档中我不清楚的是计算的加载地址是 元素地址还是字节地址,即元素的加载地址i:

load_addr = base + index[i] * scale;               // (1) element addressing ?
Run Code Online (Sandbox Code Playgroud)

要么:

load_addr = (char *)base + index[i] * scale;       // (2) byte addressing ?
Run Code Online (Sandbox Code Playgroud)

英特尔文档看起来它可能是(2),但是这没有多大意义,因为聚集的负载的最小元素大小是32位 - 为什么要从未对齐的地址加载(即使用比例<4) )?

x86 sse simd avx2

13
推荐指数
2
解决办法
4146
查看次数

标签 统计

avx2 ×1

simd ×1

sse ×1

x86 ×1