我正在尝试使用 AVX2 intrinsic _mm256_loadu2_m128i
,但似乎 g++ 4.8.2 没有它。
有没有办法得到它?
我在 GCC 和 Clang 中有同样的问题。但是它在 ICC 中编译。您可以在http://gcc.godbolt.org/使用 GCC、Clang 和 ICC 进行测试
请注意,这是 AVX 内在而不是 AVX2。大多数 256 位整数加载和存储内在函数只需要 AVX。AVX2 提供了一些收集和屏蔽负载,但其他一切都只需要 AVX。
由于 Haswell 可以一次加载两个 128 位值,因此您可以获得与 _mm256_loadu2_m128i
使用_mm256_inserti128_si256
. 像这样的东西
#include <immintrin.h>
int main() {
int low[4];
int high[4];
_mm256_inserti128_si256(_mm256_castsi128_si256(
_mm_loadu_si128((__m128i*)low)),
_mm_loadu_si128((__m128i*)high),1);
}
猜猜没有这样的内在命名_mm256_loadu_m128i
。我能找到的_mm256_load
只有_mm256_load_pd
, _mm256_load_ps
, _mm256_load_si256
,_mm256_loadu_pd
和. 这些都带有 AVX 并且 gcc 标头是._mm256_loadu_ps
_mm256_loadu_si256
immintrin.h