diff options
Diffstat (limited to 'test/CodeGen/X86/fp-fast.ll')
-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 |