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

📄 fpatest.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 5 页
字号:
/*	@(#)fpatest.c 1.1 92/07/30 SMI	*/#include <stdio.h>#include <signal.h>#include <sys/file.h>#include <sys/types.h>#include <sys/ioctl.h>#include "fpa.h"#include "values.h"/*	History:	1/24/86		Mark Moyer	Test Written	9/21/87		Mark Moyer	sincos testing added *//*    The main purpose of this test is to verify the microcode.	Other tests were added so that this test may be a more complete	general FPA test, but the emphasis is definitely on 1) verifying	the microcode design and implementation, and 2) providing a	regression test for all microcode modifications. *//*	some more constants */#define sonezp1 0x3f800001#define donezp1 0x3ff00000,0x00000001#define sonezm1 0x3f7fffff#define donezm1 0x3fefffff,0xffffffff#define sonezp2 0x3f800002#define donezp2 0x3ff00000,0x00000002#define sonezm2 0x3f7ffffe#define donezm2 0x3fefffff,0xfffffffe/*	second half of extended operation */#define X_2ND 0xE0001800/*	write weitek status */#define WRITE_WEITEK_STATUS 0xE0000E40/*	initialize (load the Weitek mode registers */#define INIT 0xE0000978/*	test user registers, destructive & non-destructive */#define REG_TEST_D 0xE00009C8#define REG_TEST_N 0xE00009CC/*	register operations */#define REG_CPY_DP 0xE0000884#define REG_CPY_SP 0xE0000880#define PUT_REG_SP 0xE0000C00#define PUT_REG_MS 0xE0000C00#define PUT_REG_LS 0xE0000C04#define GET_REG_SP 0xE0000C00#define GET_REG_MS 0xE0000C00#define GET_REG_LS 0xE0000C04/*	load pointer register RAM operations */#define LDP_MS 0xE0000E80#define LDP_LS 0xE0000E84/*	single precision operations */#define SP_NOP 0xE0000000#define SP_NEG 0xE0000080#define SP_ABS 0xE0000100#define SP_FLT 0xE0000180#define SP_FIX 0xE0000200#define SP_CNV 0xE0000280#define SP_SQR 0xE0000300#define SP_ADD 0xE0000380#define SP_SUB 0xE0000400#define SP_MUL 0xE0000480#define SP_DIV 0xE0000500#define SP_BSUB 0xE0000580#define SP_BDIV 0xE0000600#define SP_CMP0 0xE0000680#define SP_CMPR 0xE0000700#define SP_CMPM 0xE0000780#define DP_NOP 0xE0000004,0xE0001000#define DP_NEG 0xE0000084,0xE0001000#define DP_ABS 0xE0000104,0xE0001000#define DP_FLT 0xE0000184,0xE0001000#define DP_FIX 0xE0000204,0xE0001000#define DP_CNV 0xE0000284,0xE0001000#define DP_SQR 0xE0000304,0xE0001000#define DP_ADD 0xE0000384,0xE0001000#define DP_SUB 0xE0000404,0xE0001000#define DP_MUL 0xE0000484,0xE0001000#define DP_DIV 0xE0000504,0xE0001000#define DP_BSUB 0xE0000584,0xE0001000#define DP_BDIV 0xE0000604,0xE0001000#define DP_CMP0 0xE0000684,0xE0001000#define DP_CMPR 0xE0000704,0xE0001000#define DP_CMPM 0xE0000784,0xE0001000#define XS_SIN 0xE0001000#define XD_SIN 0xE0001004#define XS_COS 0xE0001080#define XD_COS 0xE0001084#define XS_TAN 0xE0001100#define XD_TAN 0xE0001104#define XS_ATAN 0xE0001180#define XD_ATAN 0xE0001184#define XS_EXPM 0xE0001200#define XD_EXPM 0xE0001204#define XS_LNP 0xE0001280#define XD_LNP 0xE0001284#define XS_EXP 0xE0001300#define XD_EXP 0xE0001304#define XS_LN 0xE0001380#define XD_LN 0xE0001384#define XS_ADD 0xE0001300#define XD_ADD 0xE0001304#define XS_SUB 0xE0001380#define XD_SUB 0xE0001384#define XS_MUL 0xE0001400#define XD_MUL 0xE0001404#define XS_DIV 0xE0001480#define XD_DIV 0xE0001484#define XS_BSUB 0xE0001500#define XD_BSUB 0xE0001504#define XS_BDIV 0xE0001580#define XD_BDIV 0xE0001584#define XS_PIV0 0xE0001800#define XD_PIV0 0xE0001804#define XS_PIV1 0xE0001880#define XD_PIV1 0xE0001884#define XS_PIV2 0xE0001900#define XD_PIV2 0xE0001904#define XS_PIV3 0xE0001980#define XD_PIV3 0xE0001984#define XS_PIV4 0xE0001A00#define XD_PIV4 0xE0001A04#define XS_PIV5 0xE0001A80#define XD_PIV5 0xE0001A84#define XS_PIV6 0xE0001B00#define XD_PIV6 0xE0001B04#define XS_PIV7 0xE0001B80#define XD_PIV7 0xE0001B84#define XS_PIV8 0xE0001C00#define XD_PIV8 0xE0001C04#define XS_PIV9 0xE0001C80#define XD_PIV9 0xE0001C84#define XS_PIVA 0xE0001D00#define XD_PIVA 0xE0001D04#define XS_LIN0 0xE0001000#define XS_LIN1 0xE0001080#define XS_LIN2 0xE0001100#define XS_LIN3 0xE0001180#define XS_LIN4 0xE0001200#define XS_LIN5 0xE0001280#define CS_SIN 0xE0000800#define CD_SIN 0xE0000804#define CS_COS 0xE0000808#define CD_COS 0xE000080C#define CS_TAN 0xE0000810#define CD_TAN 0xE0000814#define CS_ATAN 0xE0000818#define CD_ATAN 0xE000081C#define CS_EXP1 0xE0000820#define CD_EXP1 0xE0000824#define CS_LN1 0xE0000828#define CD_LN1 0xE000082C#define CS_EXP 0xE0000830#define CD_EXP 0xE0000834#define CS_LN 0xE0000838#define CD_LN 0xE000083C#define CS_SQRT 0xE0000840#define CD_SQRT 0xE0000844#define CS_SINCOS 0xE0000980#define CD_SINCOS 0xE0000984#define CS_CPY 0xE0000880#define CD_CPY 0xE0000884#define CS_PIV1 0xE0000888#define CD_PIV1 0xE000088C#define CS_PIV2 0xE0000890#define CD_PIV2 0xE0000894#define CS_PIV3 0xE0000898#define CD_PIV3 0xE000089C#define CS_PIV4 0xE00008A0#define CD_PIV4 0xE00008A4#define CS_PIV5 0xE00008A8#define CD_PIV5 0xE00008AC#define CS_PIV6 0xE00008B0#define CD_PIV6 0xE00008B4#define CS_ALU00 0xE0000A00#define CD_ALU00 0xE0000A04#define CS_ALU01 0xE0000A10#define CD_ALU01 0xE0000A14#define CS_ALU02 0xE0000A20#define CD_ALU02 0xE0000A24#define CS_ALU03 0xE0000A30#define CD_ALU03 0xE0000A34#define CS_ALU04 0xE0000A40#define CD_ALU04 0xE0000A44#define CS_ALU05 0xE0000A50#define CD_ALU05 0xE0000A54#define CS_ALU06 0xE0000A60#define CD_ALU06 0xE0000A64#define CS_ALU07 0xE0000A70#define CD_ALU07 0xE0000A74#define CS_ALU08 0xE0000A80#define CD_ALU08 0xE0000A84#define CS_ALU09 0xE0000A90#define CD_ALU09 0xE0000A94#define CS_ALU0A 0xE0000AA0#define CD_ALU0A 0xE0000AA4#define CS_ALU0B 0xE0000AB0#define CD_ALU0B 0xE0000AB4#define CS_ALU0C 0xE0000AC0#define CD_ALU0C 0xE0000AC4#define CS_ALU0D 0xE0000AD0#define CD_ALU0D 0xE0000AD4#define CS_ALU0E 0xE0000AE0#define CD_ALU0E 0xE0000AE4#define CS_ALU0F 0xE0000AF0#define CD_ALU0F 0xE0000AF4#define CS_ALU10 0xE0000B00#define CD_ALU10 0xE0000B04#define CS_ALU11 0xE0000B10#define CD_ALU11 0xE0000B14#define CS_ALU12 0xE0000B20#define CD_ALU12 0xE0000B24#define CS_ALU13 0xE0000B30#define CD_ALU13 0xE0000B34#define CS_ALU14 0xE0000B40#define CD_ALU14 0xE0000B44#define CS_ALU15 0xE0000B50#define CD_ALU15 0xE0000B54#define CS_ALU16 0xE0000B60#define CD_ALU16 0xE0000B64#define CS_ALU17 0xE0000B70#define CD_ALU17 0xE0000B74#define CS_ALU18 0xE0000B80#define CD_ALU18 0xE0000B84#define CS_ALU19 0xE0000B90#define CD_ALU19 0xE0000B94#define CS_ALU1A 0xE0000BA0#define CD_ALU1A 0xE0000BA4#define CS_ALU1B 0xE0000BB0#define CD_ALU1B 0xE0000BB4#define CS_ALU1C 0xE0000BC0#define CD_ALU1C 0xE0000BC4#define CS_ALU1D 0xE0000BD0#define CD_ALU1D 0xE0000BD4#define CS_ALU1E 0xE0000BE0#define CD_ALU1E 0xE0000BE4#define CS_ALU1F 0xE0000BF0#define CD_ALU1F 0xE0000BF4#define CS_2DOT 0xE00008B8#define CD_2DOT 0xE00008BC#define CS_3DOT 0xE00008C0#define CD_3DOT 0xE00008C4#define CS_4DOT 0xE00008C8#define CD_4DOT 0xE00008CC#define CS_2MOV 0xE0000988#define CD_2MOV 0xE000098C#define CS_3MOV 0xE0000990#define CD_3MOV 0xE0000994#define CS_4MOV 0xE0000998#define CD_4MOV 0xE000099C#define CS_2TRN 0xE00009A0#define CD_2TRN 0xE00009A4#define CS_3TRN 0xE00009A8#define CD_3TRN 0xE00009AC#define CS_4TRN 0xE00009B0#define CD_4TRN 0xE00009B4/*	status codes */#define ST_DONTCARE -1#define ST_EQUAL (0x0 << FPA_STATUS_SHIFT)#define ST_LESSTHAN (0x1 << FPA_STATUS_SHIFT)#define ST_GREATERTHAN (0x2 << FPA_STATUS_SHIFT)#define ST_UNORDERED (0x3 << FPA_STATUS_SHIFT)#define ST_ZERO (0x0 << FPA_STATUS_SHIFT)#define ST_INFINITY (0x1 << FPA_STATUS_SHIFT)#define ST_FINITEEXACT (0x2 << FPA_STATUS_SHIFT)#define ST_FINITEINEXACT (0x3 << FPA_STATUS_SHIFT)#define ST_OUTOFBOUNDS (0x4 << FPA_STATUS_SHIFT)#define ST_OVERFLOWINEXACT (0x5 << FPA_STATUS_SHIFT)#define ST_UNDERFLOW (0x6 << FPA_STATUS_SHIFT)#define ST_UNDERFLOWINEXACT (0x7 << FPA_STATUS_SHIFT)#define ST_ADNRM (0x8 << FPA_STATUS_SHIFT)#define ST_BDNRM (0x9 << FPA_STATUS_SHIFT)#define ST_ABDNRM (0xA << FPA_STATUS_SHIFT)#define ST_DIVBY0 (0xB << FPA_STATUS_SHIFT)#define ST_ANAN (0xC << FPA_STATUS_SHIFT)#define ST_BNAN (0xD << FPA_STATUS_SHIFT)#define ST_ABNAN (0xE << FPA_STATUS_SHIFT)#define ST_INVALIDOP (0xF << FPA_STATUS_SHIFT)struct op1_table{	char *name;	long r1;	long data;	long result;	int op;	long status;};struct op1_table sp_table[] ={	"nop", 0x0, 0x0, 0x0, SP_NOP, ST_DONTCARE,	"nop", ssnan, 0x0, ssnan, SP_NOP, ST_DONTCARE,	"negate", 0x0, sone, smone, SP_NEG, ST_FINITEEXACT,	"negate", 0x0, smone, sone, SP_NEG, ST_FINITEEXACT,	"negate", 0x0, ssnan, sone, SP_NEG, ST_ANAN,

⌨️ 快捷键说明

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