@@ -277,6 +277,24 @@ void bench_group_jacobi_var(void* arg, int iters) {
277277 CHECK (j <= iters );
278278}
279279
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+
280298void bench_ecmult_wnaf (void * arg , int iters ) {
281299 int i , bits = 0 , overflow = 0 ;
282300 bench_inv * data = (bench_inv * )arg ;
@@ -398,6 +416,7 @@ int main(int argc, char **argv) {
398416 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 );
399417 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 );
400418 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 );
401420
402421 if (have_flag (argc , argv , "ecmult" ) || have_flag (argc , argv , "wnaf" )) run_benchmark ("wnaf_const" , bench_wnaf_const , bench_setup , NULL , & data , 10 , iters );
403422 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