gpt4 book ai didi

c - 在包装好的 SSE 花车上翻转标志

转载 作者:太空狗 更新时间:2023-10-29 16:37:32 24 4
gpt4 key购买 nike

我正在寻找最有效的方法来翻转 SSE 寄存器中包装的所有四个 float 的符号。

我没有在英特尔架构软件开发手册中找到执行此操作的固有方法。以下是我已经尝试过的事情。

对于每种情况,我都将代码循环 100 亿次并得到指示的挂钟时间。我试图至少匹配 4 秒,它采用我的非 SIMD 方法,它仅使用一元减号运算符。


[48 秒]
_mm_sub_ps( _mm_setzero_ps(), vec );


[32 秒]
_mm_mul_ps( _mm_set1_ps( -1.0f ), vec );


[9 秒]

union NegativeMask {    int   intRep;    float fltRep;} negMask;negMask.intRep = 0x80000000;_mm_xor_ps( _mm_set1_ps( negMask.fltRep ), vec );


编译器是带有-O3 的gcc 4.2。 CPU 是 Intel Core 2 Duo。

最佳答案

这个 union 并不是真正需要的,世界上最好的(可读性、速度和可移植性):

_mm_xor_ps(vec, _mm_set1_ps(-0.f))

关于c - 在包装好的 SSE 花车上翻转标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3361132/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com