diff options
author | Chad Rosier <mcrosier@codeaurora.org> | 2014-11-11 23:36:42 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@codeaurora.org> | 2014-11-11 23:36:42 +0000 |
commit | f53f07046b2cfcc92f66cc330a05ba6efd7a7f44 (patch) | |
tree | a9f295831f1a42f6ae4f9d376087fbd184f20a55 /llvm/test/Transforms/Reassociate/canonicalize-neg-const.ll | |
parent | 66c6de61eea9d88061648fe505f420b7cb958df5 (diff) | |
download | bcm5719-llvm-f53f07046b2cfcc92f66cc330a05ba6efd7a7f44.tar.gz bcm5719-llvm-f53f07046b2cfcc92f66cc330a05ba6efd7a7f44.zip |
[Reassociate] Canonicalize negative constants out of expressions.
Add support for FDiv, which was regressed by the previous commit.
llvm-svn: 221738
Diffstat (limited to 'llvm/test/Transforms/Reassociate/canonicalize-neg-const.ll')
-rw-r--r-- | llvm/test/Transforms/Reassociate/canonicalize-neg-const.ll | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/llvm/test/Transforms/Reassociate/canonicalize-neg-const.ll b/llvm/test/Transforms/Reassociate/canonicalize-neg-const.ll index 5ac8a1f2694..80f433a498d 100644 --- a/llvm/test/Transforms/Reassociate/canonicalize-neg-const.ll +++ b/llvm/test/Transforms/Reassociate/canonicalize-neg-const.ll @@ -108,3 +108,51 @@ define double @test8(double %x, double %y) { %add = fadd double %mul, %x ret double %add } + +; Canonicalize (x - -0.1234 / y) +define double @test9(double %x, double %y) { +; CHECK-LABEL: @test9 +; CHECK-NEXT: fdiv double 1.234000e-01, %y +; CHECK-NEXT: fadd double %x, %div +; CHECK-NEXT: ret double + + %div = fdiv double -1.234000e-01, %y + %sub = fsub double %x, %div + ret double %sub +} + +; Don't modify (-0.1234 / y - x) +define double @test10(double %x, double %y) { +; CHECK-LABEL: @test10 +; CHECK-NEXT: fdiv double -1.234000e-01, %y +; CHECK-NEXT: fsub double %div, %x +; CHECK-NEXT: ret double %sub + + %div = fdiv double -1.234000e-01, %y + %sub = fsub double %div, %x + ret double %sub +} + +; Canonicalize (-0.1234 / y + x) -> (x - 0.1234 / y) +define double @test11(double %x, double %y) { +; CHECK-LABEL: @test11 +; CHECK-NEXT: fdiv double 1.234000e-01, %y +; CHECK-NEXT: fsub double %x, %div +; CHECK-NEXT: ret double %add + + %div = fdiv double -1.234000e-01, %y + %add = fadd double %div, %x + ret double %add +} + +; Canonicalize (y / -0.1234 + x) -> (x - y / 0.1234) +define double @test12(double %x, double %y) { +; CHECK-LABEL: @test12 +; CHECK-NEXT: fdiv double %y, 1.234000e-01 +; CHECK-NEXT: fsub double %x, %div +; CHECK-NEXT: ret double %add + + %div = fdiv double %y, -1.234000e-01 + %add = fadd double %div, %x + ret double %add +} |