diff options
author | Stephen Lin <stephenwlin@gmail.com> | 2013-06-14 18:17:35 +0000 |
---|---|---|
committer | Stephen Lin <stephenwlin@gmail.com> | 2013-06-14 18:17:35 +0000 |
commit | 38103d1012cb8a51da8866134886a0a8f35f4e30 (patch) | |
tree | 0a865e35c83d7b91b474a80785b4361028a4e26f /test | |
parent | f3fa6837bf880ada8c2d43e798c2d62148aacd1f (diff) | |
download | llvm-38103d1012cb8a51da8866134886a0a8f35f4e30.tar.gz llvm-38103d1012cb8a51da8866134886a0a8f35f4e30.tar.bz2 llvm-38103d1012cb8a51da8866134886a0a8f35f4e30.tar.xz |
SelectionDAG: Fix incorrect condition checks in some cases of folding FADD/FMUL combinations; also improve accuracy of comments
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183993 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/CodeGen/X86/fp-fast.ll | 77 |
1 files changed, 73 insertions, 4 deletions
diff --git a/test/CodeGen/X86/fp-fast.ll b/test/CodeGen/X86/fp-fast.ll index 287504801d..7589ac4bdc 100644 --- a/test/CodeGen/X86/fp-fast.ll +++ b/test/CodeGen/X86/fp-fast.ll @@ -26,6 +26,42 @@ define float @test2(float %a) { ; CHECK: test3 define float @test3(float %a) { ; CHECK-NOT: addss +; CHECK: mulss +; CHECK-NOT: addss +; CHECK: ret + %t1 = fmul float %a, 4.0 + %t2 = fadd float %a, %a + %r = fadd float %t1, %t2 + ret float %r +} + +; CHECK: test4 +define float @test4(float %a) { +; CHECK-NOT: addss +; CHECK: mulss +; CHECK-NOT: addss +; CHECK: ret + %t1 = fadd float %a, %a + %t2 = fmul float 4.0, %a + %r = fadd float %t1, %t2 + ret float %r +} + +; CHECK: test5 +define float @test5(float %a) { +; CHECK-NOT: addss +; CHECK: mulss +; CHECK-NOT: addss +; CHECK: ret + %t1 = fadd float %a, %a + %t2 = fmul float %a, 4.0 + %r = fadd float %t1, %t2 + ret float %r +} + +; CHECK: test6 +define float @test6(float %a) { +; CHECK-NOT: addss ; CHECK: xorps ; CHECK-NOT: addss ; CHECK: ret @@ -35,8 +71,20 @@ define float @test3(float %a) { ret float %r } -; CHECK: test4 -define float @test4(float %a) { +; CHECK: test7 +define float @test7(float %a) { +; CHECK-NOT: addss +; CHECK: xorps +; CHECK-NOT: addss +; CHECK: ret + %t1 = fmul float %a, 2.0 + %t2 = fadd float %a, %a + %r = fsub float %t1, %t2 + ret float %r +} + +; CHECK: test8 +define float @test8(float %a) { ; CHECK-NOT: fma ; CHECK-NOT: mul ; CHECK-NOT: add @@ -46,8 +94,29 @@ define float @test4(float %a) { ret float %t2 } -; CHECK: test5 -define float @test5(float %a) { +; CHECK: test9 +define float @test9(float %a) { +; CHECK-NOT: fma +; CHECK-NOT: mul +; CHECK-NOT: add +; CHECK: ret + %t1 = fmul float 0.0, %a + %t2 = fadd float %t1, %a + ret float %t2 +} + +; CHECK: test10 +define float @test10(float %a) { +; CHECK-NOT: add +; CHECK: vxorps +; CHECK: ret + %t1 = fsub float -0.0, %a + %t2 = fadd float %a, %t1 + ret float %t2 +} + +; CHECK: test11 +define float @test11(float %a) { ; CHECK-NOT: add ; CHECK: vxorps ; CHECK: ret |