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