Annotation of uae/genblitter.c, revision 1.1.1.2

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

unix.superglobalmegacorp.com

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