⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fpatest.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
};long start_dot_sp2[FPA_NDATA_REGS][2] = {	sfour, 0x1100, smone, 0x1101, stwo, 0x1102, shalf, 0x1103,	sone, 0x1104, stwo, 0x1105, smone, 0x1106, sfour, 0x1107,	0x1008, 0x1108, 0x1009, 0x1109, 0x100A, 0x110A, 0x100B, 0x110B,	0x100C, 0x110C, 0x100D, 0x110D, 0x100E, 0x110E, 0x100F, 0x110F,	szero, 0x1110, 0x1011, 0x1111, 0x1012, 0x1112, 0x1013, 0x1113,	0x1014, 0x1114, 0x1015, 0x1115, 0x1016, 0x1116, 0x1017, 0x1117,	0x1018, 0x1118, 0x1019, 0x1119, 0x101A, 0x111A, 0x101B, 0x111B,	0x101C, 0x111C, 0x101D, 0x111D, 0x101E, 0x111E, 0x101F, 0x111F};long start_dot_sp3[FPA_NDATA_REGS][2] = {	sfour, 0x1100, smone, 0x1101, stwo, 0x1102, shalf, 0x1103,	sone, 0x1104, stwo, 0x1105, smone, 0x1106, sfour, 0x1107,	0x1008, 0x1108, 0x1009, 0x1109, 0x100A, 0x110A, 0x100B, 0x110B,	0x100C, 0x110C, 0x100D, 0x110D, 0x100E, 0x110E, 0x100F, 0x110F,	stwo, 0x1110, 0x1011, 0x1111, 0x1012, 0x1112, 0x1013, 0x1113,	0x1014, 0x1114, 0x1015, 0x1115, 0x1016, 0x1116, 0x1017, 0x1117,	0x1018, 0x1118, 0x1019, 0x1119, 0x101A, 0x111A, 0x101B, 0x111B,	0x101C, 0x111C, 0x101D, 0x111D, 0x101E, 0x111E, 0x101F, 0x111F};long start_dot_dp[FPA_NDATA_REGS][2] = {	dfour, dmone, dtwo, dhalf,	done, dtwo, dmone, dfour,	0x1008, 0x1108, 0x1009, 0x1109, 0x100A, 0x110A, 0x100B, 0x110B,	0x100C, 0x110C, 0x100D, 0x110D, 0x100E, 0x110E, 0x100F, 0x110F,	0x1010, 0x1110, 0x1011, 0x1111, 0x1012, 0x1112, 0x1013, 0x1113,	0x1014, 0x1114, 0x1015, 0x1115, 0x1016, 0x1116, 0x1017, 0x1117,	0x1018, 0x1118, 0x1019, 0x1119, 0x101A, 0x111A, 0x101B, 0x111B,	0x101C, 0x111C, 0x101D, 0x111D, 0x101E, 0x111E, 0x101F, 0x111F};long start_dot_dp1[FPA_NDATA_REGS][2] = {	dfour, dmone, dtwo, dhalf,	done, dtwo, dmone, dfour,	0x1008, 0x1108, 0x1009, 0x1109, 0x100A, 0x110A, 0x100B, 0x110B,	0x100C, 0x110C, 0x100D, 0x110D, 0x100E, 0x110E, 0x100F, 0x110F,	dtwo, 0x1011, 0x1111, 0x1012, 0x1112, 0x1013, 0x1113,	0x1014, 0x1114, 0x1015, 0x1115, 0x1016, 0x1116, 0x1017, 0x1117,	0x1018, 0x1118, 0x1019, 0x1119, 0x101A, 0x111A, 0x101B, 0x111B,	0x101C, 0x111C, 0x101D, 0x111D, 0x101E, 0x111E, 0x101F, 0x111F};long start_dot_dp2[FPA_NDATA_REGS][2] = {	dfour, dmone, dtwo, dhalf,	done, dtwo, dmone, dfour,	0x1008, 0x1108, 0x1009, 0x1109, 0x100A, 0x110A, 0x100B, 0x110B,	0x100C, 0x110C, 0x100D, 0x110D, 0x100E, 0x110E, 0x100F, 0x110F,	dzero, 0x1011, 0x1111, 0x1012, 0x1112, 0x1013, 0x1113,	0x1014, 0x1114, 0x1015, 0x1115, 0x1016, 0x1116, 0x1017, 0x1117,	0x1018, 0x1118, 0x1019, 0x1119, 0x101A, 0x111A, 0x101B, 0x111B,	0x101C, 0x111C, 0x101D, 0x111D, 0x101E, 0x111E, 0x101F, 0x111F};long start_dot_dp3[FPA_NDATA_REGS][2] = {	dfour, dmone, dtwo, dhalf,	done, dtwo, dmone, dfour,	0x1008, 0x1108, 0x1009, 0x1109, 0x100A, 0x110A, 0x100B, 0x110B,	0x100C, 0x110C, 0x100D, 0x110D, 0x100E, 0x110E, 0x100F, 0x110F,	dtwo, 0x1011, 0x1111, 0x1012, 0x1112, 0x1013, 0x1113,	0x1014, 0x1114, 0x1015, 0x1115, 0x1016, 0x1116, 0x1017, 0x1117,	0x1018, 0x1118, 0x1019, 0x1119, 0x101A, 0x111A, 0x101B, 0x111B,	0x101C, 0x111C, 0x101D, 0x111D, 0x101E, 0x111E, 0x101F, 0x111F};struct opm_table m_table[] ={	"2x2 Move", &start1[0][0], &matrix_sp1[0][0], &matrix_dp1[0][0], CS_2MOV, CD_2MOV, ST_DONTCARE,	"3x3 Move", &start1[0][0], &matrix_sp2[0][0], &matrix_dp2[0][0], CS_3MOV, CD_3MOV, ST_DONTCARE,	"4x4 Move", &start1[0][0], &matrix_sp3[0][0], &matrix_dp3[0][0], CS_4MOV, CD_4MOV, ST_DONTCARE,	"2x2 Transpose", &start1[0][0], &matrix_sp4[0][0], &matrix_dp4[0][0], CS_2TRN, CD_2TRN, ST_DONTCARE,	"3x3 Transpose", &start1[0][0], &matrix_sp5[0][0], &matrix_dp5[0][0], CS_3TRN, CD_3TRN, ST_DONTCARE,	"4x4 Transpose", &start1[0][0], &matrix_sp6[0][0], &matrix_dp6[0][0], CS_4TRN, CD_4TRN, ST_DONTCARE,	"2x2 Dot", &start_dot_sp[0][0], &start_dot_sp1[0][0], 0, CS_2DOT, 0, ST_FINITEEXACT,	"3x3 Dot", &start_dot_sp[0][0], &start_dot_sp2[0][0], 0, CS_3DOT, 0, ST_FINITEEXACT,	"4x4 Dot", &start_dot_sp[0][0], &start_dot_sp3[0][0], 0, CS_4DOT, 0, ST_FINITEEXACT,	"2x2 Dot", &start_dot_dp[0][0], 0, &start_dot_dp1[0][0], 0, CD_2DOT, ST_FINITEEXACT,	"3x3 Dot", &start_dot_dp[0][0], 0, &start_dot_dp2[0][0], 0, CD_3DOT, ST_FINITEEXACT,	"4x4 Dot", &start_dot_dp[0][0], 0, &start_dot_dp3[0][0], 0, CD_4DOT, ST_FINITEEXACT,	0, 0, 0, 0, 0, 0, 0};int ignore_fpe_error = 0;int got_fpe_error = 0;struct fpa_device *fpa = (struct fpa_device *)0xE0000000;int stop_on_error = 1;int loop_flag = 0;int quiet_flag = 0;int verbose_flag = 0;int got_error = 0;int fpa_fd;main(argc, argv)int argc;char *argv[];{int fpe_error();int bus_error();int segv_error();int dummy;int i, j;int do_conditional_flag = 0;int sp_flag = 0;int dp_flag = 0;int x_flag = 0;int c_flag = 0;int ck_flag = 0;int pipe_flag = 0;int reg_flag = 0;int shadow_flag = 0;int status_flag = 0;int mode_flag = 0;int imask_flag = 0;int debug_flag = 0;int version_flag = 0;int matrix_flag = 0;int interactive_flag = 0;int pass_count = 0;	for(i = 1; i < argc; i++)	{		switch(argv[i][0])		{		case '-':			switch(argv[i][1])			{			case 'c':				stop_on_error = 0;				break;			case 'q':				quiet_flag++;				break;			case 'v':				verbose_flag++;				break;			case 'l':				loop_flag++;	/* currently does nothing */				break;			case 't':				do_conditional_flag++;				for(j = 2; argv[i][j] != '\0'; j++)				{					switch(argv[i][j])					{					case 's':						sp_flag++;						break;					case 'd':						dp_flag++;						break;					case 'r':						reg_flag++;						break;					case 'x':						x_flag++;						break;					case 'c':						c_flag++;						break;					case 't':						status_flag++;						break;					case 'M':						matrix_flag++;						break;					case 'm':						mode_flag++;						break;					case 'i':						imask_flag++;						break;					case 'S':						shadow_flag++;						break;					case 'p':						pipe_flag++;						break;					case 'C':						ck_flag++;						break;					case 'u':						debug_flag++;						break;					case 'v':						version_flag++;						break;					case 'I':						interactive_flag++;						break;					case 'h':					default:						printf("Bad test specifier: %c\n", argv[i][j]);						printf("s - single precision\n");						printf("d - double precision\n");						printf("r - registers\n");						printf("x - extended format\n");						printf("c - command format\n");						printf("t - status\n");						printf("m - mode\n");						printf("M - matrix\n");						printf("i - imask\n");						printf("u - debug\n");						printf("v - version\n");						printf("C - checksum\n");						printf("p - pipe test\n");						printf("S - shadow registers\n");						printf("I - interactive\n");						exit(-1);					}				}				break;			default:				goto usage;			}			break;		case 'h':		default:			goto usage;		}	}	if(!do_conditional_flag)	{		if(!verbose_flag)			quiet_flag++;		version_flag++;		sp_flag = dp_flag = x_flag = c_flag = 1;		imask_flag = status_flag = mode_flag = 1;		matrix_flag = pipe_flag = ck_flag = 1;	}	signal(SIGBUS, bus_error);	signal(SIGFPE, fpe_error);	signal(SIGSEGV, segv_error);	if((fpa_fd = open("/dev/fpa", O_RDWR, 0)) == -1)	{		perror("can't open /dev/fpa");		return(2);	}	fpa->fp_clear_pipe = 0;		/* just in case */	init_fpa();	if(!(fpa->fp_pipe_status & FPA_STABLE))	{		printf("couldn't get the pipe stable\n");		exit(-1);	}	if(fpa->fp_pipe_status & FPA_FIRST_V_ACT)	{		printf("couldn't get the pipe idle\n");		exit(-1);	}	do	{		if(reg_flag)			reg_test();		if(sp_flag)			sp_test();		if(dp_flag)			dp_test();		if(sp_flag)			sd_test();		if(x_flag)			x_test();		if(c_flag)			c_test();		if(ck_flag)			ck_test();		if(status_flag)			status_test();		if(imask_flag)			imask_test();		if(pipe_flag)			pipe_test();		if(mode_flag)			mode_test();		if(shadow_flag)			shadow_test();		if(debug_flag)			debug_test();		if(version_flag)			version_test();		if(matrix_flag)			matrix_test();		if(interactive_flag)			interactive_test();		if(!quiet_flag && loop_flag)			printf("Pass number %d\n", ++pass_count);	}	while(loop_flag);	exit(0);usage:	printf("Usage: test [-q] [-v] [-l] [-c] [-t[sdxcrhtimpuCIMS]] [-h]\n");

⌨️ 快捷键说明

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