@@ -441,16 +441,14 @@ unsafe fn match_len_avx2(a: *const u8, b: *const u8, max_len: usize) -> usize {
441441 let mask = _mm256_movemask_epi8 ( cmp) as u32 ;
442442 return len + 32 + ( !mask) . trailing_zeros ( ) as usize ;
443443 }
444+ } else if _mm256_testz_si256 ( xor3, xor3) == 0 {
445+ let cmp = _mm256_cmpeq_epi8 ( xor3, v_zero) ;
446+ let mask = _mm256_movemask_epi8 ( cmp) as u32 ;
447+ return len + 64 + ( !mask) . trailing_zeros ( ) as usize ;
444448 } else {
445- if _mm256_testz_si256 ( xor3, xor3) == 0 {
446- let cmp = _mm256_cmpeq_epi8 ( xor3, v_zero) ;
447- let mask = _mm256_movemask_epi8 ( cmp) as u32 ;
448- return len + 64 + ( !mask) . trailing_zeros ( ) as usize ;
449- } else {
450- let cmp = _mm256_cmpeq_epi8 ( xor4, v_zero) ;
451- let mask = _mm256_movemask_epi8 ( cmp) as u32 ;
452- return len + 96 + ( !mask) . trailing_zeros ( ) as usize ;
453- }
449+ let cmp = _mm256_cmpeq_epi8 ( xor4, v_zero) ;
450+ let mask = _mm256_movemask_epi8 ( cmp) as u32 ;
451+ return len + 96 + ( !mask) . trailing_zeros ( ) as usize ;
454452 }
455453 }
456454
@@ -691,7 +689,7 @@ impl MatchFinder {
691689 where
692690 F : FnMut ( usize , usize ) ,
693691 {
694- if pos. checked_add ( 3 ) . map_or ( true , |end| end > data. len ( ) ) {
692+ if pos. checked_add ( 3 ) . is_none_or ( |end| end > data. len ( ) ) {
695693 return ( 0 , 0 ) ;
696694 }
697695
@@ -705,7 +703,7 @@ impl MatchFinder {
705703 src_val_4 = ( src as * const u32 ) . read_unaligned ( ) ;
706704 src_val = src_val_4 & 0xFFFFFF ;
707705 } else {
708- src_val = ( ( src. read ( ) as u32 ) << 0 )
706+ src_val = ( src. read ( ) as u32 )
709707 | ( ( src. add ( 1 ) . read ( ) as u32 ) << 8 )
710708 | ( ( src. add ( 2 ) . read ( ) as u32 ) << 16 ) ;
711709 }
@@ -756,11 +754,10 @@ impl MatchFinder {
756754 }
757755
758756 let mut match_ok = true ;
759- if best_len >= 3 {
760- if * match_ptr. add ( best_len) != * src. add ( best_len) {
757+ if best_len >= 3
758+ && * match_ptr. add ( best_len) != * src. add ( best_len) {
761759 match_ok = false ;
762760 }
763- }
764761
765762 if match_ok {
766763 if safe_to_read_u32 {
@@ -787,7 +784,7 @@ impl MatchFinder {
787784 if p_rel + 4 <= data. len ( ) {
788785 match_val = ( match_ptr as * const u32 ) . read_unaligned ( ) & 0xFFFFFF ;
789786 } else {
790- match_val = ( ( match_ptr. read ( ) as u32 ) << 0 )
787+ match_val = ( match_ptr. read ( ) as u32 )
791788 | ( ( match_ptr. add ( 1 ) . read ( ) as u32 ) << 8 )
792789 | ( ( match_ptr. add ( 2 ) . read ( ) as u32 ) << 16 ) ;
793790 }
@@ -949,7 +946,7 @@ impl MatchFinder {
949946 }
950947 }
951948 pub fn skip_match ( & mut self , data : & [ u8 ] , pos : usize ) {
952- if pos. checked_add ( 3 ) . map_or ( true , |end| end > data. len ( ) ) {
949+ if pos. checked_add ( 3 ) . is_none_or ( |end| end > data. len ( ) ) {
953950 return ;
954951 }
955952 unsafe {
@@ -958,7 +955,7 @@ impl MatchFinder {
958955 if pos + 4 <= data. len ( ) {
959956 src_val = ( src as * const u32 ) . read_unaligned ( ) & 0xFFFFFF ;
960957 } else {
961- src_val = ( ( src. read ( ) as u32 ) << 0 )
958+ src_val = ( src. read ( ) as u32 )
962959 | ( ( src. add ( 1 ) . read ( ) as u32 ) << 8 )
963960 | ( ( src. add ( 2 ) . read ( ) as u32 ) << 16 ) ;
964961 }
@@ -993,7 +990,7 @@ impl MatchFinder {
993990 }
994991 if pos
995992 . checked_add ( count + 3 )
996- . map_or ( true , |end| end > data. len ( ) )
993+ . is_none_or ( |end| end > data. len ( ) )
997994 {
998995 for i in 0 ..count {
999996 self . skip_match ( data, pos + i) ;
@@ -1068,7 +1065,7 @@ impl HtMatchFinder {
10681065 }
10691066
10701067 pub fn find_match ( & mut self , data : & [ u8 ] , pos : usize ) -> ( usize , usize ) {
1071- if pos. checked_add ( 3 ) . map_or ( true , |end| end > data. len ( ) ) {
1068+ if pos. checked_add ( 3 ) . is_none_or ( |end| end > data. len ( ) ) {
10721069 return ( 0 , 0 ) ;
10731070 }
10741071
@@ -1081,7 +1078,7 @@ impl HtMatchFinder {
10811078 if safe_to_read_u32 {
10821079 src_val = ( src as * const u32 ) . read_unaligned ( ) & 0xFFFFFF ;
10831080 } else {
1084- src_val = ( ( src. read ( ) as u32 ) << 0 )
1081+ src_val = ( src. read ( ) as u32 )
10851082 | ( ( src. add ( 1 ) . read ( ) as u32 ) << 8 )
10861083 | ( ( src. add ( 2 ) . read ( ) as u32 ) << 16 ) ;
10871084 }
@@ -1112,7 +1109,7 @@ impl HtMatchFinder {
11121109 } else if p_rel + 4 <= data. len ( ) {
11131110 match_val = ( match_ptr as * const u32 ) . read_unaligned ( ) & 0xFFFFFF ;
11141111 } else {
1115- match_val = ( ( match_ptr. read ( ) as u32 ) << 0 )
1112+ match_val = ( match_ptr. read ( ) as u32 )
11161113 | ( ( match_ptr. add ( 1 ) . read ( ) as u32 ) << 8 )
11171114 | ( ( match_ptr. add ( 2 ) . read ( ) as u32 ) << 16 ) ;
11181115 }
@@ -1139,7 +1136,7 @@ impl HtMatchFinder {
11391136 }
11401137
11411138 pub fn skip_match ( & mut self , data : & [ u8 ] , pos : usize ) {
1142- if pos. checked_add ( 3 ) . map_or ( true , |end| end > data. len ( ) ) {
1139+ if pos. checked_add ( 3 ) . is_none_or ( |end| end > data. len ( ) ) {
11431140 return ;
11441141 }
11451142 unsafe {
@@ -1148,7 +1145,7 @@ impl HtMatchFinder {
11481145 if pos + 4 <= data. len ( ) {
11491146 src_val = ( src as * const u32 ) . read_unaligned ( ) & 0xFFFFFF ;
11501147 } else {
1151- src_val = ( ( src. read ( ) as u32 ) << 0 )
1148+ src_val = ( src. read ( ) as u32 )
11521149 | ( ( src. add ( 1 ) . read ( ) as u32 ) << 8 )
11531150 | ( ( src. add ( 2 ) . read ( ) as u32 ) << 16 ) ;
11541151 }
@@ -1281,7 +1278,7 @@ impl BtMatchFinder {
12811278 max_depth : usize ,
12821279 mut visitor : V ,
12831280 ) -> V {
1284- if pos. checked_add ( 4 ) . map_or ( true , |end| end > data. len ( ) ) {
1281+ if pos. checked_add ( 4 ) . is_none_or ( |end| end > data. len ( ) ) {
12851282 return visitor;
12861283 }
12871284
0 commit comments