diff --git a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp index e0730bc5c..66d384375 100644 --- a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp +++ b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp @@ -2450,7 +2450,7 @@ void OpDispatchBuilder::MULX(OpcodeArgs) { OrderedNode* Src1 = LoadSource(GPRClass, Op, Op->Src[1], Op->Flags, -1); OrderedNode* Src2 = LoadGPRRegister(X86State::REG_RDX, OperandSize); - OrderedNode* ResultLo = _UMul(Src1, Src2); + OrderedNode* ResultLo = _UMul(IR::SizeToOpSize(OperandSize), Src1, Src2); OrderedNode* ResultHi = _UMulH(Src1, Src2); StoreResult(GPRClass, Op, Op->Src[0], ResultLo, -1); @@ -3291,7 +3291,7 @@ void OpDispatchBuilder::MULOp(OpcodeArgs) { Src1 = _Bfe(8, Size * 8, 0, Src1); Src2 = _Bfe(8, Size * 8, 0, Src2); } - OrderedNode *Result = _UMul(Src1, Src2); + OrderedNode *Result = _UMul(OpSize::i64Bit, Src1, Src2); OrderedNode *ResultHigh{}; if (Size == 1) { diff --git a/FEXCore/include/FEXCore/IR/IREmitter.h b/FEXCore/include/FEXCore/IR/IREmitter.h index 74c6061f7..78050a221 100644 --- a/FEXCore/include/FEXCore/IR/IREmitter.h +++ b/FEXCore/include/FEXCore/IR/IREmitter.h @@ -123,9 +123,6 @@ friend class FEXCore::IR::PassManager; IRPair _Lshr(uint8_t Size, OrderedNode *_Src1, OrderedNode *_Src2) { return _Lshr(static_cast(Size), _Src1, _Src2); } - IRPair _UMul(OrderedNode *_Src1, OrderedNode *_Src2) { - return _UMul(static_cast(std::max(4, std::max(GetOpSize(_Src1), GetOpSize(_Src2)))), _Src1, _Src2); - } IRPair _UMulH(OrderedNode *_Src1, OrderedNode *_Src2) { return _UMulH(static_cast(std::max(4, std::max(GetOpSize(_Src1), GetOpSize(_Src2)))), _Src1, _Src2); }