1ef84fd3bSjoerg //===-- lib/truncsfhf2.c - single -> half 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 #define SRC_SINGLE 11ef84fd3bSjoerg #define DST_HALF 12ef84fd3bSjoerg #include "fp_trunc_impl.inc" 13ef84fd3bSjoerg 14ef84fd3bSjoerg // Use a forwarding definition and noinline to implement a poor man's alias, 15ef84fd3bSjoerg // as there isn't a good cross-platform way of defining one. __truncsfhf2(float a)16ef84fd3bSjoergCOMPILER_RT_ABI NOINLINE uint16_t __truncsfhf2(float a) { 17ef84fd3bSjoerg return __truncXfYf2__(a); 18ef84fd3bSjoerg } 19ef84fd3bSjoerg __gnu_f2h_ieee(float a)20ef84fd3bSjoergCOMPILER_RT_ABI uint16_t __gnu_f2h_ieee(float a) { 21ef84fd3bSjoerg return __truncsfhf2(a); 22ef84fd3bSjoerg } 233044ee7eSrin 243044ee7eSrin #if defined(__ARM_EABI__) 25*d3143459Srin #if defined(COMPILER_RT_ARMHF_TARGET) __aeabi_f2h(float a)263044ee7eSrinAEABI_RTABI uint16_t __aeabi_f2h(float a) { 273044ee7eSrin return __truncsfhf2(a); 283044ee7eSrin } 29*d3143459Srin #else 30*d3143459Srin AEABI_RTABI uint16_t __aeabi_f2h(float a) COMPILER_RT_ALIAS(__truncsfhf2); 313044ee7eSrin #endif 32*d3143459Srin #endif 33