summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorStephen Lin <stephenwlin@gmail.com>2013-06-14 18:17:35 +0000
committerStephen Lin <stephenwlin@gmail.com>2013-06-14 18:17:35 +0000
commit38103d1012cb8a51da8866134886a0a8f35f4e30 (patch)
tree0a865e35c83d7b91b474a80785b4361028a4e26f /test
parentf3fa6837bf880ada8c2d43e798c2d62148aacd1f (diff)
downloadllvm-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.ll77
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