Тема: SSE, як перемножити матриці?
Хайо. Є дві квадратні матриці, що кратні 4. Ну і тре їх помножити.
От просто помножити 4 число, я можу, хехе. Але ж матриці множаться не просто так, що одне число на інше число, а ще й там перекручуються, і результати множення додаються, ну таке.
А отой SSE ж робить лишень з 4 числами відразу, ага? Як мені додати ті 4 числа, що сидять в якомусь регістрі, і отримати одне число, котре можна було б занести кудись?
І ще, як занести другу, третю четвірку чисел матриці в інші регістри, ато зараз лишень перша четвірка чисел заноситься.
float m1[SIZE][SIZE], m2[SIZE][SIZE], mr[SIZE][SIZE];
for (int i = 0; i < SIZE; i++)
{
for (int j = 0; j < SIZE; j++)
{
m1[i][j] = rand()%3+1;
m2[i][j] = rand()%3+1;
}
}
__asm {
movups xmm0, m1
movups xmm1, m2
mulps xmm0, xmm1
movups mr, xmm0
};
displayMatrix(m1);
displayMatrix(m2);
displayMatrix(mr);