From cf26ec789893eeb7b9ebe46c148c82b2f093a4e0 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 3 Apr 2024 13:22:14 -0400 Subject: [PATCH] OpcodeDispatcher: use LoadConstantShift for SHRD Signed-off-by: Alyssa Rosenzweig --- FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp index ec1ad77a0..e0670ebb0 100644 --- a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp +++ b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp @@ -1785,20 +1785,10 @@ void OpDispatchBuilder::SHRDImmediateOp(OpcodeArgs) { OrderedNode *Src = LoadSource(GPRClass, Op, Op->Src[0], Op->Flags); OrderedNode *Dest = LoadSource(GPRClass, Op, Op->Dest, Op->Flags); - LOGMAN_THROW_A_FMT(Op->Src[1].IsLiteral(), "Src1 needs to be literal here"); - - uint64_t Shift = Op->Src[1].Data.Literal.Value; + uint64_t Shift = LoadConstantShift(Op, false); const auto Size = GetSrcBitSize(Op); - // x86 masks the shift by 0x3F or 0x1F depending on size of op - if (Size == 64) { - Shift &= 0x3F; - } else { - Shift &= 0x1F; - } - if (Shift != 0) { - OrderedNode *Res{}; if (Size < 32) { OrderedNode *ShiftRight = _Constant(Shift);