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