Changeset 824 for proto/Compiler


Ignore:
Timestamp:
Dec 14, 2010, 3:05:00 PM (9 years ago)
Author:
ksherdy
Message:

Synchronize variable names with the parabix2 template.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/Compiler/workspace/pybit_template.c

    r819 r824  
    1414typedef SIMD_type BitBlock;
    1515
    16 #define BLOCK_SIZE (sizeof(SIMD_type) * 8)      /* BLOCK_SIZE           - SIMD register in bits */     
     16#define BLOCK_SIZE (sizeof(SIMD_type) * 8)      /* BLOCK_SIZE           - SIMD register in bits */
    1717#define BUFFER_SIZE (BLOCK_SIZE * 16)           /* BUFFER_SIZE          - multiple of BLOCK_SIZE */
    1818#define OVERLAP_BUFSIZE BLOCK_SIZE              /* OVERLAP_BUFSIZE      - SIMD register width in bytes overlap */
     
    3232
    3333void do_process(FILE *infile, FILE *outfile) {
    34  
     34
    3535        /* Compiler generated stream variable declarations. */
    3636        @decl
    37        
     37
    3838        BitBlock error_mask;
    3939        BitBlock EOF_mask = simd_const_1(1);
    40        
     40
    4141        /* 8 * sizeof(SIMD_type) bytes. */
    4242        BytePack U8[8];
    43        
     43
    4444        /* Source file data is broken into buffers, buffers are broken into blocks, blocks are SIMD register width. */
    45         int src_pos = 0;
    4645        int buf_pos = 0;
     46        int block_pos = 0;
    4747        int err_pos = 0;
    48        
    49         BytePack buf[(OVERLAP_BUFSIZE+BUFFER_SIZE+OVERLAP_BUFSIZE)/sizeof(SIMD_type)]; 
     48
     49        BytePack buf[(OVERLAP_BUFSIZE+BUFFER_SIZE+OVERLAP_BUFSIZE)/sizeof(SIMD_type)];
    5050        char * srcbuf = ((char *) buf) + OVERLAP_BUFSIZE;
    5151        memset((unsigned char *)srcbuf,0,16);
    5252        memset(((unsigned char *)srcbuf)+BUFFER_SIZE,0,16); /* Zero out first and last sizeof(SIMD_type) bytes. */
    53        
     53
    5454        /* File IO */
    5555        int chars_avail = 0;
     
    6262
    6363        @stream_stmts
    64        
     64
    6565        while(1) {
    6666
    6767                PERF_SEC_START(perf_timer);
    68                
     68
    6969                while (chars_avail >= BLOCK_SIZE) { /* process full blocks */
    7070
    71                         BytePack * U8 = (BytePack *) &srcbuf[buf_pos];
     71                        BytePack * U8 = (BytePack *) &srcbuf[block_pos];
    7272
    7373                        s2p(U8[0], U8[1], U8[2], U8[3], U8[4], U8[5], U8[6], U8[7],
     
    7777
    7878                        if (bitblock_has_bit(error_mask)){
    79                                 pos = src_pos + buf_pos + count_forward_zeroes(error_mask);
     79                                pos = buf_pos + block_pos + count_forward_zeroes(error_mask);
    8080                                fprintf(stderr, "Error at position %i.\n", pos);
    8181                                exit(-1);
     
    8383
    8484                        chars_avail -= BLOCK_SIZE;
    85                         buf_pos += BLOCK_SIZE;
    86                 }               
    87                
     85                        block_pos += BLOCK_SIZE;
     86                }
     87
    8888                if(chars_avail > 0 /* || any_carry */) { /* process final partial block */
    8989                        /* extra */
    9090                        EOF_mask = sisd_srl(simd_const_1(1),sisd_from_int(BLOCK_SIZE-chars_avail));
    9191                        BitBlock high_bit_mask = sisd_srl(sisd_high_bit_mask, sisd_from_int(BLOCK_SIZE-chars_avail));
    92                        
    93                         BytePack * U8 = (BytePack *) &srcbuf[buf_pos];
    94                        
     92
     93                        BytePack * U8 = (BytePack *) &srcbuf[block_pos];
     94
    9595                        s2p(U8[0], U8[1], U8[2], U8[3], U8[4], U8[5], U8[6], U8[7],
    9696                        array_bit__0_,array_bit__1_,array_bit__2_,array_bit__3_,array_bit__4_,array_bit__5_,array_bit__6_,array_bit__7_);
     
    104104                        array_bit__6_ = simd_and(array_bit__6_, EOF_mask);
    105105                        array_bit__7_ = simd_and(array_bit__7_, EOF_mask);
    106                        
     106
    107107                        @block_stmts
    108                        
     108
    109109                        if(bitblock_has_bit(error_mask)) {
    110                                 err_pos = src_pos + buf_pos + count_forward_zeroes(error_mask) + 1;
     110                                err_pos = buf_pos + block_pos + count_forward_zeroes(error_mask) + 1;
    111111                                fprintf(stderr, "Initial error at position %i.\n", err_pos);
    112112                                exit(-1);
    113113                        }
    114114                }
    115                
     115
    116116                PERF_SEC_END(perf_timer, chars_avail);
    117117
    118                 src_pos += chars_read;
    119                 buf_pos = 0;
     118                buf_pos += chars_read;
     119                block_pos = 0;
    120120
    121121                chars_read = fread((void *)srcbuf, 1, BUFFER_SIZE, infile);
    122122                chars_avail = chars_read;
    123123                if(ferror(infile)) { fprintf(stderr, "Failed to read input file.\n"); return; }
    124                 if(chars_avail==0 && feof(infile)) { return; } 
     124                if(chars_avail==0 && feof(infile)) { return; }
    125125        }
    126126}
    127127
    128128int main(int argc, char * argv[]) {
    129         char * infilename, * outfilename;       
     129        char * infilename, * outfilename;
    130130        FILE *infile, *outfile;
    131131        struct stat fileinfo;
     
    143143                exit(-1);
    144144        }
    145        
     145
    146146        if (argc < 3) {
    147147                outfile = stdout;
     
    160160
    161161        do_process(infile, outfile);
    162        
     162
    163163        PERF_SEC_DUMP(perf_timer);
    164        
     164
    165165        PERF_SEC_DESTROY(perf_timer);
    166166
    167167        fclose(infile);
    168168        fclose(outfile);
    169        
     169
    170170        return(0);
    171171}
Note: See TracChangeset for help on using the changeset viewer.