Почему SSE set (_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; float [4] a; } также.

Почему операции SSE используют этот порядок? Это не имеет большого значения, но немного сбивает с толку.

И следующий вопрос:

При доступе к элементам в массиве по индексу следует ли обращаться в порядке 0..3 или в порядке 3..0 ]?

15
задан Inverse 8 March 2011 в 20:47
поделиться