diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2014-07-19 18:15:16 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2014-07-19 18:15:16 +0000 |
commit | a93441fe9ca9ef2a3a04d558ef208ae6108e249d (patch) | |
tree | 7778d98d45d20848478f243b57590af68f5d53e3 /llvm/lib/Target/R600/AMDGPUTargetTransformInfo.cpp | |
parent | b797d59f031600ffe1eccefae60fc678ed1d0aad (diff) | |
download | bcm5719-llvm-a93441fe9ca9ef2a3a04d558ef208ae6108e249d.tar.gz bcm5719-llvm-a93441fe9ca9ef2a3a04d558ef208ae6108e249d.zip |
R600: Implement a few simple TTI queries.
I'm not sure if these have any effect right now.
llvm-svn: 213455
Diffstat (limited to 'llvm/lib/Target/R600/AMDGPUTargetTransformInfo.cpp')
-rw-r--r-- | llvm/lib/Target/R600/AMDGPUTargetTransformInfo.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/llvm/lib/Target/R600/AMDGPUTargetTransformInfo.cpp b/llvm/lib/Target/R600/AMDGPUTargetTransformInfo.cpp index e3a546e1d72..88934b65876 100644 --- a/llvm/lib/Target/R600/AMDGPUTargetTransformInfo.cpp +++ b/llvm/lib/Target/R600/AMDGPUTargetTransformInfo.cpp @@ -79,6 +79,10 @@ public: PopcntSupportKind getPopcntSupport(unsigned IntTyWidthInBit) const override; + unsigned getNumberOfRegisters(bool Vector) const override; + unsigned getRegisterBitWidth(bool Vector) const override; + unsigned getMaximumUnrollFactor() const override; + /// @} }; @@ -127,3 +131,23 @@ AMDGPUTTI::getPopcntSupport(unsigned TyWidth) const { assert(isPowerOf2_32(TyWidth) && "Ty width must be power of 2"); return ST->hasBCNT(TyWidth) ? PSK_FastHardware : PSK_Software; } + +unsigned AMDGPUTTI::getNumberOfRegisters(bool Vec) const { + if (Vec) + return 0; + + // Number of VGPRs on SI. + if (ST->getGeneration() >= AMDGPUSubtarget::SOUTHERN_ISLANDS) + return 256; + + return 4 * 128; // XXX - 4 channels. Should these count as vector instead? +} + +unsigned AMDGPUTTI::getRegisterBitWidth(bool) const { + return 32; +} + +unsigned AMDGPUTTI::getMaximumUnrollFactor() const { + // Semi-arbitrary large amount. + return 64; +} |