22
33#[ cfg( target_arch = "x86" ) ]
44use core:: arch:: x86:: {
5- __m256i, _mm256_alignr_epi8, _mm256_and_si256, _mm256_cmpgt_epi8 , _mm256_loadu_si256 ,
6- _mm256_movemask_epi8 , _mm256_or_si256, _mm256_permute2x128_si256, _mm256_set1_epi8,
7- _mm256_setr_epi8 , _mm256_setzero_si256, _mm256_shuffle_epi8, _mm256_srli_epi16,
8- _mm256_subs_epu8 , _mm256_testz_si256, _mm256_xor_si256, _mm_prefetch, _MM_HINT_T0,
5+ __m256i, _mm256_alignr_epi8, _mm256_and_si256, _mm256_loadu_si256 , _mm256_movemask_epi8 ,
6+ _mm256_or_si256, _mm256_permute2x128_si256, _mm256_set1_epi8, _mm256_setr_epi8 ,
7+ _mm256_setzero_si256, _mm256_shuffle_epi8, _mm256_srli_epi16, _mm256_subs_epu8 ,
8+ _mm256_testz_si256, _mm256_xor_si256, _mm_prefetch, _MM_HINT_T0,
99} ;
1010#[ cfg( target_arch = "x86_64" ) ]
1111use core:: arch:: x86_64:: {
12- __m256i, _mm256_alignr_epi8, _mm256_and_si256, _mm256_cmpgt_epi8 , _mm256_loadu_si256 ,
13- _mm256_movemask_epi8 , _mm256_or_si256, _mm256_permute2x128_si256, _mm256_set1_epi8,
14- _mm256_setr_epi8 , _mm256_setzero_si256, _mm256_shuffle_epi8, _mm256_srli_epi16,
15- _mm256_subs_epu8 , _mm256_testz_si256, _mm256_xor_si256, _mm_prefetch, _MM_HINT_T0,
12+ __m256i, _mm256_alignr_epi8, _mm256_and_si256, _mm256_loadu_si256 , _mm256_movemask_epi8 ,
13+ _mm256_or_si256, _mm256_permute2x128_si256, _mm256_set1_epi8, _mm256_setr_epi8 ,
14+ _mm256_setzero_si256, _mm256_shuffle_epi8, _mm256_srli_epi16, _mm256_subs_epu8 ,
15+ _mm256_testz_si256, _mm256_xor_si256, _mm_prefetch, _MM_HINT_T0,
1616} ;
1717
1818use crate :: implementation:: helpers:: Utf8CheckAlgorithm ;
@@ -210,12 +210,6 @@ impl SimdU8Value {
210210 ) )
211211 }
212212
213- #[ target_feature( enable = "avx2" ) ]
214- #[ inline]
215- unsafe fn signed_gt ( self , other : Self ) -> Self {
216- Self :: from ( _mm256_cmpgt_epi8 ( self . 0 , other. 0 ) )
217- }
218-
219213 #[ target_feature( enable = "avx2" ) ]
220214 #[ inline]
221215 unsafe fn any_bit_set ( self ) -> bool {
@@ -240,12 +234,9 @@ impl Utf8CheckAlgorithm<SimdU8Value> {
240234 #[ target_feature( enable = "avx2" ) ]
241235 #[ inline]
242236 unsafe fn must_be_2_3_continuation ( prev2 : SimdU8Value , prev3 : SimdU8Value ) -> SimdU8Value {
243- let is_third_byte = prev2. saturating_sub ( SimdU8Value :: splat ( 0b1110_0000 - 1 ) ) ;
244- let is_fourth_byte = prev3. saturating_sub ( SimdU8Value :: splat ( 0b1111_0000 - 1 ) ) ;
245-
246- is_third_byte
247- . or ( is_fourth_byte)
248- . signed_gt ( SimdU8Value :: splat0 ( ) )
237+ let is_third_byte = prev2. saturating_sub ( SimdU8Value :: splat ( 0xe0 - 0x80 ) ) ;
238+ let is_fourth_byte = prev3. saturating_sub ( SimdU8Value :: splat ( 0xf0 - 0x80 ) ) ;
239+ is_third_byte. or ( is_fourth_byte)
249240 }
250241}
251242
0 commit comments