diff options
author | pg <pg@yandex-team.com> | 2024-10-15 20:39:29 +0300 |
---|---|---|
committer | pg <pg@yandex-team.com> | 2024-10-15 20:56:01 +0300 |
commit | 8b3352ece42531d21471d401ce780815b55c7805 (patch) | |
tree | 38e86b62971ea2fdb64ddd606504e545d396a0e1 /contrib/libs/cxxsupp/builtins/fp_trunc.h | |
parent | febc5cdb4070ff4e1cde3c26e6cf9f8785401b00 (diff) | |
download | ydb-8b3352ece42531d21471d401ce780815b55c7805.tar.gz |
Untitled commit
commit_hash:113638be759279dc1f00cbf6ee35992179a16bbc
Diffstat (limited to 'contrib/libs/cxxsupp/builtins/fp_trunc.h')
-rw-r--r-- | contrib/libs/cxxsupp/builtins/fp_trunc.h | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/contrib/libs/cxxsupp/builtins/fp_trunc.h b/contrib/libs/cxxsupp/builtins/fp_trunc.h index d5e79bb5b86..91f614528ab 100644 --- a/contrib/libs/cxxsupp/builtins/fp_trunc.h +++ b/contrib/libs/cxxsupp/builtins/fp_trunc.h @@ -1,9 +1,8 @@ //=== lib/fp_trunc.h - high precision -> low precision conversion *- C -*-===// // -// The LLVM Compiler Infrastructure -// -// This file is dual licensed under the MIT and the University of Illinois Open -// Source Licenses. See LICENSE.TXT for details. +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // @@ -36,7 +35,7 @@ static const int srcSigBits = 112; #else #error Source should be double precision or quad precision! -#endif //end source precision +#endif // end source precision #if defined DST_DOUBLE typedef double dst_t; @@ -51,26 +50,42 @@ typedef uint32_t dst_rep_t; static const int dstSigBits = 23; #elif defined DST_HALF +#ifdef COMPILER_RT_HAS_FLOAT16 +typedef _Float16 dst_t; +#else typedef uint16_t dst_t; +#endif typedef uint16_t dst_rep_t; #define DST_REP_C UINT16_C static const int dstSigBits = 10; +#elif defined DST_BFLOAT +typedef __bf16 dst_t; +typedef uint16_t dst_rep_t; +#define DST_REP_C UINT16_C +static const int dstSigBits = 7; + #else #error Destination should be single precision or double precision! -#endif //end destination precision +#endif // end destination precision // End of specialization parameters. Two helper routines for conversion to and // from the representation of floating-point data as integer values follow. static __inline src_rep_t srcToRep(src_t x) { - const union { src_t f; src_rep_t i; } rep = {.f = x}; - return rep.i; + const union { + src_t f; + src_rep_t i; + } rep = {.f = x}; + return rep.i; } static __inline dst_t dstFromRep(dst_rep_t x) { - const union { dst_t f; dst_rep_t i; } rep = {.i = x}; - return rep.f; + const union { + dst_t f; + dst_rep_t i; + } rep = {.i = x}; + return rep.f; } #endif // FP_TRUNC_HEADER |