mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
Teach DAG combine that multiplication by 1.0 can always be constant folded.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@156023 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4599613dec
commit
363e4b90c0
@ -5715,6 +5715,9 @@ SDValue DAGCombiner::visitFMUL(SDNode *N) {
|
||||
if (DAG.getTarget().Options.UnsafeFPMath &&
|
||||
ISD::isBuildVectorAllZeros(N1.getNode()))
|
||||
return N1;
|
||||
// fold (fmul A, 1.0) -> A
|
||||
if (N1CFP && N1CFP->isExactlyValue(1.0))
|
||||
return N0;
|
||||
// fold (fmul X, 2.0) -> (fadd X, X)
|
||||
if (N1CFP && N1CFP->isExactlyValue(+2.0))
|
||||
return DAG.getNode(ISD::FADD, N->getDebugLoc(), VT, N0, N0);
|
||||
|
@ -21,3 +21,12 @@ entry:
|
||||
; CORTEXA8: vmul.f32 d0, d1, d0
|
||||
; CORTEXA9: test:
|
||||
; CORTEXA9: vmul.f32 s{{.}}, s{{.}}, s{{.}}
|
||||
|
||||
; VFP2: test2
|
||||
define float @test2(float %a) nounwind {
|
||||
; CHECK-NOT: mul
|
||||
; CHECK: mov pc, lr
|
||||
%ret = fmul float %a, 1.0
|
||||
ret float %ret
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user