From 0ce96e06ee0226938e723bd0c8e16e3d2d51f203 Mon Sep 17 00:00:00 2001 From: Stanislav Mekhanoshin Date: Mon, 26 Sep 2022 12:40:22 -0700 Subject: [PATCH] [AMDGPU] Move SIModeRegisterDefaults to SI MFI It does not belong to a general AMDGPU MFI. Differential Revision: https://reviews.llvm.org/D134666 --- llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp | 4 ++-- llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp | 2 +- llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.h | 7 ------- llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp | 1 + llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h | 7 +++++++ 5 files changed, 11 insertions(+), 10 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp index 4818514..8e45ea7 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp @@ -1630,12 +1630,12 @@ SDValue AMDGPUTargetLowering::LowerDIVREM24(SDValue Op, SelectionDAG &DAG, SDValue fqneg = DAG.getNode(ISD::FNEG, DL, FltVT, fq); MachineFunction &MF = DAG.getMachineFunction(); - const AMDGPUMachineFunction *MFI = MF.getInfo(); + const SIMachineFunctionInfo *MFI = MF.getInfo(); // float fr = mad(fqneg, fb, fa); unsigned OpCode = !Subtarget->hasMadMacF32Insts() ? (unsigned)ISD::FMA : - !MFI->getMode().allFP32Denormals() ? + (!MFI || !MFI->getMode().allFP32Denormals()) ? (unsigned)ISD::FMAD : (unsigned)AMDGPUISD::FMAD_FTZ; SDValue fr = DAG.getNode(OpCode, DL, FltVT, fqneg, fb, fa); diff --git a/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp b/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp index f5e12fd..2b9755c 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.cpp @@ -17,7 +17,7 @@ using namespace llvm; AMDGPUMachineFunction::AMDGPUMachineFunction(const MachineFunction &MF) - : Mode(MF.getFunction()), IsEntryFunction(AMDGPU::isEntryFunctionCC( + : IsEntryFunction(AMDGPU::isEntryFunctionCC( MF.getFunction().getCallingConv())), IsModuleEntryFunction( AMDGPU::isModuleEntryFunctionCC(MF.getFunction().getCallingConv())), diff --git a/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.h b/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.h index 97db8b7..e8e2d69 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.h +++ b/llvm/lib/Target/AMDGPU/AMDGPUMachineFunction.h @@ -45,9 +45,6 @@ protected: /// stages. Align DynLDSAlign; - // State of MODE register, assumed FP mode. - AMDGPU::SIModeRegisterDefaults Mode; - // Kernels + shaders. i.e. functions called by the hardware and not called // by other functions. bool IsEntryFunction = false; @@ -80,10 +77,6 @@ public: return GDSSize; } - AMDGPU::SIModeRegisterDefaults getMode() const { - return Mode; - } - bool isEntryFunction() const { return IsEntryFunction; } diff --git a/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp b/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp index 9176e85..99967507 100644 --- a/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp +++ b/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp @@ -31,6 +31,7 @@ using namespace llvm; SIMachineFunctionInfo::SIMachineFunctionInfo(const MachineFunction &MF) : AMDGPUMachineFunction(MF), + Mode(MF.getFunction()), BufferPSV(static_cast(MF.getTarget())), ImagePSV(static_cast(MF.getTarget())), GWSResourcePSV(static_cast(MF.getTarget())), diff --git a/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h b/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h index 5105587..aff679d 100644 --- a/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h +++ b/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h @@ -351,6 +351,9 @@ template <> struct MappingTraits { class SIMachineFunctionInfo final : public AMDGPUMachineFunction { friend class GCNTargetMachine; + // State of MODE register, assumed FP mode. + AMDGPU::SIModeRegisterDefaults Mode; + // Registers that may be reserved for spilling purposes. These may be the same // as the input registers. Register ScratchRSrcReg = AMDGPU::PRIVATE_RSRC_REG; @@ -552,6 +555,10 @@ public: WWMReservedRegs.insert(Reg); } + AMDGPU::SIModeRegisterDefaults getMode() const { + return Mode; + } + ArrayRef getSGPRToVGPRSpills(int FrameIndex) const { auto I = SGPRToVGPRSpills.find(FrameIndex); -- 2.7.4