diff options
| author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-01-12 18:26:30 +0000 |
|---|---|---|
| committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2017-01-12 18:26:30 +0000 |
| commit | a8c325e2f52241ebc245ed1a92a01210a93fc588 (patch) | |
| tree | bec25bfc64d45e5d6120faafa9832138a14c0f91 /llvm/lib/Target | |
| parent | 715dd7fe33875f2a89939081153f67ea3b3ee4e7 (diff) | |
| download | bcm5719-llvm-a8c325e2f52241ebc245ed1a92a01210a93fc588.tar.gz bcm5719-llvm-a8c325e2f52241ebc245ed1a92a01210a93fc588.zip | |
AMDGPU: Fold fneg into fmul_legacy
llvm-svn: 291784
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp index 99700147880..a6c5e06d883 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUISelLowering.cpp @@ -2815,6 +2815,7 @@ static bool fnegFoldsIntoOp(unsigned Opc) { case ISD::FMAD: case AMDGPUISD::RCP: case AMDGPUISD::RCP_LEGACY: + case AMDGPUISD::FMUL_LEGACY: return true; default: return false; @@ -2860,8 +2861,10 @@ SDValue AMDGPUTargetLowering::performFNegCombine(SDNode *N, DAG.ReplaceAllUsesWith(N0, DAG.getNode(ISD::FNEG, SL, VT, Res)); return Res; } - case ISD::FMUL: { + case ISD::FMUL: + case AMDGPUISD::FMUL_LEGACY: { // (fneg (fmul x, y)) -> (fmul x, (fneg y)) + // (fneg (fmul_legacy x, y)) -> (fmul_legacy x, (fneg y)) SDValue LHS = N0.getOperand(0); SDValue RHS = N0.getOperand(1); @@ -2872,7 +2875,7 @@ SDValue AMDGPUTargetLowering::performFNegCombine(SDNode *N, else RHS = DAG.getNode(ISD::FNEG, SL, VT, RHS); - SDValue Res = DAG.getNode(ISD::FMUL, SL, VT, LHS, RHS); + SDValue Res = DAG.getNode(Opc, SL, VT, LHS, RHS); if (!N0.hasOneUse()) DAG.ReplaceAllUsesWith(N0, DAG.getNode(ISD::FNEG, SL, VT, Res)); return Res; |

