summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2019-10-07 23:33:08 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2019-10-07 23:33:08 +0000
commitc8a6df71305f1c49f27371c1a4310685854c46c1 (patch)
tree407ffa4b01407d0f6b562dcb84a1c948650f8499 /llvm/lib/Target
parent748538e166ef64e8c9bddc7736cc9d44a5574092 (diff)
downloadbcm5719-llvm-c8a6df71305f1c49f27371c1a4310685854c46c1.tar.gz
bcm5719-llvm-c8a6df71305f1c49f27371c1a4310685854c46c1.zip
AMDGPU/GlobalISel: Clamp G_SITOFP/G_UITOFP sources
llvm-svn: 373989
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
index dfb8ed55d6b..c1c111a762d 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
@@ -424,11 +424,14 @@ AMDGPULegalizerInfo::AMDGPULegalizerInfo(const GCNSubtarget &ST_,
.scalarize(0);
// TODO: Split s1->s64 during regbankselect for VALU.
- getActionDefinitionsBuilder({G_SITOFP, G_UITOFP})
+ auto &IToFP = getActionDefinitionsBuilder({G_SITOFP, G_UITOFP})
.legalFor({{S32, S32}, {S64, S32}, {S16, S32}, {S32, S1}, {S16, S1}, {S64, S1}})
.lowerFor({{S32, S64}})
- .customFor({{S64, S64}})
- .scalarize(0);
+ .customFor({{S64, S64}});
+ if (ST.has16BitInsts())
+ IToFP.legalFor({{S16, S16}});
+ IToFP.clampScalar(1, S32, S64)
+ .scalarize(0);
auto &FPToI = getActionDefinitionsBuilder({G_FPTOSI, G_FPTOUI})
.legalFor({{S32, S32}, {S32, S64}, {S32, S16}});
OpenPOWER on IntegriCloud