小编use*_*756的帖子

如何将两个__m128值组合到__m256?

我想将两个__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)

我可以使用任何内在函数来做到这一点吗?

c x86 sse simd avx

17
推荐指数
2
解决办法
5122
查看次数

如何使用__m128i执行元素左移?

我发现的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)

c sse avx

4
推荐指数
1
解决办法
1375
查看次数

如何在__m128中找到最大成员(F32vec4)

像这样的东西:

_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直接执行此操作?

c sse simd

4
推荐指数
1
解决办法
394
查看次数

标签 统计

c ×3

sse ×3

avx ×2

simd ×2

x86 ×1