@@ -160,6 +160,8 @@ where
160160{
161161 /// lowest B bits are 1.
162162 const CHAR_MASK : u64 = ( 1 << B ) - 1 ;
163+ const SIMD_B : S = S :: new ( [ B as u32 ; 8 ] ) ;
164+ const SIMD_CHAR_MASK : S = S :: new ( [ ( 1 << B ) - 1 ; 8 ] ) ;
163165 /// Chars per byte
164166 const C8 : usize = 8 / B ;
165167 /// Chars per u32
@@ -642,9 +644,6 @@ where
642644 let offsets: [ usize ; 8 ] = from_fn ( |l| l * bytes_per_chunk) ;
643645 let mut cur = S :: ZERO ;
644646
645- let simd_char_mask: u32x8 = S :: splat ( Self :: CHAR_MASK as u32 ) ;
646- let simd_b: u32x8 = S :: splat ( B as u32 ) ;
647-
648647 let par_len = if num_kmers == 0 {
649648 0
650649 } else {
@@ -676,9 +675,9 @@ where
676675 cur = buf[ ( i % Self :: C256 ) / Self :: C32 ] ;
677676 }
678677 // Extract the last 2 bits of each character.
679- let chars = cur & simd_char_mask ;
678+ let chars = cur & Self :: SIMD_CHAR_MASK ;
680679 // Shift remaining characters to the right.
681- cur = cur >> simd_b ;
680+ cur = cur >> Self :: SIMD_B ;
682681 chars
683682 } ,
684683 )
@@ -764,9 +763,6 @@ where
764763 // happen before the delay is actually reached.
765764 let mut read_idx = ( buf_len - delay / Self :: C32 ) % buf_len;
766765
767- let simd_char_mask: u32x8 = S :: splat ( Self :: CHAR_MASK as u32 ) ;
768- let simd_b: u32x8 = S :: splat ( B as u32 ) ;
769-
770766 let par_len = if num_kmers == 0 {
771767 0
772768 } else {
@@ -817,11 +813,11 @@ where
817813 read_idx &= buf_mask;
818814 }
819815 // Extract the last 2 bits of each character.
820- let chars = upcoming & simd_char_mask ;
821- let chars_d = upcoming_d & simd_char_mask ;
816+ let chars = upcoming & Self :: SIMD_CHAR_MASK ;
817+ let chars_d = upcoming_d & Self :: SIMD_CHAR_MASK ;
822818 // Shift remaining characters to the right.
823- upcoming = upcoming >> simd_b ;
824- upcoming_d = upcoming_d >> simd_b ;
819+ upcoming = upcoming >> Self :: SIMD_B ;
820+ upcoming_d = upcoming_d >> Self :: SIMD_B ;
825821 ( chars, chars_d)
826822 } ,
827823 )
@@ -915,9 +911,6 @@ where
915911 let mut read_idx1 = ( buf_len - delay1 / Self :: C32 ) % buf_len;
916912 let mut read_idx2 = ( buf_len - delay2 / Self :: C32 ) % buf_len;
917913
918- let simd_char_mask: u32x8 = S :: splat ( Self :: CHAR_MASK as u32 ) ;
919- let simd_b: u32x8 = S :: splat ( B as u32 ) ;
920-
921914 let par_len = if num_kmers == 0 {
922915 0
923916 } else {
@@ -975,13 +968,13 @@ where
975968 read_idx2 &= buf_mask;
976969 }
977970 // Extract the last 2 bits of each character.
978- let chars = upcoming & simd_char_mask ;
979- let chars_d1 = upcoming_d1 & simd_char_mask ;
980- let chars_d2 = upcoming_d2 & simd_char_mask ;
971+ let chars = upcoming & Self :: SIMD_CHAR_MASK ;
972+ let chars_d1 = upcoming_d1 & Self :: SIMD_CHAR_MASK ;
973+ let chars_d2 = upcoming_d2 & Self :: SIMD_CHAR_MASK ;
981974 // Shift remaining characters to the right.
982- upcoming = upcoming >> simd_b ;
983- upcoming_d1 = upcoming_d1 >> simd_b ;
984- upcoming_d2 = upcoming_d2 >> simd_b ;
975+ upcoming = upcoming >> Self :: SIMD_B ;
976+ upcoming_d1 = upcoming_d1 >> Self :: SIMD_B ;
977+ upcoming_d2 = upcoming_d2 >> Self :: SIMD_B ;
985978 ( chars, chars_d1, chars_d2)
986979 } ,
987980 )
0 commit comments