如何为 __m128 vector 制作 fabs() ?
我是否必须使用符号位将原始 vector 乘以 1.0f/-1.0f ?
没有找到任何指令集来执行此操作。
我不需要 __m256 或 512。我正在搜索 __m128 数据类型
最佳答案
使用准备好的常数来关闭符号位的单个 AND-NOT 就足够了:
#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
关于C simd _m128 晶圆厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76895133/