__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);  


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM