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