[llvm] r222139 - [Reassociate] Canonicalize constants to RHS operand.
Chad Rosier
mcrosier at codeaurora.org
Mon Nov 17 07:52:51 PST 2014
Author: mcrosier
Date: Mon Nov 17 09:52:51 2014
New Revision: 222139
URL: http://llvm.org/viewvc/llvm-project?rev=222139&view=rev
Log:
[Reassociate] Canonicalize constants to RHS operand.
Fix a thinko where the RHS was already a constant.
Modified:
llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp
llvm/trunk/test/Transforms/Reassociate/canonicalize-neg-const.ll
llvm/trunk/test/Transforms/Reassociate/fast-AgressiveSubMove.ll
llvm/trunk/test/Transforms/Reassociate/fast-fp-commute.ll
Modified: llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp?rev=222139&r1=222138&r2=222139&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/Reassociate.cpp Mon Nov 17 09:52:51 2014
@@ -332,6 +332,7 @@ unsigned Reassociate::getRank(Value *V)
return ValueRankMap[I] = Rank;
}
+// Canonicalize constants to RHS. Otherwise, sort the operands by rank.
void Reassociate::canonicalizeOperands(Instruction *I) {
assert(isa<BinaryOperator>(I) && "Expected binary operator.");
assert(I->isCommutative() && "Expected commutative operator.");
@@ -341,7 +342,9 @@ void Reassociate::canonicalizeOperands(I
unsigned LHSRank = getRank(LHS);
unsigned RHSRank = getRank(RHS);
- // Canonicalize constants to RHS. Otherwise, sort the operands by rank.
+ if (isa<Constant>(RHS))
+ return;
+
if (isa<Constant>(LHS) || RHSRank < LHSRank)
cast<BinaryOperator>(I)->swapOperands();
}
Modified: llvm/trunk/test/Transforms/Reassociate/canonicalize-neg-const.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Reassociate/canonicalize-neg-const.ll?rev=222139&r1=222138&r2=222139&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/Reassociate/canonicalize-neg-const.ll (original)
+++ llvm/trunk/test/Transforms/Reassociate/canonicalize-neg-const.ll Mon Nov 17 09:52:51 2014
@@ -20,7 +20,7 @@ define double @test1(double %x, double %
; (x + -0.1234 * y) * (x + -0.1234 * y) -> (x - 0.1234 * y) * (x - 0.1234 * y)
define double @test2(double %x, double %y) {
; CHECK-LABEL: @test2
-; CHECK-NEXT: fmul double 1.234000e-01, %y
+; CHECK-NEXT: fmul double %y, 1.234000e-01
; CHECK-NEXT: fsub double %x, %mul
; CHECK-NEXT: fmul double %add{{.*}}, %add{{.*}}
; CHECK-NEXT: ret double %mul
@@ -36,7 +36,7 @@ define double @test2(double %x, double %
; (x + 0.1234 * y) * (x - -0.1234 * y) -> (x + 0.1234 * y) * (x + 0.1234 * y)
define double @test3(double %x, double %y) {
; CHECK-LABEL: @test3
-; CHECK-NEXT: fmul double 1.234000e-01, %y
+; CHECK-NEXT: fmul double %y, 1.234000e-01
; CHECK-NEXT: fadd double %x, %mul
; CHECK-NEXT: fmul double %add{{.*}}, %add{{.*}}
; CHECK-NEXT: ret double
@@ -100,7 +100,7 @@ define double @test7(double %x, double %
; Canonicalize (y * -0.1234 + x) -> (x - 0.1234 * y)
define double @test8(double %x, double %y) {
; CHECK-LABEL: @test8
-; CHECK-NEXT: fmul double 1.234000e-01, %y
+; CHECK-NEXT: fmul double %y, 1.234000e-01
; CHECK-NEXT: fsub double %x, %mul
; CHECK-NEXT: ret double %add
Modified: llvm/trunk/test/Transforms/Reassociate/fast-AgressiveSubMove.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Reassociate/fast-AgressiveSubMove.ll?rev=222139&r1=222138&r2=222139&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/Reassociate/fast-AgressiveSubMove.ll (original)
+++ llvm/trunk/test/Transforms/Reassociate/fast-AgressiveSubMove.ll Mon Nov 17 09:52:51 2014
@@ -2,8 +2,8 @@
define float @test1(float %A) {
; CHECK-LABEL: test1
-; CHECK-NEXT: %X = fadd float 1.000000e+00, %A
-; CHECK-NEXT: %Y = fadd float 1.000000e+00, %A
+; CHECK-NEXT: %X = fadd float %A, 1.000000e+00
+; CHECK-NEXT: %Y = fadd float %A, 1.000000e+00
; CHECK-NEXT: %r = fsub float %X, %Y
; CHECK-NEXT: ret float %r
Modified: llvm/trunk/test/Transforms/Reassociate/fast-fp-commute.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/Reassociate/fast-fp-commute.ll?rev=222139&r1=222138&r2=222139&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/Reassociate/fast-fp-commute.ll (original)
+++ llvm/trunk/test/Transforms/Reassociate/fast-fp-commute.ll Mon Nov 17 09:52:51 2014
@@ -33,7 +33,7 @@ define float @test2(float %x, float %y)
define float @test3(float %x, float %y) {
; CHECK-LABEL: test3
-; CHECK-NEXT: %factor = fmul fast float 2.000000e+00, %y
+; CHECK-NEXT: %factor = fmul fast float %y, 2.000000e+00
; CHECK-NEXT: %tmp1 = fmul fast float %factor, %x
; CHECK-NEXT: ret float %tmp1
More information about the llvm-commits
mailing list