diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-01-12 17:46:28 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-01-12 17:46:28 +0000 |
commit | 98d2bf10244e03014412d73fb0f5c0b653643175 (patch) | |
tree | cb9c9662bb13ca86cf55a190ce80301f7a9e0d7e /llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp | |
parent | c7e51b141409463f16fe07815d24ee41cc488f0b (diff) | |
download | bcm5719-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.cpp | 14 |
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(); } |