Home | History | Annotate | Download | only in X86
      1 ; Make sure this testcase codegens to the sin and cos instructions, not calls
      2 ; RUN: llc < %s -march=x86 -mattr=-sse,-sse2,-sse3 -enable-unsafe-fp-math  | \
      3 ; RUN:   grep sin\$ | count 3
      4 ; RUN: llc < %s -march=x86 -mattr=-sse,-sse2,-sse3 -enable-unsafe-fp-math  | \
      5 ; RUN:   grep cos\$ | count 3
      6 
      7 declare float  @sinf(float) readonly
      8 
      9 declare double @sin(double) readonly
     10 
     11 declare x86_fp80 @sinl(x86_fp80) readonly
     12 
     13 define float @test1(float %X) {
     14         %Y = call float @sinf(float %X) readonly
     15         ret float %Y
     16 }
     17 
     18 define double @test2(double %X) {
     19         %Y = call double @sin(double %X) readonly
     20         ret double %Y
     21 }
     22 
     23 define x86_fp80 @test3(x86_fp80 %X) {
     24         %Y = call x86_fp80 @sinl(x86_fp80 %X) readonly
     25         ret x86_fp80 %Y
     26 }
     27 
     28 declare float @cosf(float) readonly
     29 
     30 declare double @cos(double) readonly
     31 
     32 declare x86_fp80 @cosl(x86_fp80) readonly
     33 
     34 define float @test4(float %X) {
     35         %Y = call float @cosf(float %X) readonly
     36         ret float %Y
     37 }
     38 
     39 define double @test5(double %X) {
     40         %Y = call double @cos(double %X) readonly
     41         ret double %Y
     42 }
     43 
     44 define x86_fp80 @test6(x86_fp80 %X) {
     45         %Y = call x86_fp80 @cosl(x86_fp80 %X) readonly
     46         ret x86_fp80 %Y
     47 }
     48 
     49