[PATCH] R600: Implement a few simple TTI queries.
Tom Stellard
tom at stellard.net
Fri Jul 18 13:38:10 PDT 2014
On Fri, Jul 18, 2014 at 01:14:47PM -0700, Matt Arsenault wrote:
> On 07/18/2014 01:02 PM, Tom Stellard wrote:
> >On Fri, Jul 18, 2014 at 07:05:23PM +0000, Matt Arsenault wrote:
> >>I'm not sure if these have any effect right now.
> >>
> >>http://reviews.llvm.org/D4586
> >>
> >>Files:
> >> lib/Target/R600/AMDGPUTargetTransformInfo.cpp
> >>
> >>Index: lib/Target/R600/AMDGPUTargetTransformInfo.cpp
> >>===================================================================
> >>--- lib/Target/R600/AMDGPUTargetTransformInfo.cpp
> >>+++ lib/Target/R600/AMDGPUTargetTransformInfo.cpp
> >>@@ -91,6 +91,10 @@
> >> PopcntSupportKind getPopcntSupport(unsigned IntTyWidthInBit) const override;
> >>+ unsigned getNumberOfRegisters(bool Vector) const override;
> >>+ unsigned getRegisterBitWidth(bool Vector) const override;
> >>+ unsigned getMaximumUnrollFactor() const override;
> >>+
> >> /// @}
> >> };
> >>@@ -162,3 +166,23 @@
> >> 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;
> >>+}
> >How does this interact with getUnrollingPreference() ?
> >
> >-Tom
>
> Right now it seems like it's only used to clamp the unroll factor in
> the loop vectorizer, which looks like it doesn't use
> getUnrollingPreference
OK, LGTM.
-Tom
More information about the llvm-commits
mailing list