On 7/24/24 16:15, Arnd Bergmann wrote: > On Wed, Jul 24, 2024, at 12:31, Anshuman Khandual wrote: >> This adds GENMASK_U128() tests although currently only 64 bit wide masks >> are being tested. >> >> Cc: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> >> Cc: linux-kernel@xxxxxxxxxxxxxxx >> Signed-off-by: Anshuman Khandual <anshuman.khandual@xxxxxxx> >> --- >> lib/test_bits.c | 21 +++++++++++++++++++++ >> 1 file changed, 21 insertions(+) >> >> diff --git a/lib/test_bits.c b/lib/test_bits.c >> index 01313980f175..2515ddc34409 100644 >> --- a/lib/test_bits.c >> +++ b/lib/test_bits.c >> @@ -39,6 +39,24 @@ static void genmask_ull_test(struct kunit *test) >> #endif >> } >> >> +static void genmask_u128_test(struct kunit *test) >> +{ >> + /* Tests mask generation only when the mask width is within 64 bits */ >> + KUNIT_EXPECT_EQ(test, 0x0000000000ff0000ULL, GENMASK_U128(87, 80) >> 64); >> + KUNIT_EXPECT_EQ(test, 0x0000000000ffffffULL, GENMASK_U128(87, 64) >> 64); >> + KUNIT_EXPECT_EQ(test, 0x0000000000000001ULL, GENMASK_U128(0, 0)); > > This looks like it would need an #ifdef check for either > __SIZEOF_INT128__ or CONFIG_ARCH_SUPPORTS_INT128, otherwise > it will fail to build on all 32-bit architectures and possibly > old compiler versions on some 64-bit ones. I think I checked > in the past which targets support __u128, but I don't remember > the result. Sure, will go with CONFIG_ARCH_SUPPORTS_INT128 and add required #ifdefs here.