我最近注意到了
_m128 m = _mm_set_ps(0,1,2,3);
将4个浮点数转换为浮点数:
(float*) p = (float*)(&m); // p[0] == 3 // p[1] == 2 // p[2] == 1 // p[3] == 0
同样的事情与工会{_m128 m;浮动[4] a }也.
为什么上证行业使用这个订单?这不是什么大事,但是有点混乱.
还有后续问题:
当通过索引访问数组中的元素时,应该按顺序0..3或顺序3..0进行访问
解决方法
这只是一个约定他们不得不选择一些订单,只要每个人都遵循这个顺序,这真的不重要.英特尔似乎喜欢小字节.
至于通过索引访问…最好的事情是尽量避免这样做.没有什么可以杀死矢量表演,像元素访问.如果你必须尝试设置,使索引符合硬件向量车道;这是大多数矢量程序员(在我的经验中)期望的.