AMDGPU/GlobalISel: Legalize G_FCOPYSIGN
llvm-svn: 361025
diff --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
index 8a7268d..e142ab3 100644
--- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
@@ -2212,6 +2212,7 @@
case G_CTTZ:
case G_CTTZ_ZERO_UNDEF:
case G_CTPOP:
+ case G_FCOPYSIGN:
return fewerElementsVectorMultiEltType(MI, TypeIdx, NarrowTy);
case G_ZEXT:
case G_SEXT:
diff --git a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
index b9ffb45..63b517f 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp
@@ -261,6 +261,10 @@
.lowerFor({{S64, S16}}) // FIXME: Implement
.scalarize(0);
+ getActionDefinitionsBuilder(G_FCOPYSIGN)
+ .legalForCartesianProduct({S16, S32, S64}, {S16, S32, S64})
+ .scalarize(0);
+
getActionDefinitionsBuilder(G_FSUB)
// Use actual fsub instruction
.legalFor({S32})