Changeset 3122 for proto/RE/output


Ignore:
Timestamp:
May 8, 2013, 4:36:24 PM (6 years ago)
Author:
bhull
Message:

RE strategy changes

Location:
proto/RE/output
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • proto/RE/output/ccinput

    r3113 r3122  
    1 lex.cc1 = [\x74]
    2 lex.cc2 = [\x61]
     1lex.cc2 = [\x61-\x66]
    32lex.cc0 = [\x00-\x09\x0B-\xFF]
    4 lex.cc3 = [\x73]
    5 lex.cc4 = [\x64]
     3lex.cc3 = [\x68-\x6E]
     4lex.cc1 = [\x64-\x6D]
    65lex.LF = [\x0A]
    76
  • proto/RE/output/lib/simd-lib/carryQ.hpp

    r3005 r3122  
    218218        }
    219219
    220 //      IDISA_ALWAYS_INLINE BitBlock get_pending64(uint16_t advance_n_blkno) const
    221 //      {
    222 //              return pending64[advance_n_blkno];
    223 //      }
     220
     221        // Deprecated in PabloJ, retained for legacy compiler.
     222        IDISA_ALWAYS_INLINE BitBlock get_pending64(uint16_t advance_n_blkno) const
     223        {
     224                return cq[CarryCount + advance_n_blkno];
     225        }
    224226
    225227        IDISA_ALWAYS_INLINE BitBlock Pending64(uint16_t advance_n_blkno) const
  • proto/RE/output/lib/simd-lib/pabloSupport.hpp

    r3005 r3122  
    2424
    2525const BitBlock simd_const_1 = mvmd<BLOCK_SIZE/4>::fill4(0,0,0,1);
     26
     27const BitBlock simd_sign_bit = bitblock::slli<BLOCK_SIZE-1>(simd_const_1);
     28
     29IDISA_ALWAYS_INLINE BitBlock Dequeue_bit(BitBlock & q) {
     30        BitBlock bit = simd_and(q, simd_const_1);
     31        q = simd<64>::srli<1>(q);
     32        return bit;
     33}
    2634
    2735IDISA_ALWAYS_INLINE BitBlock pablo_blk_Advance(BitBlock strm, BitBlock carryin, BitBlock & rslt) {
     
    5260        add_ci_co(marker, charclass, carryin, carryout, sum);
    5361        rslt = simd_andc(sum, charclass);
     62        return carryout;
     63}
     64
     65IDISA_ALWAYS_INLINE BitBlock pablo_blk_MatchStar(BitBlock marker, BitBlock charclass, BitBlock carryin, BitBlock & rslt) {
     66        BitBlock carryout, sum;
     67        add_ci_co(simd_and(charclass, marker), charclass, carryin, carryout, sum);
     68        rslt = simd_or(simd_xor(sum, charclass), marker);
    5469        return carryout;
    5570}
     
    103118}
    104119
    105 
     120template <typename T> IDISA_ALWAYS_INLINE BitBlock pablo_blk_match(T bytedata[], const T match_str[], BitBlock v, int len) {
     121        union {BitBlock bitblock; ScanWord elems[sizeof(BitBlock)/sizeof(ScanWord)];} u;
     122        u.bitblock = v;
     123        int pos;
     124        ScanWord s, t, bit;
     125        for (unsigned int i = 0; i < sizeof(BitBlock)/sizeof(ScanWord); i++) {
     126                s = u.elems[i];
     127                while (s != 0) {
     128                        pos = scan_forward_zeroes(s);
     129                        t = s;
     130                        s = s & (s - 1); // clear rightmost bit
     131                        if (memcmp((void *) &bytedata[pos], (void *) match_str, len * sizeof(T))) {
     132                                // Strings do not match; filter the result.
     133                                bit = s ^ t;
     134                                u.elems[i] ^= bit;
     135                        }
     136                }
     137        }
     138        return u.bitblock;
     139}
    106140
    107141#endif // PABLOSUPPORT_HPP_
  • proto/RE/output/re_debug.py

    r3113 r3122  
    3737        cc2 = (0)
    3838        cc3 = (0)
    39         cc4 = (0)
    4039        LF = (0) 
    4140
     
    5150        m1=0
    5251        m2=0
     52        m3=0
     53        m4=0
    5354        m0=~0
    54         m0 = (m0 & ~bitutil.Advance(lex.cc0))
    55         m0 = bitutil.Advance((m0 & lex.cc0))
    5655        m1 = m0
    57         m1 = bitutil.Advance((m1 & lex.cc1))
    58         m1 = bitutil.Advance((m1 & lex.cc1))
    59         m1 = bitutil.Advance((m1 & lex.cc1))
     56        m1 = bitutil.Advance((m1 & lex.cc2))
     57        m3 = m1
     58        m3 = bitutil.Advance((m3 & lex.cc0))
     59        m3 = bitutil.Advance((m3 & lex.cc1))
     60        m3 = bitutil.Advance((m3 & lex.cc0))
     61        m1 = (m1 | m3)
     62        m3 = bitutil.Advance((m3 & lex.cc0))
     63        m3 = bitutil.Advance((m3 & lex.cc1))
     64        m3 = bitutil.Advance((m3 & lex.cc0))
     65        m1 = (m1 | m3)
     66        m1 = bitutil.Advance((m1 & lex.cc3))
     67        m1 = bitutil.Advance((m1 & lex.cc2))
     68        m3 = m1
     69        m3 = bitutil.Advance((m3 & lex.cc0))
     70        m3 = bitutil.Advance((m3 & lex.cc1))
     71        m3 = bitutil.Advance((m3 & lex.cc0))
     72        m1 = (m1 | m3)
     73        m3 = bitutil.Advance((m3 & lex.cc0))
     74        m3 = bitutil.Advance((m3 & lex.cc1))
     75        m3 = bitutil.Advance((m3 & lex.cc0))
     76        m1 = (m1 | m3)
     77        m1 = bitutil.Advance((m1 & lex.cc3))
    6078        m0 = m1
    61         m1 = m0
    62         m1 = bitutil.Advance((m1 & lex.cc1))
    63         m0 = (m0 | m1)
    64         m1 = bitutil.Advance((m1 & lex.cc1))
    65         m0 = (m0 | m1)
    66         m1 = bitutil.Advance((m1 & lex.cc1))
    67         m0 = (m0 | m1)
    68         m1 = bitutil.Advance((m1 & lex.cc1))
    69         m0 = (m0 | m1)
    70         m1 = bitutil.Advance((m1 & lex.cc1))
    71         m0 = (m0 | m1)
    72         m1 = bitutil.Advance((m1 & lex.cc1))
    73         m0 = (m0 | m1)
    74         m1 = bitutil.Advance((m1 & lex.cc1))
    75         m0 = (m0 | m1)
    76         m1 = bitutil.Advance((m1 & lex.cc1))
    77         m0 = (m0 | m1)
    78         m1 = bitutil.Advance((m1 & lex.cc1))
    79         m0 = (m0 | m1)
    80         m1 = bitutil.Advance((m1 & lex.cc1))
    81         m0 = (m0 | m1)
    82         m0 = bitutil.Advance((m0 & lex.cc2))
    83         m0 = bitutil.Advance((m0 & lex.cc3))
    84         m0 = bitutil.Advance((m0 & lex.cc4))
    8579        bitutil.print_aligned_streams([('       Input Data', u8data),
    8680        ('      lex.cc0', bitutil.bitstream2string(lex.cc0, lgth+1)),
     
    8882        ('      lex.cc2', bitutil.bitstream2string(lex.cc2, lgth+1)),
    8983        ('      lex.cc3', bitutil.bitstream2string(lex.cc3, lgth+1)),
    90         ('      lex.cc4', bitutil.bitstream2string(lex.cc4, lgth+1)),
    9184        ('      m0', bitutil.bitstream2string(m0, lgth+1)),
    9285        ('      m1', bitutil.bitstream2string(m1, lgth+1)),
    93         ('      m2', bitutil.bitstream2string(m2, lgth+1))])
     86        ('      m2', bitutil.bitstream2string(m2, lgth+1)),
     87        ('      m3', bitutil.bitstream2string(m3, lgth+1)),
     88        ('      m4', bitutil.bitstream2string(m4, lgth+1))])
    9489        return
    9590
  • proto/RE/output/re_pablo.py

    r3113 r3122  
    3535        cc2 = (0)
    3636        cc3 = (0)
    37         cc4 = (0)
    3837        LF = (0) 
    3938
     
    4847        m1=0
    4948        m2=0
     49        m3=0
     50        m4=0
    5051        m0=~0
    51         m0 = (m0 & ~pablo.Advance(lex.cc0))
    52         m0 = pablo.Advance((m0 & lex.cc0))
    5352        m1 = m0
    54         m1 = pablo.Advance((m1 & lex.cc1))
    55         m1 = pablo.Advance((m1 & lex.cc1))
    56         m1 = pablo.Advance((m1 & lex.cc1))
     53        m1 = pablo.Advance((m1 & lex.cc2))
     54        m3 = m1
     55        m3 = pablo.Advance((m3 & lex.cc0))
     56        m3 = pablo.Advance((m3 & lex.cc1))
     57        m3 = pablo.Advance((m3 & lex.cc0))
     58        m1 = (m1 | m3)
     59        m3 = pablo.Advance((m3 & lex.cc0))
     60        m3 = pablo.Advance((m3 & lex.cc1))
     61        m3 = pablo.Advance((m3 & lex.cc0))
     62        m1 = (m1 | m3)
     63        m1 = pablo.Advance((m1 & lex.cc3))
     64        m1 = pablo.Advance((m1 & lex.cc2))
     65        m3 = m1
     66        m3 = pablo.Advance((m3 & lex.cc0))
     67        m3 = pablo.Advance((m3 & lex.cc1))
     68        m3 = pablo.Advance((m3 & lex.cc0))
     69        m1 = (m1 | m3)
     70        m3 = pablo.Advance((m3 & lex.cc0))
     71        m3 = pablo.Advance((m3 & lex.cc1))
     72        m3 = pablo.Advance((m3 & lex.cc0))
     73        m1 = (m1 | m3)
     74        m1 = pablo.Advance((m1 & lex.cc3))
    5775        m0 = m1
    58         m1 = m0
    59         m1 = pablo.Advance((m1 & lex.cc1))
    60         m0 = (m0 | m1)
    61         m1 = pablo.Advance((m1 & lex.cc1))
    62         m0 = (m0 | m1)
    63         m1 = pablo.Advance((m1 & lex.cc1))
    64         m0 = (m0 | m1)
    65         m1 = pablo.Advance((m1 & lex.cc1))
    66         m0 = (m0 | m1)
    67         m1 = pablo.Advance((m1 & lex.cc1))
    68         m0 = (m0 | m1)
    69         m1 = pablo.Advance((m1 & lex.cc1))
    70         m0 = (m0 | m1)
    71         m1 = pablo.Advance((m1 & lex.cc1))
    72         m0 = (m0 | m1)
    73         m1 = pablo.Advance((m1 & lex.cc1))
    74         m0 = (m0 | m1)
    75         m1 = pablo.Advance((m1 & lex.cc1))
    76         m0 = (m0 | m1)
    77         m1 = pablo.Advance((m1 & lex.cc1))
    78         m0 = (m0 | m1)
    79         m0 = pablo.Advance((m0 & lex.cc2))
    80         m0 = pablo.Advance((m0 & lex.cc3))
    81         m0 = pablo.Advance((m0 & lex.cc4))
    8276        output.matches = m0
    8377       
Note: See TracChangeset for help on using the changeset viewer.