Ignore:
Timestamp:
Dec 29, 2011, 7:31:12 PM (7 years ago)
Author:
cameron
Message:

Updating for basis bit structs

File:
1 edited

Legend:

Unmodified
Added
Removed
  • proto/u8u16/pablo_template.cpp

    r1821 r1822  
    2828BOM_Table * transcode_timer;
    2929#endif
     30
     31#define SEGMENT_BLOCKS 10
    3032
    3133#ifdef CODE_CLOCKER
     
    109111  @decl
    110112
    111   BitBlock u16l [8];
    112   BitBlock u16h [8];
    113 
    114 
    115   BytePack U16s[16];
     113
     114  BytePack U8s[8];
    116115  BytePack U16h[8];
    117116  BytePack U16l[8];
     117  BytePack U16s[16];
    118118
    119119  BitBlock EOF_mask = simd<1>::constant<1>();
    120120
    121 
    122   BitBlock bit[8];
    123   BitBlock u16hi[8];
    124   BitBlock u16lo[8];
    125121
    126122  int pos = 0;
     
    144140     
    145141      BytePack * U8pack = (BytePack *) (*srcbuf);
    146       bit[0] = bitblock::load_unaligned(&U8pack[0]);
    147       bit[1] = bitblock::load_unaligned(&U8pack[1]);
    148       bit[2] = bitblock::load_unaligned(&U8pack[2]);
    149       bit[3] = bitblock::load_unaligned(&U8pack[3]);
    150       bit[4] = bitblock::load_unaligned(&U8pack[4]);
    151       bit[5] = bitblock::load_unaligned(&U8pack[5]);
    152       bit[6] = bitblock::load_unaligned(&U8pack[6]);
    153       bit[7] = bitblock::load_unaligned(&U8pack[7]);
    154      
    155       s2p(bit[0], bit[1], bit[2], bit[3], bit[4], bit[5], bit[6], bit[7],
    156       bit[0], bit[1], bit[2], bit[3], bit[4], bit[5], bit[6], bit[7]);
    157 
    158         bit[0] = simd_and(bit[0], EOF_mask);
    159         bit[1] = simd_and(bit[1], EOF_mask);
    160         bit[2] = simd_and(bit[2], EOF_mask);
    161         bit[3] = simd_and(bit[3], EOF_mask);
    162         bit[4] = simd_and(bit[4], EOF_mask);
    163         bit[5] = simd_and(bit[5], EOF_mask);
    164         bit[6] = simd_and(bit[6], EOF_mask);
    165         bit[7] = simd_and(bit[7], EOF_mask);
     142      U8s[0] = bitblock::load_unaligned(&U8pack[0]);
     143      U8s[1] = bitblock::load_unaligned(&U8pack[1]);
     144      U8s[2] = bitblock::load_unaligned(&U8pack[2]);
     145      U8s[3] = bitblock::load_unaligned(&U8pack[3]);
     146      U8s[4] = bitblock::load_unaligned(&U8pack[4]);
     147      U8s[5] = bitblock::load_unaligned(&U8pack[5]);
     148      U8s[6] = bitblock::load_unaligned(&U8pack[6]);
     149      U8s[7] = bitblock::load_unaligned(&U8pack[7]);
     150     
     151      s2p(U8s[0], U8s[1], U8s[2], U8s[3], U8s[4], U8s[5], U8s[6], U8s[7],
     152          u8_bits.bit_0, u8_bits.bit_1, u8_bits.bit_2, u8_bits.bit_3, u8_bits.bit_4, u8_bits.bit_5, u8_bits.bit_6, u8_bits.bit_7);
     153
     154        u8_bits.bit_0 = simd_and(u8_bits.bit_0, EOF_mask);
     155        u8_bits.bit_1 = simd_and(u8_bits.bit_1, EOF_mask);
     156        u8_bits.bit_2 = simd_and(u8_bits.bit_2, EOF_mask);
     157        u8_bits.bit_3 = simd_and(u8_bits.bit_3, EOF_mask);
     158        u8_bits.bit_4 = simd_and(u8_bits.bit_4, EOF_mask);
     159        u8_bits.bit_5 = simd_and(u8_bits.bit_5, EOF_mask);
     160        u8_bits.bit_6 = simd_and(u8_bits.bit_6, EOF_mask);
     161        u8_bits.bit_7 = simd_and(u8_bits.bit_7, EOF_mask);
    166162   
    167163      @block_stmts
    168164     
    169       delmask |= ~EOF_mask;
    170       error_found = bitblock::any(error_mask);
     165      u8.delmask |= ~EOF_mask;
     166      error_found = bitblock::any(u8.error);
    171167      if (error_found) {
    172         int errpos = count_forward_zeroes(error_mask);
     168        int errpos = count_forward_zeroes(u8.error);
    173169        if (errpos >= u8advance) {
    174170          *err = U_TRUNCATED_CHAR_FOUND;
     
    176172        else *err = U_ILLEGAL_CHAR_FOUND;
    177173        BitBlock cutoff_mask = bitblock::sll(simd<1>::constant<1>(), convert(errpos));
    178         BitBlock errbit = simd_andc(error_mask, bitblock::slli<1>(cutoff_mask));
     174        BitBlock errbit = simd_andc(u8.error, bitblock::slli<1>(cutoff_mask));
    179175        u8advance = errpos;
    180         if (bitblock::any(simd_and(u8_scope44, errbit))) {
     176        if (bitblock::any(simd_and(u8.scope44, errbit))) {
    181177          u8advance -= 3;
    182178          /* May have already first of a surrogate pair to targetbuf. */
    183179          if (u8advance == -3) *targetbuf -= 1;
    184180        }
    185         else if (bitblock::any(simd_and(u8_scope43, errbit))) {
     181        else if (bitblock::any(simd_and(u8.scope43, errbit))) {
    186182          u8advance -= 2;
    187183        }
    188         else if (bitblock::any(simd_and(u8_scope33, errbit))) {
     184        else if (bitblock::any(simd_and(u8.scope33, errbit))) {
    189185          u8advance -= 2;
    190186        }
    191         else if (bitblock::any(simd_and(simd_or(u8_scope22, simd_or(u8_scope32, u8_scope42)), errbit))) {
     187        else if (bitblock::any(simd_and(simd_or(u8.scope22, simd_or(u8.scope32, u8.scope42)), errbit))) {
    192188          u8advance -= 1;
    193189        }
     
    196192          return;
    197193        }
    198         delmask |= bitblock::sll(simd<1>::constant<1>(), convert(u8advance));
     194        u8.delmask |= bitblock::sll(simd<1>::constant<1>(), convert(u8advance));
    199195//      fprintf(stderr, "errpos = %i, u8advance = %i\n", errpos, u8advance);
    200196      }
    201197     
    202198       
    203       if (bitblock::any(delmask)) {
     199      if (bitblock::any(u8.delmask)) {
    204200              BitBlock shift1, shift2, shift4;
    205               del_info_8(shift1, shift2, shift4, delmask);
    206               do_right8_shifts(u16lo[0], shift1, shift2, shift4);
    207               do_right8_shifts(u16lo[1], shift1, shift2, shift4);
    208               do_right8_shifts(u16lo[2], shift1, shift2, shift4);
    209               do_right8_shifts(u16lo[3], shift1, shift2, shift4);
    210               do_right8_shifts(u16lo[4], shift1, shift2, shift4);
    211               do_right8_shifts(u16lo[5], shift1, shift2, shift4);
    212               do_right8_shifts(u16lo[6], shift1, shift2, shift4);
    213               do_right8_shifts(u16lo[7], shift1, shift2, shift4);
    214               if (bitblock::any(u8_scope33 | u8surrogate)) {
    215                       do_right8_shifts(u16hi[0], shift1, shift2, shift4);
    216                       do_right8_shifts(u16hi[1], shift1, shift2, shift4);
    217                       do_right8_shifts(u16hi[2], shift1, shift2, shift4);
    218                       do_right8_shifts(u16hi[3], shift1, shift2, shift4);
    219                       do_right8_shifts(u16hi[4], shift1, shift2, shift4);
     201              del_info_8(shift1, shift2, shift4, u8.delmask);
     202              do_right8_shifts(u16lo.bit_0, shift1, shift2, shift4);
     203              do_right8_shifts(u16lo.bit_1, shift1, shift2, shift4);
     204              do_right8_shifts(u16lo.bit_2, shift1, shift2, shift4);
     205              do_right8_shifts(u16lo.bit_3, shift1, shift2, shift4);
     206              do_right8_shifts(u16lo.bit_4, shift1, shift2, shift4);
     207              do_right8_shifts(u16lo.bit_5, shift1, shift2, shift4);
     208              do_right8_shifts(u16lo.bit_6, shift1, shift2, shift4);
     209              do_right8_shifts(u16lo.bit_7, shift1, shift2, shift4);
     210              if (bitblock::any(u8.scope33 | u8.surrogate)) {
     211                      do_right8_shifts(u16hi.bit_0, shift1, shift2, shift4);
     212                      do_right8_shifts(u16hi.bit_1, shift1, shift2, shift4);
     213                      do_right8_shifts(u16hi.bit_2, shift1, shift2, shift4);
     214                      do_right8_shifts(u16hi.bit_3, shift1, shift2, shift4);
     215                      do_right8_shifts(u16hi.bit_4, shift1, shift2, shift4);
    220216              }
    221               do_right8_shifts(u16hi[5], shift1, shift2, shift4);
    222               do_right8_shifts(u16hi[6], shift1, shift2, shift4);
    223               do_right8_shifts(u16hi[7], shift1, shift2, shift4);
     217              do_right8_shifts(u16hi.bit_5, shift1, shift2, shift4);
     218              do_right8_shifts(u16hi.bit_6, shift1, shift2, shift4);
     219              do_right8_shifts(u16hi.bit_7, shift1, shift2, shift4);
    224220      }
    225221
    226222      union {BitBlock i128; uint8_t i8[16];} u16_units_per_reg;
    227223     
    228       p2s(u16lo[0],u16lo[1],u16lo[2],u16lo[3],u16lo[4],u16lo[5],u16lo[6],u16lo[7],
     224      p2s(u16lo.bit_0,u16lo.bit_1,u16lo.bit_2,u16lo.bit_3,u16lo.bit_4,u16lo.bit_5,u16lo.bit_6,u16lo.bit_7,
    229225                        U16l[0], U16l[1],U16l[2] ,U16l[3] ,U16l[4] ,U16l[5] ,U16l[6] ,U16l[7]);
    230       p2s(u16hi[0],u16hi[1],u16hi[2],u16hi[3],u16hi[4],u16hi[5],u16hi[6],u16hi[7],
     226      p2s(u16hi.bit_0,u16hi.bit_1,u16hi.bit_2,u16hi.bit_3,u16hi.bit_4,u16hi.bit_5,u16hi.bit_6,u16hi.bit_7,
    231227                        U16h[0], U16h[1],U16h[2] ,U16h[3] ,U16h[4] ,U16h[5] ,U16h[6] ,U16h[7]);
    232228      for (int i=0; i<8; i++) {
     
    236232       
    237233      for(int k=0; k<16; k++) u16_units_per_reg.i8[k] = 0;
    238       del_count(delmask,u16_units_per_reg.i128);
     234      del_count(u8.delmask,u16_units_per_reg.i128);
    239235
    240236      for(int j=0; j<16; j++){
Note: See TracChangeset for help on using the changeset viewer.