summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2017-01-12 17:46:28 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2017-01-12 17:46:28 +0000
commit98d2bf10244e03014412d73fb0f5c0b653643175 (patch)
treecb9c9662bb13ca86cf55a190ce80301f7a9e0d7e /llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
parentc7e51b141409463f16fe07815d24ee41cc488f0b (diff)
downloadbcm5719-llvm-98d2bf10244e03014412d73fb0f5c0b653643175.tar.gz
bcm5719-llvm-98d2bf10244e03014412d73fb0f5c0b653643175.zip
AMDGPU: Fold fneg into fp_extend
llvm-svn: 291777
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp')
-rw-r--r--llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
index 94953440eeb..043f613b96c 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp
@@ -2899,6 +2899,20 @@ SDValue AMDGPUTargetLowering::performFNegCombine(SDNode *N,
DAG.ReplaceAllUsesWith(N0, DAG.getNode(ISD::FNEG, SL, VT, Res));
return Res;
}
+ case ISD::FP_EXTEND: {
+ SDValue CvtSrc = N0.getOperand(0);
+ if (CvtSrc.getOpcode() == ISD::FNEG) {
+ // (fneg (fp_extend (fneg x))) -> (fp_extend x)
+ return DAG.getNode(ISD::FP_EXTEND, SL, VT, CvtSrc.getOperand(0));
+ }
+
+ if (!N0.hasOneUse())
+ return SDValue();
+
+ // (fneg (fp_extend x)) -> (fp_extend (fneg x))
+ SDValue Neg = DAG.getNode(ISD::FNEG, SL, CvtSrc.getValueType(), CvtSrc);
+ return DAG.getNode(ISD::FP_EXTEND, SL, VT, Neg);
+ }
default:
return SDValue();
}
OpenPOWER on IntegriCloud