@@ -292,22 +292,26 @@ sort!(sort_unstable, sort_unstable_large_strings, gen_strings, 10000);
292
292
sort_expensive ! ( sort_unstable_by, sort_unstable_large_random_expensive, gen_random, 10000 ) ;
293
293
294
294
macro_rules! reverse {
295
- ( $name: ident, $ty: ident ) => {
295
+ ( $name: ident, $ty: ty , $f : expr ) => {
296
296
#[ bench]
297
297
fn $name( b: & mut Bencher ) {
298
298
// odd length and offset by 1 to be as unaligned as possible
299
299
let n = 0xFFFFF ;
300
300
let mut v: Vec <_> =
301
301
( 0 ..1 +( n / mem:: size_of:: <$ty>( ) as u64 ) )
302
- . map( |x| x as $ty )
302
+ . map( $f )
303
303
. collect( ) ;
304
304
b. iter( || black_box( & mut v[ 1 ..] ) . reverse( ) ) ;
305
305
b. bytes = n;
306
306
}
307
307
}
308
308
}
309
309
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