草庐IT

c++ - 优化长时间的内存读写

我有一个名为reorder.cc的源文件,如下所示:voidreorder(float*output,float*input){output[56]=input[0];output[57]=input[1];output[58]=input[2];output[59]=input[3];output[60]=input[4];...output[75]=input[19];output[76]=input[20];output[77]=input[21];output[78]=input[22];output[79]=input[23];output[80]=input[24];...

c++ - 可以使用 movss 指令替换整数数据吗?

由于我只能使用SSE和SSE2指令的限制,我需要用另一个vector中的0元素替换4元素__m128ivector的最低有效(0)元素。对于浮点vector,任务很简单——可以使用_mm_move_ss()内在函数将元素替换为另一个vector中的0元素。它生成一条movss指令,因此效率很高。使用两个转换内在函数,还可以说服编译器使用单个SSEmovss指令来移动整数数据。源代码最终看起来像这样:__m128iNewVector=_mm_castps_si128(_mm_move_ss(_mm_castsi128_ps(Take3FromThisVector),_mm_castsi1