• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
5declare float  @sinf(float) readonly
6
7declare double @sin(double) readonly
8
9declare x86_fp80 @sinl(x86_fp80) readonly
10
11; SIN: test1:
12define float @test1(float %X) {
13        %Y = call float @sinf(float %X) readonly
14        ret float %Y
15}
16; SIN: {{^[ \t]*fsin$}}
17
18; SIN-NOT: fsin
19
20; SIN: test2:
21define double @test2(double %X) {
22        %Y = call double @sin(double %X) readonly
23        ret double %Y
24}
25; SIN: {{^[ \t]*fsin$}}
26
27; SIN-NOT: fsin
28
29; SIN: test3:
30define x86_fp80 @test3(x86_fp80 %X) {
31        %Y = call x86_fp80 @sinl(x86_fp80 %X) readonly
32        ret x86_fp80 %Y
33}
34; SIN: {{^[ \t]*fsin$}}
35
36; SIN-NOT: fsin
37; COS-NOT: fcos
38declare float @cosf(float) readonly
39
40declare double @cos(double) readonly
41
42declare x86_fp80 @cosl(x86_fp80) readonly
43
44
45; SIN: test4:
46; COS: test3:
47define float @test4(float %X) {
48        %Y = call float @cosf(float %X) readonly
49        ret float %Y
50}
51; COS: {{^[ \t]*fcos}}
52
53define double @test5(double %X) {
54        %Y = call double @cos(double %X) readonly
55        ret double %Y
56}
57; COS: {{^[ \t]*fcos}}
58
59define x86_fp80 @test6(x86_fp80 %X) {
60        %Y = call x86_fp80 @cosl(x86_fp80 %X) readonly
61        ret x86_fp80 %Y
62}
63; COS: {{^[ \t]*fcos}}
64
65; SIN-NOT: fsin
66; COS-NOT: fcos
67