Annotation of uae/src/genblitter.c, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.