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