Skip to content

Commit f3e7b83

Browse files
committed
precompute more
1 parent b23a229 commit f3e7b83

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

test/experimental/jumpdest_analysis.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -594,6 +594,7 @@ bitset32 build_jumpdest_map_simd4(const uint8_t* code, size_t code_size)
594594

595595
const auto v_jumpdes_op = _mm256_set1_epi8(OP_JUMPDEST);
596596
const auto v_push0_op = _mm256_set1_epi8(OP_PUSH0);
597+
const auto v_pushx_op = _mm256_set1_epi8(OP_PUSH0 - 1);
597598
uint32_t clear_next = 0;
598599

599600
for (size_t v = 0; v < v_code_size; ++v)
@@ -605,7 +606,7 @@ bitset32 build_jumpdest_map_simd4(const uint8_t* code, size_t code_size)
605606
const auto v_is_push = _mm256_cmpgt_epi8(v_fragment, v_push0_op);
606607
auto m_is_push = (unsigned)_mm256_movemask_epi8(v_is_push);
607608

608-
const auto v_dl = _mm256_sub_epi8(v_fragment, v_push0_op);
609+
const auto v_dl = _mm256_sub_epi8(v_fragment, v_pushx_op);
609610
_mm256_store_si256((__m256i*)tmp, v_dl);
610611

611612
m_is_push &= ~clear_next;
@@ -616,7 +617,7 @@ bitset32 build_jumpdest_map_simd4(const uint8_t* code, size_t code_size)
616617
{
617618
const auto p = __builtin_ctz(m_is_push);
618619
const auto dl = tmp[p];
619-
const auto dm = ((uint64_t{2} << dl) - 1) << p;
620+
const auto dm = ((uint64_t{1} << dl) - 1) << p;
620621
datamask |= dm;
621622
m_is_push &= ~static_cast<unsigned>(dm);
622623
}

0 commit comments

Comments
 (0)