xref: /llvm-project/compiler-rt/lib/builtins/extendhfsf2.c (revision c288715e952fe0e179d645a76b0f518e2403a42b)
1f1ac850eSAhmed Bougacha //===-- lib/extendhfsf2.c - half -> single conversion -------------*- C -*-===//
2f1ac850eSAhmed Bougacha //
357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6f1ac850eSAhmed Bougacha //
7f1ac850eSAhmed Bougacha //===----------------------------------------------------------------------===//
8f1ac850eSAhmed Bougacha 
9f1ac850eSAhmed Bougacha #define SRC_HALF
10f1ac850eSAhmed Bougacha #define DST_SINGLE
11f1ac850eSAhmed Bougacha #include "fp_extend_impl.inc"
12f1ac850eSAhmed Bougacha 
139a43d5beSAhmed Bougacha // Use a forwarding definition and noinline to implement a poor man's alias,
149a43d5beSAhmed Bougacha // as there isn't a good cross-platform way of defining one.
__extendhfsf2(src_t a)15*c288715eSAdhemerval Zanella COMPILER_RT_ABI NOINLINE float __extendhfsf2(src_t a) {
16f1ac850eSAhmed Bougacha   return __extendXfYf2__(a);
17f1ac850eSAhmed Bougacha }
18f1ac850eSAhmed Bougacha 
__gnu_h2f_ieee(src_t a)19*c288715eSAdhemerval Zanella COMPILER_RT_ABI float __gnu_h2f_ieee(src_t a) { return __extendhfsf2(a); }
2036ac5ddfSSaleem Abdulrasool 
2136ac5ddfSSaleem Abdulrasool #if defined(__ARM_EABI__)
220d586d06SEli Friedman #if defined(COMPILER_RT_ARMHF_TARGET)
__aeabi_h2f(src_t a)23*c288715eSAdhemerval Zanella AEABI_RTABI float __aeabi_h2f(src_t a) { return __extendhfsf2(a); }
240d586d06SEli Friedman #else
2584da0e1bSPetr Hosek COMPILER_RT_ALIAS(__extendhfsf2, __aeabi_h2f)
2636ac5ddfSSaleem Abdulrasool #endif
270d586d06SEli Friedman #endif
28