summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2019-01-30 02:35:38 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2019-01-30 02:35:38 +0000
commit045bc9a4a6089d97063e373c350ff05a8641c716 (patch)
tree7faa7482ced36905002bbfa73f1eea096e315281 /llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
parent018ab5fa6f023bd80b274f61f75288fee73acf80 (diff)
downloadbcm5719-llvm-045bc9a4a6089d97063e373c350ff05a8641c716.tar.gz
bcm5719-llvm-045bc9a4a6089d97063e373c350ff05a8641c716.zip
GlobalISel: Support narrowScalar for uneven loads
llvm-svn: 352594
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp')
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
index 43c86aba3ad..434fcc532ba 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
@@ -237,6 +237,14 @@ AMDGPULegalizerInfo::AMDGPULegalizerInfo(const GCNSubtarget &ST,
[](const LegalityQuery &Query) {
return std::make_pair(0, LLT::scalar(32));
})
+ .fewerElementsIf([=, &ST](const LegalityQuery &Query) {
+ unsigned MemSize = Query.MMODescrs[0].SizeInBits;
+ return Query.Types[0].isVector() && (MemSize == 96) &&
+ ST.getGeneration() < AMDGPUSubtarget::SEA_ISLANDS;
+ },
+ [=](const LegalityQuery &Query) {
+ return std::make_pair(0, V2S32);
+ })
.legalIf([=, &ST](const LegalityQuery &Query) {
const LLT &Ty0 = Query.Types[0];
OpenPOWER on IntegriCloud