112 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 22; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=X86,SDAG-X863; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu -global-isel=0 | FileCheck %s --check-prefixes=SDAG-X644; RUN: llc < %s -mtriple=i686-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=X86,GISEL-X865; RUN: llc < %s -mtriple=x86_64-linux-gnu -global-isel -global-isel-abort=1 | FileCheck %s --check-prefixes=GISEL-X646 7define float @use_tanf32(float %a) nounwind {8; SDAG-X86-LABEL: use_tanf32:9; SDAG-X86: # %bb.0:10; SDAG-X86-NEXT: subl $12, %esp11; SDAG-X86-NEXT: flds {{[0-9]+}}(%esp)12; SDAG-X86-NEXT: fstps (%esp)13; SDAG-X86-NEXT: calll tanf14; SDAG-X86-NEXT: addl $12, %esp15; SDAG-X86-NEXT: retl16;17; SDAG-X64-LABEL: use_tanf32:18; SDAG-X64: # %bb.0:19; SDAG-X64-NEXT: jmp tanf@PLT # TAILCALL20;21; GISEL-X86-LABEL: use_tanf32:22; GISEL-X86: # %bb.0:23; GISEL-X86-NEXT: subl $12, %esp24; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %eax25; GISEL-X86-NEXT: movl %eax, (%esp)26; GISEL-X86-NEXT: calll tanf27; GISEL-X86-NEXT: addl $12, %esp28; GISEL-X86-NEXT: retl29;30; GISEL-X64-LABEL: use_tanf32:31; GISEL-X64: # %bb.0:32; GISEL-X64-NEXT: pushq %rax33; GISEL-X64-NEXT: callq tanf34; GISEL-X64-NEXT: popq %rax35; GISEL-X64-NEXT: retq36 %x = call float @llvm.tan.f32(float %a)37 ret float %x38}39 40define double @use_tanf64(double %a) nounwind {41; SDAG-X86-LABEL: use_tanf64:42; SDAG-X86: # %bb.0:43; SDAG-X86-NEXT: subl $12, %esp44; SDAG-X86-NEXT: fldl {{[0-9]+}}(%esp)45; SDAG-X86-NEXT: fstpl (%esp)46; SDAG-X86-NEXT: calll tan47; SDAG-X86-NEXT: addl $12, %esp48; SDAG-X86-NEXT: retl49;50; SDAG-X64-LABEL: use_tanf64:51; SDAG-X64: # %bb.0:52; SDAG-X64-NEXT: jmp tan@PLT # TAILCALL53;54; GISEL-X86-LABEL: use_tanf64:55; GISEL-X86: # %bb.0:56; GISEL-X86-NEXT: subl $12, %esp57; GISEL-X86-NEXT: leal {{[0-9]+}}(%esp), %eax58; GISEL-X86-NEXT: movl {{[0-9]+}}(%esp), %ecx59; GISEL-X86-NEXT: movl 4(%eax), %eax60; GISEL-X86-NEXT: xorl %edx, %edx61; GISEL-X86-NEXT: addl %esp, %edx62; GISEL-X86-NEXT: movl %ecx, (%esp)63; GISEL-X86-NEXT: movl %eax, 4(%edx)64; GISEL-X86-NEXT: calll tan65; GISEL-X86-NEXT: addl $12, %esp66; GISEL-X86-NEXT: retl67;68; GISEL-X64-LABEL: use_tanf64:69; GISEL-X64: # %bb.0:70; GISEL-X64-NEXT: pushq %rax71; GISEL-X64-NEXT: callq tan72; GISEL-X64-NEXT: popq %rax73; GISEL-X64-NEXT: retq74 %x = call double @llvm.tan.f64(double %a)75 ret double %x76}77 78define x86_fp80 @use_tanf80(x86_fp80 %a) nounwind {79; X86-LABEL: use_tanf80:80; X86: # %bb.0:81; X86-NEXT: subl $12, %esp82; X86-NEXT: fldt {{[0-9]+}}(%esp)83; X86-NEXT: fstpt (%esp)84; X86-NEXT: calll tanl85; X86-NEXT: addl $12, %esp86; X86-NEXT: retl87;88; SDAG-X64-LABEL: use_tanf80:89; SDAG-X64: # %bb.0:90; SDAG-X64-NEXT: subq $24, %rsp91; SDAG-X64-NEXT: fldt {{[0-9]+}}(%rsp)92; SDAG-X64-NEXT: fstpt (%rsp)93; SDAG-X64-NEXT: callq tanl@PLT94; SDAG-X64-NEXT: addq $24, %rsp95; SDAG-X64-NEXT: retq96;97; GISEL-X64-LABEL: use_tanf80:98; GISEL-X64: # %bb.0:99; GISEL-X64-NEXT: subq $24, %rsp100; GISEL-X64-NEXT: fldt {{[0-9]+}}(%rsp)101; GISEL-X64-NEXT: fstpt (%rsp)102; GISEL-X64-NEXT: callq tanl103; GISEL-X64-NEXT: addq $24, %rsp104; GISEL-X64-NEXT: retq105 %x = call x86_fp80 @llvm.tan.f80(x86_fp80 %a)106 ret x86_fp80 %x107}108 109declare float @llvm.tan.f32(float)110declare double @llvm.tan.f64(double)111declare x86_fp80 @llvm.tan.f80(x86_fp80)112