@@ -277,6 +277,24 @@ void bench_group_jacobi_var(void* arg, int iters) {
277
277
CHECK (j <= iters );
278
278
}
279
279
280
+ void bench_group_to_affine_var (void * arg , int iters ) {
281
+ int i ;
282
+ bench_inv * data = (bench_inv * )arg ;
283
+
284
+ for (i = 0 ; i < iters ; ++ i ) {
285
+ secp256k1_ge_set_gej_var (& data -> ge [1 ], & data -> gej [0 ]);
286
+ /* Use the output affine X/Y coordinates to vary the input X/Y/Z coordinates.
287
+ Similar to bench_group_jacobi_var, this approach does not result in
288
+ coordinates of points on the curve. */
289
+ secp256k1_fe_add (& data -> gej [0 ].x , & data -> ge [1 ].y );
290
+ secp256k1_fe_add (& data -> gej [0 ].y , & data -> fe [2 ]);
291
+ secp256k1_fe_add (& data -> gej [0 ].z , & data -> ge [1 ].x );
292
+ secp256k1_fe_normalize_var (& data -> gej [0 ].x );
293
+ secp256k1_fe_normalize_var (& data -> gej [0 ].y );
294
+ secp256k1_fe_normalize_var (& data -> gej [0 ].z );
295
+ }
296
+ }
297
+
280
298
void bench_ecmult_wnaf (void * arg , int iters ) {
281
299
int i , bits = 0 , overflow = 0 ;
282
300
bench_inv * data = (bench_inv * )arg ;
@@ -398,6 +416,7 @@ int main(int argc, char **argv) {
398
416
if (have_flag (argc , argv , "group" ) || have_flag (argc , argv , "add" )) run_benchmark ("group_add_affine" , bench_group_add_affine , bench_setup , NULL , & data , 10 , iters * 10 );
399
417
if (have_flag (argc , argv , "group" ) || have_flag (argc , argv , "add" )) run_benchmark ("group_add_affine_var" , bench_group_add_affine_var , bench_setup , NULL , & data , 10 , iters * 10 );
400
418
if (have_flag (argc , argv , "group" ) || have_flag (argc , argv , "jacobi" )) run_benchmark ("group_jacobi_var" , bench_group_jacobi_var , bench_setup , NULL , & data , 10 , iters );
419
+ if (have_flag (argc , argv , "group" ) || have_flag (argc , argv , "to_affine" )) run_benchmark ("group_to_affine_var" , bench_group_to_affine_var , bench_setup , NULL , & data , 10 , iters );
401
420
402
421
if (have_flag (argc , argv , "ecmult" ) || have_flag (argc , argv , "wnaf" )) run_benchmark ("wnaf_const" , bench_wnaf_const , bench_setup , NULL , & data , 10 , iters );
403
422
if (have_flag (argc , argv , "ecmult" ) || have_flag (argc , argv , "wnaf" )) run_benchmark ("ecmult_wnaf" , bench_ecmult_wnaf , bench_setup , NULL , & data , 10 , iters );
0 commit comments