@@ -292,22 +292,26 @@ sort!(sort_unstable, sort_unstable_large_strings, gen_strings, 10000);
292292sort_expensive ! ( sort_unstable_by, sort_unstable_large_random_expensive, gen_random, 10000 ) ;
293293
294294macro_rules! reverse {
295- ( $name: ident, $ty: ident ) => {
295+ ( $name: ident, $ty: ty , $f : expr ) => {
296296 #[ bench]
297297 fn $name( b: & mut Bencher ) {
298298 // odd length and offset by 1 to be as unaligned as possible
299299 let n = 0xFFFFF ;
300300 let mut v: Vec <_> =
301301 ( 0 ..1 +( n / mem:: size_of:: <$ty>( ) as u64 ) )
302- . map( |x| x as $ty )
302+ . map( $f )
303303 . collect( ) ;
304304 b. iter( || black_box( & mut v[ 1 ..] ) . reverse( ) ) ;
305305 b. bytes = n;
306306 }
307307 }
308308}
309309
310- reverse ! ( reverse_u8, u8 ) ;
311- reverse ! ( reverse_u16, u16 ) ;
312- reverse ! ( reverse_u32, u32 ) ;
313- reverse ! ( reverse_u64, u64 ) ;
310+ reverse ! ( reverse_u8, u8 , |x| x as u8 ) ;
311+ reverse ! ( reverse_u16, u16 , |x| x as u16 ) ;
312+ reverse ! ( reverse_u8x3, [ u8 ; 3 ] , |x| [ x as u8 , ( x>>8 ) as u8 , ( x>>16 ) as u8 ] ) ;
313+ reverse ! ( reverse_u32, u32 , |x| x as u32 ) ;
314+ reverse ! ( reverse_u64, u64 , |x| x as u64 ) ;
315+ reverse ! ( reverse_u128, u128 , |x| x as u128 ) ;
316+ #[ repr( simd) ] struct F64x4 ( f64 , f64 , f64 , f64 ) ;
317+ reverse ! ( reverse_simd_f64x4, F64x4 , |x| { let x = x as f64 ; F64x4 ( x, x, x, x) } ) ;
0 commit comments