xref: /llvm-project/libc/cmake/modules/compiler_features/check_float16_conversion.cpp (revision 127349fcba81646389e4b8202b35405a5fdbef47)
1*127349fcSOverMighty #include "include/llvm-libc-macros/float16-macros.h"
2*127349fcSOverMighty #include "include/llvm-libc-types/float128.h"
3*127349fcSOverMighty 
4*127349fcSOverMighty #ifndef LIBC_TYPES_HAS_FLOAT16
5*127349fcSOverMighty #error unsupported
6*127349fcSOverMighty #endif
7*127349fcSOverMighty 
8*127349fcSOverMighty _Float16 cvt_from_float(float x) { return static_cast<_Float16>(x); }
9*127349fcSOverMighty 
10*127349fcSOverMighty _Float16 cvt_from_double(double x) { return static_cast<_Float16>(x); }
11*127349fcSOverMighty 
12*127349fcSOverMighty _Float16 cvt_from_long_double(long double x) {
13*127349fcSOverMighty   return static_cast<_Float16>(x);
14*127349fcSOverMighty }
15*127349fcSOverMighty 
16*127349fcSOverMighty #ifdef LIBC_TYPES_HAS_FLOAT128
17*127349fcSOverMighty _Float16 cvt_from_float128(float128 x) { return static_cast<_Float16>(x); }
18*127349fcSOverMighty #endif
19*127349fcSOverMighty 
20*127349fcSOverMighty float cvt_to_float(_Float16 x) { return x; }
21*127349fcSOverMighty 
22*127349fcSOverMighty double cvt_to_double(_Float16 x) { return x; }
23*127349fcSOverMighty 
24*127349fcSOverMighty long double cvt_to_long_double(_Float16 x) { return x; }
25*127349fcSOverMighty 
26*127349fcSOverMighty #ifdef LIBC_TYPES_HAS_FLOAT128
27*127349fcSOverMighty float128 cvt_to_float128(_Float16 x) { return x; }
28*127349fcSOverMighty #endif
29*127349fcSOverMighty 
30*127349fcSOverMighty extern "C" void _start() {}
31