Мощь инструкции SHUFPS
От: Аноним  
Дата: 24.05.12 18:22
Оценка:
Нашёл вот что:
http://www.gamedev.ru/code/articles/?id=4238&page=5
Сделал умножение матрицы на вектор.

// Одна координата (в xmm2 - вектор)
movaps    xmm0, xmm2
movaps  xmm1, m1    // m1-первый столбец матрицы
mulps   xmm0, xmm1
movhlps xmm1, xmm0
addps   xmm0, xmm1
movaps  xmm1, xmm0
shufps  xmm0, xmm0, 1
addps   xmm0, xmm1
movss   result+0,xmm0

Оказалось, что сопроцессор быстрее работает.

// Одна координата
   result[0] = point[0]*m1[0]+point[1]*m1[1]+point[2]*m1[2]+point[3]*m1[3];
004012DB  fld         dword ptr [ebp-1Ch] 
004012DE  fmul        dword ptr [ebp-50h] 
004012E1  fld         dword ptr [ebp-18h] 
004012E4  fmul        dword ptr [ebp-4Ch] 
004012E7  faddp       st(1),st 
004012E9  fld         dword ptr [ebp-14h] 
004012EC  fmul        dword ptr [ebp-48h] 
004012EF  faddp       st(1),st 
004012F1  fld         dword ptr [ebp-10h] 
004012F4  fmul        dword ptr [ebp-44h] 
004012F7  faddp       st(1),st 
004012F9  fstp        dword ptr [ebp-80h]

result[1] = point[0]*m2[0]+point[1]*m2[1]+point[2]*m2[2]+point[3]*m2[3];
....

25.05.12 16:07: Перенесено модератором из 'Железо' — AndrewVK
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.