|
|
1.1 ! root 1: /* ! 2: * UAE - The Un*x Amiga Emulator ! 3: * ! 4: * Optimized blitter minterm function generator ! 5: * ! 6: * Copyright 1995,1996 Bernd Schmidt ! 7: * Copyright 1996 Alessandro Bissacco ! 8: */ ! 9: ! 10: #include "sysconfig.h" ! 11: #include "sysdeps.h" ! 12: ! 13: #include "config.h" ! 14: #include "options.h" ! 15: /*#include "custom.h"*/ ! 16: ! 17: UWORD dmacon; ! 18: /* Here is the minterm table used in blitter function generation */ ! 19: ! 20: static unsigned char blttbl[]= { ! 21: 0x00, 0x0a, 0x2a, 0x30, 0x3a, 0x3c, 0x4a, 0x6a, 0x8a, 0x8c, 0x9a, 0xa8, ! 22: 0xaa, 0xb1, 0xca, 0xcc, 0xd8, 0xe2, 0xea, 0xf0, 0xfa, 0xfc ! 23: }; ! 24: ! 25: static int bitset(int mt, int bit) ! 26: { ! 27: return mt & (1<<bit); ! 28: } ! 29: ! 30: static int generate_expr(int minterm, int print) ! 31: { ! 32: int result = 0; ! 33: int firstor = 1; ! 34: int bits = 0; ! 35: int i; ! 36: for(i=0; i<8; i++) { ! 37: if (bitset(minterm, i) && !bitset(bits,i)) { ! 38: int j; ! 39: int dontcare = 0; ! 40: int firstand = 1; ! 41: int bitbucket[8], bitcount; ! 42: ! 43: bits |= 1<<i; ! 44: bitcount = 1; bitbucket[0] = i; ! 45: for(j=1; j<8; j *= 2) { ! 46: int success = 1; ! 47: int k; ! 48: for(k=0; k < bitcount; k++) { ! 49: if (!bitset(minterm, bitbucket[k] ^ j)) { ! 50: success = 0; ! 51: } ! 52: } ! 53: if (success) { ! 54: int l; ! 55: dontcare |= j; ! 56: for(l=bitcount; l < bitcount*2; l++) { ! 57: bitbucket[l] = bitbucket[l-bitcount] ^ j; ! 58: bits |= 1 << bitbucket[l]; ! 59: } ! 60: bitcount *= 2; ! 61: } ! 62: } ! 63: if (firstor) { ! 64: firstor = 0; ! 65: } else { ! 66: if (print) printf(" | "); ! 67: } ! 68: for (j=1; j<8; j *= 2) { ! 69: if (!(dontcare & j)) { ! 70: if (firstand) { ! 71: firstand = 0; ! 72: if (print) printf("("); ! 73: } else { ! 74: if (print) printf(" & "); ! 75: } ! 76: if (!(i & j)) ! 77: if (print) printf("~"); ! 78: if (print) printf("src%c", (j == 1 ? 'c' : j == 2 ? 'b' : 'a')); ! 79: result |= (j == 1 ? 4 : j == 2 ? 2 : 1); ! 80: } ! 81: } ! 82: if (!firstand) { ! 83: if (print) printf(")"); ! 84: } else { ! 85: if (print) printf("0xFFFF"); ! 86: } ! 87: } ! 88: } ! 89: if (firstor) ! 90: if (print) printf("0"); ! 91: if (print) printf(";\n"); ! 92: return result; ! 93: } ! 94: ! 95: static void generate_include(void) ! 96: { ! 97: int minterm; ! 98: printf("static __inline__ ULONG blit_func(ULONG srca, ULONG srcb, ULONG srcc, UBYTE mt)\n{\nswitch(mt){\n"); ! 99: for (minterm = 0; minterm < 256; minterm++) { ! 100: printf("case 0x%x:\n", minterm); ! 101: printf("\treturn "); ! 102: generate_expr(minterm, 1); ! 103: } ! 104: printf("}\n"); ! 105: printf("return 0;\n"); /* No, sir, it doesn't! */ ! 106: printf("}\n"); ! 107: } ! 108: ! 109: static void generate_func(void) ! 110: { ! 111: unsigned int i; ! 112: printf("#include \"sysconfig.h\"\n"); ! 113: printf("#include \"sysdeps.h\"\n"); ! 114: printf("#include \"config.h\"\n"); ! 115: printf("#include \"options.h\"\n"); ! 116: printf("#include \"custom.h\"\n"); ! 117: printf("#include \"blitter.h\"\n"); ! 118: printf("#include \"blitfunc.h\"\n\n"); ! 119: ! 120: for (i = 0; i < sizeof(blttbl); i++) { ! 121: int active = generate_expr(blttbl[i],0); ! 122: int a_is_on = active & 1, b_is_on = active & 2, c_is_on = active & 4; ! 123: ! 124: printf("void blitdofast_%x(UBYTE *pta, UBYTE *ptb, UBYTE *ptc, UBYTE *ptd, struct bltinfo *b)\n",blttbl[i]); ! 125: printf("{\n"); ! 126: printf("int i,j;\n"); ! 127: ! 128: #if FAST_BLITTER == 3 || FAST_BLITTER == 5 ! 129: printf("if (b->hblitsize>1"); ! 130: if (a_is_on) printf(" && !b->blitashift && b->bltafwm==0xffff && b->bltalwm==0xffff"); ! 131: if (b_is_on) printf(" && !b->blitbshift"); ! 132: printf(") {\n"); ! 133: if (a_is_on) printf("ULONG srca=((ULONG)b->bltadat << 16) | b->bltadat;\n"); ! 134: if (b_is_on) printf("ULONG srcb=((ULONG)b->bltbdat << 16) | b->bltbdat;\n"); ! 135: if (c_is_on) printf("ULONG srcc=((ULONG)b->bltcdat << 16) | b->bltcdat;\n"); ! 136: printf("ULONG dest;\n"); ! 137: printf("int count=b->hblitsize/2, oddword=b->hblitsize&1;\n"); ! 138: printf("for (j=0;j<b->vblitsize;j++) {\n"); ! 139: printf("\tfor(i=0;i<count;i++) {\n"); ! 140: if (a_is_on) printf("\t\tif (pta) {srca=*((ULONG *)pta); pta += 4;}\n"); ! 141: if (b_is_on) printf("\t\tif (ptb) {srcb=*((ULONG *)ptb); ptb += 4;}\n"); ! 142: if (c_is_on) printf("\t\tif (ptc) {srcc=*((ULONG *)ptc); ptc += 4;}\n"); ! 143: printf("\t\tdest="); ! 144: generate_expr(blttbl[i],1); ! 145: printf("\t\tif (dest) b->blitzero=0;\n"); ! 146: printf("\t\tif (ptd) {*(ULONG *)ptd=dest; ptd += 4;}\n"); ! 147: printf("\t}\n"); ! 148: printf("\tif (oddword) {\n"); ! 149: if (a_is_on) printf("\t\tif (pta) { srca=(ULONG)*(UWORD *)pta; pta += 2; }\n"); ! 150: if (b_is_on) printf("\t\tif (ptb) { srcb=(ULONG)*(UWORD *)ptb; ptb += 2; }\n"); ! 151: if (c_is_on) printf("\t\tif (ptc) { srcc=(ULONG)*(UWORD *)ptc; ptc += 2; }\n"); ! 152: printf("\t\tdest="); ! 153: generate_expr(blttbl[i],1); ! 154: printf("\t\tif (dest) b->blitzero=0;\n"); ! 155: printf("\t\tif (ptd) { *(UWORD *)ptd= dest; ptd += 2; }\n"); ! 156: printf("\t}\n"); ! 157: if (a_is_on) printf("\tif (pta) pta += b->bltamod;\n"); ! 158: if (b_is_on) printf("\tif (ptb) ptb += b->bltbmod;\n"); ! 159: if (c_is_on) printf("\tif (ptc) ptc += b->bltcmod;\n"); ! 160: printf("\tif (ptd) ptd += b->bltdmod;\n"); ! 161: printf("}\n"); ! 162: if (a_is_on) printf("if (pta) b->bltadat = (*(pta-b->bltamod-2) << 8) | *(pta - b->bltamod - 1);\n"); /* Maybe not necessary, but I don't want problems */ ! 163: if (b_is_on) printf("if (ptb) b->bltbdat = (*(ptb-b->bltbmod-2) << 8) | *(ptb - b->bltbmod - 1);\n"); ! 164: if (c_is_on) printf("if (ptc) b->bltcdat = (*(ptc-b->bltcmod-2) << 8) | *(ptc - b->bltcmod - 1);\n"); ! 165: printf("if (ptd) b->bltddat = (*(ptd-b->bltdmod-2) << 8) | *(ptd - b->bltdmod - 1);\n"); ! 166: ! 167: printf("} else\n"); ! 168: #endif ! 169: printf("{\n"); ! 170: ! 171: printf("UWORD srca,srcb,srcc,bltaold,bltamask=b->bltafwm;\n"); ! 172: if (a_is_on) printf("if (b->hblitsize==1) bltamask&=b->bltalwm;\n"); ! 173: printf("for (j=0;j<b->vblitsize;j++) {\n"); ! 174: if (a_is_on) { ! 175: printf("\tif (pta) { b->bltadat=(*pta << 8) | (*(pta+1)); pta+=2; }\n"); ! 176: if (b_is_on) printf("\tif (ptb) { b->bltbdat=(*ptb << 8) | (*(ptb+1)); ptb+=2; }\n"); ! 177: if (c_is_on) printf("\tif (ptc) { b->bltcdat=(*ptc << 8) | (*(ptc+1)); ptc+=2; };\n"); ! 178: printf("\tbltaold=b->bltadat & bltamask;\n"); ! 179: printf("\tsrca=(((ULONG)b->blitpreva << 16) | bltaold) >> b->blitashift;\n"); ! 180: if (b_is_on) printf("\tsrcb=(((ULONG)b->blitprevb << 16) | b->bltbdat) >> b->blitbshift;\n"); ! 181: if (c_is_on) printf("\tsrcc=b->bltcdat;\n"); ! 182: printf("\tb->bltddat="); ! 183: generate_expr(blttbl[i],1); ! 184: printf("\tb->blitpreva=bltaold;\n"); ! 185: if (b_is_on) printf("\tb->blitprevb=b->bltbdat;\n"); ! 186: printf("\tif (b->bltddat) b->blitzero=0;\n"); ! 187: printf("\tif (ptd) { *ptd = b->bltddat >> 8; *(ptd+1) = b->bltddat; ptd+= 2; }\n"); ! 188: } ! 189: if (a_is_on) printf("\tfor (i=2;i<b->hblitsize;i++) {\n"); ! 190: else printf("\tfor (i=0;i<b->hblitsize;i++) {\n"); ! 191: if (a_is_on) printf("\t\tif (pta) { b->bltadat=(*pta << 8) | (*(pta+1)); pta+=2; }\n"); ! 192: if (b_is_on) printf("\t\tif (ptb) { b->bltbdat=(*ptb << 8) | (*(ptb+1)); ptb+=2; }\n"); ! 193: if (c_is_on) printf("\t\tif (ptc) { b->bltcdat=(*ptc << 8) | (*(ptc+1)); ptc+=2; }\n"); ! 194: if (a_is_on) printf("\t\tsrca=(((ULONG)b->blitpreva<<16)|b->bltadat)>>b->blitashift;\n"); ! 195: if (b_is_on) printf("\t\tsrcb=(((ULONG)b->blitprevb<<16)|b->bltbdat)>>b->blitbshift;\n"); ! 196: if (c_is_on) printf("\t\tsrcc=b->bltcdat;\n"); ! 197: printf("\t\tb->bltddat="); ! 198: generate_expr(blttbl[i],1); ! 199: if (a_is_on) printf("\t\tb->blitpreva=b->bltadat;\n"); ! 200: if (b_is_on) printf("\t\tb->blitprevb=b->bltbdat;\n"); ! 201: printf("\t\tif (b->bltddat) b->blitzero=0;\n"); ! 202: printf("\t\tif (ptd) { *ptd = b->bltddat >> 8; *(ptd+1) = b->bltddat; ptd+= 2; }\n"); ! 203: printf("\t}\n"); ! 204: if (a_is_on) { ! 205: printf("\tif (b->hblitsize>1) {\n"); ! 206: printf("\t\tif (pta) { b->bltadat=(*pta << 8) | (*(pta+1)); pta+=2; }\n"); ! 207: if (b_is_on) printf("\t\tif (ptb) { b->bltbdat=(*ptb << 8) | (*(ptb+1)); ptb+=2; }\n"); ! 208: if (c_is_on) printf("\t\tif (ptc) { b->bltcdat=(*ptc << 8) | (*(ptc+1)); ptc+=2; }\n"); ! 209: printf("\t\tbltaold=b->bltadat & b->bltalwm;\n"); ! 210: printf("\t\tsrca=(((ULONG)b->blitpreva << 16) | bltaold) >> b->blitashift;\n"); ! 211: if (b_is_on) printf("\t\tsrcb=(((ULONG)b->blitprevb << 16) | b->bltbdat) >> b->blitbshift;\n"); ! 212: if (c_is_on) printf("\t\tsrcc=b->bltcdat;\n"); ! 213: printf("\t\tb->bltddat="); ! 214: generate_expr(blttbl[i],1); ! 215: printf("\t\tb->blitpreva=bltaold;\n"); ! 216: if (b_is_on) printf("\t\tb->blitprevb=b->bltbdat;\n"); ! 217: printf("\t\tif (b->bltddat) b->blitzero=0;\n"); ! 218: printf("\t\tif (ptd) { *ptd = b->bltddat >> 8; *(ptd+1) = b->bltddat; ptd+= 2; }\n"); ! 219: printf("\t}\n"); ! 220: } ! 221: if (a_is_on) printf("\tif (pta) pta += b->bltamod;\n"); ! 222: if (b_is_on) printf("\tif (ptb) ptb += b->bltbmod;\n"); ! 223: if (c_is_on) printf("\tif (ptc) ptc += b->bltcmod;\n"); ! 224: printf("\tif (ptd) ptd+=b->bltdmod;\n"); ! 225: printf("}\n"); ! 226: printf("}\n"); ! 227: printf("}\n"); ! 228: ! 229: ! 230: printf("void blitdofast_desc_%x(UBYTE *pta, UBYTE *ptb, UBYTE *ptc, UBYTE *ptd, struct bltinfo *b)\n",blttbl[i]); ! 231: printf("{\n"); ! 232: printf("int i,j;\n"); ! 233: ! 234: #if FAST_BLITTER == 3 || FAST_BLITTER == 5 ! 235: printf("if (b->hblitsize>1"); ! 236: if (a_is_on) printf(" && !b->blitashift && b->bltafwm==0xffff && b->bltalwm==0xffff"); ! 237: if (b_is_on) printf(" && !b->blitbshift"); ! 238: printf(") {\n"); ! 239: if (a_is_on) printf("ULONG srca=((ULONG)b->bltadat << 16) | b->bltadat;\n"); ! 240: if (b_is_on) printf("ULONG srcb=((ULONG)b->bltbdat << 16) | b->bltbdat;\n"); ! 241: if (c_is_on) printf("ULONG srcc=((ULONG)b->bltcdat << 16) | b->bltcdat;\n"); ! 242: printf("ULONG dest;\n"); ! 243: printf("int count=b->hblitsize/2, oddword=b->hblitsize&1;\n"); ! 244: printf("for (j=0;j<b->vblitsize;j++) {\n"); ! 245: printf("\tfor(i=0;i<count;i++) {\n"); ! 246: if (a_is_on) printf("\t\tif (pta) {srca=*((ULONG *)(pta-2)); pta -= 4;}\n"); ! 247: if (b_is_on) printf("\t\tif (ptb) {srcb=*((ULONG *)(ptb-2)); ptb -= 4;}\n"); ! 248: if (c_is_on) printf("\t\tif (ptc) {srcc=*((ULONG *)(ptc-2)); ptc -= 4;}\n"); ! 249: printf("\t\tdest="); ! 250: generate_expr(blttbl[i],1); ! 251: printf("\t\tif (dest) b->blitzero=0;\n"); ! 252: printf("\t\tif (ptd) {*(ULONG *)(ptd-2)=dest; ptd -= 4;}\n"); ! 253: printf("\t}\n"); ! 254: printf("\tif (oddword) {\n"); ! 255: if (a_is_on) printf("\t\tif (pta) { srca=(ULONG)*(UWORD *)pta; pta -= 2; }\n"); ! 256: if (b_is_on) printf("\t\tif (ptb) { srcb=(ULONG)*(UWORD *)ptb; ptb -= 2; }\n"); ! 257: if (c_is_on) printf("\t\tif (ptc) { srcc=(ULONG)*(UWORD *)ptc; ptc -= 2; }\n"); ! 258: printf("\t\tdest="); ! 259: generate_expr(blttbl[i],1); ! 260: printf("\t\tif (dest) b->blitzero=0;\n"); ! 261: printf("\t\tif (ptd) { *(UWORD *)ptd= dest; ptd -= 2; }\n"); ! 262: printf("\t}\n"); ! 263: if (a_is_on) printf("\tif (pta) pta -= b->bltamod;\n"); ! 264: if (b_is_on) printf("\tif (ptb) ptb -= b->bltbmod;\n"); ! 265: if (c_is_on) printf("\tif (ptc) ptc -= b->bltcmod;\n"); ! 266: printf("\tif (ptd) ptd-=b->bltdmod;\n"); ! 267: printf("}\n"); ! 268: if (a_is_on) printf("if (pta) b->bltadat = (*(pta + b->bltamod + 2) << 8) | *(pta + b->bltamod + 1);\n"); /* Maybe not necessary, but I don't want problems */ ! 269: if (b_is_on) printf("if (ptb) b->bltbdat = (*(ptb + b->bltbmod + 2) << 8) | *(ptb + b->bltbmod + 1);\n"); ! 270: if (c_is_on) printf("if (ptc) b->bltcdat = (*(ptc + b->bltcmod + 2) << 8) | *(ptc + b->bltcmod + 1);\n"); ! 271: printf("if (ptd) b->bltddat = (*(ptd + b->bltdmod + 2) << 8) | *(ptd + b->bltdmod + 1);\n"); ! 272: ! 273: printf("} else\n"); ! 274: #endif ! 275: printf("{\n"); ! 276: ! 277: printf("UWORD srca,srcb,srcc,bltaold,bltamask=b->bltafwm;\n"); ! 278: if (a_is_on) printf("if (b->hblitsize==1) bltamask&=b->bltalwm;\n"); ! 279: printf("for (j=0;j<b->vblitsize;j++) {\n"); ! 280: if (a_is_on) { ! 281: printf("\tif (pta) { b->bltadat = (*pta << 8) | *(pta+1); pta -= 2; }\n"); ! 282: if (b_is_on) printf("\tif (ptb) { b->bltbdat = (*ptb << 8) | *(ptb+1); ptb -= 2; }\n"); ! 283: if (c_is_on) printf("\tif (ptc) { b->bltcdat = (*ptc << 8) | *(ptc+1); ptc -= 2; }\n"); ! 284: printf("\tbltaold=b->bltadat & bltamask;\n"); ! 285: printf("\tsrca=(((ULONG)bltaold<<16)|b->blitpreva)>>(16-b->blitashift);\n"); ! 286: if (b_is_on) printf("\tsrcb=(((ULONG)b->bltbdat<<16)|b->blitprevb)>>(16-b->blitbshift);\n"); ! 287: if (c_is_on) printf("\tsrcc=b->bltcdat;\n"); ! 288: printf("\tb->bltddat="); ! 289: generate_expr(blttbl[i],1); ! 290: printf("\tb->blitpreva=bltaold;\n"); ! 291: if (b_is_on) printf("\tb->blitprevb=b->bltbdat;\n"); ! 292: printf("\tif (b->bltddat) b->blitzero=0;\n"); ! 293: printf("\tif (ptd) { *ptd = b->bltddat >> 8; *(ptd+1) = b->bltddat; ptd-= 2; }\n"); ! 294: } ! 295: if (a_is_on) printf("\tfor (i=2;i<b->hblitsize;i++) {\n"); ! 296: else printf("\tfor (i=0;i<b->hblitsize;i++) {\n"); ! 297: if (a_is_on) printf("\t\tif (pta) { b->bltadat = (*pta << 8) | *(pta+1); pta -= 2; }\n"); ! 298: if (b_is_on) printf("\t\tif (ptb) { b->bltbdat = (*ptb << 8) | *(ptb+1); ptb -= 2; }\n"); ! 299: if (c_is_on) printf("\t\tif (ptc) { b->bltcdat = (*ptc << 8) | *(ptc+1); ptc -= 2; }\n"); ! 300: if (a_is_on) printf("\t\tsrca=(((ULONG)b->bltadat<<16)|b->blitpreva)>>(16-b->blitashift);\n"); ! 301: if (b_is_on) printf("\t\tsrcb=(((ULONG)b->bltbdat<<16)|b->blitprevb)>>(16-b->blitbshift);\n"); ! 302: if (c_is_on) printf("\t\tsrcc=b->bltcdat;\n"); ! 303: printf("\t\tb->bltddat="); ! 304: generate_expr(blttbl[i],1); ! 305: if (a_is_on) printf("\t\tb->blitpreva=b->bltadat;\n"); ! 306: if (b_is_on) printf("\t\tb->blitprevb=b->bltbdat;\n"); ! 307: printf("\t\tif (b->bltddat) b->blitzero=0;\n"); ! 308: printf("\t\tif (ptd) { *ptd = b->bltddat >> 8; *(ptd+1) = b->bltddat; ptd-= 2; }\n"); ! 309: printf("\t}\n"); ! 310: if (a_is_on) { ! 311: printf("\tif (b->hblitsize>1) {\n"); ! 312: printf("\t\tif (pta) { b->bltadat = (*pta << 8) | *(pta+1); pta -= 2; }\n"); ! 313: if (b_is_on) printf("\t\tif (ptb) { b->bltbdat = (*ptb << 8) | *(ptb+1); ptb -= 2; }\n"); ! 314: if (c_is_on) printf("\t\tif (ptc) { b->bltcdat = (*ptc << 8) | *(ptc+1); ptc -= 2; }\n"); ! 315: printf("\t\tbltaold=b->bltadat & b->bltalwm;\n"); ! 316: printf("\t\tsrca=(((ULONG)bltaold<<16)|b->blitpreva)>>(16-b->blitashift);\n"); ! 317: if (b_is_on) printf("\t\tsrcb=(((ULONG)b->bltbdat<<16)|b->blitprevb)>>(16-b->blitbshift);\n"); ! 318: if (c_is_on) printf("\t\tsrcc=b->bltcdat;\n"); ! 319: printf("\t\tb->bltddat="); ! 320: generate_expr(blttbl[i],1); ! 321: printf("\t\tb->blitpreva=bltaold;\n"); ! 322: if (b_is_on) printf("\t\tb->blitprevb=b->bltbdat;\n"); ! 323: printf("\t\tif (b->bltddat) b->blitzero=0;\n"); ! 324: printf("\t\tif (ptd) { *ptd = b->bltddat >> 8; *(ptd+1) = b->bltddat; ptd-= 2; }\n"); ! 325: printf("\t}\n"); ! 326: } ! 327: if (a_is_on) printf("\tif (pta) pta-=b->bltamod;\n"); ! 328: if (b_is_on) printf("\tif (ptb) ptb-=b->bltbmod;\n"); ! 329: if (c_is_on) printf("\tif (ptc) ptc-=b->bltcmod;\n"); ! 330: printf("\tif (ptd) ptd-=b->bltdmod;\n"); ! 331: printf("}\n"); ! 332: printf("}\n"); ! 333: printf("}\n"); ! 334: } ! 335: } ! 336: ! 337: static void generate_table(void) ! 338: { ! 339: unsigned int index = 0; ! 340: unsigned int i; ! 341: printf("#include \"sysconfig.h\"\n"); ! 342: printf("#include \"sysdeps.h\"\n"); ! 343: printf("#include \"config.h\"\n"); ! 344: printf("#include \"options.h\"\n"); ! 345: printf("#include \"custom.h\"\n"); ! 346: printf("#include \"blitter.h\"\n"); ! 347: printf("#include \"blitfunc.h\"\n\n"); ! 348: printf("blitter_func *blitfunc_dofast[256] = {\n"); ! 349: for (i = 0; i < 256; i++) { ! 350: if (index < sizeof(blttbl) && i == blttbl[index]) { ! 351: printf("blitdofast_%x",i); ! 352: index++; ! 353: } ! 354: else printf("0"); ! 355: if (i < 255) printf(", "); ! 356: if ((i & 7) == 7) printf("\n"); ! 357: } ! 358: printf("};\n\n"); ! 359: ! 360: index = 0; ! 361: printf("blitter_func *blitfunc_dofast_desc[256] = {\n"); ! 362: for (i = 0; i < 256; i++) { ! 363: if (index < sizeof(blttbl) && i == blttbl[index]) { ! 364: printf("blitdofast_desc_%x",i); ! 365: index++; ! 366: } ! 367: else printf("0"); ! 368: if (i < 255) printf(", "); ! 369: if ((i & 7) == 7) printf("\n"); ! 370: } ! 371: printf("};\n"); ! 372: } ! 373: ! 374: static void generate_header(void) ! 375: { ! 376: unsigned int i; ! 377: for (i = 0; i < sizeof(blttbl); i++) { ! 378: printf("extern blitter_func blitdofast_%x;\n",blttbl[i]); ! 379: printf("extern blitter_func blitdofast_desc_%x;\n",blttbl[i]); ! 380: } ! 381: } ! 382: ! 383: int main(int argc, char **argv) ! 384: { ! 385: char mode = 'i'; ! 386: if (argc == 2) mode = *argv[1]; ! 387: switch (mode) { ! 388: case 'i': generate_include(); ! 389: break; ! 390: case 'f': generate_func(); ! 391: break; ! 392: case 't': generate_table(); ! 393: break; ! 394: case 'h': generate_header(); ! 395: break; ! 396: default: abort(); ! 397: } ! 398: return 0; ! 399: } ! 400:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.