diff options
| author | Marek Olsak <marek.olsak@amd.com> | 2018-02-07 16:01:00 +0000 |
|---|---|---|
| committer | Marek Olsak <marek.olsak@amd.com> | 2018-02-07 16:01:00 +0000 |
| commit | 871c30e540318b1ba2a6f9547df1937707755529 (patch) | |
| tree | b76987bce04291bf077be9684b72994845a3bc52 /llvm/lib/Target/AMDGPU/Utils | |
| parent | b2cc77985b1c02c08651e2547c094781e75343eb (diff) | |
| download | bcm5719-llvm-871c30e540318b1ba2a6f9547df1937707755529.tar.gz bcm5719-llvm-871c30e540318b1ba2a6f9547df1937707755529.zip | |
AMDGPU: Add 32-bit constant address space
Note: This is a candidate for LLVM 6.0, because it was planned to be
in that release but was delayed due to a long review period.
Merge conflict in release_60 - resolution:
Add "-p6:32:32" into the second (non-amdgiz) string.
Only scalar loads support 32-bit pointers. An address in a VGPR will
fail to compile. That's OK because the results of loads will only be used
in places where VGPRs are forbidden.
Updated AMDGPUAliasAnalysis and used SReg_64_XEXEC.
The tests cover all uses cases we need for Mesa.
Reviewers: arsenm, nhaehnle
Subscribers: kzhuravl, wdng, yaxunl, dstuttard, tpr, t-tye, llvm-commits
Differential Revision: https://reviews.llvm.org/D41651
llvm-svn: 324487
Diffstat (limited to 'llvm/lib/Target/AMDGPU/Utils')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp index 50311c241f2..0367ce724ce 100644 --- a/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp +++ b/llvm/lib/Target/AMDGPU/Utils/AMDGPUBaseInfo.cpp @@ -447,7 +447,8 @@ bool isGlobalSegment(const GlobalValue *GV) { } bool isReadOnlySegment(const GlobalValue *GV) { - return GV->getType()->getAddressSpace() == AMDGPUAS::CONSTANT_ADDRESS; + return GV->getType()->getAddressSpace() == AMDGPUAS::CONSTANT_ADDRESS || + GV->getType()->getAddressSpace() == AMDGPUAS::CONSTANT_ADDRESS_32BIT; } bool shouldEmitConstantsToTextSection(const Triple &TT) { @@ -916,6 +917,9 @@ bool isUniformMMO(const MachineMemOperand *MMO) { isa<Constant>(Ptr) || isa<GlobalValue>(Ptr)) return true; + if (MMO->getAddrSpace() == AMDGPUAS::CONSTANT_ADDRESS_32BIT) + return true; + if (const Argument *Arg = dyn_cast<Argument>(Ptr)) return isArgPassedInSGPR(Arg); |

