diff options
| author | Jani Nikula <jani.nikula@intel.com> | 2025-06-09 12:40:46 +0300 | 
|---|---|---|
| committer | Jani Nikula <jani.nikula@intel.com> | 2025-06-09 12:40:46 +0300 | 
| commit | 34c55367af96f62e89221444f04487440ebc6487 (patch) | |
| tree | fdb36ba67d7dea09455b55037e26043b7e051ef9 /lib/tests/test_bits.c | |
| parent | 7247efca0dcbc8ac6147db9200ed1549c0662465 (diff) | |
| parent | 19272b37aa4f83ca52bdf9c16d5d81bdd1354494 (diff) | |
| download | linux-34c55367af96f62e89221444f04487440ebc6487.tar.xz | |
Merge drm/drm-next into drm-intel-next
Sync to v6.16-rc1, among other things to get the fixed size GENMASK_U*()
and BIT_U*() macros.
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Diffstat (limited to 'lib/tests/test_bits.c')
| -rw-r--r-- | lib/tests/test_bits.c | 30 | 
1 files changed, 30 insertions, 0 deletions
diff --git a/lib/tests/test_bits.c b/lib/tests/test_bits.c index c7b38d91e1f1..47325b41515f 100644 --- a/lib/tests/test_bits.c +++ b/lib/tests/test_bits.c @@ -5,6 +5,26 @@  #include <kunit/test.h>  #include <linux/bits.h> +#include <linux/types.h> + +#define assert_type(t, x) _Generic(x, t: x, default: 0) + +static_assert(assert_type(u8, BIT_U8(0)) == 1u); +static_assert(assert_type(u16, BIT_U16(0)) == 1u); +static_assert(assert_type(u32, BIT_U32(0)) == 1u); +static_assert(assert_type(u64, BIT_U64(0)) == 1ull); + +static_assert(assert_type(u8, BIT_U8(7)) == 0x80u); +static_assert(assert_type(u16, BIT_U16(15)) == 0x8000u); +static_assert(assert_type(u32, BIT_U32(31)) == 0x80000000u); +static_assert(assert_type(u64, BIT_U64(63)) == 0x8000000000000000ull); + +static_assert(assert_type(unsigned long, GENMASK(31, 0)) == U32_MAX); +static_assert(assert_type(unsigned long long, GENMASK_ULL(63, 0)) == U64_MAX); +static_assert(assert_type(u8, GENMASK_U8(7, 0)) == U8_MAX); +static_assert(assert_type(u16, GENMASK_U16(15, 0)) == U16_MAX); +static_assert(assert_type(u32, GENMASK_U32(31, 0)) == U32_MAX); +static_assert(assert_type(u64, GENMASK_U64(63, 0)) == U64_MAX);  static void genmask_test(struct kunit *test) @@ -14,11 +34,21 @@ static void genmask_test(struct kunit *test)  	KUNIT_EXPECT_EQ(test, 6ul, GENMASK(2, 1));  	KUNIT_EXPECT_EQ(test, 0xFFFFFFFFul, GENMASK(31, 0)); +	KUNIT_EXPECT_EQ(test, 1u, GENMASK_U8(0, 0)); +	KUNIT_EXPECT_EQ(test, 3u, GENMASK_U16(1, 0)); +	KUNIT_EXPECT_EQ(test, 0x10000, GENMASK_U32(16, 16)); +  #ifdef TEST_GENMASK_FAILURES  	/* these should fail compilation */  	GENMASK(0, 1);  	GENMASK(0, 10);  	GENMASK(9, 10); + +	GENMASK_U32(0, 31); +	GENMASK_U64(64, 0); +	GENMASK_U32(32, 0); +	GENMASK_U16(16, 0); +	GENMASK_U8(8, 0);  #endif  | 
