#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "sys.h"

static always_inline int cris_lz(int x)
{
	int r;
	asm ("lz\t%1, %0\n" : "=r" (r) : "r" (x));
	return r;
}

void check_lz(void)
{
	int i;

	if (cris_lz(0) != 32)
		err();
	if (cris_lz(1) != 31)
		err();
	if (cris_lz(2) != 30)
		err();
	if (cris_lz(4) != 29)
		err();
	if (cris_lz(8) != 28)
		err();

	/* try all positions with a single bit.  */
	for (i = 1; i < 32; i++) {
		if (cris_lz(1 << (i-1)) != (32 - i))
			err();
	}

	/* try all positions with all bits.  */
	for (i = 1; i < 32; i++) {
		/* split up this computation to clarify it.  */
		uint32_t val;
		val = (unsigned int)-1 >> (32 - i);
		if (cris_lz(val) != (32 - i))
			err();
	}
}

int main(void)
{
	check_lz();
	pass();
	exit(0);
}
