// 使用SIMD指令优化的向量加法
//<mmintrin.h> MMX
//<xmmintrin.h> SSE
//<emmintrin.h> SSE2
//<pmmintrin.h> SSE3
//<tmmintrin.h> SSSE3
//<smmintrin.h> SSE4.1
//<nmmintrin.h> SSE4.2
//<wmmintrin.h> AES
//<immintrin.h> AVX, AVX2, FMA, BMI, POPCNT, AVX512
//<x86intrin.h> Auto(GCC)
//<intrin.h> Auto(MSVC)
#include <emmintrin.h> // 包含SSE2指令集
#include <valarray>
#include <iostream>
#include <chrono>
#include <vector>
__m128i vector_add(__m128i a, __m128i b) {
return _mm_add_epi32(a, b);
}
void add_vectors(int* a, int* b, int* c, int size) {
for (int i = 0; i < size; i += 4) {
__m128i va = _mm_load_si128((__m128i*)(a + i));
__m128i vb = _mm_load_si128((__m128i*)(b + i));
__m128i vc = _mm_add_epi32(va, vb);
_mm_store_si128((__m128i*)(c + i), vc);
}
}
int test() {
std::valarray<float> a
C++ SIMD性能优化
于 2024-06-17 14:18:33 首次发布