Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(performance): Avoid extra Brillig array offsetting for constant indices #7522

Merged
merged 18 commits into from
Feb 26, 2025

Conversation

vezenovm
Copy link
Contributor

@vezenovm vezenovm commented Feb 25, 2025

Description

Problem*

Resolves #7403

Summary*

See the issue for full context of the motivation behind this PR.

Adds a Brillig specific SSA pass to reduce unnecessary operations for offsetting during array accesses.

Additional Context

Documentation*

Check one:

  • No documentation needed.
  • Documentation included in this PR.
  • [For Experimental Features] Documentation to be submitted in a separate PR.

PR Checklist*

  • I have tested the changes locally.
  • I have formatted the changes with Prettier and/or cargo fmt on default settings.

Copy link
Contributor

github-actions bot commented Feb 25, 2025

Changes to Brillig bytecode sizes

Generated at commit: 2786a40af0f7aedb9d3e7f4c6d628a8c45d206ec, compared to commit: 45e7a7dd68318064437b5f055d9ef904af17e721

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
struct_array_inputs_inliner_max -2 ✅ -3.77%
struct_array_inputs_inliner_min -2 ✅ -3.77%
struct_array_inputs_inliner_zero -2 ✅ -3.77%
simple_radix_inliner_max -3 ✅ -3.85%
simple_radix_inliner_zero -3 ✅ -3.85%
brillig_calls_array_inliner_max -4 ✅ -4.04%
to_bytes_integration_inliner_min -10 ✅ -4.37%
fold_complex_outputs_inliner_min -26 ✅ -4.39%
regression_7062_inliner_max -4 ✅ -4.40%
regression_7062_inliner_min -4 ✅ -4.40%
regression_7062_inliner_zero -4 ✅ -4.40%
regression_unsafe_no_predicates_inliner_min -4 ✅ -4.55%
integer_array_indexing_inliner_max -3 ✅ -4.76%
integer_array_indexing_inliner_min -3 ✅ -4.76%
integer_array_indexing_inliner_zero -3 ✅ -4.76%
nested_array_dynamic_simple_inliner_max -5 ✅ -5.10%
nested_array_dynamic_simple_inliner_min -5 ✅ -5.10%
nested_array_dynamic_simple_inliner_zero -5 ✅ -5.10%
simple_2d_array_inliner_max -6 ✅ -5.56%
simple_2d_array_inliner_min -8 ✅ -5.56%
simple_2d_array_inliner_zero -6 ✅ -5.56%
nested_arrays_from_brillig_inliner_max -4 ✅ -5.97%
nested_arrays_from_brillig_inliner_zero -4 ✅ -5.97%
brillig_calls_array_inliner_min -13 ✅ -6.16%
brillig_calls_array_inliner_zero -13 ✅ -7.07%
nested_arrays_from_brillig_inliner_min -13 ✅ -7.93%

Full diff report 👇
Program Brillig opcodes (+/-) %
global_var_regression_entry_points_inliner_min 133,782 (-2) -0.00%
global_var_regression_entry_points_inliner_zero 133,755 (-2) -0.00%
poseidonsponge_x5_254_inliner_min 3,153 (-1) -0.03%
u128_inliner_max 2,644 (-1) -0.04%
slice_regex_inliner_min 2,071 (-1) -0.05%
regression_5252_inliner_min 3,549 (-2) -0.06%
sha256_var_size_regression_inliner_max 1,689 (-1) -0.06%
poseidonsponge_x5_254_inliner_zero 3,013 (-2) -0.07%
sha256_var_witness_const_regression_inliner_max 1,239 (-1) -0.08%
regression_5252_inliner_zero 3,384 (-3) -0.09%
conditional_regression_short_circuit_inliner_min 1,080 (-1) -0.09%
poseidonsponge_x5_254_inliner_max 4,100 (-4) -0.10%
brillig_block_parameter_liveness_inliner_max 4,894 (-5) -0.10%
brillig_block_parameter_liveness_inliner_min 4,894 (-5) -0.10%
brillig_block_parameter_liveness_inliner_zero 4,894 (-5) -0.10%
hashmap_inliner_min 9,195 (-10) -0.11%
ecdsa_secp256k1_inliner_zero 897 (-1) -0.11%
conditional_regression_short_circuit_inliner_zero 897 (-1) -0.11%
regression_5252_inliner_max 4,436 (-5) -0.11%
ecdsa_secp256k1_inliner_max 873 (-1) -0.11%
array_dynamic_nested_blackbox_input_inliner_zero 860 (-1) -0.12%
uhashmap_inliner_zero 6,750 (-8) -0.12%
array_dynamic_nested_blackbox_input_inliner_max 836 (-1) -0.12%
hashmap_inliner_zero 7,516 (-9) -0.12%
uhashmap_inliner_min 7,375 (-9) -0.12%
sha256_inliner_max 2,262 (-3) -0.13%
poseidon_bn254_hash_inliner_max 5,250 (-7) -0.13%
poseidon_bn254_hash_width_3_inliner_max 5,250 (-7) -0.13%
poseidon_bn254_hash_width_3_inliner_min 5,011 (-7) -0.14%
poseidon_bn254_hash_inliner_min 5,011 (-7) -0.14%
poseidon_bn254_hash_width_3_inliner_zero 4,664 (-7) -0.15%
poseidon_bn254_hash_inliner_zero 4,664 (-7) -0.15%
6_inliner_max 1,119 (-2) -0.18%
slice_regex_inliner_zero 1,669 (-3) -0.18%
regression_struct_array_conditional_inliner_max 545 (-1) -0.18%
regression_struct_array_conditional_inliner_min 545 (-1) -0.18%
regression_struct_array_conditional_inliner_zero 545 (-1) -0.18%
strings_inliner_min 1,088 (-2) -0.18%
slice_coercion_inliner_min 477 (-1) -0.21%
merkle_insert_inliner_min 475 (-1) -0.21%
merkle_insert_inliner_zero 444 (-1) -0.22%
uhashmap_inliner_max 11,459 (-27) -0.24%
nested_array_in_slice_inliner_max 848 (-2) -0.24%
regression_6674_3_inliner_min 832 (-2) -0.24%
conditional_regression_short_circuit_inliner_max 1,191 (-3) -0.25%
fold_2_to_17_inliner_min 387 (-1) -0.26%
poseidon2_inliner_min 363 (-1) -0.27%
bench_2_to_17_inliner_min 356 (-1) -0.28%
hashmap_inliner_max 19,691 (-57) -0.29%
pedersen_hash_inliner_min 337 (-1) -0.30%
reference_only_used_as_alias_inliner_min 334 (-1) -0.30%
merkle_insert_inliner_max 663 (-2) -0.30%
poseidon2_inliner_max 324 (-1) -0.31%
bench_2_to_17_inliner_max 317 (-1) -0.31%
pedersen_hash_inliner_max 313 (-1) -0.32%
pedersen_hash_inliner_zero 313 (-1) -0.32%
fold_numeric_generic_poseidon_inliner_min 620 (-2) -0.32%
no_predicates_numeric_generic_poseidon_inliner_min 620 (-2) -0.32%
poseidon2_inliner_zero 294 (-1) -0.34%
bench_2_to_17_inliner_zero 287 (-1) -0.35%
fold_2_to_17_inliner_max 560 (-2) -0.36%
fold_numeric_generic_poseidon_inliner_zero 560 (-2) -0.36%
no_predicates_numeric_generic_poseidon_inliner_zero 560 (-2) -0.36%
u128_inliner_zero 1,891 (-7) -0.37%
reference_counts_inliner_zero 1,059 (-4) -0.38%
higher_order_functions_inliner_min 1,275 (-5) -0.39%
regression_6674_3_inliner_max 496 (-2) -0.40%
regression_6674_3_inliner_zero 496 (-2) -0.40%
no_predicates_numeric_generic_poseidon_inliner_max 726 (-3) -0.41%
fold_numeric_generic_poseidon_inliner_max 726 (-3) -0.41%
higher_order_functions_inliner_zero 712 (-3) -0.42%
reference_counts_inliner_min 1,149 (-5) -0.43%
nested_array_in_slice_inliner_min 816 (-4) -0.49%
nested_array_in_slice_inliner_zero 816 (-4) -0.49%
fold_2_to_17_inliner_zero 395 (-2) -0.50%
higher_order_functions_inliner_max 556 (-3) -0.54%
derive_inliner_min 556 (-3) -0.54%
regression_inliner_min 1,073 (-6) -0.56%
array_sort_inliner_min 348 (-2) -0.57%
u128_inliner_min 2,162 (-13) -0.60%
array_dynamic_inliner_min 324 (-2) -0.61%
array_dynamic_inliner_max 313 (-2) -0.63%
array_dynamic_inliner_zero 313 (-2) -0.63%
regression_inliner_zero 937 (-6) -0.64%
sha2_byte_inliner_zero 2,161 (-14) -0.64%
conditional_1_inliner_min 1,377 (-9) -0.65%
regression_inliner_max 902 (-6) -0.66%
multi_scalar_mul_inliner_min 297 (-2) -0.67%
sha2_byte_inliner_max 2,065 (-14) -0.67%
array_sort_inliner_max 288 (-2) -0.69%
array_sort_inliner_zero 288 (-2) -0.69%
encrypted_log_regression_inliner_min 287 (-2) -0.69%
7_function_inliner_max 555 (-4) -0.72%
encrypted_log_regression_inliner_max 274 (-2) -0.72%
encrypted_log_regression_inliner_zero 274 (-2) -0.72%
simple_shield_inliner_max 800 (-6) -0.74%
array_if_cond_simple_inliner_max 133 (-1) -0.75%
array_if_cond_simple_inliner_min 133 (-1) -0.75%
array_if_cond_simple_inliner_zero 133 (-1) -0.75%
references_inliner_min 398 (-3) -0.75%
databus_composite_calldata_inliner_max 366 (-3) -0.81%
databus_composite_calldata_inliner_min 366 (-3) -0.81%
databus_composite_calldata_inliner_zero 366 (-3) -0.81%
brillig_pedersen_inliner_max 486 (-4) -0.82%
pedersen_check_inliner_max 486 (-4) -0.82%
generics_inliner_min 237 (-2) -0.84%
regression_11294_inliner_min 467 (-4) -0.85%
regression_bignum_inliner_min 348 (-3) -0.85%
simple_shield_inliner_zero 696 (-6) -0.85%
6_array_inliner_min 451 (-4) -0.88%
array_len_inliner_min 112 (-1) -0.88%
conditional_1_inliner_max 1,116 (-10) -0.89%
regression_mem_op_predicate_inliner_max 111 (-1) -0.89%
regression_mem_op_predicate_inliner_min 111 (-1) -0.89%
regression_mem_op_predicate_inliner_zero 111 (-1) -0.89%
6_array_inliner_zero 441 (-4) -0.90%
conditional_1_inliner_zero 1,091 (-10) -0.91%
sha2_byte_inliner_min 2,894 (-27) -0.92%
7_function_inliner_min 628 (-6) -0.95%
regression_bignum_inliner_max 313 (-3) -0.95%
derive_inliner_zero 313 (-3) -0.95%
regression_bignum_inliner_zero 313 (-3) -0.95%
nested_array_dynamic_inliner_max 2,280 (-22) -0.96%
7_function_inliner_zero 504 (-5) -0.98%
fold_distinct_return_inliner_min 100 (-1) -0.99%
array_len_inliner_max 99 (-1) -1.00%
array_len_inliner_zero 99 (-1) -1.00%
6_array_inliner_max 382 (-4) -1.04%
pedersen_check_inliner_zero 474 (-5) -1.04%
brillig_pedersen_inliner_zero 474 (-5) -1.04%
pedersen_commitment_inliner_max 187 (-2) -1.06%
pedersen_commitment_inliner_zero 187 (-2) -1.06%
nested_array_dynamic_inliner_min 1,864 (-20) -1.06%
nested_array_dynamic_inliner_zero 1,864 (-20) -1.06%
struct_inputs_inliner_max 266 (-3) -1.12%
brillig_rc_regression_6123_inliner_max 170 (-2) -1.16%
brillig_rc_regression_6123_inliner_zero 170 (-2) -1.16%
struct_inputs_inliner_zero 248 (-3) -1.20%
conditional_regression_661_inliner_min 163 (-2) -1.21%
simple_shield_inliner_min 810 (-10) -1.22%
conditional_2_inliner_min 159 (-2) -1.24%
generics_inliner_zero 158 (-2) -1.25%
brillig_pedersen_inliner_min 522 (-7) -1.32%
pedersen_check_inliner_min 522 (-7) -1.32%
global_consts_inliner_max 223 (-3) -1.33%
global_consts_inliner_zero 223 (-3) -1.33%
regression_capacity_tracker_inliner_max 213 (-3) -1.39%
regression_capacity_tracker_inliner_min 213 (-3) -1.39%
regression_capacity_tracker_inliner_zero 213 (-3) -1.39%
brillig_cow_assign_inliner_max 132 (-2) -1.49%
brillig_cow_assign_inliner_min 132 (-2) -1.49%
brillig_cow_assign_inliner_zero 132 (-2) -1.49%
regression_11294_inliner_max 257 (-4) -1.53%
regression_11294_inliner_zero 257 (-4) -1.53%
conditional_regression_661_inliner_max 127 (-2) -1.55%
type_aliases_inliner_max 58 (-1) -1.69%
conditional_2_inliner_max 116 (-2) -1.69%
type_aliases_inliner_min 58 (-1) -1.69%
type_aliases_inliner_zero 58 (-1) -1.69%
conditional_2_inliner_zero 116 (-2) -1.69%
nested_dyn_array_regression_5782_inliner_max 171 (-3) -1.72%
nested_dyn_array_regression_5782_inliner_min 171 (-3) -1.72%
nested_dyn_array_regression_5782_inliner_zero 171 (-3) -1.72%
to_be_bytes_inliner_min 222 (-4) -1.77%
regression_4088_inliner_min 55 (-1) -1.79%
pedersen_commitment_inliner_min 158 (-3) -1.86%
conditional_regression_661_inliner_zero 157 (-3) -1.88%
global_var_regression_simple_inliner_max 101 (-2) -1.94%
global_var_regression_simple_inliner_zero 101 (-2) -1.94%
to_be_bytes_inliner_max 200 (-4) -1.96%
to_be_bytes_inliner_zero 200 (-4) -1.96%
brillig_cow_regression_inliner_min 2,232 (-45) -1.98%
brillig_cow_regression_inliner_zero 2,003 (-41) -2.01%
brillig_cow_regression_inliner_max 1,975 (-41) -2.03%
simple_array_param_inliner_max 48 (-1) -2.04%
simple_array_param_inliner_min 48 (-1) -2.04%
simple_array_param_inliner_zero 48 (-1) -2.04%
struct_inputs_inliner_min 278 (-6) -2.11%
inline_decompose_hint_brillig_call_inliner_min 230 (-5) -2.13%
array_to_slice_inliner_zero 659 (-15) -2.23%
import_inliner_min 131 (-3) -2.24%
regression_5045_inliner_max 87 (-2) -2.25%
regression_5045_inliner_zero 87 (-2) -2.25%
conditional_regression_421_inliner_max 86 (-2) -2.27%
conditional_regression_421_inliner_min 86 (-2) -2.27%
conditional_regression_421_inliner_zero 86 (-2) -2.27%
brillig_calls_conditionals_inliner_max 128 (-3) -2.29%
regression_5045_inliner_min 212 (-5) -2.30%
array_to_slice_inliner_min 890 (-21) -2.31%
slices_inliner_min 2,182 (-52) -2.33%
brillig_calls_conditionals_inliner_min 125 (-3) -2.34%
brillig_calls_conditionals_inliner_zero 125 (-3) -2.34%
multi_scalar_mul_inliner_max 245 (-6) -2.39%
multi_scalar_mul_inliner_zero 245 (-6) -2.39%
array_to_slice_inliner_max 612 (-15) -2.39%
global_var_regression_simple_inliner_min 159 (-4) -2.45%
trait_impl_base_type_inliner_min 234 (-6) -2.50%
slices_inliner_max 1,929 (-50) -2.53%
fold_complex_outputs_inliner_zero 498 (-13) -2.54%
fold_complex_outputs_inliner_max 417 (-11) -2.57%
slices_inliner_zero 1,857 (-50) -2.62%
slice_dynamic_index_inliner_min 2,177 (-61) -2.73%
embedded_curve_ops_inliner_min 482 (-14) -2.82%
if_else_chain_inliner_max 103 (-3) -2.83%
if_else_chain_inliner_min 103 (-3) -2.83%
if_else_chain_inliner_zero 103 (-3) -2.83%
main_bool_arg_inliner_max 66 (-2) -2.94%
main_bool_arg_inliner_min 66 (-2) -2.94%
main_bool_arg_inliner_zero 66 (-2) -2.94%
slice_dynamic_index_inliner_max 1,989 (-61) -2.98%
slice_dynamic_index_inliner_zero 1,989 (-61) -2.98%
embedded_curve_ops_inliner_zero 347 (-11) -3.07%
to_bytes_integration_inliner_max 91 (-3) -3.19%
to_bytes_integration_inliner_zero 91 (-3) -3.19%
embedded_curve_ops_inliner_max 241 (-8) -3.21%
simple_radix_inliner_min 88 (-3) -3.30%
brillig_arrays_inliner_max 113 (-4) -3.42%
brillig_arrays_inliner_zero 113 (-4) -3.42%
brillig_constant_reference_regression_inliner_max 83 (-3) -3.49%
brillig_constant_reference_regression_inliner_min 83 (-3) -3.49%
brillig_constant_reference_regression_inliner_zero 83 (-3) -3.49%
brillig_arrays_inliner_min 135 (-5) -3.57%
struct_array_inputs_inliner_max 51 (-2) -3.77%
struct_array_inputs_inliner_min 51 (-2) -3.77%
struct_array_inputs_inliner_zero 51 (-2) -3.77%
simple_radix_inliner_max 75 (-3) -3.85%
simple_radix_inliner_zero 75 (-3) -3.85%
brillig_calls_array_inliner_max 95 (-4) -4.04%
to_bytes_integration_inliner_min 219 (-10) -4.37%
fold_complex_outputs_inliner_min 566 (-26) -4.39%
regression_7062_inliner_max 87 (-4) -4.40%
regression_7062_inliner_min 87 (-4) -4.40%
regression_7062_inliner_zero 87 (-4) -4.40%
regression_unsafe_no_predicates_inliner_min 84 (-4) -4.55%
integer_array_indexing_inliner_max 60 (-3) -4.76%
integer_array_indexing_inliner_min 60 (-3) -4.76%
integer_array_indexing_inliner_zero 60 (-3) -4.76%
nested_array_dynamic_simple_inliner_max 93 (-5) -5.10%
nested_array_dynamic_simple_inliner_min 93 (-5) -5.10%
nested_array_dynamic_simple_inliner_zero 93 (-5) -5.10%
simple_2d_array_inliner_max 102 (-6) -5.56%
simple_2d_array_inliner_min 136 (-8) -5.56%
simple_2d_array_inliner_zero 102 (-6) -5.56%
nested_arrays_from_brillig_inliner_max 63 (-4) -5.97%
nested_arrays_from_brillig_inliner_zero 63 (-4) -5.97%
brillig_calls_array_inliner_min 198 (-13) -6.16%
brillig_calls_array_inliner_zero 171 (-13) -7.07%
nested_arrays_from_brillig_inliner_min 151 (-13) -7.93%

Copy link
Contributor

github-actions bot commented Feb 25, 2025

Changes to number of Brillig opcodes executed

Generated at commit: 2786a40af0f7aedb9d3e7f4c6d628a8c45d206ec, compared to commit: 45e7a7dd68318064437b5f055d9ef904af17e721

🧾 Summary (10% most significant diffs)

Program Brillig opcodes (+/-) %
brillig_constant_reference_regression_inliner_max -3 ✅ -3.61%
brillig_constant_reference_regression_inliner_min -3 ✅ -3.61%
brillig_constant_reference_regression_inliner_zero -3 ✅ -3.61%
multi_scalar_mul_inliner_min -1,758 ✅ -3.72%
embedded_curve_ops_inliner_zero -15 ✅ -3.73%
global_var_regression_simple_inliner_min -8 ✅ -3.81%
integer_array_indexing_inliner_max -3 ✅ -3.90%
integer_array_indexing_inliner_min -3 ✅ -3.90%
integer_array_indexing_inliner_zero -3 ✅ -3.90%
nested_arrays_from_brillig_inliner_max -4 ✅ -4.00%
nested_arrays_from_brillig_inliner_zero -4 ✅ -4.00%
simple_radix_inliner_max -3 ✅ -4.11%
simple_radix_inliner_zero -3 ✅ -4.11%
brillig_calls_array_inliner_max -4 ✅ -4.12%
simple_2d_array_inliner_max -6 ✅ -4.72%
simple_2d_array_inliner_zero -6 ✅ -4.72%
simple_2d_array_inliner_min -8 ✅ -4.73%
nested_array_dynamic_simple_inliner_max -5 ✅ -5.81%
nested_array_dynamic_simple_inliner_min -5 ✅ -5.81%
nested_array_dynamic_simple_inliner_zero -5 ✅ -5.81%
regression_7062_inliner_max -4 ✅ -5.97%
regression_7062_inliner_min -4 ✅ -5.97%
regression_7062_inliner_zero -4 ✅ -5.97%
multi_scalar_mul_inliner_max -1,758 ✅ -6.11%
multi_scalar_mul_inliner_zero -1,758 ✅ -6.11%
brillig_calls_array_inliner_min -16 ✅ -6.23%
nested_arrays_from_brillig_inliner_min -13 ✅ -6.34%
brillig_calls_array_inliner_zero -16 ✅ -7.34%

Full diff report 👇
Program Brillig opcodes (+/-) %
derive_inliner_zero 327 (+2) +0.62%
bench_2_to_17_inliner_min 697,705 (-1) -0.00%
fold_2_to_17_inliner_min 1,327,075 (-2) -0.00%
fold_2_to_17_inliner_zero 1,289,658 (-2) -0.00%
bench_2_to_17_inliner_zero 609,450 (-1) -0.00%
bench_2_to_17_inliner_max 570,235 (-1) -0.00%
fold_2_to_17_inliner_max 1,056,631 (-2) -0.00%
global_var_regression_entry_points_inliner_zero 135,307 (-4) -0.00%
u128_inliner_max 23,626 (-1) -0.00%
global_var_regression_entry_points_inliner_min 135,424 (-8) -0.01%
sha256_var_size_regression_inliner_max 16,611 (-1) -0.01%
brillig_cow_regression_inliner_zero 561,843 (-41) -0.01%
brillig_cow_regression_inliner_min 565,411 (-45) -0.01%
brillig_cow_regression_inliner_max 481,896 (-41) -0.01%
ecdsa_secp256k1_inliner_zero 7,662 (-1) -0.01%
ecdsa_secp256k1_inliner_max 6,587 (-1) -0.02%
sha256_var_witness_const_regression_inliner_max 6,368 (-1) -0.02%
u128_inliner_zero 39,474 (-7) -0.02%
conditional_regression_short_circuit_inliner_min 4,904 (-1) -0.02%
sha256_inliner_max 13,519 (-3) -0.02%
conditional_regression_short_circuit_inliner_zero 4,479 (-1) -0.02%
array_dynamic_nested_blackbox_input_inliner_zero 4,437 (-1) -0.02%
array_dynamic_nested_blackbox_input_inliner_max 4,207 (-1) -0.02%
u128_inliner_min 46,978 (-13) -0.03%
6_inliner_max 6,897 (-2) -0.03%
conditional_regression_short_circuit_inliner_max 6,974 (-3) -0.04%
fold_numeric_generic_poseidon_inliner_min 5,744 (-3) -0.05%
no_predicates_numeric_generic_poseidon_inliner_min 5,744 (-3) -0.05%
fold_numeric_generic_poseidon_inliner_zero 5,610 (-3) -0.05%
no_predicates_numeric_generic_poseidon_inliner_zero 5,610 (-3) -0.05%
fold_numeric_generic_poseidon_inliner_max 4,767 (-3) -0.06%
no_predicates_numeric_generic_poseidon_inliner_max 4,767 (-3) -0.06%
regression_struct_array_conditional_inliner_max 1,470 (-1) -0.07%
regression_struct_array_conditional_inliner_min 1,470 (-1) -0.07%
regression_struct_array_conditional_inliner_zero 1,470 (-1) -0.07%
uhashmap_inliner_min 182,898 (-129) -0.07%
strings_inliner_min 2,753 (-2) -0.07%
uhashmap_inliner_zero 163,256 (-128) -0.08%
uhashmap_inliner_max 128,464 (-127) -0.10%
hashmap_inliner_min 86,871 (-88) -0.10%
regression_6674_3_inliner_min 1,957 (-2) -0.10%
poseidon2_inliner_min 849 (-1) -0.12%
hashmap_inliner_zero 72,375 (-87) -0.12%
conditional_1_inliner_min 5,924 (-8) -0.13%
poseidon2_inliner_zero 722 (-1) -0.14%
regression_6674_3_inliner_max 1,395 (-2) -0.14%
regression_6674_3_inliner_zero 1,395 (-2) -0.14%
to_bytes_integration_inliner_max 2,068 (-3) -0.14%
to_bytes_integration_inliner_zero 2,068 (-3) -0.14%
poseidon2_inliner_max 676 (-1) -0.15%
6_array_inliner_min 2,557 (-4) -0.16%
nested_array_in_slice_inliner_max 1,263 (-2) -0.16%
6_array_inliner_zero 2,487 (-4) -0.16%
conditional_1_inliner_zero 5,471 (-9) -0.16%
merkle_insert_inliner_zero 3,542 (-6) -0.17%
brillig_block_parameter_liveness_inliner_max 2,909 (-5) -0.17%
brillig_block_parameter_liveness_inliner_min 2,909 (-5) -0.17%
brillig_block_parameter_liveness_inliner_zero 2,909 (-5) -0.17%
merkle_insert_inliner_max 3,407 (-6) -0.18%
conditional_1_inliner_max 5,076 (-9) -0.18%
slice_regex_inliner_min 8,411 (-15) -0.18%
merkle_insert_inliner_min 3,330 (-6) -0.18%
hashmap_inliner_max 48,203 (-87) -0.18%
7_function_inliner_max 2,215 (-4) -0.18%
global_consts_inliner_max 1,620 (-3) -0.18%
global_consts_inliner_zero 1,620 (-3) -0.18%
array_if_cond_simple_inliner_max 539 (-1) -0.19%
array_if_cond_simple_inliner_min 539 (-1) -0.19%
array_if_cond_simple_inliner_zero 539 (-1) -0.19%
pedersen_hash_inliner_min 532 (-1) -0.19%
to_be_bytes_inliner_min 2,122 (-4) -0.19%
to_be_bytes_inliner_max 2,092 (-4) -0.19%
to_be_bytes_inliner_zero 2,092 (-4) -0.19%
reference_only_used_as_alias_inliner_min 494 (-1) -0.20%
regression_inliner_min 2,962 (-6) -0.20%
pedersen_hash_inliner_max 468 (-1) -0.21%
pedersen_hash_inliner_zero 468 (-1) -0.21%
slice_coercion_inliner_min 464 (-1) -0.22%
encrypted_log_regression_inliner_min 901 (-2) -0.22%
regression_11294_inliner_min 1,798 (-4) -0.22%
encrypted_log_regression_inliner_max 884 (-2) -0.23%
encrypted_log_regression_inliner_zero 884 (-2) -0.23%
regression_inliner_zero 2,636 (-6) -0.23%
higher_order_functions_inliner_min 2,185 (-5) -0.23%
regression_inliner_max 2,594 (-6) -0.23%
higher_order_functions_inliner_zero 1,297 (-3) -0.23%
to_bytes_integration_inliner_min 4,239 (-10) -0.24%
poseidon_bn254_hash_inliner_min 188,760 (-474) -0.25%
poseidon_bn254_hash_width_3_inliner_min 188,760 (-474) -0.25%
nested_array_in_slice_inliner_min 1,580 (-4) -0.25%
nested_array_in_slice_inliner_zero 1,580 (-4) -0.25%
poseidon_bn254_hash_inliner_zero 183,245 (-474) -0.26%
poseidon_bn254_hash_width_3_inliner_zero 183,245 (-474) -0.26%
6_array_inliner_max 1,533 (-4) -0.26%
poseidonsponge_x5_254_inliner_min 210,731 (-599) -0.28%
regression_5252_inliner_min 1,053,152 (-3,000) -0.28%
poseidonsponge_x5_254_inliner_zero 206,655 (-600) -0.29%
regression_5252_inliner_zero 1,030,257 (-3,003) -0.29%
array_sort_inliner_min 668 (-2) -0.30%
poseidon_bn254_hash_inliner_max 152,728 (-474) -0.31%
poseidon_bn254_hash_width_3_inliner_max 152,728 (-474) -0.31%
regression_11294_inliner_max 1,235 (-4) -0.32%
regression_11294_inliner_zero 1,235 (-4) -0.32%
simple_shield_inliner_max 2,459 (-8) -0.32%
simple_shield_inliner_zero 2,443 (-8) -0.33%
higher_order_functions_inliner_max 898 (-3) -0.33%
regression_capacity_tracker_inliner_max 898 (-3) -0.33%
regression_capacity_tracker_inliner_min 898 (-3) -0.33%
regression_capacity_tracker_inliner_zero 898 (-3) -0.33%
struct_inputs_inliner_zero 593 (-2) -0.34%
poseidonsponge_x5_254_inliner_max 173,048 (-600) -0.35%
regression_5252_inliner_max 861,825 (-3,003) -0.35%
array_sort_inliner_max 513 (-2) -0.39%
brillig_cow_assign_inliner_max 513 (-2) -0.39%
brillig_cow_assign_inliner_min 513 (-2) -0.39%
array_sort_inliner_zero 513 (-2) -0.39%
brillig_cow_assign_inliner_zero 513 (-2) -0.39%
reference_counts_inliner_zero 1,535 (-6) -0.39%
array_dynamic_inliner_min 503 (-2) -0.40%
array_dynamic_inliner_max 488 (-2) -0.41%
array_dynamic_inliner_zero 488 (-2) -0.41%
reference_counts_inliner_min 1,647 (-7) -0.42%
7_function_inliner_zero 2,403 (-11) -0.46%
7_function_inliner_min 2,578 (-12) -0.46%
slice_regex_inliner_zero 3,944 (-19) -0.48%
array_len_inliner_min 207 (-1) -0.48%
references_inliner_min 612 (-3) -0.49%
databus_composite_calldata_inliner_max 600 (-3) -0.50%
databus_composite_calldata_inliner_min 600 (-3) -0.50%
databus_composite_calldata_inliner_zero 600 (-3) -0.50%
array_len_inliner_max 190 (-1) -0.52%
array_len_inliner_zero 190 (-1) -0.52%
struct_inputs_inliner_max 563 (-3) -0.53%
regression_bignum_inliner_min 538 (-3) -0.55%
brillig_pedersen_inliner_max 701 (-4) -0.57%
pedersen_check_inliner_max 701 (-4) -0.57%
nested_array_dynamic_inliner_min 3,491 (-20) -0.57%
nested_array_dynamic_inliner_zero 3,491 (-20) -0.57%
simple_shield_inliner_min 2,494 (-15) -0.60%
regression_bignum_inliner_max 487 (-3) -0.61%
regression_bignum_inliner_zero 487 (-3) -0.61%
conditional_2_inliner_min 155 (-1) -0.64%
nested_array_dynamic_inliner_max 3,284 (-22) -0.67%
brillig_pedersen_inliner_zero 729 (-5) -0.68%
pedersen_check_inliner_zero 729 (-5) -0.68%
brillig_rc_regression_6123_inliner_max 288 (-2) -0.69%
brillig_rc_regression_6123_inliner_zero 288 (-2) -0.69%
struct_inputs_inliner_min 646 (-5) -0.77%
conditional_2_inliner_max 120 (-1) -0.83%
conditional_2_inliner_zero 120 (-1) -0.83%
array_to_slice_inliner_zero 1,781 (-15) -0.84%
fold_distinct_return_inliner_min 117 (-1) -0.85%
pedersen_commitment_inliner_max 226 (-2) -0.88%
pedersen_commitment_inliner_zero 226 (-2) -0.88%
array_to_slice_inliner_max 1,522 (-15) -0.98%
array_to_slice_inliner_min 2,040 (-21) -1.02%
regression_mem_op_predicate_inliner_max 97 (-1) -1.02%
regression_mem_op_predicate_inliner_min 97 (-1) -1.02%
regression_mem_op_predicate_inliner_zero 97 (-1) -1.02%
brillig_pedersen_inliner_min 895 (-10) -1.10%
pedersen_check_inliner_min 895 (-10) -1.10%
sha2_byte_inliner_min 88,114 (-1,041) -1.17%
conditional_regression_661_inliner_min 164 (-2) -1.20%
slices_inliner_min 3,895 (-52) -1.32%
conditional_regression_661_inliner_zero 149 (-2) -1.32%
slice_dynamic_index_inliner_min 4,530 (-61) -1.33%
slice_dynamic_index_inliner_max 4,299 (-61) -1.40%
slice_dynamic_index_inliner_zero 4,299 (-61) -1.40%
sha2_byte_inliner_zero 71,178 (-1,041) -1.44%
pedersen_commitment_inliner_min 200 (-3) -1.48%
slices_inliner_zero 3,329 (-50) -1.48%
fold_complex_outputs_inliner_max 693 (-11) -1.56%
slices_inliner_max 3,074 (-50) -1.60%
type_aliases_inliner_max 61 (-1) -1.61%
type_aliases_inliner_min 61 (-1) -1.61%
type_aliases_inliner_zero 61 (-1) -1.61%
conditional_regression_661_inliner_max 120 (-2) -1.64%
regression_4088_inliner_min 59 (-1) -1.67%
nested_dyn_array_regression_5782_inliner_max 170 (-3) -1.73%
nested_dyn_array_regression_5782_inliner_min 170 (-3) -1.73%
nested_dyn_array_regression_5782_inliner_zero 170 (-3) -1.73%
simple_array_param_inliner_max 55 (-1) -1.79%
simple_array_param_inliner_min 55 (-1) -1.79%
simple_array_param_inliner_zero 55 (-1) -1.79%
generics_inliner_min 315 (-6) -1.87%
fold_complex_outputs_inliner_zero 885 (-17) -1.88%
conditional_regression_421_inliner_max 92 (-2) -2.13%
conditional_regression_421_inliner_min 92 (-2) -2.13%
conditional_regression_421_inliner_zero 92 (-2) -2.13%
import_inliner_min 137 (-3) -2.14%
brillig_calls_conditionals_inliner_min 180 (-4) -2.17%
brillig_calls_conditionals_inliner_zero 180 (-4) -2.17%
struct_array_inputs_inliner_max 86 (-2) -2.27%
struct_array_inputs_inliner_min 86 (-2) -2.27%
struct_array_inputs_inliner_zero 86 (-2) -2.27%
sha2_byte_inliner_max 43,677 (-1,041) -2.33%
trait_impl_base_type_inliner_min 247 (-6) -2.37%
brillig_calls_conditionals_inliner_max 112 (-3) -2.61%
inline_decompose_hint_brillig_call_inliner_min 253 (-7) -2.69%
generics_inliner_zero 216 (-6) -2.70%
brillig_arrays_inliner_max 138 (-4) -2.82%
brillig_arrays_inliner_zero 138 (-4) -2.82%
main_bool_arg_inliner_max 68 (-2) -2.86%
main_bool_arg_inliner_min 68 (-2) -2.86%
main_bool_arg_inliner_zero 68 (-2) -2.86%
if_else_chain_inliner_max 100 (-3) -2.91%
if_else_chain_inliner_min 100 (-3) -2.91%
if_else_chain_inliner_zero 100 (-3) -2.91%
brillig_arrays_inliner_min 166 (-5) -2.92%
fold_complex_outputs_inliner_min 955 (-30) -3.05%
embedded_curve_ops_inliner_min 609 (-20) -3.18%
simple_radix_inliner_min 87 (-3) -3.33%
embedded_curve_ops_inliner_max 223 (-8) -3.46%
global_var_regression_simple_inliner_max 110 (-4) -3.51%
global_var_regression_simple_inliner_zero 110 (-4) -3.51%
brillig_constant_reference_regression_inliner_max 80 (-3) -3.61%
brillig_constant_reference_regression_inliner_min 80 (-3) -3.61%
brillig_constant_reference_regression_inliner_zero 80 (-3) -3.61%
multi_scalar_mul_inliner_min 45,562 (-1,758) -3.72%
embedded_curve_ops_inliner_zero 387 (-15) -3.73%
global_var_regression_simple_inliner_min 202 (-8) -3.81%
integer_array_indexing_inliner_max 74 (-3) -3.90%
integer_array_indexing_inliner_min 74 (-3) -3.90%
integer_array_indexing_inliner_zero 74 (-3) -3.90%
nested_arrays_from_brillig_inliner_max 96 (-4) -4.00%
nested_arrays_from_brillig_inliner_zero 96 (-4) -4.00%
simple_radix_inliner_max 70 (-3) -4.11%
simple_radix_inliner_zero 70 (-3) -4.11%
brillig_calls_array_inliner_max 93 (-4) -4.12%
simple_2d_array_inliner_max 121 (-6) -4.72%
simple_2d_array_inliner_zero 121 (-6) -4.72%
simple_2d_array_inliner_min 161 (-8) -4.73%
nested_array_dynamic_simple_inliner_max 81 (-5) -5.81%
nested_array_dynamic_simple_inliner_min 81 (-5) -5.81%
nested_array_dynamic_simple_inliner_zero 81 (-5) -5.81%
regression_7062_inliner_max 63 (-4) -5.97%
regression_7062_inliner_min 63 (-4) -5.97%
regression_7062_inliner_zero 63 (-4) -5.97%
multi_scalar_mul_inliner_max 27,017 (-1,758) -6.11%
multi_scalar_mul_inliner_zero 27,017 (-1,758) -6.11%
brillig_calls_array_inliner_min 241 (-16) -6.23%
nested_arrays_from_brillig_inliner_min 192 (-13) -6.34%
brillig_calls_array_inliner_zero 202 (-16) -7.34%

@vezenovm vezenovm marked this pull request as ready for review February 25, 2025 22:39
@vezenovm vezenovm requested review from sirasistant and a team February 25, 2025 22:39
@vezenovm vezenovm marked this pull request as draft February 25, 2025 22:52
@vezenovm vezenovm marked this pull request as ready for review February 26, 2025 00:45
@vezenovm vezenovm added this pull request to the merge queue Feb 26, 2025
Merged via the queue into master with commit b8b0e73 Feb 26, 2025
102 checks passed
@vezenovm vezenovm deleted the mv/opt-brillig-arr-offset branch February 26, 2025 20:51
AztecBot pushed a commit to AztecProtocol/aztec-packages that referenced this pull request Feb 26, 2025
chore: revert bump of base64ct to `v1.6.0` after `v1.7.0` yanked (noir-lang/noir#7541)
feat(performance): Avoid extra Brillig array offsetting for constant indices  (noir-lang/noir#7522)
feat: test error spans and messages (noir-lang/noir#7526)
chore: bump wasm-bindgen (noir-lang/noir#7535)
chore: parallelize `test_transform_program_is_idempotent` (noir-lang/noir#7539)
chore(cli): Use `noir_artifact_cli::fs` to read artifacts (noir-lang/noir#7391)
fix(experimental): Replace most remaining match panics with errors (noir-lang/noir#7536)
chore: bump external pinned commits (noir-lang/noir#7537)
TomAFrench added a commit to AztecProtocol/aztec-packages that referenced this pull request Mar 4, 2025
Automated pull of development from the
[noir](https://github.com/noir-lang/noir) programming language, a
dependency of Aztec.
BEGIN_COMMIT_OVERRIDE
chore!: bump rust edition to 2024
(noir-lang/noir#7533)
chore: revert bump of base64ct to `v1.6.0` after `v1.7.0` yanked
(noir-lang/noir#7541)
feat(performance): Avoid extra Brillig array offsetting for constant
indices (noir-lang/noir#7522)
feat: test error spans and messages
(noir-lang/noir#7526)
chore: bump wasm-bindgen (noir-lang/noir#7535)
chore: parallelize `test_transform_program_is_idempotent`
(noir-lang/noir#7539)
chore(cli): Use `noir_artifact_cli::fs` to read artifacts
(noir-lang/noir#7391)
fix(experimental): Replace most remaining match panics with errors
(noir-lang/noir#7536)
chore: bump external pinned commits
(noir-lang/noir#7537)
END_COMMIT_OVERRIDE

---------

Co-authored-by: Tom French <tom@tomfren.ch>
Co-authored-by: guipublic <47281315+guipublic@users.noreply.github.com>
Co-authored-by: Tom French <15848336+TomAFrench@users.noreply.github.com>
Co-authored-by: guipublic <guipublic@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Avoid code gen of unnecessary Brillig array offsetting
2 participants