aboutsummaryrefslogtreecommitdiff
path: root/lib/mlibc/tests/posix/ffs.c
blob: 3f7ba846c7aab42fa461b3ac00c96a721016a7ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <assert.h>
#include <strings.h>
#include <limits.h>

int main(void){
    assert(ffs(0x8000) == 16);
    assert(ffs(0) == 0);
	assert(ffs(INT_MAX - 1) ==  2);
	assert(ffs(INT_MAX) == 1);
	assert(ffs(INT_MIN) == (int)(sizeof(int) * CHAR_BIT));
	assert(ffs(INT_MIN + 1) == 1);

	for (int i = 1; i < 0x1000; i++) {
		assert(ffs(i) - 1 == __builtin_ctz(i));
	}

    return 0;
}