c – 为什么SSE设置(_mm_set_ps)反转参数的顺序

前端之家收集整理的这篇文章主要介绍了c – 为什么SSE设置(_mm_set_ps)反转参数的顺序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我最近注意到了
_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进行访问

解决方法

这只是一个约定他们不得不选择一些订单,只要每个人都遵循这个顺序,这真的不重要.英特尔似乎喜欢小字节.

至于通过索引访问…最好的事情是尽量避免这样做.没有什么可以杀死矢量表演,像元素访问.如果你必须尝试设置,使索引符合硬件向量车道;这是大多数矢量程序员(在我的经验中)期望的.

猜你在找的C&C++相关文章