From 244aa7f7358da791a231ffd4efd849f166050c4b Mon Sep 17 00:00:00 2001 From: Stanislav Mekhanoshin Date: Wed, 29 Sep 2021 12:43:12 -0700 Subject: [PATCH] [AMDGPU] move hasAGPRs/hasVGPRs into header It is now very simple and can go right into the header allowing optimizer to combine callers, such as isVGPRClass and similar. It does not need anything from the TRI itself anymore, so make it static class member along with the callers. Differential Revision: https://reviews.llvm.org/D110762 --- llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp | 8 -------- llvm/lib/Target/AMDGPU/SIRegisterInfo.h | 18 ++++++++++++------ 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp b/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp index 8dff3f0..48c76cc 100644 --- a/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp +++ b/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp @@ -2166,14 +2166,6 @@ bool SIRegisterInfo::isSGPRReg(const MachineRegisterInfo &MRI, return isSGPRClass(RC); } -bool SIRegisterInfo::hasVGPRs(const TargetRegisterClass *RC) const { - return RC->TSFlags & SIRCFlags::HasVGPR; -} - -bool SIRegisterInfo::hasAGPRs(const TargetRegisterClass *RC) const { - return RC->TSFlags & SIRCFlags::HasAGPR; -} - const TargetRegisterClass * SIRegisterInfo::getEquivalentVGPRClass(const TargetRegisterClass *SRC) const { unsigned Size = getRegSizeInBits(*SRC); diff --git a/llvm/lib/Target/AMDGPU/SIRegisterInfo.h b/llvm/lib/Target/AMDGPU/SIRegisterInfo.h index ebe1e5c..27804d9 100644 --- a/llvm/lib/Target/AMDGPU/SIRegisterInfo.h +++ b/llvm/lib/Target/AMDGPU/SIRegisterInfo.h @@ -17,6 +17,8 @@ #define GET_REGINFO_HEADER #include "AMDGPUGenRegisterInfo.inc" +#include "SIDefines.h" + namespace llvm { class GCNSubtarget; @@ -157,7 +159,7 @@ public: const TargetRegisterClass *getPhysRegClass(MCRegister Reg) const; /// \returns true if this class contains only SGPR registers - bool isSGPRClass(const TargetRegisterClass *RC) const { + static bool isSGPRClass(const TargetRegisterClass *RC) { return !hasVGPRs(RC) && !hasAGPRs(RC); } @@ -169,23 +171,27 @@ public: bool isSGPRReg(const MachineRegisterInfo &MRI, Register Reg) const; /// \returns true if this class contains only VGPR registers - bool isVGPRClass(const TargetRegisterClass *RC) const { + static bool isVGPRClass(const TargetRegisterClass *RC) { return hasVGPRs(RC) && !hasAGPRs(RC); } /// \returns true if this class contains only AGPR registers - bool isAGPRClass(const TargetRegisterClass *RC) const { + static bool isAGPRClass(const TargetRegisterClass *RC) { return hasAGPRs(RC) && !hasVGPRs(RC); } /// \returns true if this class contains VGPR registers. - bool hasVGPRs(const TargetRegisterClass *RC) const; + static bool hasVGPRs(const TargetRegisterClass *RC) { + return RC->TSFlags & SIRCFlags::HasVGPR; + } /// \returns true if this class contains AGPR registers. - bool hasAGPRs(const TargetRegisterClass *RC) const; + static bool hasAGPRs(const TargetRegisterClass *RC) { + return RC->TSFlags & SIRCFlags::HasAGPR; + } /// \returns true if this class contains any vector registers. - bool hasVectorRegisters(const TargetRegisterClass *RC) const { + static bool hasVectorRegisters(const TargetRegisterClass *RC) { return hasVGPRs(RC) || hasAGPRs(RC); } -- 2.7.4