mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
Merge branch 'development'
# Conflicts: # support/Release notes.txt
This commit is contained in:
commit
b34b6f3645
@ -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;
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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>()));
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user