Wha*_*rld 5 c++ x86 sse simd intrinsics
我有两个无符号向量,大小均为 4
vector<unsigned> v1 = {2, 4, 6, 8}
vector<unsigned> v2 = {1, 10, 11, 13}
Run Code Online (Sandbox Code Playgroud)
现在我想将这两个向量相乘并得到一个新向量
vector<unsigned> v_result = {2*1, 4*10, 6*11, 8*13}
Run Code Online (Sandbox Code Playgroud)
SSE操作要使用什么?是跨平台还是只在某些特定平台上?
添加:如果我的目标是加法而不是乘法,我可以超级快地完成此操作:
__m128i a = _mm_set_epi32(1,2,3,4);
__m128i b = _mm_set_epi32(1,2,3,4);
__m128i c;
c = _mm_add_epi32(a,b);
Run Code Online (Sandbox Code Playgroud)
std::transform将给定函数应用于一个范围并将结果存储在另一个范围中
std::vector<unsigned> result;
std::transform( v1.begin()+1, v1.end(), v2.begin()+1, v.begin(),std::multiplies<unsigned>() );
Run Code Online (Sandbox Code Playgroud)