_mm256_loadu2_m128i内部函数在g ++下不可用?

orl*_*rlp 1 g++ intrinsics avx2

我正在尝试使用AVX2内部函数_mm256_loadu2_m128i,但g ++ 4.8.2似乎没有它。

有什么办法吗?

Z b*_*son 5

我在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);
}
Run Code Online (Sandbox Code Playgroud)