如何制作__m128矢量的FABS()?
我必须使用符号位将原始向量乘以1.0f/-1.0f吗?
找不到执行此操作的任何指令集.
我不想要__M256或512.我正在搜索__m128数据类型
如何制作__m128矢量的FABS()?
我必须使用符号位将原始向量乘以1.0f/-1.0f吗?
找不到执行此操作的任何指令集.
我不想要__M256或512.我正在搜索__m128数据类型
单个AND-不使用准备好的常量来关闭符号位就足够了:
#include <stdio.h>
#include <xmmintrin.h>
int main(void)
{
static const __m128 MinusZero = { -0.f, -0.f, -0.f, -0.f };
__m128 x = { +1, -2, +3, -4 };
__m128 y = _mm_andnot_ps(MinusZero, x);
printf("%g %g %g %g\n", y[0], y[1], y[2], y[3]);
}
输出:
1 2 3 4