Commit | Line | Data |
---|---|---|
783a9e69 RH |
1 | /* |
2 | * Copyright (c) 1982 Regents of the University of California | |
3 | */ | |
4 | #ifndef lint | |
f70ab843 | 5 | static char sccsid[] = "@(#)floattab.c 4.3 %G%"; |
783a9e69 RH |
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 | } |