This repository was archived by the owner on May 28, 2025. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +14
-0
lines changed Expand file tree Collapse file tree 1 file changed +14
-0
lines changed Original file line number Diff line number Diff line change @@ -83,16 +83,30 @@ cfg_match! {
83
83
84
84
// For character in the chunk, see if its byte value is < 0, which
85
85
// indicates that it's part of a UTF-8 char.
86
+ #[ cfg( bootstrap) ]
87
+ let multibyte_test = unsafe { _mm_cmplt_epi8( chunk, _mm_set1_epi8( 0 ) ) } ;
88
+ #[ cfg( not( bootstrap) ) ]
86
89
let multibyte_test = _mm_cmplt_epi8( chunk, _mm_set1_epi8( 0 ) ) ;
90
+
87
91
// Create a bit mask from the comparison results.
92
+ #[ cfg( bootstrap) ]
93
+ let multibyte_mask = unsafe { _mm_movemask_epi8( multibyte_test) } ;
94
+ #[ cfg( not( bootstrap) ) ]
88
95
let multibyte_mask = _mm_movemask_epi8( multibyte_test) ;
89
96
90
97
// If the bit mask is all zero, we only have ASCII chars here:
91
98
if multibyte_mask == 0 {
92
99
assert!( intra_chunk_offset == 0 ) ;
93
100
94
101
// Check for newlines in the chunk
102
+ #[ cfg( bootstrap) ]
103
+ let newlines_test = unsafe { _mm_cmpeq_epi8( chunk, _mm_set1_epi8( b'\n' as i8 ) ) } ;
104
+ #[ cfg( not( bootstrap) ) ]
95
105
let newlines_test = _mm_cmpeq_epi8( chunk, _mm_set1_epi8( b'\n' as i8 ) ) ;
106
+
107
+ #[ cfg( bootstrap) ]
108
+ let mut newlines_mask = unsafe { _mm_movemask_epi8( newlines_test) } ;
109
+ #[ cfg( not( bootstrap) ) ]
96
110
let mut newlines_mask = _mm_movemask_epi8( newlines_test) ;
97
111
98
112
let output_offset = RelativeBytePos :: from_usize( chunk_index * CHUNK_SIZE + 1 ) ;
You can’t perform that action at this time.
0 commit comments