@@ -227,6 +227,15 @@ fn mul_small_bench(c: &mut Criterion) {
227227 } ) ;
228228
229229 // Reduction benchmarks
230+ group. bench_function ( "montgomery_reduce_in_place core (L=8)" , |bench| {
231+ let mut i = 0 ;
232+ bench. iter ( || {
233+ i = ( i + 1 ) % SAMPLES ;
234+ let mut x = bigint_2n_s[ i] ;
235+ criterion:: black_box ( Fr :: montgomery_reduce_in_place :: < 8 > ( & mut x) )
236+ } )
237+ } ) ;
238+
230239 group. bench_function ( "from_montgomery_reduce (L=2N)" , |bench| {
231240 let mut i = 0 ;
232241 bench. iter ( || {
@@ -235,29 +244,53 @@ fn mul_small_bench(c: &mut Criterion) {
235244 } )
236245 } ) ;
237246
238- // group.bench_function("from_unchecked_nplus1 (Barrett N+1)", |bench| {
239- // let mut i = 0;
240- // bench.iter(|| {
241- // i = (i + 1) % SAMPLES;
242- // criterion::black_box(Fr::from_unchecked_nplus1::<5>(bigint_nplus1_s[i]))
243- // })
244- // });
247+ // L=9 inputs: derive by zero-extending L=8 inputs
248+ let bigint_9_s = bigint_2n_s
249+ . iter ( )
250+ . map ( |b8| ark_ff:: BigInt :: < 9 > :: zero_extend_from :: < 8 > ( b8) )
251+ . collect :: < Vec < _ > > ( ) ;
245252
246- // group.bench_function("from_unchecked_nplus2 (Barrett N+2)", |bench| {
247- // let mut i = 0;
248- // bench.iter(|| {
249- // i = (i + 1) % SAMPLES;
250- // criterion::black_box(Fr::from_unchecked_nplus2::<5, 6>(bigint_nplus2_s[i]))
251- // })
252- // });
253+ group. bench_function ( "montgomery_reduce_in_place core (L=9)" , |bench| {
254+ let mut i = 0 ;
255+ bench. iter ( || {
256+ i = ( i + 1 ) % SAMPLES ;
257+ let mut x = bigint_9_s[ i] ;
258+ criterion:: black_box ( Fr :: montgomery_reduce_in_place :: < 9 > ( & mut x) )
259+ } )
260+ } ) ;
253261
254- // group.bench_function("from_unchecked_nplus3 (Barrett N+3)", |bench| {
255- // let mut i = 0;
256- // bench.iter(|| {
257- // i = (i + 1) % SAMPLES;
258- // criterion::black_box(Fr::from_unchecked_nplus3::<5, 6, 7>(bigint_nplus3_s[i]))
259- // })
260- // });
262+ group. bench_function ( "from_montgomery_reduce (L=9)" , |bench| {
263+ let mut i = 0 ;
264+ bench. iter ( || {
265+ i = ( i + 1 ) % SAMPLES ;
266+ criterion:: black_box ( Fr :: from_montgomery_reduce :: < 9 , 5 > ( bigint_9_s[ i] ) )
267+ } )
268+ } ) ;
269+
270+ // Barrett reductions
271+ group. bench_function ( "from_barrett_reduce (L=5)" , |bench| {
272+ let mut i = 0 ;
273+ bench. iter ( || {
274+ i = ( i + 1 ) % SAMPLES ;
275+ criterion:: black_box ( Fr :: from_barrett_reduce :: < 5 , 5 > ( bigint_nplus1_s[ i] ) )
276+ } )
277+ } ) ;
278+
279+ group. bench_function ( "from_barrett_reduce (L=6)" , |bench| {
280+ let mut i = 0 ;
281+ bench. iter ( || {
282+ i = ( i + 1 ) % SAMPLES ;
283+ criterion:: black_box ( Fr :: from_barrett_reduce :: < 6 , 5 > ( bigint_nplus2_s[ i] ) )
284+ } )
285+ } ) ;
286+
287+ group. bench_function ( "from_barrett_reduce (L=7)" , |bench| {
288+ let mut i = 0 ;
289+ bench. iter ( || {
290+ i = ( i + 1 ) % SAMPLES ;
291+ criterion:: black_box ( Fr :: from_barrett_reduce :: < 7 , 5 > ( bigint_nplus3_s[ i] ) )
292+ } )
293+ } ) ;
261294
262295 // Linear combination benchmarks
263296 group. bench_function ( "linear_combination_u64 (2 terms)" , |bench| {
0 commit comments