Merge branch 'development'

# Conflicts:
#	support/Release notes.txt
This commit is contained in:
John Wellbelove 2023-12-04 09:02:46 +00:00
commit b34b6f3645
5 changed files with 211 additions and 48 deletions

View File

@ -2216,20 +2216,31 @@ namespace etl
{
public:
ETL_STATIC_ASSERT(NBits <= etl::integral_limits<T>::bits, "Mask exceeds type size");
static ETL_CONSTANT T value = static_cast<T>(etl::max_value_for_nbits<NBits>::value);
};
template <typename T, size_t NBits>
ETL_CONSTANT T lsb_mask<T, NBits>::value;
//***********************************
template <typename T, size_t NBits>
ETL_CONSTEXPR T make_lsb_mask()
{
ETL_STATIC_ASSERT(NBits <= etl::integral_limits<T>::bits, "Mask exceeds type size");
return lsb_mask<T, NBits>::value;
}
//***********************************
template <typename T>
ETL_CONSTEXPR14 T make_lsb_mask(size_t nbits)
ETL_CONSTEXPR T make_lsb_mask(size_t nbits)
{
typedef typename etl::make_unsigned<T>::type type;
return (nbits == etl::integral_limits<type>::bits) ? static_cast<T>(etl::integral_limits<type>::max)
: static_cast<T>((static_cast<type>(1U) << nbits) - 1U);
return (nbits == 0U) ? static_cast<T>(0)
: static_cast<T>(static_cast<type>(~0) >> (etl::integral_limits<type>::bits - nbits));
}
//***********************************
@ -2238,6 +2249,8 @@ namespace etl
{
public:
ETL_STATIC_ASSERT(NBits <= etl::integral_limits<T>::bits, "Mask exceeds type size");
static ETL_CONSTANT T value = static_cast<T>(etl::reverse_bits_const<T, lsb_mask<T, NBits>::value>::value);
};
@ -2246,9 +2259,21 @@ namespace etl
//***********************************
template <typename T>
ETL_CONSTEXPR14 T make_msb_mask(size_t nbits)
ETL_CONSTEXPR T make_msb_mask(size_t nbits)
{
return static_cast<T>(etl::reverse_bits(make_lsb_mask<T>(nbits)));
typedef typename etl::make_unsigned<T>::type type;
return (nbits == 0U) ? static_cast<T>(0)
: static_cast<T>(static_cast<type>(~0) << (etl::integral_limits<type>::bits - nbits));
}
//***********************************
template <typename T, size_t NBits>
ETL_CONSTEXPR T make_msb_mask()
{
ETL_STATIC_ASSERT(NBits <= etl::integral_limits<T>::bits, "Mask exceeds type size");
return msb_mask<T, NBits>::value;
}
//***************************************************************************

View File

@ -2,6 +2,8 @@
20.38.7
Updated CI scripts
Refactored GitHub CI workflows
Updated build script text
Added additional etl::make_lsb_mask and etl::make_msb_mask binary functions
#779 hash.h: warnings produced with -Wfloat-equal
#781 etl::multi_span::iterator::operator *() fails if first span is empty
#780 endian enum_type produces useless-cast warnings

View File

@ -32,7 +32,7 @@ PrintHeader()
echo " Configuration : $configuration_name " | tee -a log.txt
echo " Compiler : $compiler " | tee -a log.txt
echo " Language standard : C++$cxx_standard " | tee -a log.txt
echo " ETL Version : $etl_version " | tee -a log.txt
echo " ETL version : $etl_version " | tee -a log.txt
echo " Git branch : $(ParseGitBranch) " | tee -a log.txt
echo " Processes : ${CMAKE_BUILD_PARALLEL_LEVEL} " | tee -a log.txt
echo "============================================================================" | tee -a log.txt

View File

@ -43,7 +43,7 @@ PrintHeader()
echo " Language standard : C++$cxx_standard " | tee -a log.txt
echo " Optimisation : $opt " | tee -a log.txt
echo " Sanitizer : $sanitize " | tee -a log.txt
echo " ETL Version : $etl_version " | tee -a log.txt
echo " ETL version : $etl_version " | tee -a log.txt
echo " Git branch : $(ParseGitBranch) " | tee -a log.txt
echo " Processes : ${CMAKE_BUILD_PARALLEL_LEVEL} " | tee -a log.txt
echo "============================================================================" | tee -a log.txt

View File

@ -2584,8 +2584,8 @@ namespace
//*************************************************************************
TEST(test_lsb_mask_64_bit)
{
CHECK(int64_t(0x0000000000000000) == (etl::lsb_mask<int64_t, 0>::value));
CHECK(int64_t(0x00000000000000FF) == (etl::lsb_mask<int64_t, 8>::value));
CHECK(int64_t(0x0000000000000000) == (etl::lsb_mask<int64_t, 0>::value));
CHECK(int64_t(0x00000000000000FF) == (etl::lsb_mask<int64_t, 8>::value));
CHECK(int64_t(0x000000000000FFFF) == (etl::lsb_mask<int64_t, 16>::value));
CHECK(int64_t(0x0000000000FFFFFF) == (etl::lsb_mask<int64_t, 24>::value));
CHECK(int64_t(0x00000000FFFFFFFF) == (etl::lsb_mask<int64_t, 32>::value));
@ -2598,15 +2598,15 @@ namespace
//*************************************************************************
TEST(test_make_lsb_mask_8_bit)
{
ETL_CONSTEXPR14 int8_t mask0 = etl::make_lsb_mask<int8_t>(0);
ETL_CONSTEXPR14 int8_t mask1 = etl::make_lsb_mask<int8_t>(1);
ETL_CONSTEXPR14 int8_t mask2 = etl::make_lsb_mask<int8_t>(2);
ETL_CONSTEXPR14 int8_t mask3 = etl::make_lsb_mask<int8_t>(3);
ETL_CONSTEXPR14 int8_t mask4 = etl::make_lsb_mask<int8_t>(4);
ETL_CONSTEXPR14 int8_t mask5 = etl::make_lsb_mask<int8_t>(5);
ETL_CONSTEXPR14 int8_t mask6 = etl::make_lsb_mask<int8_t>(6);
ETL_CONSTEXPR14 int8_t mask7 = etl::make_lsb_mask<int8_t>(7);
ETL_CONSTEXPR14 int8_t mask8 = etl::make_lsb_mask<int8_t>(8);
ETL_CONSTEXPR int8_t mask0 = etl::make_lsb_mask<int8_t>(0);
ETL_CONSTEXPR int8_t mask1 = etl::make_lsb_mask<int8_t>(1);
ETL_CONSTEXPR int8_t mask2 = etl::make_lsb_mask<int8_t>(2);
ETL_CONSTEXPR int8_t mask3 = etl::make_lsb_mask<int8_t>(3);
ETL_CONSTEXPR int8_t mask4 = etl::make_lsb_mask<int8_t>(4);
ETL_CONSTEXPR int8_t mask5 = etl::make_lsb_mask<int8_t>(5);
ETL_CONSTEXPR int8_t mask6 = etl::make_lsb_mask<int8_t>(6);
ETL_CONSTEXPR int8_t mask7 = etl::make_lsb_mask<int8_t>(7);
ETL_CONSTEXPR int8_t mask8 = etl::make_lsb_mask<int8_t>(8);
CHECK(int8_t(etl::b00000000) == mask0);
CHECK(int8_t(etl::b00000001) == mask1);
@ -2629,18 +2629,52 @@ namespace
CHECK(int8_t(etl::b11111111) == etl::make_lsb_mask<int8_t>(8));
}
//*************************************************************************
TEST(test_make_lsb_mask_template_nbits_8_bit)
{
ETL_CONSTEXPR int8_t mask0 = etl::make_lsb_mask<int8_t, 0>();
ETL_CONSTEXPR int8_t mask1 = etl::make_lsb_mask<int8_t, 1>();
ETL_CONSTEXPR int8_t mask2 = etl::make_lsb_mask<int8_t, 2>();
ETL_CONSTEXPR int8_t mask3 = etl::make_lsb_mask<int8_t, 3>();
ETL_CONSTEXPR int8_t mask4 = etl::make_lsb_mask<int8_t, 4>();
ETL_CONSTEXPR int8_t mask5 = etl::make_lsb_mask<int8_t, 5>();
ETL_CONSTEXPR int8_t mask6 = etl::make_lsb_mask<int8_t, 6>();
ETL_CONSTEXPR int8_t mask7 = etl::make_lsb_mask<int8_t, 7>();
ETL_CONSTEXPR int8_t mask8 = etl::make_lsb_mask<int8_t, 8>();
CHECK(int8_t(etl::b00000000) == mask0);
CHECK(int8_t(etl::b00000001) == mask1);
CHECK(int8_t(etl::b00000011) == mask2);
CHECK(int8_t(etl::b00000111) == mask3);
CHECK(int8_t(etl::b00001111) == mask4);
CHECK(int8_t(etl::b00011111) == mask5);
CHECK(int8_t(etl::b00111111) == mask6);
CHECK(int8_t(etl::b01111111) == mask7);
CHECK(int8_t(etl::b11111111) == mask8);
CHECK(int8_t(etl::b00000000) == (etl::make_lsb_mask<int8_t, 0>()));
CHECK(int8_t(etl::b00000001) == (etl::make_lsb_mask<int8_t, 1>()));
CHECK(int8_t(etl::b00000011) == (etl::make_lsb_mask<int8_t, 2>()));
CHECK(int8_t(etl::b00000111) == (etl::make_lsb_mask<int8_t, 3>()));
CHECK(int8_t(etl::b00001111) == (etl::make_lsb_mask<int8_t, 4>()));
CHECK(int8_t(etl::b00011111) == (etl::make_lsb_mask<int8_t, 5>()));
CHECK(int8_t(etl::b00111111) == (etl::make_lsb_mask<int8_t, 6>()));
CHECK(int8_t(etl::b01111111) == (etl::make_lsb_mask<int8_t, 7>()));
CHECK(int8_t(etl::b11111111) == (etl::make_lsb_mask<int8_t, 8>()));
}
//*************************************************************************
TEST(test_make_lsb_mask_64_bit)
{
ETL_CONSTEXPR14 int64_t mask0 = etl::make_lsb_mask<int64_t>(0);
ETL_CONSTEXPR14 int64_t mask1 = etl::make_lsb_mask<int64_t>(8);
ETL_CONSTEXPR14 int64_t mask2 = etl::make_lsb_mask<int64_t>(16);
ETL_CONSTEXPR14 int64_t mask3 = etl::make_lsb_mask<int64_t>(24);
ETL_CONSTEXPR14 int64_t mask4 = etl::make_lsb_mask<int64_t>(32);
ETL_CONSTEXPR14 int64_t mask5 = etl::make_lsb_mask<int64_t>(40);
ETL_CONSTEXPR14 int64_t mask6 = etl::make_lsb_mask<int64_t>(48);
ETL_CONSTEXPR14 int64_t mask7 = etl::make_lsb_mask<int64_t>(56);
ETL_CONSTEXPR14 int64_t mask8 = etl::make_lsb_mask<int64_t>(64);
ETL_CONSTEXPR int64_t mask0 = etl::make_lsb_mask<int64_t>(0);
ETL_CONSTEXPR int64_t mask1 = etl::make_lsb_mask<int64_t>(8);
ETL_CONSTEXPR int64_t mask2 = etl::make_lsb_mask<int64_t>(16);
ETL_CONSTEXPR int64_t mask3 = etl::make_lsb_mask<int64_t>(24);
ETL_CONSTEXPR int64_t mask4 = etl::make_lsb_mask<int64_t>(32);
ETL_CONSTEXPR int64_t mask5 = etl::make_lsb_mask<int64_t>(40);
ETL_CONSTEXPR int64_t mask6 = etl::make_lsb_mask<int64_t>(48);
ETL_CONSTEXPR int64_t mask7 = etl::make_lsb_mask<int64_t>(56);
ETL_CONSTEXPR int64_t mask8 = etl::make_lsb_mask<int64_t>(64);
CHECK_EQUAL(int64_t(0x0000000000000000), mask0);
CHECK_EQUAL(int64_t(0x00000000000000FF), mask1);
@ -2664,7 +2698,41 @@ namespace
}
//*************************************************************************
TEST(test_msb_mask_8_bit_8_bit)
TEST(test_make_lsb_mask_template_nbits_64_bit)
{
ETL_CONSTEXPR int64_t mask0 = etl::make_lsb_mask<int64_t, 0>();
ETL_CONSTEXPR int64_t mask1 = etl::make_lsb_mask<int64_t, 8>();
ETL_CONSTEXPR int64_t mask2 = etl::make_lsb_mask<int64_t, 16>();
ETL_CONSTEXPR int64_t mask3 = etl::make_lsb_mask<int64_t, 24>();
ETL_CONSTEXPR int64_t mask4 = etl::make_lsb_mask<int64_t, 32>();
ETL_CONSTEXPR int64_t mask5 = etl::make_lsb_mask<int64_t, 40>();
ETL_CONSTEXPR int64_t mask6 = etl::make_lsb_mask<int64_t, 48>();
ETL_CONSTEXPR int64_t mask7 = etl::make_lsb_mask<int64_t, 56>();
ETL_CONSTEXPR int64_t mask8 = etl::make_lsb_mask<int64_t, 64>();
CHECK_EQUAL(int64_t(0x0000000000000000), mask0);
CHECK_EQUAL(int64_t(0x00000000000000FF), mask1);
CHECK_EQUAL(int64_t(0x000000000000FFFF), mask2);
CHECK_EQUAL(int64_t(0x0000000000FFFFFF), mask3);
CHECK_EQUAL(int64_t(0x00000000FFFFFFFF), mask4);
CHECK_EQUAL(int64_t(0x000000FFFFFFFFFF), mask5);
CHECK_EQUAL(int64_t(0x0000FFFFFFFFFFFF), mask6);
CHECK_EQUAL(int64_t(0x00FFFFFFFFFFFFFF), mask7);
CHECK_EQUAL(int64_t(0xFFFFFFFFFFFFFFFF), mask8);
CHECK_EQUAL(int64_t(0x0000000000000000), (etl::make_lsb_mask<int64_t, 0>()));
CHECK_EQUAL(int64_t(0x00000000000000FF), (etl::make_lsb_mask<int64_t, 8>()));
CHECK_EQUAL(int64_t(0x000000000000FFFF), (etl::make_lsb_mask<int64_t, 16>()));
CHECK_EQUAL(int64_t(0x0000000000FFFFFF), (etl::make_lsb_mask<int64_t, 24>()));
CHECK_EQUAL(int64_t(0x00000000FFFFFFFF), (etl::make_lsb_mask<int64_t, 32>()));
CHECK_EQUAL(int64_t(0x000000FFFFFFFFFF), (etl::make_lsb_mask<int64_t, 40>()));
CHECK_EQUAL(int64_t(0x0000FFFFFFFFFFFF), (etl::make_lsb_mask<int64_t, 48>()));
CHECK_EQUAL(int64_t(0x00FFFFFFFFFFFFFF), (etl::make_lsb_mask<int64_t, 56>()));
CHECK_EQUAL(int64_t(0xFFFFFFFFFFFFFFFF), (etl::make_lsb_mask<int64_t, 64>()));
}
//*************************************************************************
TEST(test_msb_mask_8_bit)
{
CHECK(int8_t(etl::b00000000) == (etl::msb_mask<int8_t, 0>::value));
CHECK(int8_t(etl::b10000000) == (etl::msb_mask<int8_t, 1>::value));
@ -2680,8 +2748,8 @@ namespace
//*************************************************************************
TEST(test_msb_mask_64_bit)
{
CHECK(int64_t(0x0000000000000000) == (etl::msb_mask<int64_t, 0>::value));
CHECK(int64_t(0xFF00000000000000) == (etl::msb_mask<int64_t, 8>::value));
CHECK(int64_t(0x0000000000000000) == (etl::msb_mask<int64_t, 0>::value));
CHECK(int64_t(0xFF00000000000000) == (etl::msb_mask<int64_t, 8>::value));
CHECK(int64_t(0xFFFF000000000000) == (etl::msb_mask<int64_t, 16>::value));
CHECK(int64_t(0xFFFFFF0000000000) == (etl::msb_mask<int64_t, 24>::value));
CHECK(int64_t(0xFFFFFFFF00000000) == (etl::msb_mask<int64_t, 32>::value));
@ -2694,15 +2762,15 @@ namespace
//*************************************************************************
TEST(test_make_msb_mask_8_bit)
{
ETL_CONSTEXPR14 int8_t mask0 = etl::make_msb_mask<int8_t>(0);
ETL_CONSTEXPR14 int8_t mask1 = etl::make_msb_mask<int8_t>(1);
ETL_CONSTEXPR14 int8_t mask2 = etl::make_msb_mask<int8_t>(2);
ETL_CONSTEXPR14 int8_t mask3 = etl::make_msb_mask<int8_t>(3);
ETL_CONSTEXPR14 int8_t mask4 = etl::make_msb_mask<int8_t>(4);
ETL_CONSTEXPR14 int8_t mask5 = etl::make_msb_mask<int8_t>(5);
ETL_CONSTEXPR14 int8_t mask6 = etl::make_msb_mask<int8_t>(6);
ETL_CONSTEXPR14 int8_t mask7 = etl::make_msb_mask<int8_t>(7);
ETL_CONSTEXPR14 int8_t mask8 = etl::make_msb_mask<int8_t>(8);
ETL_CONSTEXPR int8_t mask0 = etl::make_msb_mask<int8_t>(0);
ETL_CONSTEXPR int8_t mask1 = etl::make_msb_mask<int8_t>(1);
ETL_CONSTEXPR int8_t mask2 = etl::make_msb_mask<int8_t>(2);
ETL_CONSTEXPR int8_t mask3 = etl::make_msb_mask<int8_t>(3);
ETL_CONSTEXPR int8_t mask4 = etl::make_msb_mask<int8_t>(4);
ETL_CONSTEXPR int8_t mask5 = etl::make_msb_mask<int8_t>(5);
ETL_CONSTEXPR int8_t mask6 = etl::make_msb_mask<int8_t>(6);
ETL_CONSTEXPR int8_t mask7 = etl::make_msb_mask<int8_t>(7);
ETL_CONSTEXPR int8_t mask8 = etl::make_msb_mask<int8_t>(8);
CHECK(int8_t(etl::b00000000) == mask0);
CHECK(int8_t(etl::b10000000) == mask1);
@ -2725,18 +2793,52 @@ namespace
CHECK(int8_t(etl::b11111111) == etl::make_msb_mask<int8_t>(8));
}
//*************************************************************************
TEST(test_make_msb_mask_template_nbits_8_bit)
{
ETL_CONSTEXPR int8_t mask0 = etl::make_msb_mask<int8_t, 0>();
ETL_CONSTEXPR int8_t mask1 = etl::make_msb_mask<int8_t, 1>();
ETL_CONSTEXPR int8_t mask2 = etl::make_msb_mask<int8_t, 2>();
ETL_CONSTEXPR int8_t mask3 = etl::make_msb_mask<int8_t, 3>();
ETL_CONSTEXPR int8_t mask4 = etl::make_msb_mask<int8_t, 4>();
ETL_CONSTEXPR int8_t mask5 = etl::make_msb_mask<int8_t, 5>();
ETL_CONSTEXPR int8_t mask6 = etl::make_msb_mask<int8_t, 6>();
ETL_CONSTEXPR int8_t mask7 = etl::make_msb_mask<int8_t, 7>();
ETL_CONSTEXPR int8_t mask8 = etl::make_msb_mask<int8_t, 8>();
CHECK(int8_t(etl::b00000000) == mask0);
CHECK(int8_t(etl::b10000000) == mask1);
CHECK(int8_t(etl::b11000000) == mask2);
CHECK(int8_t(etl::b11100000) == mask3);
CHECK(int8_t(etl::b11110000) == mask4);
CHECK(int8_t(etl::b11111000) == mask5);
CHECK(int8_t(etl::b11111100) == mask6);
CHECK(int8_t(etl::b11111110) == mask7);
CHECK(int8_t(etl::b11111111) == mask8);
CHECK(int8_t(etl::b00000000) == (etl::make_msb_mask<int8_t, 0>()));
CHECK(int8_t(etl::b10000000) == (etl::make_msb_mask<int8_t, 1>()));
CHECK(int8_t(etl::b11000000) == (etl::make_msb_mask<int8_t, 2>()));
CHECK(int8_t(etl::b11100000) == (etl::make_msb_mask<int8_t, 3>()));
CHECK(int8_t(etl::b11110000) == (etl::make_msb_mask<int8_t, 4>()));
CHECK(int8_t(etl::b11111000) == (etl::make_msb_mask<int8_t, 5>()));
CHECK(int8_t(etl::b11111100) == (etl::make_msb_mask<int8_t, 6>()));
CHECK(int8_t(etl::b11111110) == (etl::make_msb_mask<int8_t, 7>()));
CHECK(int8_t(etl::b11111111) == (etl::make_msb_mask<int8_t, 8>()));
}
//*************************************************************************
TEST(test_make_msb_mask_64_bit)
{
ETL_CONSTEXPR14 int64_t mask0 = etl::make_msb_mask<int64_t>(0);
ETL_CONSTEXPR14 int64_t mask1 = etl::make_msb_mask<int64_t>(8);
ETL_CONSTEXPR14 int64_t mask2 = etl::make_msb_mask<int64_t>(16);
ETL_CONSTEXPR14 int64_t mask3 = etl::make_msb_mask<int64_t>(24);
ETL_CONSTEXPR14 int64_t mask4 = etl::make_msb_mask<int64_t>(32);
ETL_CONSTEXPR14 int64_t mask5 = etl::make_msb_mask<int64_t>(40);
ETL_CONSTEXPR14 int64_t mask6 = etl::make_msb_mask<int64_t>(48);
ETL_CONSTEXPR14 int64_t mask7 = etl::make_msb_mask<int64_t>(56);
ETL_CONSTEXPR14 int64_t mask8 = etl::make_msb_mask<int64_t>(64);
ETL_CONSTEXPR int64_t mask0 = etl::make_msb_mask<int64_t>(0);
ETL_CONSTEXPR int64_t mask1 = etl::make_msb_mask<int64_t>(8);
ETL_CONSTEXPR int64_t mask2 = etl::make_msb_mask<int64_t>(16);
ETL_CONSTEXPR int64_t mask3 = etl::make_msb_mask<int64_t>(24);
ETL_CONSTEXPR int64_t mask4 = etl::make_msb_mask<int64_t>(32);
ETL_CONSTEXPR int64_t mask5 = etl::make_msb_mask<int64_t>(40);
ETL_CONSTEXPR int64_t mask6 = etl::make_msb_mask<int64_t>(48);
ETL_CONSTEXPR int64_t mask7 = etl::make_msb_mask<int64_t>(56);
ETL_CONSTEXPR int64_t mask8 = etl::make_msb_mask<int64_t>(64);
CHECK_EQUAL(int64_t(0x0000000000000000), mask0);
CHECK_EQUAL(int64_t(0xFF00000000000000), mask1);
@ -2758,6 +2860,40 @@ namespace
CHECK_EQUAL(int64_t(0xFFFFFFFFFFFFFF00), etl::make_msb_mask<int64_t>(56));
CHECK_EQUAL(int64_t(0xFFFFFFFFFFFFFFFF), etl::make_msb_mask<int64_t>(64));
}
//*************************************************************************
TEST(test_make_msb_mask_template_nbits_64_bit)
{
ETL_CONSTEXPR int64_t mask0 = etl::make_msb_mask<int64_t, 0>();
ETL_CONSTEXPR int64_t mask1 = etl::make_msb_mask<int64_t, 8>();
ETL_CONSTEXPR int64_t mask2 = etl::make_msb_mask<int64_t, 16>();
ETL_CONSTEXPR int64_t mask3 = etl::make_msb_mask<int64_t, 24>();
ETL_CONSTEXPR int64_t mask4 = etl::make_msb_mask<int64_t, 32>();
ETL_CONSTEXPR int64_t mask5 = etl::make_msb_mask<int64_t, 40>();
ETL_CONSTEXPR int64_t mask6 = etl::make_msb_mask<int64_t, 48>();
ETL_CONSTEXPR int64_t mask7 = etl::make_msb_mask<int64_t, 56>();
ETL_CONSTEXPR int64_t mask8 = etl::make_msb_mask<int64_t, 64>();
CHECK_EQUAL(int64_t(0x0000000000000000), mask0);
CHECK_EQUAL(int64_t(0xFF00000000000000), mask1);
CHECK_EQUAL(int64_t(0xFFFF000000000000), mask2);
CHECK_EQUAL(int64_t(0xFFFFFF0000000000), mask3);
CHECK_EQUAL(int64_t(0xFFFFFFFF00000000), mask4);
CHECK_EQUAL(int64_t(0xFFFFFFFFFF000000), mask5);
CHECK_EQUAL(int64_t(0xFFFFFFFFFFFF0000), mask6);
CHECK_EQUAL(int64_t(0xFFFFFFFFFFFFFF00), mask7);
CHECK_EQUAL(int64_t(0xFFFFFFFFFFFFFFFF), mask8);
CHECK_EQUAL(int64_t(0x0000000000000000), (etl::make_msb_mask<int64_t, 0>()));
CHECK_EQUAL(int64_t(0xFF00000000000000), (etl::make_msb_mask<int64_t, 8>()));
CHECK_EQUAL(int64_t(0xFFFF000000000000), (etl::make_msb_mask<int64_t, 16>()));
CHECK_EQUAL(int64_t(0xFFFFFF0000000000), (etl::make_msb_mask<int64_t, 24>()));
CHECK_EQUAL(int64_t(0xFFFFFFFF00000000), (etl::make_msb_mask<int64_t, 32>()));
CHECK_EQUAL(int64_t(0xFFFFFFFFFF000000), (etl::make_msb_mask<int64_t, 40>()));
CHECK_EQUAL(int64_t(0xFFFFFFFFFFFF0000), (etl::make_msb_mask<int64_t, 48>()));
CHECK_EQUAL(int64_t(0xFFFFFFFFFFFFFF00), (etl::make_msb_mask<int64_t, 56>()));
CHECK_EQUAL(int64_t(0xFFFFFFFFFFFFFFFF), (etl::make_msb_mask<int64_t, 64>()));
}
};
}