@@ -86,6 +86,24 @@ fn uniform_int(c: &mut Criterion) {
86
86
bench_int ! ( c, i128 , ( i128 :: MIN , 1 ) ) ;
87
87
}
88
88
89
+ #[ cfg( feature = "simd_support" ) ]
90
+ macro_rules! bench_dist_simd_group {
91
+ ( $name: literal, $T: ty, $f: ident, $g: expr, $inputs: expr) => {
92
+ for input in $inputs {
93
+ $g. bench_with_input(
94
+ BenchmarkId :: new( $name, input. 0 ) ,
95
+ & input. 1 ,
96
+ |b, ( low, high) | {
97
+ let mut rng = BenchRng :: from_entropy( ) ;
98
+ let ( low, high) = ( <$T>:: splat( * low) , <$T>:: splat( * high) ) ;
99
+ let dist = Uniform :: new_inclusive( low, high) ;
100
+ b. iter( || <$T as SampleUniform >:: Sampler :: $f( & dist. 0 , & mut rng) )
101
+ } ,
102
+ ) ;
103
+ }
104
+ } ;
105
+ }
106
+
89
107
#[ cfg( feature = "simd_support" ) ]
90
108
macro_rules! bench_simd_group {
91
109
( $name: literal, $T: ty, $f: ident, $g: expr, $inputs: expr) => {
@@ -114,20 +132,21 @@ macro_rules! bench_simd_group {
114
132
#[ cfg( feature = "simd_support" ) ]
115
133
macro_rules! bench_simd {
116
134
( $c: expr, $T: ty, $high: expr/*, $incr:expr*/ ) => { {
117
- let mut g = $c. benchmark_group( concat!( "uniform_simd_" , stringify!( $T) ) ) ;
118
135
let inputs = & [ ( "high_reject" , $high) , ( "low_reject" , ( -1 , 2 ) ) ] ;
119
136
137
+ let mut g = $c. benchmark_group( concat!( "uniform_dist_simd_" , stringify!( $T) ) ) ;
138
+ bench_dist_simd_group!( "Old" , $T, sample, g, inputs) ;
139
+ bench_dist_simd_group!( "Canon" , $T, sample_canon, g, inputs) ;
140
+ bench_dist_simd_group!( "Canon-Lemire" , $T, sample_canon_lemire, g, inputs) ;
141
+ bench_dist_simd_group!( "Bitmask" , $T, sample_bitmask, g, inputs) ;
142
+ drop( g) ;
143
+
144
+ let mut g = $c. benchmark_group( concat!( "uniform_int_" , stringify!( $T) ) ) ;
120
145
bench_simd_group!( "Old" , $T, sample_single_inclusive, g, inputs) ;
121
146
bench_simd_group!( "Canon" , $T, sample_single_inclusive_canon, g, inputs) ;
122
- bench_simd_group!(
123
- "Canon-branchless" ,
124
- $T,
125
- sample_single_inclusive_canon_branchless,
126
- g,
127
- inputs
128
- ) ;
129
- bench_simd_group!( "Canon-scalar" , $T, sample_inclusive_canon_scalar, g, inputs) ;
147
+ bench_simd_group!( "Canon-Lemire" , $T, sample_inclusive_canon_lemire, g, inputs) ;
130
148
bench_simd_group!( "Bitmask" , $T, sample_single_inclusive_bitmask, g, inputs) ;
149
+
131
150
} } ;
132
151
}
133
152
@@ -138,11 +157,11 @@ fn uniform_simd(c: &mut Criterion) {
138
157
bench_simd ! ( c, i8x2, ( i8 :: MIN , 116 ) ) ;
139
158
bench_simd ! ( c, i8x4, ( i8 :: MIN , 116 ) ) ;
140
159
bench_simd ! ( c, i8x8, ( i8 :: MIN , 116 ) ) ;
141
- bench_simd ! ( c, i8x16, ( i8 :: MIN , 116 ) ) ;
142
- bench_simd ! ( c, i8x32, ( i8 :: MIN , 116 ) ) ;
143
- bench_simd ! ( c, i8x64, ( i8 :: MIN , 116 ) ) ;
160
+ // bench_simd!(c, i8x16, (i8::MIN, 116));
161
+ // bench_simd!(c, i8x32, (i8::MIN, 116));
162
+ // bench_simd!(c, i8x64, (i8::MIN, 116));
144
163
bench_simd ! ( c, i16x8, ( i16 :: MIN , 32407 ) ) ;
145
- bench_simd ! ( c, i16x16, ( i16 :: MIN , 32407 ) ) ;
164
+ // bench_simd!(c, i16x16, (i16::MIN, 32407));
146
165
bench_simd ! ( c, i32x4, ( i32 :: MIN , 1 ) ) ;
147
166
bench_simd ! ( c, i32x8, ( i32 :: MIN , 1 ) ) ;
148
167
bench_simd ! ( c, i64x2, ( i64 :: MIN , 1 ) ) ;
0 commit comments