diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-07-09 22:48:04 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2019-07-09 22:48:04 +0000 |
| commit | 3f1a34546cf3f8ca245cd2ce5b8189287b44be2b (patch) | |
| tree | 64cdc289de0ebb4ee02d46d65073d52a9a547b62 /llvm/lib/Target | |
| parent | 31babea94a3ed38a140540f2252cf043dacec1f7 (diff) | |
| download | bcm5719-llvm-3f1a34546cf3f8ca245cd2ce5b8189287b44be2b.tar.gz bcm5719-llvm-3f1a34546cf3f8ca245cd2ce5b8189287b44be2b.zip | |
AMDGPU/GlobalISel: Fix legality for G_BUILD_VECTOR
llvm-svn: 365575
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp index 49e8b36b41b..410d038fc65 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp @@ -90,7 +90,8 @@ static LegalityPredicate isRegisterType(unsigned TypeIdx) { if (Ty.isVector()) { const int EltSize = Ty.getElementType().getSizeInBits(); return EltSize == 32 || EltSize == 64 || - (EltSize == 16 && Ty.getNumElements() % 2 == 0); + (EltSize == 16 && Ty.getNumElements() % 2 == 0) || + EltSize == 128 || EltSize == 256; } return Ty.getSizeInBits() % 32 == 0 && Ty.getSizeInBits() <= 512; @@ -648,18 +649,14 @@ AMDGPULegalizerInfo::AMDGPULegalizerInfo(const GCNSubtarget &ST_, } - // TODO: vectors of pointers getActionDefinitionsBuilder(G_BUILD_VECTOR) .legalForCartesianProduct(AllS32Vectors, {S32}) .legalForCartesianProduct(AllS64Vectors, {S64}) .clampNumElements(0, V16S32, V16S32) .clampNumElements(0, V2S64, V8S64) .minScalarSameAs(1, 0) - // FIXME: Sort of a hack to make progress on other legalizations. - .legalIf([=](const LegalityQuery &Query) { - return Query.Types[0].getScalarSizeInBits() <= 32 || - Query.Types[0].getScalarSizeInBits() == 64; - }); + .legalIf(isRegisterType(0)) + .minScalarOrElt(0, S32); getActionDefinitionsBuilder(G_CONCAT_VECTORS) .legalIf(isRegisterType(0)); |

