1717
1818TEST_CASE (" [utils::make_bit_mask] single bit" )
1919{
20+ CHECK_EQ (xsimd::utils::make_bit_mask (), 0x0 );
21+ CHECK_EQ (xsimd::utils::make_bit_mask (1 ), 0b0010 );
2022 CHECK_EQ (xsimd::utils::make_bit_mask<std::uint8_t >(0 ), 0x01 );
2123 CHECK_EQ (xsimd::utils::make_bit_mask<std::uint8_t >(7 ), 0x80 );
2224 CHECK_EQ (xsimd::utils::make_bit_mask<std::uint32_t >(0 ), 0x01u );
@@ -29,6 +31,25 @@ TEST_CASE("[utils::make_bit_mask] multiple bits")
2931 CHECK_EQ (xsimd::utils::make_bit_mask<std::uint8_t >(0 , 2 , 4 ), 0b00010101 );
3032}
3133
34+ TEST_CASE (" [utils::make_bit_mask_from_bools]" )
35+ {
36+ CHECK_EQ (xsimd::utils::make_bit_mask_from_bools<std::uint8_t >(), 0x00 );
37+ CHECK_EQ (xsimd::utils::make_bit_mask_from_bools<std::uint8_t >(true ), 0x01 );
38+ CHECK_EQ (xsimd::utils::make_bit_mask_from_bools<std::uint8_t >(false ), 0x00 );
39+ // First argument goes in the lowest bit
40+ CHECK_EQ (xsimd::utils::make_bit_mask_from_bools<std::uint8_t >(true , false , false ), 0b001 );
41+ CHECK_EQ (xsimd::utils::make_bit_mask_from_bools<std::uint8_t >(false , false , true ), 0b100 );
42+ // Full width
43+ CHECK_EQ (
44+ xsimd::utils::make_bit_mask_from_bools<std::uint8_t >(true , true , true , true , true , true , true , true ),
45+ 0xFF );
46+ CHECK_EQ (
47+ xsimd::utils::make_bit_mask_from_bools<std::uint16_t >(
48+ true , false , true , false , true , false , true , false ,
49+ true , false , true , false , true , false , true , false ),
50+ 0x5555 );
51+ }
52+
3253TEST_CASE (" [utils::all_bits_set] basic" )
3354{
3455 CHECK (xsimd::utils::all_bits_set<0 >(0x01u ));
0 commit comments