Home | History | Annotate | Line # | Download | only in builtins
      1  1.1  joerg //===-- lib/truncsfhf2.c - single -> half conversion --------------*- C -*-===//
      2  1.1  joerg //
      3  1.1  joerg //                     The LLVM Compiler Infrastructure
      4  1.1  joerg //
      5  1.1  joerg // This file is dual licensed under the MIT and the University of Illinois Open
      6  1.1  joerg // Source Licenses. See LICENSE.TXT for details.
      7  1.1  joerg //
      8  1.1  joerg //===----------------------------------------------------------------------===//
      9  1.1  joerg 
     10  1.1  joerg #define SRC_SINGLE
     11  1.1  joerg #define DST_HALF
     12  1.1  joerg #include "fp_trunc_impl.inc"
     13  1.1  joerg 
     14  1.1  joerg // Use a forwarding definition and noinline to implement a poor man's alias,
     15  1.1  joerg // as there isn't a good cross-platform way of defining one.
     16  1.1  joerg COMPILER_RT_ABI NOINLINE uint16_t __truncsfhf2(float a) {
     17  1.1  joerg     return __truncXfYf2__(a);
     18  1.1  joerg }
     19  1.1  joerg 
     20  1.1  joerg COMPILER_RT_ABI uint16_t __gnu_f2h_ieee(float a) {
     21  1.1  joerg     return __truncsfhf2(a);
     22  1.1  joerg }
     23  1.2    rin 
     24  1.2    rin #if defined(__ARM_EABI__)
     25  1.3    rin #if defined(COMPILER_RT_ARMHF_TARGET)
     26  1.2    rin AEABI_RTABI uint16_t __aeabi_f2h(float a) {
     27  1.2    rin   return __truncsfhf2(a);
     28  1.2    rin }
     29  1.3    rin #else
     30  1.3    rin AEABI_RTABI uint16_t __aeabi_f2h(float a) COMPILER_RT_ALIAS(__truncsfhf2);
     31  1.3    rin #endif
     32  1.2    rin #endif
     33