check_lz.c

来自「xen虚拟机源代码安装包」· C语言 代码 · 共 50 行

C
50
字号
#include <stdio.h>#include <stdlib.h>#include <stdint.h>#include "sys.h"extern 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);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?