我正在尝试使用AVX2内在_mm256_loadu2_m128i
,但似乎g ++ 4.8.2没有它。
有没有办法得到它?
答案 0 :(得分:3)
我在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);
}
答案 1 :(得分:0)
猜猜没有这样的内在命名_mm256_loadu_m128i
。我在_mm256_load
找到的只有_mm256_load_pd
,_mm256_load_ps
,_mm256_load_si256
,_mm256_loadu_pd
,_mm256_loadu_ps
和_mm256_loadu_si256
。
这些都带有AVX,gcc标题为immintrin.h
。