我想将两个__m128值组合成一个__m256.
像这样的东西:
__m128 a = _mm_set_ps(1, 2, 3, 4);
__m128 b = _mm_set_ps(5, 6, 7, 8);
Run Code Online (Sandbox Code Playgroud)
类似于:
__m256 c = { 1, 2, 3, 4, 5, 6, 7, 8 };
Run Code Online (Sandbox Code Playgroud)
我可以使用任何内在函数来做到这一点吗?
我发现的SSE转换指令只能在所有元素上移动相同的量:
_mm_sll_epi32()_mm_slli_epi32()有没有办法对不同的元素应用不同的转换?像这样的东西:
__m128i a, __m128i b;
r0:= a0 << b0;
r1:= a1 << b1;
r2:= a2 << b2;
r3:= a3 << b3;
Run Code Online (Sandbox Code Playgroud) 像这样的东西:
_declspec(align(16)) float dens[4];
//Here the code comes. F32vec4 S_START, Pos, _Vector
*((__m128*)dens) = (S_START - Pos) *_Vector;
float steps = max(max(dens[3], dens[2]), max(dens[1], dens[0]));
Run Code Online (Sandbox Code Playgroud)
如何使用SSE直接执行此操作?