fix asm mat4 multiply
This commit is contained in:
parent
a97309cb04
commit
f5fdd05336
23
math.d
23
math.d
@ -521,7 +521,7 @@ align(16) struct Matrix(T, int D)
|
||||
Matrix result;
|
||||
MatZero(&result);
|
||||
|
||||
glm_mat4_mul(glm_mat.ptr, x.glm_mat.ptr, result.glm_mat.ptr);
|
||||
Mat4MulASM(&this, &x, &result);
|
||||
|
||||
return result;
|
||||
}
|
||||
@ -583,21 +583,14 @@ struct Quat
|
||||
}
|
||||
}
|
||||
|
||||
Mat4
|
||||
Mat4MulASM(Mat4 l, Mat4 r)
|
||||
void
|
||||
Mat4MulASM(Mat4* l, Mat4* r, Mat4* result)
|
||||
{
|
||||
Mat4 result;
|
||||
|
||||
auto lp = &l;
|
||||
auto rp = &r;
|
||||
auto res = &result;
|
||||
|
||||
// TODO: fix this
|
||||
asm @trusted
|
||||
{
|
||||
mov R8, lp;
|
||||
mov R9, rp;
|
||||
mov R10, res;
|
||||
mov R8, l;
|
||||
mov R9, r;
|
||||
mov R10, result;
|
||||
|
||||
movups XMM0, [R8];
|
||||
movups XMM1, [R9+00];
|
||||
@ -617,7 +610,7 @@ Mat4MulASM(Mat4 l, Mat4 r)
|
||||
shufps XMM8, XMM8, 0;
|
||||
mulps XMM8, XMM0; // XMM8 = col3;
|
||||
|
||||
movups XMM9, XMM3;
|
||||
movups XMM9, XMM4;
|
||||
shufps XMM9, XMM9, 0;
|
||||
mulps XMM9, XMM0; // XMM9 = col4;
|
||||
|
||||
@ -692,8 +685,6 @@ Mat4MulASM(Mat4 l, Mat4 r)
|
||||
movups [R10+32], XMM8;
|
||||
movups [R10+48], XMM9;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
pragma(inline) Mat4
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user