diff --git a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp index 9b08ea64f..523ec9b60 100644 --- a/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp +++ b/FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp @@ -5089,9 +5089,9 @@ void OpDispatchBuilder::InstallHostSpecificOpcodeHandlers() { {OPD(1, 0b10, 0x5A), 1, &OpDispatchBuilder::AVXInsertScalar_CVT_Float_To_Float}, {OPD(1, 0b11, 0x5A), 1, &OpDispatchBuilder::AVXInsertScalar_CVT_Float_To_Float}, - {OPD(1, 0b00, 0x5B), 1, &OpDispatchBuilder::AVXVector_CVT_Int_To_Float}, - {OPD(1, 0b01, 0x5B), 1, &OpDispatchBuilder::AVXVector_CVT_Float_To_Int}, - {OPD(1, 0b10, 0x5B), 1, &OpDispatchBuilder::AVXVector_CVT_Float_To_Int}, + {OPD(1, 0b00, 0x5B), 1, &OpDispatchBuilder::Vector_CVT_Int_To_Float}, + {OPD(1, 0b01, 0x5B), 1, &OpDispatchBuilder::Vector_CVT_Float_To_Int}, + {OPD(1, 0b10, 0x5B), 1, &OpDispatchBuilder::Vector_CVT_Float_To_Int}, {OPD(1, 0b00, 0x5C), 1, &OpDispatchBuilder::Bind<&OpDispatchBuilder::AVXVectorALUOp, IR::OP_VFSUB, OpSize::i32Bit>}, {OPD(1, 0b01, 0x5C), 1, &OpDispatchBuilder::Bind<&OpDispatchBuilder::AVXVectorALUOp, IR::OP_VFSUB, OpSize::i64Bit>}, @@ -5191,9 +5191,9 @@ void OpDispatchBuilder::InstallHostSpecificOpcodeHandlers() { {OPD(1, 0b01, 0xE4), 1, &OpDispatchBuilder::VPMULHWOp}, {OPD(1, 0b01, 0xE5), 1, &OpDispatchBuilder::VPMULHWOp}, - {OPD(1, 0b01, 0xE6), 1, &OpDispatchBuilder::AVXVector_CVT_Float_To_Int}, - {OPD(1, 0b10, 0xE6), 1, &OpDispatchBuilder::AVXVector_CVT_Int_To_Float}, - {OPD(1, 0b11, 0xE6), 1, &OpDispatchBuilder::AVXVector_CVT_Float_To_Int}, + {OPD(1, 0b01, 0xE6), 1, &OpDispatchBuilder::Vector_CVT_Float_To_Int}, + {OPD(1, 0b10, 0xE6), 1, &OpDispatchBuilder::Vector_CVT_Int_To_Float}, + {OPD(1, 0b11, 0xE6), 1, &OpDispatchBuilder::Vector_CVT_Float_To_Int}, {OPD(1, 0b01, 0xE7), 1, &OpDispatchBuilder::MOVVectorNTOp}, diff --git a/FEXCore/Source/Interface/Core/OpcodeDispatcher.h b/FEXCore/Source/Interface/Core/OpcodeDispatcher.h index 2fee16280..e37cfa315 100644 --- a/FEXCore/Source/Interface/Core/OpcodeDispatcher.h +++ b/FEXCore/Source/Interface/Core/OpcodeDispatcher.h @@ -518,12 +518,6 @@ public: template void AVXScalar_CVT_Float_To_Float(OpcodeArgs); - template - void AVXVector_CVT_Float_To_Int(OpcodeArgs); - - template - void AVXVector_CVT_Int_To_Float(OpcodeArgs); - template void VectorScalarInsertALUOp(OpcodeArgs); template diff --git a/FEXCore/Source/Interface/Core/OpcodeDispatcher/Vector.cpp b/FEXCore/Source/Interface/Core/OpcodeDispatcher/Vector.cpp index b0a2ea53f..9b7bd635f 100644 --- a/FEXCore/Source/Interface/Core/OpcodeDispatcher/Vector.cpp +++ b/FEXCore/Source/Interface/Core/OpcodeDispatcher/Vector.cpp @@ -2127,15 +2127,6 @@ void OpDispatchBuilder::Vector_CVT_Int_To_Float(OpcodeArgs) { template void OpDispatchBuilder::Vector_CVT_Int_To_Float(OpcodeArgs); template void OpDispatchBuilder::Vector_CVT_Int_To_Float(OpcodeArgs); -template -void OpDispatchBuilder::AVXVector_CVT_Int_To_Float(OpcodeArgs) { - Ref Result = Vector_CVT_Int_To_FloatImpl(Op, SrcElementSize, Widen); - StoreResult(FPRClass, Op, Result, OpSize::iInvalid); -} - -template void OpDispatchBuilder::AVXVector_CVT_Int_To_Float(OpcodeArgs); -template void OpDispatchBuilder::AVXVector_CVT_Int_To_Float(OpcodeArgs); - Ref OpDispatchBuilder::Vector_CVT_Float_To_IntImpl(OpcodeArgs, IR::OpSize SrcElementSize, bool Narrow, bool HostRoundingMode) { const auto DstSize = OpSizeFromDst(Op); auto ElementSize = SrcElementSize; @@ -2177,28 +2168,6 @@ template void OpDispatchBuilder::Vector_CVT_Float_To_Int(OpcodeArgs); template void OpDispatchBuilder::Vector_CVT_Float_To_Int(OpcodeArgs); -template -void OpDispatchBuilder::AVXVector_CVT_Float_To_Int(OpcodeArgs) { - const auto DstSize = OpSizeFromDst(Op); - - Ref Result {}; - if (SrcElementSize == OpSize::i64Bit && Narrow) { - ///< Special case for CVTPD2DQ/CVTTPD2DQ because it has weird rounding requirements. - Ref Src = LoadSource(FPRClass, Op, Op->Src[0], Op->Flags); - Result = _Vector_F64ToI32(DstSize, Src, HostRoundingMode ? Round_Host : Round_Towards_Zero, true); - } else { - Result = Vector_CVT_Float_To_IntImpl(Op, SrcElementSize, Narrow, HostRoundingMode); - } - - StoreResult_WithOpSize(FPRClass, Op, Op->Dest, Result, DstSize, OpSize::iInvalid); -} - -template void OpDispatchBuilder::AVXVector_CVT_Float_To_Int(OpcodeArgs); -template void OpDispatchBuilder::AVXVector_CVT_Float_To_Int(OpcodeArgs); - -template void OpDispatchBuilder::AVXVector_CVT_Float_To_Int(OpcodeArgs); -template void OpDispatchBuilder::AVXVector_CVT_Float_To_Int(OpcodeArgs); - Ref OpDispatchBuilder::Scalar_CVT_Float_To_FloatImpl(OpcodeArgs, IR::OpSize DstElementSize, IR::OpSize SrcElementSize, const X86Tables::DecodedOperand& Src1Op, const X86Tables::DecodedOperand& Src2Op) { // In the case of vectors, we can just specify the full vector length,