wat*_*180 3 c c++ optimization sse
两个相关的问题.
这就是我的代码需要处理相当大量的数据.它在内部循环中完成,性能很重要.
基本上,我需要具有以下签名的功能:
void convert_int_to_double(__int32 const * input, double * output);
void convert_float_to_double(float const * input, double * output);
Run Code Online (Sandbox Code Playgroud)
输入和输出指针是对齐的,元素的数量是4的倍数.主要问题是如何快速将__m128解压缩为两个__m128d.
内在函数_mm_cvtepi32_pd和_mm_cvtps_pd将值转换为double.
这应该是循环:
__m128i* base_addr = ...;
for( int i = 0; i < cnt; ++i )
{
__m128i epi32 = _mm_load_si128( base_addr + i );
__m128d v0 = _mm_cvtepi32_pd( epi32 );
epi32 = _mm_srli_si128( epi32, 8 );
__m128d v1 = _mm_cvtepi32_pd( epi32 );
....
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5488 次 |
| 最近记录: |