mirror of
https://github.com/ETLCPP/etl.git
synced 2026-06-16 00:46:03 +08:00
Added additional etl::make_lsb_mask and etl::make_msb_mask binary functions
This commit is contained in:
parent
31bf89a8da
commit
cbbd1d840a
@ -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;
|
||||
}
|
||||
|
||||
//***************************************************************************
|
||||
|
||||
@ -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