diff options
Diffstat (limited to 'lib/Target/AMDGPU/Utils')
| -rw-r--r-- | lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp | 11 | ||||
| -rw-r--r-- | lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h | 4 | 
2 files changed, 15 insertions, 0 deletions
| diff --git a/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp b/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp index 2abd4afad3b6..630f469eabf0 100644 --- a/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp +++ b/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp @@ -544,6 +544,17 @@ bool isVI(const MCSubtargetInfo &STI) {    return STI.getFeatureBits()[AMDGPU::FeatureVolcanicIslands];  } +bool isGFX9(const MCSubtargetInfo &STI) { +  return STI.getFeatureBits()[AMDGPU::FeatureGFX9]; +} + +bool isSGPR(unsigned Reg, const MCRegisterInfo* TRI) { +  const MCRegisterClass SGPRClass = TRI->getRegClass(AMDGPU::SReg_32RegClassID); +  const unsigned FirstSubReg = TRI->getSubReg(Reg, 1); +  return SGPRClass.contains(FirstSubReg != 0 ? FirstSubReg : Reg) || +    Reg == AMDGPU::SCC; +} +  unsigned getMCReg(unsigned Reg, const MCSubtargetInfo &STI) {    switch(Reg) { diff --git a/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h b/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h index 8e74aa2cc9a8..19888ad7556a 100644 --- a/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h +++ b/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.h @@ -273,6 +273,10 @@ inline bool isKernel(CallingConv::ID CC) {  bool isSI(const MCSubtargetInfo &STI);  bool isCI(const MCSubtargetInfo &STI);  bool isVI(const MCSubtargetInfo &STI); +bool isGFX9(const MCSubtargetInfo &STI); + +/// \brief Is Reg - scalar register +bool isSGPR(unsigned Reg, const MCRegisterInfo* TRI);  /// If \p Reg is a pseudo reg, return the correct hardware register given  /// \p STI otherwise return \p Reg. | 
