Changeset 744 for proto/JSON/src


Ignore:
Timestamp:
Nov 30, 2010, 9:40:16 PM (8 years ago)
Author:
ksherdy
Message:

Update parity_mask argument name to bitblock_parity_mask to avoid confusion.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/JSON/src/json.c

    r741 r744  
    1616#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 */
    18 #define OVERLAP_BUFSIZE sizeof(SIMD_type)       /* OVERLAP_BUFSIZE      - SIMD register width */
     18#define OVERLAP_BUFSIZE BLOCK_SIZE              /* OVERLAP_BUFSIZE      - SIMD register width in bytes overlap */
    1919
    2020#ifdef BUFFER_PROFILING
     
    4747BitBlock strct_u8__xF4_;
    4848BitBlock temp43;
     49BitBlock strct_Lex__True_;
    4950BitBlock strct_Lex__Null_;
    5051BitBlock temp10;
     
    6465BitBlock strct_Ctrl__CR_;
    6566BitBlock strct_Lex__f_;
    66 BitBlock strct_Lex__True_;
     67BitBlock UnescapedDQuotes;
     68BitBlock OddFinal;
    6769BitBlock strct_u8__unibyte_;
    6870BitBlock array_bit__3_;
     
    7274BitBlock temp29;
    7375BitBlock temp22;
    74 BitBlock strct_Ctrl__SP_;
     76BitBlock EvenStart;
    7577BitBlock temp20;
    7678BitBlock temp21;
     
    8284BitBlock temp2;
    8385BitBlock temp1;
     86BitBlock OddEscape;
    8487BitBlock temp7;
    8588BitBlock temp6;
     
    9093BitBlock strct_Lex__a_;
    9194BitBlock strct_u8__x80_x8F_;
     95BitBlock StringMask;
    9296BitBlock strct_u8__prefix2_;
    9397BitBlock array_bit__0_;
     
    104108BitBlock temp37;
    105109BitBlock temp36;
     110BitBlock ParityMask;
    106111BitBlock AllZero = simd_const_1(0);
    107112BitBlock temp35;
     113BitBlock EvenFinal;
    108114BitBlock strct_Lex__DQuote_;
     115BitBlock EvenEscape;
    109116BitBlock strct_Lex__RSolidus_;
     117BitBlock Escape;
    110118BitBlock array_bit__1_;
     119BitBlock Even;
    111120BitBlock array_bit__6_;
    112121BitBlock strct_Lex__r_;
     122BitBlock Start;
    113123BitBlock strct_u8__xF0_;
     124BitBlock strct_Ctrl__x00_x1F_;
    114125BitBlock strct_u8__x90_xBF_;
    115 BitBlock strct_Ctrl__x00_x1F_;
     126BitBlock strct_u8__badprefix_;
     127BitBlock strct_Ctrl__SP_;
    116128BitBlock strct_Lex__False_;
    117129BitBlock temp23;
     
    120132BitBlock array_bit__7_;
    121133BitBlock strct_Lex__Colon_;
     134BitBlock OddStart;
    122135BitBlock temp53;
    123136BitBlock strct_Lex__DecimalPoint_;
     137BitBlock EscapeChars;
    124138BitBlock temp88;
    125139BitBlock temp89;
     
    134148BitBlock strct_u8__xA0_xBF_;
    135149BitBlock strct_u8__prefix3_;
     150BitBlock Odd;
    136151BitBlock temp66;
    137152BitBlock temp67;
     
    179194BitBlock strct_Lex__t_;
    180195BitBlock strct_Ctrl__LF_;
     196BitBlock StringSpans;
    181197BitBlock strct_Lex__Escape_;
    182198BitBlock Temp3;
    183199BitBlock Temp2;
    184200BitBlock Temp1;
    185 BitBlock strct_u8__badprefix_;
     201BitBlock Temp7;
     202BitBlock Temp6;
     203BitBlock Temp5;
    186204BitBlock Temp4;
    187205BitBlock strct_Lex__HexDigit_;
    188206BitBlock strct_Lex__RCurlyBrace_;
     207BitBlock Temp8;
    189208BitBlock strct_Lex__Digit1_9_;
     209CarryType carry1 = Carry0;
     210CarryType carry0 = Carry0;
     211CarryType carry3 = Carry0;
     212CarryType carry2 = Carry0;
    190213
    191214       
     
    194217       
    195218        /*extra*/
     219        /* parse_escape, do not declare, since the PyBit compiler does so by default*/
     220        Odd = simd_const_2(1);
     221        Even = simd_const_2(2);
     222       
    196223        BitBlock high_bit_mask = sisd_high_bit_mask;   
    197224        BitBlock high_bit_is_set;
    198         BitBlock parity_mask = simd_const_1(0);
     225        // BitBlock ParityMask = simd_const_1(0); // ParityMask declaration via PyBit
    199226        BitBlock bitblock_parity_mask; 
    200227       
     
    378405temp89 = simd_or(temp64,strct_Lex__u_);
    379406strct_Lex__Null_ = simd_or(temp89,strct_Lex__l_);
    380 
    381 
    382                         /* strct_Lex__Null_ = simd_or(temp89,strct_Lex__l_); */
     407advance_with_carry(strct_Lex__RSolidus_, carry0, Temp5);
     408Start = simd_andc(strct_Lex__RSolidus_,Temp5);
     409EvenStart = simd_and(Start,Even);
     410adc128(EvenStart, strct_Lex__RSolidus_, carry1, Temp6);
     411EvenFinal = simd_andc(Temp6,strct_Lex__RSolidus_);
     412EvenEscape = simd_and(EvenFinal,Odd);
     413OddStart = simd_and(Start,Odd);
     414adc128(OddStart, strct_Lex__RSolidus_, carry2, Temp7);
     415OddFinal = simd_andc(Temp7,strct_Lex__RSolidus_);
     416OddEscape = simd_and(OddFinal,Even);
     417Escape = simd_or(EvenEscape,OddEscape);
     418UnescapedDQuotes = simd_andc(strct_Lex__DQuote_,EscapeChars);
     419
     420                        /* Generate Parity Mask */
    383421                        high_bit_mask = sisd_high_bit_mask;
    384422                        high_bit_is_set = simd_and(high_bit_mask, bitblock_parity_mask);                       
    385                         parity_mask = sisd_add( simd_not(sisd_srl(high_bit_is_set, sisd_from_int(BLOCK_SIZE-1))) , sisd_low_bit_mask);                                         
    386                         bitblock_parity_mask = bitblock_parallel_prefix_parity(strct_Lex__DQuote_, parity_mask);
    387                        
    388                         print_simd_register("strct_Lex__DQuote_",strct_Lex__DQuote_);
     423                        bitblock_parity_mask = sisd_add( simd_not(sisd_srl(high_bit_is_set, sisd_from_int(BLOCK_SIZE-1))) , sisd_low_bit_mask);                                         
     424                        ParityMask = bitblock_parallel_prefix_parity(UnescapedDQuotes, bitblock_parity_mask);
     425
     426advance_with_carry(ParityMask, carry3, Temp8);
     427StringMask = simd_and(ParityMask,Temp8);
     428StringSpans = simd_or(StringMask,UnescapedDQuotes);
     429
     430
     431                        /* strct_Lex__Null_ = simd_or(temp89,strct_Lex__l_); */
     432                        print_array_le("Data", &srcbuf[buf_pos],BLOCK_SIZE);
     433                        print_simd_register("Escape", Escape);
     434                       
     435
     436                       
     437                        print_simd_register("Unescaped DQuote",UnescapedDQuotes);
     438                        /*
    389439                        print_simd_register("high_bit_is_set", high_bit_is_set);
    390440                        print_simd_register("high_bit_mask", high_bit_mask);
    391                         print_simd_register("bitblock_parity_mask", bitblock_parity_mask);
    392 
     441                        */
     442                        print_simd_register("ParityMask", ParityMask);
     443                        print_simd_register("StringMask", StringMask);
     444                        print_simd_register("StringSpans", StringSpans);                                               
     445                       
    393446                        if (bitblock_has_bit(error_mask)){
    394447                                err_pos = src_pos + buf_pos + count_forward_zeroes(error_mask);
     
    404457                        /* extra */
    405458                        EOF_mask = sisd_srl(simd_const_1(1),sisd_from_int(BLOCK_SIZE-chars_avail));
    406                        
     459                                               
    407460                        BytePack * U8 = (BytePack *) &srcbuf[buf_pos];
    408461                       
     
    563616temp89 = simd_or(temp64,strct_Lex__u_);
    564617strct_Lex__Null_ = simd_or(temp89,strct_Lex__l_);
    565 
    566 
    567                         /* strct_Lex__Null_ = simd_or(temp89,strct_Lex__l_); */
    568                         /* extra */
     618advance_with_carry(strct_Lex__RSolidus_, carry0, Temp5);
     619Start = simd_andc(strct_Lex__RSolidus_,Temp5);
     620EvenStart = simd_and(Start,Even);
     621adc128(EvenStart, strct_Lex__RSolidus_, carry1, Temp6);
     622EvenFinal = simd_andc(Temp6,strct_Lex__RSolidus_);
     623EvenEscape = simd_and(EvenFinal,Odd);
     624OddStart = simd_and(Start,Odd);
     625adc128(OddStart, strct_Lex__RSolidus_, carry2, Temp7);
     626OddFinal = simd_andc(Temp7,strct_Lex__RSolidus_);
     627OddEscape = simd_and(OddFinal,Even);
     628Escape = simd_or(EvenEscape,OddEscape);
     629UnescapedDQuotes = simd_andc(strct_Lex__DQuote_,EscapeChars);
     630advance_with_carry(ParityMask, carry3, Temp8);
     631
     632                        /* Generate Parity Mask */
    569633                        high_bit_mask = sisd_srl(sisd_high_bit_mask, sisd_from_int(BLOCK_SIZE-chars_avail));
    570634                        high_bit_is_set = simd_and(high_bit_mask, bitblock_parity_mask);
    571                         parity_mask = sisd_add(simd_not(sisd_srl(high_bit_is_set, sisd_from_int(chars_avail-1))) , sisd_low_bit_mask);                 
    572                         bitblock_parity_mask = bitblock_parallel_prefix_parity(strct_Lex__DQuote_, parity_mask);
    573                         bitblock_parity_mask = simd_and(bitblock_parity_mask, EOF_mask);
    574                        
    575                         print_simd_register("strct_Lex__DQuote_",strct_Lex__DQuote_);
     635                        bitblock_parity_mask = sisd_add(simd_not(sisd_srl(high_bit_is_set, sisd_from_int(chars_avail-1))) , sisd_low_bit_mask);                 
     636                        ParityMask = bitblock_parallel_prefix_parity(UnescapedDQuotes, bitblock_parity_mask);
     637                        ParityMask = simd_and(bitblock_parity_mask, EOF_mask);
     638
     639
     640StringMask = simd_and(ParityMask,Temp8);
     641StringSpans = simd_or(StringMask,UnescapedDQuotes);
     642
     643
     644                        /* strct_Lex__Null_ = simd_or(temp89,strct_Lex__l_); */
     645                        print_array_le("Data", &srcbuf[buf_pos],BLOCK_SIZE);
     646                        print_simd_register("Escape", Escape);
     647                       
     648
     649                       
     650                       
     651                        print_simd_register("Unescaped DQuote",UnescapedDQuotes);
     652                        /*
    576653                        print_simd_register("high_bit_is_set", high_bit_is_set);
    577654                        print_simd_register("high_bit_mask", high_bit_mask);
    578                         print_simd_register("bitblock_parity_mask", bitblock_parity_mask);
     655                        */
     656                        print_simd_register("ParityMask", ParityMask);
     657                        print_simd_register("StringMask", StringMask);
     658                        print_simd_register("StringSpans", StringSpans);                       
    579659                       
    580660                        if(bitblock_has_bit(error_mask)) {
Note: See TracChangeset for help on using the changeset viewer.