@@ -235,6 +235,7 @@ pub fn sliding_min_mapper_simd<const LEFT: bool>(
235
235
let pos_mask = S :: splat ( 0x0000_ffff ) ;
236
236
let max_pos = S :: splat ( ( 1 << 16 ) - 1 ) ;
237
237
let mut pos = S :: splat ( 0 ) ;
238
+ let one = S :: splat ( 1 ) ;
238
239
// Sliding min is over w+k-1 characters, so chunks overlap w+k-2.
239
240
// Thus, the true length of each lane is len-(k+w-2).
240
241
//
@@ -251,7 +252,7 @@ pub fn sliding_min_mapper_simd<const LEFT: bool>(
251
252
}
252
253
// slightly faster than assigning S::splat(u32::MAX)
253
254
let elem = ( if LEFT { val } else { !val } & val_mask) | pos;
254
- pos += S :: splat ( 1 ) ;
255
+ pos += one ;
255
256
ring_buf. push ( elem) ;
256
257
prefix_min = simd_min :: < LEFT > ( prefix_min, elem) ;
257
258
// After a chunk has been filled, compute suffix minima.
@@ -317,6 +318,7 @@ pub fn sliding_lr_min_mapper_simd(
317
318
let max_pos = S :: splat ( ( 1 << 16 ) - 1 ) ;
318
319
let mut pos = S :: splat ( 0 ) ;
319
320
let mut pos_offset: S = from_fn ( |l| ( l * len. saturating_sub ( w - 1 ) ) as u32 ) . into ( ) ;
321
+ let one = S :: splat ( 1 ) ;
320
322
321
323
#[ inline( always) ]
322
324
move |val| {
@@ -329,7 +331,7 @@ pub fn sliding_lr_min_mapper_simd(
329
331
let lelem = ( val & val_mask) | pos;
330
332
let relem = ( !val & val_mask) | pos;
331
333
let elem = ( lelem, relem) ;
332
- pos += S :: splat ( 1 ) ;
334
+ pos += one ;
333
335
ring_buf. push ( elem) ;
334
336
prefix_lr_min = simd_lr_min ( prefix_lr_min, elem) ;
335
337
// After a chunk has been filled, compute suffix minima.
0 commit comments