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 -mtriple=i686-apple-macosx -mattr=-sse,-sse2,-sse3 -enable-unsafe-fp-math  | FileCheck %s --check-prefix=SIN
      3 ; RUN: llc < %s -mtriple=i686-apple-macosx -mattr=-sse,-sse2,-sse3 -enable-unsafe-fp-math  | FileCheck %s --check-prefix=COS
      4 ; RUN: llc < %s -mtriple=i686-apple-macosx -mattr=-sse,-sse2,-sse3 | FileCheck %s --check-prefix=SAFE
      5 
      6 declare float  @sinf(float) readonly
      7 
      8 declare double @sin(double) readonly
      9 
     10 declare x86_fp80 @sinl(x86_fp80) readonly
     11 
     12 ; SIN-LABEL: test1:
     13 define float @test1(float %X) {
     14         %Y = call float @sinf(float %X) readonly
     15         ret float %Y
     16 }
     17 ; SIN: {{^[ \t]*fsin$}}
     18 
     19 ; SIN-NOT: fsin
     20 
     21 ; SAFE: test1
     22 ; SAFE-NOT: fsin
     23 
     24 ; SIN-LABEL: test2:
     25 define double @test2(double %X) {
     26         %Y = call double @sin(double %X) readonly
     27         ret double %Y
     28 }
     29 ; SIN: {{^[ \t]*fsin$}}
     30 
     31 ; SIN-NOT: fsin
     32 
     33 ; SAFE: test2
     34 ; SAFE-NOT: fsin
     35 
     36 ; SIN-LABEL: test3:
     37 define x86_fp80 @test3(x86_fp80 %X) {
     38         %Y = call x86_fp80 @sinl(x86_fp80 %X) readonly
     39         ret x86_fp80 %Y
     40 }
     41 ; SIN: {{^[ \t]*fsin$}}
     42 
     43 ; SIN-NOT: fsin
     44 ; COS-NOT: fcos
     45 declare float @cosf(float) readonly
     46 
     47 declare double @cos(double) readonly
     48 
     49 declare x86_fp80 @cosl(x86_fp80) readonly
     50 
     51 
     52 ; SIN-LABEL: test4:
     53 ; COS-LABEL: test3:
     54 define float @test4(float %X) {
     55         %Y = call float @cosf(float %X) readonly
     56         ret float %Y
     57 }
     58 ; COS: {{^[ \t]*fcos}}
     59 
     60 ; SAFE: test4
     61 ; SAFE-NOT: fcos
     62 
     63 define double @test5(double %X) {
     64         %Y = call double @cos(double %X) readonly
     65         ret double %Y
     66 }
     67 ; COS: {{^[ \t]*fcos}}
     68 
     69 ; SAFE: test5
     70 ; SAFE-NOT: fcos
     71 
     72 define x86_fp80 @test6(x86_fp80 %X) {
     73         %Y = call x86_fp80 @cosl(x86_fp80 %X) readonly
     74         ret x86_fp80 %Y
     75 }
     76 ; COS: {{^[ \t]*fcos}}
     77 
     78 ; SIN-NOT: fsin
     79 ; COS-NOT: fcos
     80