/* Test first bit operations from stdbit.h type: unsigned short, unsigned int, unsigned long, unsigned long long */ #include #if __STDC_VERSION_STDBIT_H__ >= 202311L #pragma std_c23 #include #endif #include volatile {type} i; void testTrailing(void) { #if __STDC_VERSION_STDBIT_H__ >= 202311L i = 0x0; ASSERT (stdc_first_trailing_one(i) == 0); ASSERT (stdc_first_trailing_zero(i) == 1); i = 0x1; ASSERT (stdc_first_trailing_one(i) == 1); ASSERT (stdc_first_trailing_zero(i) == 2); i = 0x2; ASSERT (stdc_first_trailing_one(i) == 2); ASSERT (stdc_first_trailing_zero(i) == 1); i = 0x3; ASSERT (stdc_first_trailing_one(i) == 1); ASSERT (stdc_first_trailing_zero(i) == 3); i = 0x7; ASSERT (stdc_first_trailing_one(i) == 1); ASSERT (stdc_first_trailing_zero(i) == 4); i = 0x8; ASSERT (stdc_first_trailing_one(i) == 4); ASSERT (stdc_first_trailing_zero(i) == 1); i = 0x9; ASSERT (stdc_first_trailing_one(i) == 1); ASSERT (stdc_first_trailing_zero(i) == 2); #endif }