__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);  
posted @ 2020-07-09 11:16  盖世猪猪侠  阅读(1191)  评论(0编辑  收藏  举报