1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 2; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s 3 4define half @use_atan2f16(half %a, half %b) nounwind { 5; CHECK-LABEL: use_atan2f16: 6; CHECK: # %bb.0: 7; CHECK-NEXT: pushq %rax 8; CHECK-NEXT: movss %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 4-byte Spill 9; CHECK-NEXT: movaps %xmm1, %xmm0 10; CHECK-NEXT: callq __extendhfsf2@PLT 11; CHECK-NEXT: movss %xmm0, (%rsp) # 4-byte Spill 12; CHECK-NEXT: movss {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 4-byte Reload 13; CHECK-NEXT: # xmm0 = mem[0],zero,zero,zero 14; CHECK-NEXT: callq __extendhfsf2@PLT 15; CHECK-NEXT: movss (%rsp), %xmm1 # 4-byte Reload 16; CHECK-NEXT: # xmm1 = mem[0],zero,zero,zero 17; CHECK-NEXT: callq atan2f@PLT 18; CHECK-NEXT: callq __truncsfhf2@PLT 19; CHECK-NEXT: popq %rax 20; CHECK-NEXT: retq 21 %x = call half @llvm.atan2.f16(half %a, half %b) 22 ret half %x 23} 24 25define float @use_atan2f32(float %a, float %b) nounwind { 26; CHECK-LABEL: use_atan2f32: 27; CHECK: # %bb.0: 28; CHECK-NEXT: jmp atan2f@PLT # TAILCALL 29 %x = call float @llvm.atan2.f32(float %a, float %b) 30 ret float %x 31} 32 33define double @use_atan2f64(double %a, double %b) nounwind { 34; CHECK-LABEL: use_atan2f64: 35; CHECK: # %bb.0: 36; CHECK-NEXT: jmp atan2@PLT # TAILCALL 37 %x = call double @llvm.atan2.f64(double %a, double %b) 38 ret double %x 39} 40 41define x86_fp80 @use_atan2f80(x86_fp80 %a, x86_fp80 %b) nounwind { 42; CHECK-LABEL: use_atan2f80: 43; CHECK: # %bb.0: 44; CHECK-NEXT: subq $40, %rsp 45; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) 46; CHECK-NEXT: fldt {{[0-9]+}}(%rsp) 47; CHECK-NEXT: fstpt {{[0-9]+}}(%rsp) 48; CHECK-NEXT: fstpt (%rsp) 49; CHECK-NEXT: callq atan2l@PLT 50; CHECK-NEXT: addq $40, %rsp 51; CHECK-NEXT: retq 52 %x = call x86_fp80 @llvm.atan2.f80(x86_fp80 %a, x86_fp80 %b) 53 ret x86_fp80 %x 54} 55 56define fp128 @use_atan2fp128(fp128 %a, fp128 %b) nounwind { 57; CHECK-LABEL: use_atan2fp128: 58; CHECK: # %bb.0: 59; CHECK-NEXT: jmp atan2f128@PLT # TAILCALL 60 %x = call fp128 @llvm.atan2.f128(fp128 %a, fp128 %b) 61 ret fp128 %x 62} 63 64define ppc_fp128 @use_atan2ppc_fp128(ppc_fp128 %a, ppc_fp128 %b) nounwind { 65; CHECK-LABEL: use_atan2ppc_fp128: 66; CHECK: # %bb.0: 67; CHECK-NEXT: pushq %rax 68; CHECK-NEXT: callq atan2l@PLT 69; CHECK-NEXT: popq %rax 70; CHECK-NEXT: retq 71 %x = call ppc_fp128 @llvm.atan2.ppcf128(ppc_fp128 %a, ppc_fp128 %b) 72 ret ppc_fp128 %x 73} 74 75declare half @llvm.atan2.f16(half, half) 76declare float @llvm.atan2.f32(float, float) 77declare double @llvm.atan2.f64(double, double) 78declare x86_fp80 @llvm.atan2.f80(x86_fp80, x86_fp80) 79declare fp128 @llvm.atan2.f128(fp128, fp128) 80declare ppc_fp128 @llvm.atan2.ppcf128(ppc_fp128, ppc_fp128) 81