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