summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2019-01-20 19:45:18 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2019-01-20 19:45:18 +0000
commit7ac79ed8f0b50640e2809b9f230f87f1b68baa53 (patch)
tree039d5c07475f736738d88ade943dd802eea6e808 /llvm/lib
parenta5195829f636162090d8dd6ff1c530933d9dcc53 (diff)
downloadbcm5719-llvm-7ac79ed8f0b50640e2809b9f230f87f1b68baa53.tar.gz
bcm5719-llvm-7ac79ed8f0b50640e2809b9f230f87f1b68baa53.zip
AMDGPU: Legalize more bitcasts
llvm-svn: 351700
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp12
1 files changed, 7 insertions, 5 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
index 2beed6e8903..a8e12d06c0a 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
@@ -22,6 +22,7 @@
using namespace llvm;
using namespace LegalizeActions;
+using namespace LegalityPredicates;
AMDGPULegalizerInfo::AMDGPULegalizerInfo(const GCNSubtarget &ST,
const GCNTargetMachine &TM) {
@@ -103,11 +104,12 @@ AMDGPULegalizerInfo::AMDGPULegalizerInfo(const GCNSubtarget &ST,
G_UADDE, G_SADDE, G_USUBE, G_SSUBE})
.legalFor({{S32, S1}});
- setAction({G_BITCAST, V2S16}, Legal);
- setAction({G_BITCAST, 1, S32}, Legal);
-
- setAction({G_BITCAST, S32}, Legal);
- setAction({G_BITCAST, 1, V2S16}, Legal);
+ getActionDefinitionsBuilder(G_BITCAST)
+ .legalForCartesianProduct({S32, V2S16})
+ .legalForCartesianProduct({S64, V2S32, V4S16})
+ .legalForCartesianProduct({V2S64, V4S32})
+ // Don't worry about the size constraint.
+ .legalIf(all(isPointer(0), isPointer(1)));
getActionDefinitionsBuilder(G_FCONSTANT)
.legalFor({S32, S64, S16});
OpenPOWER on IntegriCloud