Ignore:
Timestamp:
Jun 17, 2013, 2:46:56 PM (6 years ago)
Author:
shiyangy
Message:

template modified

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/xmlschema/validation_template_onevec.cpp

    r3292 r3319  
    660660        cout << endl;
    661661}
     662
     663static inline void vec_scan(BitStreamScanner<BitBlock, uint64_t,uint64_t, 32> match_scanner,BitStreamScanner<BitBlock, uint64_t,uint64_t, 32> f_vec_scanner){
     664        int current_pos = 0;
     665        int next_pos = 0;
     666        int match_pos = 0;
     667        if(f_vec_scanner.has_next()){
     668                current_pos = f_vec_scanner.scan_to_next();
     669        }else{
     670                return;
     671        }
     672        if (match_scanner.has_next()){
     673                match_pos = match_scanner.scan_to_next();
     674        }else{
     675                while(f_vec_scanner.has_next()){
     676                        current_pos = f_vec_scanner.scan_to_next();
     677                        printf("Mismatch found at pos: %d.\n",current_pos);
     678                }
     679                return;
     680        }
     681        while(1){
     682                if(f_vec_scanner.has_next()){
     683                        next_pos = f_vec_scanner.scan_to_next();
     684                }else{
     685                        next_pos = -1;
     686                }
     687                if (match_pos > next_pos && next_pos != -1){
     688                        printf("Mismatch found at pos: %d.\n",current_pos);
     689                }else if (next_pos == -1){
     690                        break;
     691                }else{
     692                        if(match_scanner.has_next()){
     693                                match_pos = match_scanner.scan_to_next();
     694                        }else{
     695                                printf("Mismatch found at pos: %d.\n",next_pos);
     696                                while(f_vec_scanner.has_next()){
     697                                        current_pos = f_vec_scanner.scan_to_next();
     698                                        printf("Mismatch found at pos: %d.\n",current_pos);
     699                                }
     700                                return;
     701                        }
     702                }
     703                current_pos = next_pos;
     704        }
     705}
     706
     707static inline void validate_mul_block(){
     708        struct Elem elem;
     709        Validation_1 validation_1;
     710        struct Lex lex;
     711        struct Output output;
     712        Classify_bytes classify_bytes;
     713        int lgth = gid_vec.size();
     714        int remaining = 0;
     715        Basis_bits temp_basis_bits;
     716        const int num_block = lgth /(BLOCK_SIZE *8 / VECTOR_WIDTH);
     717        int i = 0;
     718       
     719        BitStreamScanner<BitBlock, uint64_t,uint64_t, 32> match_scanner;
     720        BitStreamScanner<BitBlock, uint64_t,uint64_t, 32> f_vec_scanner;
     721        match_scanner.init();
     722        f_vec_scanner.init();
     723        if(lgth != 0){ 
     724                remaining = lgth %(BLOCK_SIZE *8 / VECTOR_WIDTH);
     725                for(i = 0;i < num_block; i++){
     726                        s2p_do_block((BytePack*)(&(gid_vec[i])), temp_basis_bits);
     727                        print_elem_vec(&(gid_vec),lgth);
     728                        print_basis_bits(temp_basis_bits);
     729                       
     730                        classify_bytes.do_block(temp_basis_bits,lex);
     731                        validation_1.do_block(lex,output);
     732                       
     733                        match_scanner.load_block(output.matches,i);
     734                        f_vec_scanner.load_block(lex.cc1,i);
     735                }
     736                if (remaining !=0){
     737                        BitBlock EOF_mask = bitblock::srl(simd<1>::constant<1>(),convert(BLOCK_SIZE-remaining));
     738                        s2p_do_final_block((BytePack*)(&(gid_vec[i])), temp_basis_bits,EOF_mask);
     739                        print_elem_vec(&(gid_vec),lgth);
     740                        print_basis_bits(temp_basis_bits);
     741                       
     742                        classify_bytes.do_block(temp_basis_bits,lex);
     743                        validation_1.do_block(lex,output);
     744                       
     745                        match_scanner.load_block(output.matches,i);
     746                        f_vec_scanner.load_block(lex.cc1,i);
     747                }
     748        }
     749        vec_scan(match_scanner,f_vec_scanner);
     750}
     751
    662752
    663753
     
    13401430#endif
    13411431        //cout << "validate start" << endl;
    1342         validate();
     1432        //validate();
     1433        validate_mul_block();
    13431434
    13441435        PERF_SEC_DUMP(parser_timer);
Note: See TracChangeset for help on using the changeset viewer.