96 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; Make sure this testcase codegens to the sin and cos instructions, not calls3; RUN: llc < %s -mtriple=i686-apple-macosx -mattr=-sse,-sse2,-sse3 | FileCheck %s4; RUN: llc < %s -mtriple=i686-apple-macosx -mattr=-sse,-sse2,-sse3 | FileCheck %s5 6declare float @sinf(float) readonly7 8declare double @sin(double) readonly9 10declare x86_fp80 @sinl(x86_fp80) readonly11 12define float @test1(float %X) nounwind {13; CHECK-LABEL: test1:14; CHECK: ## %bb.0:15; CHECK-NEXT: subl $12, %esp16; CHECK-NEXT: flds {{[0-9]+}}(%esp)17; CHECK-NEXT: fstps (%esp)18; CHECK-NEXT: calll _sinf19; CHECK-NEXT: addl $12, %esp20; CHECK-NEXT: retl21 %Y = call float @sinf(float %X) readonly22 ret float %Y23}24 25define double @test2(double %X) nounwind {26; CHECK-LABEL: test2:27; CHECK: ## %bb.0:28; CHECK-NEXT: subl $12, %esp29; CHECK-NEXT: fldl {{[0-9]+}}(%esp)30; CHECK-NEXT: fstpl (%esp)31; CHECK-NEXT: calll _sin32; CHECK-NEXT: addl $12, %esp33; CHECK-NEXT: retl34 %Y = call double @sin(double %X) readonly35 ret double %Y36}37 38define x86_fp80 @test3(x86_fp80 %X) nounwind {39; CHECK-LABEL: test3:40; CHECK: ## %bb.0:41; CHECK-NEXT: subl $28, %esp42; CHECK-NEXT: fldt {{[0-9]+}}(%esp)43; CHECK-NEXT: fstpt (%esp)44; CHECK-NEXT: calll _sinl45; CHECK-NEXT: addl $28, %esp46; CHECK-NEXT: retl47 %Y = call x86_fp80 @sinl(x86_fp80 %X) readonly48 ret x86_fp80 %Y49}50 51declare float @cosf(float) readonly52 53declare double @cos(double) readonly54 55declare x86_fp80 @cosl(x86_fp80) readonly56 57 58define float @test4(float %X) nounwind {59; CHECK-LABEL: test4:60; CHECK: ## %bb.0:61; CHECK-NEXT: subl $12, %esp62; CHECK-NEXT: flds {{[0-9]+}}(%esp)63; CHECK-NEXT: fstps (%esp)64; CHECK-NEXT: calll _cosf65; CHECK-NEXT: addl $12, %esp66; CHECK-NEXT: retl67 %Y = call float @cosf(float %X) readonly68 ret float %Y69}70 71define double @test5(double %X) nounwind {72; CHECK-LABEL: test5:73; CHECK: ## %bb.0:74; CHECK-NEXT: subl $12, %esp75; CHECK-NEXT: fldl {{[0-9]+}}(%esp)76; CHECK-NEXT: fstpl (%esp)77; CHECK-NEXT: calll _cos78; CHECK-NEXT: addl $12, %esp79; CHECK-NEXT: retl80 %Y = call double @cos(double %X) readonly81 ret double %Y82}83 84define x86_fp80 @test6(x86_fp80 %X) nounwind {85; CHECK-LABEL: test6:86; CHECK: ## %bb.0:87; CHECK-NEXT: subl $28, %esp88; CHECK-NEXT: fldt {{[0-9]+}}(%esp)89; CHECK-NEXT: fstpt (%esp)90; CHECK-NEXT: calll _cosl91; CHECK-NEXT: addl $28, %esp92; CHECK-NEXT: retl93 %Y = call x86_fp80 @cosl(x86_fp80 %X) readonly94 ret x86_fp80 %Y95}96