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: }