@@ -219,6 +219,19 @@ static void bench_field_sqrt(void* arg, int iters) {
219219 CHECK (j <= iters );
220220}
221221
222+ static void bench_field_is_square_var (void * arg , int iters ) {
223+ int i , j = 0 ;
224+ bench_inv * data = (bench_inv * )arg ;
225+ secp256k1_fe t = data -> fe [0 ];
226+
227+ for (i = 0 ; i < iters ; i ++ ) {
228+ j += secp256k1_fe_is_square_var (& t );
229+ secp256k1_fe_add (& t , & data -> fe [1 ]);
230+ secp256k1_fe_normalize_var (& t );
231+ }
232+ CHECK (j <= iters );
233+ }
234+
222235static void bench_group_double_var (void * arg , int iters ) {
223236 int i ;
224237 bench_inv * data = (bench_inv * )arg ;
@@ -371,6 +384,7 @@ int main(int argc, char **argv) {
371384 if (d || have_flag (argc , argv , "field" ) || have_flag (argc , argv , "mul" )) run_benchmark ("field_mul" , bench_field_mul , bench_setup , NULL , & data , 10 , iters * 10 );
372385 if (d || have_flag (argc , argv , "field" ) || have_flag (argc , argv , "inverse" )) run_benchmark ("field_inverse" , bench_field_inverse , bench_setup , NULL , & data , 10 , iters );
373386 if (d || have_flag (argc , argv , "field" ) || have_flag (argc , argv , "inverse" )) run_benchmark ("field_inverse_var" , bench_field_inverse_var , bench_setup , NULL , & data , 10 , iters );
387+ if (d || have_flag (argc , argv , "field" ) || have_flag (argc , argv , "issquare" )) run_benchmark ("field_is_square_var" , bench_field_is_square_var , bench_setup , NULL , & data , 10 , iters );
374388 if (d || have_flag (argc , argv , "field" ) || have_flag (argc , argv , "sqrt" )) run_benchmark ("field_sqrt" , bench_field_sqrt , bench_setup , NULL , & data , 10 , iters );
375389
376390 if (d || have_flag (argc , argv , "group" ) || have_flag (argc , argv , "double" )) run_benchmark ("group_double_var" , bench_group_double_var , bench_setup , NULL , & data , 10 , iters * 10 );
0 commit comments