Skip to content

Commit b27c555

Browse files
committed
RFC: [TTI] Assume casts between aliasing addrspaces are valid. NFCI.
Change the default implementation of isValidAddrSpaceCast to assume that casts between any address spaces satisfying addrspacesMayAlias are valid. This seems like a reasonable default assumption and targets can still override it if they need something different. This simplifies away the AMDGPU implementation.
1 parent 04aa5a8 commit b27c555

File tree

3 files changed

+1
-26
lines changed

3 files changed

+1
-26
lines changed

llvm/include/llvm/Analysis/TargetTransformInfoImpl.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ class TargetTransformInfoImplBase {
136136
virtual bool isAlwaysUniform(const Value *V) const { return false; }
137137

138138
virtual bool isValidAddrSpaceCast(unsigned FromAS, unsigned ToAS) const {
139-
return false;
139+
return addrspacesMayAlias(FromAS, ToAS);
140140
}
141141

142142
virtual bool addrspacesMayAlias(unsigned AS0, unsigned AS1) const {

llvm/include/llvm/CodeGen/BasicTTIImpl.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -387,10 +387,6 @@ class BasicTTIImplBase : public TargetTransformInfoImplCRTPBase<T> {
387387

388388
bool isAlwaysUniform(const Value *V) const override { return false; }
389389

390-
bool isValidAddrSpaceCast(unsigned FromAS, unsigned ToAS) const override {
391-
return false;
392-
}
393-
394390
bool addrspacesMayAlias(unsigned AS0, unsigned AS1) const override {
395391
return true;
396392
}

llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.h

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -177,27 +177,6 @@ class GCNTTIImpl final : public BasicTTIImplBase<GCNTTIImpl> {
177177
bool isSourceOfDivergence(const Value *V) const override;
178178
bool isAlwaysUniform(const Value *V) const override;
179179

180-
bool isValidAddrSpaceCast(unsigned FromAS, unsigned ToAS) const override {
181-
// Address space casts must cast between different address spaces.
182-
if (FromAS == ToAS)
183-
return false;
184-
185-
if (FromAS == AMDGPUAS::FLAT_ADDRESS)
186-
return AMDGPU::isExtendedGlobalAddrSpace(ToAS) ||
187-
ToAS == AMDGPUAS::LOCAL_ADDRESS ||
188-
ToAS == AMDGPUAS::PRIVATE_ADDRESS;
189-
190-
if (AMDGPU::isExtendedGlobalAddrSpace(FromAS))
191-
return AMDGPU::isFlatGlobalAddrSpace(ToAS) ||
192-
ToAS == AMDGPUAS::CONSTANT_ADDRESS_32BIT;
193-
194-
if (FromAS == AMDGPUAS::LOCAL_ADDRESS ||
195-
FromAS == AMDGPUAS::PRIVATE_ADDRESS)
196-
return ToAS == AMDGPUAS::FLAT_ADDRESS;
197-
198-
return false;
199-
}
200-
201180
bool addrspacesMayAlias(unsigned AS0, unsigned AS1) const override {
202181
return AMDGPU::addrspacesMayAlias(AS0, AS1);
203182
}

0 commit comments

Comments
 (0)