mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-09-30 19:47:43 +03:00
raise the limit of strings in double shufti
This commit is contained in:
@@ -207,17 +207,14 @@ void buildAccelDouble(const AccelInfo &info, AccelAux *aux) {
|
||||
}
|
||||
}
|
||||
|
||||
if (outs1 + outs2 <= 8) {
|
||||
if (outs1 < outs2 && outs1 <= 2) { // Heuristic from UE-438.
|
||||
DEBUG_PRINTF("building double-shufti for %zu one-byte and %zu"
|
||||
" two-byte literals\n", outs1, outs2);
|
||||
aux->accel_type = ACCEL_DSHUFTI;
|
||||
aux->dshufti.offset = offset;
|
||||
shuftiBuildDoubleMasks(info.double_stop1, info.double_stop2,
|
||||
&aux->dshufti.lo1,
|
||||
&aux->dshufti.hi1,
|
||||
&aux->dshufti.lo2,
|
||||
&aux->dshufti.hi2);
|
||||
if (outs1 < outs2 && outs1 <= 2) { // Heuristic from UE-438.
|
||||
DEBUG_PRINTF("building double-shufti for %zu one-byte and %zu"
|
||||
" two-byte literals\n", outs1, outs2);
|
||||
aux->accel_type = ACCEL_DSHUFTI;
|
||||
aux->dshufti.offset = offset;
|
||||
if (shuftiBuildDoubleMasks(info.double_stop1, info.double_stop2,
|
||||
&aux->dshufti.lo1, &aux->dshufti.hi1,
|
||||
&aux->dshufti.lo2, &aux->dshufti.hi2)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@@ -130,7 +130,6 @@ mstate_aux *getAux(NFA *n, dstate_id_t i) {
|
||||
static
|
||||
bool double_byte_ok(const escape_info &info) {
|
||||
return !info.outs2_broken
|
||||
&& info.outs2_single.count() + info.outs2.size() <= 8
|
||||
&& info.outs2_single.count() < info.outs2.size()
|
||||
&& info.outs2_single.count() <= 2 && !info.outs2.empty();
|
||||
}
|
||||
@@ -256,14 +255,12 @@ void mcclellan_build_strat::buildAccel(UNUSED dstate_id_t this_idx,
|
||||
}
|
||||
}
|
||||
|
||||
if (double_byte_ok(info)) {
|
||||
if (double_byte_ok(info)
|
||||
&& shuftiBuildDoubleMasks(info.outs2_single, info.outs2,
|
||||
&accel->dshufti.lo1, &accel->dshufti.hi1,
|
||||
&accel->dshufti.lo2, &accel->dshufti.hi2)) {
|
||||
accel->accel_type = ACCEL_DSHUFTI;
|
||||
accel->dshufti.offset = verify_u8(info.outs2_offset);
|
||||
shuftiBuildDoubleMasks(info.outs2_single, info.outs2,
|
||||
&accel->dshufti.lo1,
|
||||
&accel->dshufti.hi1,
|
||||
&accel->dshufti.lo2,
|
||||
&accel->dshufti.hi2);
|
||||
DEBUG_PRINTF("state %hu is double shufti\n", this_idx);
|
||||
return;
|
||||
}
|
||||
|
@@ -334,7 +334,6 @@ map<dstate_id_t, escape_info> populateAccelerationInfo(const raw_dfa &rdfa,
|
||||
static
|
||||
bool double_byte_ok(const escape_info &info) {
|
||||
return !info.outs2_broken
|
||||
&& info.outs2_single.count() + info.outs2.size() <= 8
|
||||
&& info.outs2_single.count() < info.outs2.size()
|
||||
&& info.outs2_single.count() <= 2 && !info.outs2.empty();
|
||||
}
|
||||
|
Reference in New Issue
Block a user