Coverage Report

Created: 2026-11-12 06:35

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/WasmEdge/include/experimental/bit.hpp
Line
Count
Source
1
// SPDX-License-Identifier: CC0-1.0
2
///
3
// bit - A C++20 implementation of std::bit_cast
4
//
5
// To the extent possible under law, the author(s) have dedicated all
6
// copyright and related and neighboring rights to this software to the
7
// public domain worldwide. This software is distributed without any warranty.
8
//
9
// You should have received a copy of the CC0 Public Domain Dedication
10
// along with this software. If not, see
11
// <http://creativecommons.org/publicdomain/zero/1.0/>.
12
///
13
14
#pragma once
15
16
#include <cstring>
17
#include <type_traits>
18
#if __cplusplus > 201703L && __has_include(<bit>)
19
#include <bit>
20
#endif
21
22
#if defined(__cpp_lib_bit_cast) && __cpp_lib_bit_cast >= 201806L
23
namespace cxx20 {
24
using std::bit_cast;
25
} // namespace cxx20
26
#else
27
28
#if defined(__has_builtin)
29
#if __has_builtin(__builtin_bit_cast)
30
#define CXX20_HAS_BUILTIN_BIT_CAST 1
31
#endif
32
#endif
33
#if !defined(CXX20_HAS_BUILTIN_BIT_CAST) && defined(_MSC_VER) &&               \
34
    _MSC_VER >= 1927
35
#define CXX20_HAS_BUILTIN_BIT_CAST 1
36
#endif
37
38
namespace cxx20 {
39
40
template <class To, class From>
41
#if defined(CXX20_HAS_BUILTIN_BIT_CAST)
42
constexpr
43
#endif
44
    std::enable_if_t<sizeof(To) == sizeof(From) &&
45
                         std::is_trivially_copyable_v<To> &&
46
                         std::is_trivially_copyable_v<From>,
47
0
                     To> bit_cast(const From &Src) noexcept {
48
0
#if defined(CXX20_HAS_BUILTIN_BIT_CAST)
49
0
  return __builtin_bit_cast(To, Src);
50
#else
51
  static_assert(std::is_trivially_default_constructible_v<To>);
52
  To Dst;
53
  std::memcpy(static_cast<void *>(&Dst), &Src, sizeof(To));
54
  return Dst;
55
#endif
56
0
}
Unexecuted instantiation: _ZN5cxx208bit_castIN8WasmEdge7ValTypeEmEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS5_Esr3stdE23is_trivially_copyable_vIS6_EES5_E4typeERKS6_
Unexecuted instantiation: _ZN5cxx208bit_castINSt3__15arrayImLm2EEEDv2_mEENS1_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS6_Esr3stdE23is_trivially_copyable_vIS7_EES6_E4typeERKS7_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIiNS2_6detail14vector_ext_abiILi4EEEEENS3_IsNS5_ILi8EEEEEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISC_Esr3stdE23is_trivially_copyable_vISD_EESC_E4typeERKSD_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIfNS2_6detail14vector_ext_abiILi4EEEEENSt3__15arrayINS3_IfNS5_ILi2EEEEELm2EEEEENS8_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castINSt3__15arrayIN5cxx264simd9basic_vecIfNS4_6detail14vector_ext_abiILi2EEEEELm2EEENS5_IfNS7_ILi4EEEEEEENS1_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castIfjEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS3_Esr3stdE23is_trivially_copyable_vIS4_EES3_E4typeERKS4_
Unexecuted instantiation: _ZN5cxx208bit_castIjfEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS3_Esr3stdE23is_trivially_copyable_vIS4_EES3_E4typeERKS4_
Unexecuted instantiation: _ZN5cxx208bit_castIdmEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS3_Esr3stdE23is_trivially_copyable_vIS4_EES3_E4typeERKS4_
Unexecuted instantiation: _ZN5cxx208bit_castImdEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS3_Esr3stdE23is_trivially_copyable_vIS4_EES3_E4typeERKS4_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIaNS2_6detail14vector_ext_abiILi8EEEEEmEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISA_Esr3stdE23is_trivially_copyable_vISB_EESA_E4typeERKSB_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIhNS2_6detail14vector_ext_abiILi8EEEEEmEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISA_Esr3stdE23is_trivially_copyable_vISB_EESA_E4typeERKSB_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIsNS2_6detail14vector_ext_abiILi4EEEEEmEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISA_Esr3stdE23is_trivially_copyable_vISB_EESA_E4typeERKSB_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecItNS2_6detail14vector_ext_abiILi4EEEEEmEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISA_Esr3stdE23is_trivially_copyable_vISB_EESA_E4typeERKSB_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIiNS2_6detail14vector_ext_abiILi2EEEEEmEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISA_Esr3stdE23is_trivially_copyable_vISB_EESA_E4typeERKSB_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIjNS2_6detail14vector_ext_abiILi2EEEEEmEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISA_Esr3stdE23is_trivially_copyable_vISB_EESA_E4typeERKSB_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIhNS2_6detail14vector_ext_abiILi16EEEEENS3_IaS6_EEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISB_Esr3stdE23is_trivially_copyable_vISC_EESB_E4typeERKSC_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIaNS2_6detail14vector_ext_abiILi16EEEEES7_EENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISA_Esr3stdE23is_trivially_copyable_vISB_EESA_E4typeERKSB_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecItNS2_6detail14vector_ext_abiILi8EEEEENS3_IsS6_EEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISB_Esr3stdE23is_trivially_copyable_vISC_EESB_E4typeERKSC_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIsNS2_6detail14vector_ext_abiILi8EEEEES7_EENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISA_Esr3stdE23is_trivially_copyable_vISB_EESA_E4typeERKSB_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIjNS2_6detail14vector_ext_abiILi4EEEEENS3_IiS6_EEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISB_Esr3stdE23is_trivially_copyable_vISC_EESB_E4typeERKSC_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIiNS2_6detail14vector_ext_abiILi4EEEEES7_EENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISA_Esr3stdE23is_trivially_copyable_vISB_EESA_E4typeERKSB_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecImNS2_6detail14vector_ext_abiILi2EEEEENS3_IlS6_EEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISB_Esr3stdE23is_trivially_copyable_vISC_EESB_E4typeERKSC_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIlNS2_6detail14vector_ext_abiILi2EEEEES7_EENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISA_Esr3stdE23is_trivially_copyable_vISB_EESA_E4typeERKSB_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIfNS2_6detail14vector_ext_abiILi4EEEEENS3_IiS6_EEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISB_Esr3stdE23is_trivially_copyable_vISC_EESB_E4typeERKSC_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIdNS2_6detail14vector_ext_abiILi2EEEEENS3_IlS6_EEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISB_Esr3stdE23is_trivially_copyable_vISC_EESB_E4typeERKSC_
Unexecuted instantiation: _ZN5cxx208bit_castIDv2_xDv16_aEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS5_Esr3stdE23is_trivially_copyable_vIS6_EES5_E4typeERKS6_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIaNS2_6detail14vector_ext_abiILi16EEEEENSt3__15arrayINS3_IaNS5_ILi8EEEEELm2EEEEENS8_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIhNS2_6detail14vector_ext_abiILi16EEEEENSt3__15arrayINS3_IhNS5_ILi8EEEEELm2EEEEENS8_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIaNS2_6detail14vector_ext_abiILi16EEEEENS3_IhS6_EEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISB_Esr3stdE23is_trivially_copyable_vISC_EESB_E4typeERKSC_
Unexecuted instantiation: _ZN5cxx208bit_castIDv2_xDv8_sEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS5_Esr3stdE23is_trivially_copyable_vIS6_EES5_E4typeERKS6_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIsNS2_6detail14vector_ext_abiILi8EEEEENSt3__15arrayINS3_IsNS5_ILi4EEEEELm2EEEEENS8_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecItNS2_6detail14vector_ext_abiILi8EEEEENSt3__15arrayINS3_ItNS5_ILi4EEEEELm2EEEEENS8_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castINSt3__15arrayIN5cxx264simd9basic_vecIaNS4_6detail14vector_ext_abiILi8EEEEELm2EEENS5_IaNS7_ILi16EEEEEEENS1_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castINSt3__15arrayIN5cxx264simd9basic_vecIhNS4_6detail14vector_ext_abiILi8EEEEELm2EEENS5_IhNS7_ILi16EEEEEEENS1_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIsNS2_6detail14vector_ext_abiILi8EEEEENS3_ItS6_EEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISB_Esr3stdE23is_trivially_copyable_vISC_EESB_E4typeERKSC_
Unexecuted instantiation: _ZN5cxx208bit_castIDv2_xDv4_iEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS5_Esr3stdE23is_trivially_copyable_vIS6_EES5_E4typeERKS6_
Unexecuted instantiation: _ZN5cxx208bit_castINSt3__15arrayIN5cxx264simd9basic_vecIsNS4_6detail14vector_ext_abiILi4EEEEELm2EEENS5_IsNS7_ILi8EEEEEEENS1_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castINSt3__15arrayIN5cxx264simd9basic_vecItNS4_6detail14vector_ext_abiILi4EEEEELm2EEENS5_ItNS7_ILi8EEEEEEENS1_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castIDv2_xDv2_lEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS5_Esr3stdE23is_trivially_copyable_vIS6_EES5_E4typeERKS6_
Unexecuted instantiation: _ZN5cxx208bit_castINSt3__15arrayIN5cxx264simd9basic_vecIiNS4_6detail14vector_ext_abiILi2EEEEELm2EEENS5_IiNS7_ILi4EEEEEEENS1_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castINSt3__15arrayIN5cxx264simd9basic_vecIjNS4_6detail14vector_ext_abiILi2EEEEELm2EEENS5_IjNS7_ILi4EEEEEEENS1_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIfNS2_6detail14vector_ext_abiILi4EEEEENS3_IjS6_EEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISB_Esr3stdE23is_trivially_copyable_vISC_EESB_E4typeERKSC_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIjNS2_6detail14vector_ext_abiILi4EEEEENS3_IfS6_EEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISB_Esr3stdE23is_trivially_copyable_vISC_EESB_E4typeERKSC_
Unexecuted instantiation: _ZN5cxx208bit_castIDv4_fDv2_xEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS5_Esr3stdE23is_trivially_copyable_vIS6_EES5_E4typeERKS6_
Unexecuted instantiation: _ZN5cxx208bit_castIDv2_xDv4_fEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS5_Esr3stdE23is_trivially_copyable_vIS6_EES5_E4typeERKS6_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIdNS2_6detail14vector_ext_abiILi2EEEEENS3_ImS6_EEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISB_Esr3stdE23is_trivially_copyable_vISC_EESB_E4typeERKSC_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecImNS2_6detail14vector_ext_abiILi2EEEEENS3_IdS6_EEEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISB_Esr3stdE23is_trivially_copyable_vISC_EESB_E4typeERKSC_
Unexecuted instantiation: _ZN5cxx208bit_castIDv2_dDv2_xEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS5_Esr3stdE23is_trivially_copyable_vIS6_EES5_E4typeERKS6_
Unexecuted instantiation: _ZN5cxx208bit_castIDv2_xDv2_dEENSt3__19enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vIS5_Esr3stdE23is_trivially_copyable_vIS6_EES5_E4typeERKS6_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIiNS2_6detail14vector_ext_abiILi4EEEEENSt3__15arrayINS3_IiNS5_ILi2EEEEELm2EEEEENS8_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
Unexecuted instantiation: _ZN5cxx208bit_castIN5cxx264simd9basic_vecIjNS2_6detail14vector_ext_abiILi4EEEEENSt3__15arrayINS3_IjNS5_ILi2EEEEELm2EEEEENS8_9enable_ifIXaaaaeqstT_stT0_sr3stdE23is_trivially_copyable_vISE_Esr3stdE23is_trivially_copyable_vISF_EESE_E4typeERKSF_
57
58
} // namespace cxx20
59
60
#undef CXX20_HAS_BUILTIN_BIT_CAST
61
#endif