From 083cfdb0350ff7f6b760f0dd6604209bbe4f3e23 Mon Sep 17 00:00:00 2001 From: Judah Caruso Date: Sat, 6 Sep 2025 01:06:03 -0600 Subject: [PATCH] fix no #asm guard for mul_sse --- math/mat.jai | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/math/mat.jai b/math/mat.jai index 5eedbe1..c5cb8fd 100644 --- a/math/mat.jai +++ b/math/mat.jai @@ -156,7 +156,32 @@ make_look_at :: (camera: Vec3, at: Vec3, up_vector: Vec3) -> Mat4 } operator* :: (a: Mat4, b: Mat4) -> Mat4 { - return mul_sse(a, b); + #if CPU == .X64 { + return mul_sse(a, b); + } + else { + r: Mat4 = ---; + r._00 = a._00*b._00 + a._01*b._10 + a._02*b._20 + a._03*b._30; + r._01 = a._00*b._01 + a._01*b._11 + a._02*b._21 + a._03*b._31; + r._02 = a._00*b._02 + a._01*b._12 + a._02*b._22 + a._03*b._32; + r._03 = a._00*b._03 + a._01*b._13 + a._02*b._23 + a._03*b._33; + + r._10 = a._10*b._00 + a._11*b._10 + a._12*b._20 + a._13*b._30; + r._11 = a._10*b._01 + a._11*b._11 + a._12*b._21 + a._13*b._31; + r._12 = a._10*b._02 + a._11*b._12 + a._12*b._22 + a._13*b._32; + r._13 = a._10*b._03 + a._11*b._13 + a._12*b._23 + a._13*b._33; + + r._20 = a._20*b._00 + a._21*b._10 + a._22*b._20 + a._23*b._30; + r._21 = a._20*b._01 + a._21*b._11 + a._22*b._21 + a._23*b._31; + r._22 = a._20*b._02 + a._21*b._12 + a._22*b._22 + a._23*b._32; + r._23 = a._20*b._03 + a._21*b._13 + a._22*b._23 + a._23*b._33; + + r._30 = a._30*b._00 + a._31*b._10 + a._32*b._20 + a._33*b._30; + r._31 = a._30*b._01 + a._31*b._11 + a._32*b._21 + a._33*b._31; + r._32 = a._30*b._02 + a._31*b._12 + a._32*b._22 + a._33*b._32; + r._33 = a._30*b._03 + a._31*b._13 + a._32*b._23 + a._33*b._33; + return r; + } } // Note(Jesse): If you want to make it symmetric go ahead, I usually don't @@ -465,25 +490,6 @@ mul_sse :: inline (a: Mat4, b: Mat4) -> Mat4 { movups [*r + 48], r0; } - // r._00 = a._00*b._00 + a._01*b._10 + a._02*b._20 + a._03*b._30; - // r._01 = a._00*b._01 + a._01*b._11 + a._02*b._21 + a._03*b._31; - // r._02 = a._00*b._02 + a._01*b._12 + a._02*b._22 + a._03*b._32; - // r._03 = a._00*b._03 + a._01*b._13 + a._02*b._23 + a._03*b._33; - - // r._10 = a._10*b._00 + a._11*b._10 + a._12*b._20 + a._13*b._30; - // r._11 = a._10*b._01 + a._11*b._11 + a._12*b._21 + a._13*b._31; - // r._12 = a._10*b._02 + a._11*b._12 + a._12*b._22 + a._13*b._32; - // r._13 = a._10*b._03 + a._11*b._13 + a._12*b._23 + a._13*b._33; - - // r._20 = a._20*b._00 + a._21*b._10 + a._22*b._20 + a._23*b._30; - // r._21 = a._20*b._01 + a._21*b._11 + a._22*b._21 + a._23*b._31; - // r._22 = a._20*b._02 + a._21*b._12 + a._22*b._22 + a._23*b._32; - // r._23 = a._20*b._03 + a._21*b._13 + a._22*b._23 + a._23*b._33; - - // r._30 = a._30*b._00 + a._31*b._10 + a._32*b._20 + a._33*b._30; - // r._31 = a._30*b._01 + a._31*b._11 + a._32*b._21 + a._33*b._31; - // r._32 = a._30*b._02 + a._31*b._12 + a._32*b._22 + a._33*b._32; - // r._33 = a._30*b._03 + a._31*b._13 + a._32*b._23 + a._33*b._33; return r; } // Note(Jesse): This procedure will crash if it tries to store or access an element across a cache line