Changeset 179 for trunk/src/engine.c


Ignore:
Timestamp:
Jul 9, 2008, 12:17:19 PM (11 years ago)
Author:
lindanl
Message:

Templated SIMD Library - initial version

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/engine.c

    r176 r179  
    205205
    206206  /* Install sentinels for every lexical item stream*/
    207 #ifndef OPTIMIZE_SHORT_SCAN
     207#ifdef TEMPLATED_SIMD_LIB
     208        BitBlock sentinel_value = simd_const<1,1>();
     209#endif
     210#ifndef TEMPLATED_SIMD_LIB
    208211        BitBlock sentinel_value = simd_const_1(1);
    209212#endif
    210 #ifdef OPTIMIZE_SHORT_SCAN
    211         BitBlock sentinel_value = sisd_sfli(simd_const_1(1), 8*sizeof(unsigned long));
    212 #endif
     213
    213214        for (int j = minLexicalItem; j < LexicalItemCount; j++) {
    214215                buf->item_stream[j][BUFFER_BLOCKS] = sentinel_value;
     
    934935        char * end_elem_name = &((char *) x8data)[buffer_rel_pos];
    935936       
     937#ifdef TEMPLATED_SIMD_LIB       
     938        BytePack byte_compare =  simd_eq<8>(sisd_load_unaligned((BytePack *) end_elem_name),
     939                                                           sisd_load_unaligned((BytePack *) start_elem_name));
     940#endif
     941#ifndef TEMPLATED_SIMD_LIB     
    936942        BytePack byte_compare =  simd_eq_8(sisd_load_unaligned((BytePack *) end_elem_name),
    937943                                                           sisd_load_unaligned((BytePack *) start_elem_name));
     944#endif
    938945        if (lgth < 16) {
    939946                int expected_bits = ~(-1 << lgth);
     
    947954               overlapping with the first byte_compare. */
    948955            int pos = (lgth - 1) % PACKSIZE + 1;
     956#ifdef TEMPLATED_SIMD_LIB
     957            byte_compare =  simd_or(byte_compare, simd_eq<8>(sisd_load_unaligned((BytePack *) &end_elem_name[pos]),
     958                                                                                        sisd_load_unaligned((BytePack *) &start_elem_name[pos])));
     959#endif
     960#ifndef TEMPLATED_SIMD_LIB
    949961            byte_compare =  simd_or(byte_compare, simd_eq_8(sisd_load_unaligned((BytePack *) &end_elem_name[pos]),
    950962                                                                                        sisd_load_unaligned((BytePack *) &start_elem_name[pos])));
     963#endif
    951964            pos += 16;
    952965            while (pos < lgth) {
     
    954967                        WF_Error(wfErr_GIMatch);
    955968                }
     969#ifdef TEMPLATED_SIMD_LIB
     970                byte_compare =  simd_eq<8>(sisd_load_unaligned((BytePack *) &end_elem_name[pos]),
     971                                                  sisd_load_unaligned((BytePack *) &start_elem_name[pos]));
     972#endif
     973#ifndef TEMPLATED_SIMD_LIB
    956974                byte_compare =  simd_eq_8(sisd_load_unaligned((BytePack *) &end_elem_name[pos]),
    957975                                                  sisd_load_unaligned((BytePack *) &start_elem_name[pos]));
     976#endif
    958977                pos += 16;
    959978            }
Note: See TracChangeset for help on using the changeset viewer.