__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