1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2 ; RUN: llc -mtriple=x86_64-unknown-unknown -mattr=avx -enable-unsafe-fp-math < %s | FileCheck %s 3 4 define float @test1(float %a) { 5 ; CHECK-LABEL: test1: 6 ; CHECK: # BB#0: 7 ; CHECK-NEXT: vmulss {{.*}}(%rip), %xmm0, %xmm0 8 ; CHECK-NEXT: retq 9 %t1 = fadd float %a, %a 10 %r = fadd float %t1, %t1 11 ret float %r 12 } 13 14 define float @test2(float %a) { 15 ; CHECK-LABEL: test2: 16 ; CHECK: # BB#0: 17 ; CHECK-NEXT: vmulss {{.*}}(%rip), %xmm0, %xmm0 18 ; CHECK-NEXT: retq 19 %t1 = fmul float 4.0, %a 20 %t2 = fadd float %a, %a 21 %r = fadd float %t1, %t2 22 ret float %r 23 } 24 25 define float @test3(float %a) { 26 ; CHECK-LABEL: test3: 27 ; CHECK: # BB#0: 28 ; CHECK-NEXT: vmulss {{.*}}(%rip), %xmm0, %xmm0 29 ; CHECK-NEXT: retq 30 %t1 = fmul float %a, 4.0 31 %t2 = fadd float %a, %a 32 %r = fadd float %t1, %t2 33 ret float %r 34 } 35 36 define float @test4(float %a) { 37 ; CHECK-LABEL: test4: 38 ; CHECK: # BB#0: 39 ; CHECK-NEXT: vmulss {{.*}}(%rip), %xmm0, %xmm0 40 ; CHECK-NEXT: retq 41 %t1 = fadd float %a, %a 42 %t2 = fmul float 4.0, %a 43 %r = fadd float %t1, %t2 44 ret float %r 45 } 46 47 define float @test5(float %a) { 48 ; CHECK-LABEL: test5: 49 ; CHECK: # BB#0: 50 ; CHECK-NEXT: vmulss {{.*}}(%rip), %xmm0, %xmm0 51 ; CHECK-NEXT: retq 52 %t1 = fadd float %a, %a 53 %t2 = fmul float %a, 4.0 54 %r = fadd float %t1, %t2 55 ret float %r 56 } 57 58 define float @test6(float %a) { 59 ; CHECK-LABEL: test6: 60 ; CHECK: # BB#0: 61 ; CHECK-NEXT: vxorps %xmm0, %xmm0, %xmm0 62 ; CHECK-NEXT: retq 63 %t1 = fmul float 2.0, %a 64 %t2 = fadd float %a, %a 65 %r = fsub float %t1, %t2 66 ret float %r 67 } 68 69 define float @test7(float %a) { 70 ; CHECK-LABEL: test7: 71 ; CHECK: # BB#0: 72 ; CHECK-NEXT: vxorps %xmm0, %xmm0, %xmm0 73 ; CHECK-NEXT: retq 74 %t1 = fmul float %a, 2.0 75 %t2 = fadd float %a, %a 76 %r = fsub float %t1, %t2 77 ret float %r 78 } 79 80 define float @test8(float %a) { 81 ; CHECK-LABEL: test8: 82 ; CHECK: # BB#0: 83 ; CHECK-NEXT: retq 84 %t1 = fmul float %a, 0.0 85 %t2 = fadd float %a, %t1 86 ret float %t2 87 } 88 89 define float @test9(float %a) { 90 ; CHECK-LABEL: test9: 91 ; CHECK: # BB#0: 92 ; CHECK-NEXT: retq 93 %t1 = fmul float 0.0, %a 94 %t2 = fadd float %t1, %a 95 ret float %t2 96 } 97 98 define float @test10(float %a) { 99 ; CHECK-LABEL: test10: 100 ; CHECK: # BB#0: 101 ; CHECK-NEXT: vxorps %xmm0, %xmm0, %xmm0 102 ; CHECK-NEXT: retq 103 %t1 = fsub float -0.0, %a 104 %t2 = fadd float %a, %t1 105 ret float %t2 106 } 107 108 define float @test11(float %a) { 109 ; CHECK-LABEL: test11: 110 ; CHECK: # BB#0: 111 ; CHECK-NEXT: vxorps %xmm0, %xmm0, %xmm0 112 ; CHECK-NEXT: retq 113 %t1 = fsub float -0.0, %a 114 %t2 = fadd float %a, %t1 115 ret float %t2 116 } 117 118