xref: /csrg-svn/old/as.vax/floattab.c (revision 5804)
1*5804Srrh /*
2*5804Srrh  *	Copyright (c) 1982 Regents of the University of California
3*5804Srrh  */
4*5804Srrh #ifndef lint
5*5804Srrh static char sccsid[] = "@(#)floattab.c 4.1 02/14/82";
6*5804Srrh #endif not lint
7*5804Srrh 
8*5804Srrh #include <stdio.h>
9*5804Srrh #include "as.h"
10*5804Srrh #define		N	NOTAKE
11*5804Srrh 
12*5804Srrh struct ty_bigdesc ty_bigdesc[] = {
13*5804Srrh {	/* TYPB */
14*5804Srrh 	{ 15, N, N, N, N, N, N, N, N, N, N, N, N, N, N, N },
15*5804Srrh 	{  N, N, N, N, N, N, N, N, N, N, N, N, N, N, N, 0 },
16*5804Srrh 	{ N, N },
17*5804Srrh 	{ N, N },
18*5804Srrh 	0,	/* mantissa lshift */
19*5804Srrh 	0,	/* exponent rshift */
20*5804Srrh 	8,	/* mantissa sig bits */
21*5804Srrh 	0,	/* exponent sig bits */
22*5804Srrh 	8,	/* exponent excess */
23*5804Srrh },
24*5804Srrh {	/* TYPW */
25*5804Srrh 	{ 14, 15, N, N, N, N, N, N, N, N, N, N, N, N, N, N },
26*5804Srrh 	{ N, N, N, N, N, N, N, N, N, N, N, N, N, N, 0, 1 },
27*5804Srrh 	{ N, N},
28*5804Srrh 	{ N, N},
29*5804Srrh 	0,	/* mantissa lshift */
30*5804Srrh 	0,	/* exponent rshift */
31*5804Srrh 	16,	/* mantissa sig bits */
32*5804Srrh 	0,	/* exponent sig bits */
33*5804Srrh 	16,	/* exponent excess */
34*5804Srrh },
35*5804Srrh {	/* TYPL */
36*5804Srrh 	{ 12, 13, 14, 15, N, N, N, N, N, N, N, N, N, N, N, N },
37*5804Srrh 	{ N, N, N, N, N, N, N, N, N, N, N, N, 0, 1, 2, 3 },
38*5804Srrh 	{ N, N },
39*5804Srrh 	{ N, N },
40*5804Srrh 	0,	/* mantissa lshift */
41*5804Srrh 	0,	/* exponent rshift */
42*5804Srrh 	32,	/* mantissa sig bits */
43*5804Srrh 	0,	/* exponent sig bits */
44*5804Srrh 	32,	/* exponent excess */
45*5804Srrh },
46*5804Srrh {	/* TYPQ */
47*5804Srrh 	{ 8, 9, 10, 11, 12, 13, 14, 15, N, N, N, N, N, N, N, N },
48*5804Srrh 	{ N, N, N, N, N, N, N, N, 0, 1, 2, 3, 4, 5, 6, 7 },
49*5804Srrh 	{ N, N },
50*5804Srrh 	{ N, N },
51*5804Srrh 	0,	/* mantissa lshift */
52*5804Srrh 	0,	/* exponent rshift */
53*5804Srrh 	64,	/* mantissa sig bits */
54*5804Srrh 	0,	/* exponent sig bits */
55*5804Srrh 	64,	/* exponent excess */
56*5804Srrh },
57*5804Srrh {	/* TYPO */
58*5804Srrh 	{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
59*5804Srrh 	{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 },
60*5804Srrh 	{ N, N },
61*5804Srrh 	{ N, N },
62*5804Srrh 	0,	/* mantissa lshift */
63*5804Srrh 	0,	/* exponent rshift */
64*5804Srrh 	128,	/* mantissa sig bits */
65*5804Srrh 	0,	/* exponent sig bits */
66*5804Srrh 	128,	/* exponent excess */
67*5804Srrh },
68*5804Srrh {	/* TYPF */
69*5804Srrh 	{ 15, N, 13, 14, N, N, N, N, N, N, N, N, N, N, N, N },
70*5804Srrh 	{ N, N, N, N, N, N, N, N, N, N, N, N, N, 2, 3, 0 },
71*5804Srrh 	{ 0, 1 },
72*5804Srrh 	{ 0, 1 },
73*5804Srrh 	1,	/* mantissa lshift */
74*5804Srrh 	7,	/* exponent rshift */
75*5804Srrh 	24,	/* mantissa sig bits */
76*5804Srrh 	8,	/* exponent sig bits */
77*5804Srrh 	128	/* exponent excess */
78*5804Srrh },
79*5804Srrh {	/* TYPD */
80*5804Srrh 	{ 15, N, 13, 14, 11, 12, 9, 10, N, N, N, N, N, N, N, N },
81*5804Srrh 	{ N, N, N, N, N, N, N, N, N, 6, 7, 4, 5, 2, 3, 0 },
82*5804Srrh 	{ 0, 1 },
83*5804Srrh 	{ 0, 1 },
84*5804Srrh 	1,	/* mantissa lshift */
85*5804Srrh 	7,	/* exponent rshift */
86*5804Srrh 	56,	/* mantissa sig bits */
87*5804Srrh 	8,	/* exponent sig bits */
88*5804Srrh 	128	/* exponent excess */
89*5804Srrh },
90*5804Srrh {	/* TYPG */
91*5804Srrh 	{ 15, N, 13, 14, 11, 12, 9, 10, N, N, N, N, N, N, N, N },
92*5804Srrh 	{ N, N, N, N, N, N, N, N, N, 6, 7, 4, 5, 2, 3, 0 },
93*5804Srrh 	{ 0, 1 },
94*5804Srrh 	{ 0, 1 },
95*5804Srrh 	4,	/* mantissa lshift */
96*5804Srrh 	4,	/* exponent rshift */
97*5804Srrh 	53,	/* mantissa sig bits */
98*5804Srrh 	11,	/* exponent sig bits */
99*5804Srrh 	1024	/* exponent excess */
100*5804Srrh },
101*5804Srrh {	/* TYPH */
102*5804Srrh 	{ N, N, 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3 },
103*5804Srrh 	{ N, N, 14, 15, 12, 13, 10, 11, 8, 9, 6, 7, 4, 5, 2, 3 },
104*5804Srrh 	{ 0, 1 },
105*5804Srrh 	{ 0, 1 },
106*5804Srrh 	0,	/* mantissa lshift */
107*5804Srrh 	0,	/* exponent rshift */
108*5804Srrh 	113,	/* mantissa sig bits */
109*5804Srrh 	15,	/* exponent sig bits */
110*5804Srrh 	16384	/* exponent excess */
111*5804Srrh },
112*5804Srrh {0}		/* TYPNONE */
113*5804Srrh };
114*5804Srrh 
115*5804Srrh cfloattab()
116*5804Srrh {
117*5804Srrh 	reg	struct ty_bigdesc	*p;
118*5804Srrh 	reg	int	i;
119*5804Srrh 	reg	int	j;
120*5804Srrh 	reg	int	k;
121*5804Srrh 		extern	int	ty_float[];
122*5804Srrh 
123*5804Srrh 	for (i = 0; i < TYPNONE - 1; i++){
124*5804Srrh 		p = &ty_bigdesc[i];
125*5804Srrh 		for (j = 0; j < 16; j++){
126*5804Srrh 			if (((char)p->b_upmmap[j]) != NOTAKE){
127*5804Srrh 				k = p->b_pmmap[p->b_upmmap[j]];
128*5804Srrh 				if (j != k)
129*5804Srrh 					printf("%s:p[up[%d]] == %d\n",
130*5804Srrh 						ty_string[i],j,k);
131*5804Srrh 			}
132*5804Srrh 
133*5804Srrh 			if (((char)p->b_pmmap[j]) != NOTAKE){
134*5804Srrh 				k = p->b_upmmap[p->b_pmmap[j]];
135*5804Srrh 				if (j != k)
136*5804Srrh 					printf("%s:up[p[%d]] == %d\n",
137*5804Srrh 						ty_string[i],j,k);
138*5804Srrh 			}
139*5804Srrh 		}
140*5804Srrh 		if (!ty_float[i])
141*5804Srrh 			continue;
142*5804Srrh 		k = (p->b_msigbits - 1) + p->b_mlshift;
143*5804Srrh 		if (k % 8)
144*5804Srrh 			printf("sigbits: %d, lshift: %d, excess: %d\n",
145*5804Srrh 				p->b_msigbits, p->b_mlshift, k % 8);
146*5804Srrh 		if ((15 - (k / 8)) < 0)
147*5804Srrh 			printf("lsbyte <= 0\n");
148*5804Srrh 		if ( (8 - (p->b_mlshift + 2)) <= 0)
149*5804Srrh 			printf("Shifted byte 15 into byte 14");
150*5804Srrh 		if ( 1 << (p->b_esigbits - 1) != p->b_eexcess)
151*5804Srrh 			printf("sigbits == %d, excess = %d\n",
152*5804Srrh 				p->b_esigbits, p->b_eexcess);
153*5804Srrh 	}
154*5804Srrh }
155