Home | History | Annotate | Download | only in X86
      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