mirror of
https://github.com/VectorCamp/vectorscan.git
synced 2025-11-19 02:30:35 +03:00
prefetch works best when addresses are 64-byte aligned
This commit is contained in:
@@ -634,10 +634,11 @@ char nfaExecMcClellan16_Q2i(const struct NFA *n, u64a offset, const u8 *buffer,
|
||||
assert(ISALIGNED_N(q->state, 2));
|
||||
u32 s = *(u16 *)q->state;
|
||||
|
||||
__builtin_prefetch(&m->remap[0]);
|
||||
__builtin_prefetch(&m->remap[64]);
|
||||
__builtin_prefetch(&m->remap[128]);
|
||||
__builtin_prefetch(&m->remap[192]);
|
||||
const u8 *base = ROUNDDOWN_PTR(&m->remap[0], 64);
|
||||
__builtin_prefetch(base);
|
||||
__builtin_prefetch(base + 64);
|
||||
__builtin_prefetch(base + 128);
|
||||
__builtin_prefetch(base + 192);
|
||||
|
||||
if (q->report_current) {
|
||||
assert(s);
|
||||
@@ -795,10 +796,11 @@ char nfaExecMcClellan8_Q2i(const struct NFA *n, u64a offset, const u8 *buffer,
|
||||
|
||||
u32 s = *(u8 *)q->state;
|
||||
|
||||
__builtin_prefetch(&m->remap[0]);
|
||||
__builtin_prefetch(&m->remap[64]);
|
||||
__builtin_prefetch(&m->remap[128]);
|
||||
__builtin_prefetch(&m->remap[192]);
|
||||
const u8 *base = ROUNDDOWN_PTR(&m->remap[0], 64);
|
||||
__builtin_prefetch(base);
|
||||
__builtin_prefetch(base + 64);
|
||||
__builtin_prefetch(base + 128);
|
||||
__builtin_prefetch(base + 192);
|
||||
|
||||
if (q->report_current) {
|
||||
assert(s);
|
||||
|
||||
Reference in New Issue
Block a user