| //===- SIMachineFunctionInfo.h - SIMachineFunctionInfo interface -*- C++ -*-==// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| /// \file |
| // |
| //===----------------------------------------------------------------------===// |
| |
| |
| #ifndef LLVM_LIB_TARGET_R600_SIMACHINEFUNCTIONINFO_H |
| #define LLVM_LIB_TARGET_R600_SIMACHINEFUNCTIONINFO_H |
| |
| #include "AMDGPUMachineFunction.h" |
| #include "SIRegisterInfo.h" |
| #include <map> |
| |
| namespace llvm { |
| |
| class MachineRegisterInfo; |
| |
| /// This class keeps track of the SPI_SP_INPUT_ADDR config register, which |
| /// tells the hardware which interpolation parameters to load. |
| class SIMachineFunctionInfo : public AMDGPUMachineFunction { |
| void anchor() override; |
| |
| unsigned TIDReg; |
| bool HasSpilledVGPRs; |
| |
| public: |
| |
| struct SpilledReg { |
| unsigned VGPR; |
| int Lane; |
| SpilledReg(unsigned R, int L) : VGPR (R), Lane (L) { } |
| SpilledReg() : VGPR(0), Lane(-1) { } |
| bool hasLane() { return Lane != -1;} |
| }; |
| |
| // SIMachineFunctionInfo definition |
| |
| SIMachineFunctionInfo(const MachineFunction &MF); |
| SpilledReg getSpilledReg(MachineFunction *MF, unsigned FrameIndex, |
| unsigned SubIdx); |
| unsigned PSInputAddr; |
| unsigned NumUserSGPRs; |
| std::map<unsigned, unsigned> LaneVGPRs; |
| unsigned LDSWaveSpillSize; |
| unsigned ScratchOffsetReg; |
| bool hasCalculatedTID() const { return TIDReg != AMDGPU::NoRegister; }; |
| unsigned getTIDReg() const { return TIDReg; }; |
| void setTIDReg(unsigned Reg) { TIDReg = Reg; } |
| bool hasSpilledVGPRs() const { return HasSpilledVGPRs; } |
| void setHasSpilledVGPRs(bool Spill = true) { HasSpilledVGPRs = Spill; } |
| |
| unsigned getMaximumWorkGroupSize(const MachineFunction &MF) const; |
| }; |
| |
| } // End namespace llvm |
| |
| |
| #endif |