我尝试通过不同SIMD架构的代码进行优化。计算以下内容的最佳方法是什么:
对于SSE:
float s = something
__m128 v = calculation result
s -= v[0] + v[1] + v[2] + v[3]
目前我通过以下方式计算水平和:
__m128 sum = _mm_hadd_ps( v, v )
sum = _mm_hadd_ps( sum, sum )
s -= _mm_cvtss_f32( sum )
是否可以进行一些很酷的优化?