xref: /llvm-project/llvm/test/CodeGen/X86/llvm.tanh.ll (revision 0b58f34c98e4715c3c920820d79e53e8d99c1b59)
1*0b58f34cSFarzon Lotfi; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2
2*0b58f34cSFarzon Lotfi; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s
3*0b58f34cSFarzon Lotfi
4*0b58f34cSFarzon Lotfidefine half @use_tanhf16(half %a) nounwind {
5*0b58f34cSFarzon Lotfi; CHECK-LABEL: use_tanhf16:
6*0b58f34cSFarzon Lotfi; CHECK:       # %bb.0:
7*0b58f34cSFarzon Lotfi; CHECK-NEXT:    pushq %rax
8*0b58f34cSFarzon Lotfi; CHECK-NEXT:    callq __extendhfsf2@PLT
9*0b58f34cSFarzon Lotfi; CHECK-NEXT:    callq tanhf@PLT
10*0b58f34cSFarzon Lotfi; CHECK-NEXT:    callq __truncsfhf2@PLT
11*0b58f34cSFarzon Lotfi; CHECK-NEXT:    popq %rax
12*0b58f34cSFarzon Lotfi; CHECK-NEXT:    retq
13*0b58f34cSFarzon Lotfi  %x = call half @llvm.tanh.f16(half %a)
14*0b58f34cSFarzon Lotfi  ret half %x
15*0b58f34cSFarzon Lotfi}
16*0b58f34cSFarzon Lotfi
17*0b58f34cSFarzon Lotfidefine float @use_tanhf32(float %a) nounwind {
18*0b58f34cSFarzon Lotfi; CHECK-LABEL: use_tanhf32:
19*0b58f34cSFarzon Lotfi; CHECK:       # %bb.0:
20*0b58f34cSFarzon Lotfi; CHECK-NEXT:    jmp tanhf@PLT # TAILCALL
21*0b58f34cSFarzon Lotfi  %x = call float @llvm.tanh.f32(float %a)
22*0b58f34cSFarzon Lotfi  ret float %x
23*0b58f34cSFarzon Lotfi}
24*0b58f34cSFarzon Lotfi
25*0b58f34cSFarzon Lotfidefine double @use_tanhf64(double %a) nounwind {
26*0b58f34cSFarzon Lotfi; CHECK-LABEL: use_tanhf64:
27*0b58f34cSFarzon Lotfi; CHECK:       # %bb.0:
28*0b58f34cSFarzon Lotfi; CHECK-NEXT:    jmp tanh@PLT # TAILCALL
29*0b58f34cSFarzon Lotfi  %x = call double @llvm.tanh.f64(double %a)
30*0b58f34cSFarzon Lotfi  ret double %x
31*0b58f34cSFarzon Lotfi}
32*0b58f34cSFarzon Lotfi
33*0b58f34cSFarzon Lotfidefine x86_fp80 @use_tanhf80(x86_fp80 %a) nounwind {
34*0b58f34cSFarzon Lotfi; CHECK-LABEL: use_tanhf80:
35*0b58f34cSFarzon Lotfi; CHECK:       # %bb.0:
36*0b58f34cSFarzon Lotfi; CHECK-NEXT:    subq $24, %rsp
37*0b58f34cSFarzon Lotfi; CHECK-NEXT:    fldt 32(%rsp)
38*0b58f34cSFarzon Lotfi; CHECK-NEXT:    fstpt (%rsp)
39*0b58f34cSFarzon Lotfi; CHECK-NEXT:    callq tanhl@PLT
40*0b58f34cSFarzon Lotfi; CHECK-NEXT:    addq  $24, %rsp
41*0b58f34cSFarzon Lotfi; CHECK-NEXT:    retq
42*0b58f34cSFarzon Lotfi  %x = call x86_fp80 @llvm.tanh.f80(x86_fp80 %a)
43*0b58f34cSFarzon Lotfi  ret x86_fp80 %x
44*0b58f34cSFarzon Lotfi}
45*0b58f34cSFarzon Lotfi
46*0b58f34cSFarzon Lotfidefine fp128 @use_tanhfp128(fp128 %a) nounwind {
47*0b58f34cSFarzon Lotfi; CHECK-LABEL: use_tanhfp128:
48*0b58f34cSFarzon Lotfi; CHECK:       # %bb.0:
49*0b58f34cSFarzon Lotfi; CHECK-NEXT:    jmp  tanhf128@PLT # TAILCALL
50*0b58f34cSFarzon Lotfi  %x = call fp128 @llvm.tanh.f128(fp128 %a)
51*0b58f34cSFarzon Lotfi  ret fp128 %x
52*0b58f34cSFarzon Lotfi}
53*0b58f34cSFarzon Lotfi
54*0b58f34cSFarzon Lotfidefine ppc_fp128 @use_tanhppc_fp128(ppc_fp128 %a) nounwind {
55*0b58f34cSFarzon Lotfi; CHECK-LABEL: use_tanhppc_fp128:
56*0b58f34cSFarzon Lotfi; CHECK:       # %bb.0:
57*0b58f34cSFarzon Lotfi; CHECK-NEXT:    pushq %rax
58*0b58f34cSFarzon Lotfi; CHECK-NEXT:    callq tanhl@PLT
59*0b58f34cSFarzon Lotfi; CHECK-NEXT:    popq %rax
60*0b58f34cSFarzon Lotfi; CHECK-NEXT:    retq
61*0b58f34cSFarzon Lotfi  %x = call ppc_fp128 @llvm.tanh.ppcf128(ppc_fp128 %a)
62*0b58f34cSFarzon Lotfi  ret ppc_fp128 %x
63*0b58f34cSFarzon Lotfi}
64*0b58f34cSFarzon Lotfi
65*0b58f34cSFarzon Lotfideclare half @llvm.tanh.f16(half)
66*0b58f34cSFarzon Lotfideclare float @llvm.tanh.f32(float)
67*0b58f34cSFarzon Lotfideclare double @llvm.tanh.f64(double)
68*0b58f34cSFarzon Lotfideclare x86_fp80 @llvm.tanh.f80(x86_fp80)
69*0b58f34cSFarzon Lotfideclare fp128 @llvm.tanh.f128(fp128)
70*0b58f34cSFarzon Lotfideclare ppc_fp128 @llvm.tanh.ppcf128(ppc_fp128)
71