Skip to content

Commit bfda0fe

Browse files
committed
[AMDGPU] Make getAssumedAddrSpace return AS1 for pointer kernel arguments
1 parent 3570908 commit bfda0fe

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+8149
-8700
lines changed

llvm/lib/Target/AMDGPU/AMDGPUTargetMachine.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -951,6 +951,10 @@ bool AMDGPUTargetMachine::isNoopAddrSpaceCast(unsigned SrcAS,
951951
}
952952

953953
unsigned AMDGPUTargetMachine::getAssumedAddrSpace(const Value *V) const {
954+
if (auto *Arg = dyn_cast<Argument>(V);
955+
Arg && AMDGPU::isKernelCC(Arg->getParent()))
956+
return AMDGPUAS::GLOBAL_ADDRESS;
957+
954958
const auto *LD = dyn_cast<LoadInst>(V);
955959
if (!LD) // TODO: Handle invariant load like constant.
956960
return AMDGPUAS::UNKNOWN_ADDRESS_SPACE;

llvm/lib/Transforms/IPO/AttributorAttributes.cpp

+6-17
Original file line numberDiff line numberDiff line change
@@ -12593,29 +12593,18 @@ struct AAAddressSpaceImpl : public AAAddressSpace {
1259312593
}
1259412594

1259512595
ChangeStatus updateImpl(Attributor &A) override {
12596-
unsigned FlatAS = A.getInfoCache().getFlatAddressSpace().value();
1259712596
uint32_t OldAddressSpace = AssumedAddressSpace;
1259812597

1259912598
auto CheckAddressSpace = [&](Value &Obj) {
1260012599
if (isa<UndefValue>(&Obj))
1260112600
return true;
12602-
// If an argument in flat address space only has addrspace cast uses, and
12603-
// those casts are same, then we take the dst addrspace.
1260412601
if (auto *Arg = dyn_cast<Argument>(&Obj)) {
12605-
if (Arg->getType()->getPointerAddressSpace() == FlatAS) {
12606-
unsigned CastAddrSpace = FlatAS;
12607-
for (auto *U : Arg->users()) {
12608-
auto *ASCI = dyn_cast<AddrSpaceCastInst>(U);
12609-
if (!ASCI)
12610-
return takeAddressSpace(Obj.getType()->getPointerAddressSpace());
12611-
if (CastAddrSpace != FlatAS &&
12612-
CastAddrSpace != ASCI->getDestAddressSpace())
12613-
return false;
12614-
CastAddrSpace = ASCI->getDestAddressSpace();
12615-
}
12616-
if (CastAddrSpace != FlatAS)
12617-
return takeAddressSpace(CastAddrSpace);
12618-
}
12602+
auto *TTI =
12603+
A.getInfoCache().getAnalysisResultForFunction<TargetIRAnalysis>(
12604+
*Arg->getParent());
12605+
unsigned AssumedAS = TTI->getAssumedAddrSpace(Arg);
12606+
if (AssumedAS != ~0U)
12607+
return takeAddressSpace(AssumedAS);
1261912608
}
1262012609
return takeAddressSpace(Obj.getType()->getPointerAddressSpace());
1262112610
};

0 commit comments

Comments
 (0)