From 16e86a2193917ed69713598db60659e0fa8b17bc Mon Sep 17 00:00:00 2001 From: unknown Date: Thu, 18 Jun 2015 20:23:06 -0400 Subject: [PATCH] [PJGlide64] imul14: no need for inline asm here --- Source/Glide64/FixedPoint.asm.cpp | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/Source/Glide64/FixedPoint.asm.cpp b/Source/Glide64/FixedPoint.asm.cpp index 50ceb231d..d20e5694e 100644 --- a/Source/Glide64/FixedPoint.asm.cpp +++ b/Source/Glide64/FixedPoint.asm.cpp @@ -57,24 +57,20 @@ extern "C" int __declspec(naked) imul16(int x, int y) } } -//(x * y) >> 14 -extern "C" int __declspec(naked) imul14(int x, int y) -{ - _asm { - push ebp - mov ebp,esp - mov eax, [x] - mov edx, [y] - imul edx - shrd eax,edx,14 - leave - ret - } -} #else DebugBreak(); #endif +int imul14(int x, int y) +{ + int64_t result; + const int64_t m = (int64_t)(x); + const int64_t n = (int64_t)(y); + + result = (m * n) >> 14; + return (int)(result); +} + int idiv16(int x, int y) { int64_t result;