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