summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/R600/AMDGPUTargetTransformInfo.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2014-07-19 18:15:16 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2014-07-19 18:15:16 +0000
commita93441fe9ca9ef2a3a04d558ef208ae6108e249d (patch)
tree7778d98d45d20848478f243b57590af68f5d53e3 /llvm/lib/Target/R600/AMDGPUTargetTransformInfo.cpp
parentb797d59f031600ffe1eccefae60fc678ed1d0aad (diff)
downloadbcm5719-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.cpp24
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;
+}
OpenPOWER on IntegriCloud