__m256数据类型内8个 float数据累加
每次使用__m256数据类型,想得到__m256中8个float的和,都是傻傻的直接用:
b.m256_f32[0]+b.m256_f32[1]+b.m256_f32[2]+b.m256_f32[3]+b.m256_f32[4]+b.m256_f32[5]+b.m256_f32[6] +b.m256_f32[7] ;
好不容易提速了,还被float累加拖累。。。。
__m256 b; b.m256_f32[0] = 1.0; b.m256_f32[1] = 2.0; b.m256_f32[2] = 3.0; b.m256_f32[3] = 4.0; b.m256_f32[4] = 5.0; b.m256_f32[5] = 6.0; b.m256_f32[6] = 7.0; b.m256_f32[7] = 8.0; b = _mm256_add_ps(b, _mm256_permute2f128_ps(b, b, 1)); b = _mm256_hadd_ps(b, b); float score = _mm256_cvtss_f32(_mm256_hadd_ps(b, b)); printf_s("score:%f\n", score);