1ef84fd3bSjoerg //===-- lib/extendhfsf2.c - half -> single conversion -------------*- C -*-===// 2ef84fd3bSjoerg // 3ef84fd3bSjoerg // The LLVM Compiler Infrastructure 4ef84fd3bSjoerg // 5ef84fd3bSjoerg // This file is dual licensed under the MIT and the University of Illinois Open 6ef84fd3bSjoerg // Source Licenses. See LICENSE.TXT for details. 7ef84fd3bSjoerg // 8ef84fd3bSjoerg //===----------------------------------------------------------------------===// 9ef84fd3bSjoerg // 10ef84fd3bSjoerg 11ef84fd3bSjoerg #define SRC_HALF 12ef84fd3bSjoerg #define DST_SINGLE 13ef84fd3bSjoerg #include "fp_extend_impl.inc" 14ef84fd3bSjoerg 15ef84fd3bSjoerg // Use a forwarding definition and noinline to implement a poor man's alias, 16ef84fd3bSjoerg // as there isn't a good cross-platform way of defining one. __extendhfsf2(uint16_t a)17ef84fd3bSjoergCOMPILER_RT_ABI NOINLINE float __extendhfsf2(uint16_t a) { 18ef84fd3bSjoerg return __extendXfYf2__(a); 19ef84fd3bSjoerg } 20ef84fd3bSjoerg __gnu_h2f_ieee(uint16_t a)21ef84fd3bSjoergCOMPILER_RT_ABI float __gnu_h2f_ieee(uint16_t a) { 22ef84fd3bSjoerg return __extendhfsf2(a); 23ef84fd3bSjoerg } 243044ee7eSrin 253044ee7eSrin #if defined(__ARM_EABI__) 26*d3143459Srin #if defined(COMPILER_RT_ARMHF_TARGET) __aeabi_h2f(uint16_t a)273044ee7eSrinAEABI_RTABI float __aeabi_h2f(uint16_t a) { 283044ee7eSrin return __extendhfsf2(a); 293044ee7eSrin } 30*d3143459Srin #else 31*d3143459Srin AEABI_RTABI float __aeabi_h2f(uint16_t a) COMPILER_RT_ALIAS(__extendhfsf2); 323044ee7eSrin #endif 33*d3143459Srin #endif 34