@@ -42,27 +42,41 @@ unsafe fn part1_inner(s: &[u8]) -> u64 {
4242 ) ,
4343 ) ;
4444
45- let other = if is_key { & holes } else { & keys } ;
46- for o in other {
47- let collisions = _mm256_cmpeq_epi8 ( d, * o) ;
48- let collisions = _mm256_movemask_epi8 ( collisions) ;
49- sum += ( collisions == 0 ) as u64 ;
50- }
51- let d = _mm256_and_si256 ( d, _mm256_set1_epi8 ( KEPT_BITS ) ) ;
52- let d = _mm256_or_si256 (
53- d,
54- _mm256_setr_epi8 (
55- 0 , 0 , 0 , 0 , 0 , -1 , //
56- 0 , 0 , 0 , 0 , 0 , -1 , //
57- 0 , 0 , 0 , 0 , 0 , -1 , //
58- 0 , 0 , 0 , 0 , 0 , -1 , //
59- 0 , 0 , 0 , 0 , 0 , -1 , -1 , -1 ,
60- ) ,
61- ) ;
62-
6345 if is_key {
46+ for o in & holes {
47+ let collisions = _mm256_cmpeq_epi8 ( d, * o) ;
48+ let collisions = _mm256_movemask_epi8 ( collisions) ;
49+ sum += ( collisions == 0 ) as u64 ;
50+ }
51+ let d = _mm256_and_si256 ( d, _mm256_set1_epi8 ( KEPT_BITS ) ) ;
52+ let d = _mm256_or_si256 (
53+ d,
54+ _mm256_setr_epi8 (
55+ 0 , 0 , 0 , 0 , 0 , -1 , //
56+ 0 , 0 , 0 , 0 , 0 , -1 , //
57+ 0 , 0 , 0 , 0 , 0 , -1 , //
58+ 0 , 0 , 0 , 0 , 0 , -1 , //
59+ 0 , 0 , 0 , 0 , 0 , -1 , -1 , -1 ,
60+ ) ,
61+ ) ;
6462 keys. push_unchecked ( d) ;
6563 } else {
64+ for o in & keys {
65+ let collisions = _mm256_cmpeq_epi8 ( d, * o) ;
66+ let collisions = _mm256_movemask_epi8 ( collisions) ;
67+ sum += ( collisions == 0 ) as u64 ;
68+ }
69+ let d = _mm256_and_si256 ( d, _mm256_set1_epi8 ( KEPT_BITS ) ) ;
70+ let d = _mm256_or_si256 (
71+ d,
72+ _mm256_setr_epi8 (
73+ 0 , 0 , 0 , 0 , 0 , -1 , //
74+ 0 , 0 , 0 , 0 , 0 , -1 , //
75+ 0 , 0 , 0 , 0 , 0 , -1 , //
76+ 0 , 0 , 0 , 0 , 0 , -1 , //
77+ 0 , 0 , 0 , 0 , 0 , -1 , -1 , -1 ,
78+ ) ,
79+ ) ;
6680 holes. push_unchecked ( d) ;
6781 }
6882
0 commit comments