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