-
Notifications
You must be signed in to change notification settings - Fork 204
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
chore: Add Instruction::MakeArray
to SSA
#6071
Conversation
Seems like |
Disabling the normalization of valueids shows that we're deleting instructions in the DIE pass which shouldn't be removed. For example the load instruction when returning This is happening because somehow the return value of this function (the loaded value) becomes a |
I've merged in master so that this branch is up to date so will be handing this PR back now. |
Changes to Brillig bytecode sizes
🧾 Summary (10% most significant diffs)
Full diff report 👇
|
Changes to circuit sizes
🧾 Summary (10% most significant diffs)
Full diff report 👇
|
This is passing all tests now and showing a surprisingly large improvement in the hashmap test but also large regressions in brillig bytecode sizes. |
This is likely due to the fact that constant arrays are no long considered as "constants" by |
@TomAFrench hmm I tried updating |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Going to hold off on merging this for a bit due to the brillig size regressions |
Yeah would be good to avoid this regression. |
yes, I think that's the issue. For example, in
Previously, these immediate slices would have been picked up by constant_allocation and hoisted to just 1 single initialization. Now, since array constant initialization has been promoted to a instruction, we actually need to do at the ssa level what constant allocation was doing outside SSA. So in order to avoid any regression we need to identify payloads to make_array that are equal to each other and hoist the make_array to the common dominator of all the arrays that are equal. Also, if all the values are immediates constant_allocation was hoisting them out of loops to avoid extra runtime cost. But that won't affect bytecode size |
3f2e4ef
to
9ca0810
Compare
Co-authored-by: Maxim Vezenov <[email protected]>
Co-authored-by: Maxim Vezenov <[email protected]>
…r#6534) fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532) chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071) feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538) chore: convert some tests to use SSA parser (noir-lang/noir#6543) chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545) chore(test): More descriptive labels in test matrix (noir-lang/noir#6542) chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541) fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434) fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514) fix: disallow `#[test]` on associated functions (noir-lang/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
…ir#6523) chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534) fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532) chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071) feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538) chore: convert some tests to use SSA parser (noir-lang/noir#6543) chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545) chore(test): More descriptive labels in test matrix (noir-lang/noir#6542) chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541) fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434) fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514) fix: disallow `#[test]` on associated functions (noir-lang/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534) fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532) chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071) feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538) chore: convert some tests to use SSA parser (noir-lang/noir#6543) chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545) chore(test): More descriptive labels in test matrix (noir-lang/noir#6542) chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541) fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434) fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514) fix: disallow `#[test]` on associated functions (noir-lang/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
* master: (65 commits) chore: remove some `_else_condition` tech debt (#6522) chore: revert #6375 (#6552) feat: simplify constant MSM calls in SSA (#6547) chore(test): Remove duplicate brillig tests (#6523) chore: restructure `noirc_evaluator` crate (#6534) fix: take blackbox function outputs into account when merging expressions (#6532) chore: Add `Instruction::MakeArray` to SSA (#6071) feat(profiler): Reduce memory in Brillig execution flamegraph (#6538) chore: convert some tests to use SSA parser (#6543) chore(ci): bump mac github runner image to `macos-14` (#6545) chore(test): More descriptive labels in test matrix (#6542) chore: Remove unused methods from implicit numeric generics (#6541) fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (#6434) fix: allow range checks to be performed within the comptime intepreter (#6514) fix: disallow `#[test]` on associated functions (#6449) chore(ssa): Skip array_set pass for Brillig functions (#6513) chore: Reverse ssa parser diff order (#6511) chore: Parse negatives in SSA parser (#6510) feat: avoid unnecessary ssa passes while loop unrolling (#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (#6508) ...
feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505) fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558) chore: remove some `_else_condition` tech debt (noir-lang/noir#6522) chore: revert #6375 (noir-lang/noir#6552) feat: simplify constant MSM calls in SSA (noir-lang/noir#6547) chore(test): Remove duplicate brillig tests (noir-lang/noir#6523) chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534) fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532) chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071) feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538) chore: convert some tests to use SSA parser (noir-lang/noir#6543) chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545) chore(test): More descriptive labels in test matrix (noir-lang/noir#6542) chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541) fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434) fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514) fix: disallow `#[test]` on associated functions (noir-lang/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503) chore: Release Noir(0.39.0) (noir-lang/noir#6484) feat: Sync from aztec-packages (noir-lang/noir#6557) feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505) fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558) chore: remove some `_else_condition` tech debt (noir-lang/noir#6522) chore: revert #6375 (noir-lang/noir#6552) feat: simplify constant MSM calls in SSA (noir-lang/noir#6547) chore(test): Remove duplicate brillig tests (noir-lang/noir#6523) chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534) fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532) chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071) feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538) chore: convert some tests to use SSA parser (noir-lang/noir#6543) chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545) chore(test): More descriptive labels in test matrix (noir-lang/noir#6542) chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541) fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434) fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514) fix: disallow `#[test]` on associated functions (noir-lang/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503) chore: Release Noir(0.39.0) (noir-lang/noir#6484) feat: Sync from aztec-packages (noir-lang/noir#6557) feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505) fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558) chore: remove some `_else_condition` tech debt (noir-lang/noir#6522) chore: revert #6375 (noir-lang/noir#6552) feat: simplify constant MSM calls in SSA (noir-lang/noir#6547) chore(test): Remove duplicate brillig tests (noir-lang/noir#6523) chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534) fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532) chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071) feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538) chore: convert some tests to use SSA parser (noir-lang/noir#6543) chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545) chore(test): More descriptive labels in test matrix (noir-lang/noir#6542) chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541) fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434) fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514) fix: disallow `#[test]` on associated functions (noir-lang/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
chore: remove separate acvm versioning (noir-lang/noir#6561) chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503) chore: Release Noir(0.39.0) (noir-lang/noir#6484) feat: Sync from aztec-packages (noir-lang/noir#6557) feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505) fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558) chore: remove some `_else_condition` tech debt (noir-lang/noir#6522) chore: revert #6375 (noir-lang/noir#6552) feat: simplify constant MSM calls in SSA (noir-lang/noir#6547) chore(test): Remove duplicate brillig tests (noir-lang/noir#6523) chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534) fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532) chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071) feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538) chore: convert some tests to use SSA parser (noir-lang/noir#6543) chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545) chore(test): More descriptive labels in test matrix (noir-lang/noir#6542) chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541) fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434) fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514) fix: disallow `#[test]` on associated functions (noir-lang/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
chore: remove separate acvm versioning (noir-lang/noir#6561) chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503) chore: Release Noir(0.39.0) (noir-lang/noir#6484) feat: Sync from aztec-packages (noir-lang/noir#6557) feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505) fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558) chore: remove some `_else_condition` tech debt (noir-lang/noir#6522) chore: revert #6375 (noir-lang/noir#6552) feat: simplify constant MSM calls in SSA (noir-lang/noir#6547) chore(test): Remove duplicate brillig tests (noir-lang/noir#6523) chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534) fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532) chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071) feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538) chore: convert some tests to use SSA parser (noir-lang/noir#6543) chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545) chore(test): More descriptive labels in test matrix (noir-lang/noir#6542) chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541) fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434) fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514) fix: disallow `#[test]` on associated functions (noir-lang/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
chore: Added test showcasing performance regression (noir-lang/noir#6566) chore: embed package name in logs (noir-lang/noir#6564) chore: remove separate acvm versioning (noir-lang/noir#6561) chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503) chore: Release Noir(0.39.0) (noir-lang/noir#6484) feat: Sync from aztec-packages (noir-lang/noir#6557) feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505) fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558) chore: remove some `_else_condition` tech debt (noir-lang/noir#6522) chore: revert #6375 (noir-lang/noir#6552) feat: simplify constant MSM calls in SSA (noir-lang/noir#6547) chore(test): Remove duplicate brillig tests (noir-lang/noir#6523) chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534) fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532) chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071) feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538) chore: convert some tests to use SSA parser (noir-lang/noir#6543) chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545) chore(test): More descriptive labels in test matrix (noir-lang/noir#6542) chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541) fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434) fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514) fix: disallow `#[test]` on associated functions (noir-lang/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
chore: Added test showcasing performance regression (noir-lang/noir#6566) chore: embed package name in logs (noir-lang/noir#6564) chore: remove separate acvm versioning (noir-lang/noir#6561) chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503) chore: Release Noir(0.39.0) (noir-lang/noir#6484) feat: Sync from aztec-packages (noir-lang/noir#6557) feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505) fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558) chore: remove some `_else_condition` tech debt (noir-lang/noir#6522) chore: revert #6375 (noir-lang/noir#6552) feat: simplify constant MSM calls in SSA (noir-lang/noir#6547) chore(test): Remove duplicate brillig tests (noir-lang/noir#6523) chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534) fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532) chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071) feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538) chore: convert some tests to use SSA parser (noir-lang/noir#6543) chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545) chore(test): More descriptive labels in test matrix (noir-lang/noir#6542) chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541) fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434) fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514) fix: disallow `#[test]` on associated functions (noir-lang/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400)
Automated pull of development from the [noir](https://github.com/noir-lang/noir) programming language, a dependency of Aztec. BEGIN_COMMIT_OVERRIDE feat: trait aliases (noir-lang/noir#6431) chore: Added test showcasing performance regression (noir-lang/noir#6566) chore: embed package name in logs (noir-lang/noir#6564) chore: remove separate acvm versioning (noir-lang/noir#6561) chore: switch to 1.0.0-beta versioning (noir-lang/noir#6503) chore: Release Noir(0.39.0) (noir-lang/noir#6484) feat: Sync from aztec-packages (noir-lang/noir#6557) feat(ssa): Unroll small loops in brillig (noir-lang/noir#6505) fix: Do a shallow follow_bindings before unification (noir-lang/noir#6558) chore: remove some `_else_condition` tech debt (noir-lang/noir#6522) chore: revert #6375 (noir-lang/noir#6552) feat: simplify constant MSM calls in SSA (noir-lang/noir#6547) chore(test): Remove duplicate brillig tests (noir-lang/noir#6523) chore: restructure `noirc_evaluator` crate (noir-lang/noir#6534) fix: take blackbox function outputs into account when merging expressions (noir-lang/noir#6532) chore: Add `Instruction::MakeArray` to SSA (noir-lang/noir#6071) feat(profiler): Reduce memory in Brillig execution flamegraph (noir-lang/noir#6538) chore: convert some tests to use SSA parser (noir-lang/noir#6543) chore(ci): bump mac github runner image to `macos-14` (noir-lang/noir#6545) chore(test): More descriptive labels in test matrix (noir-lang/noir#6542) chore: Remove unused methods from implicit numeric generics (noir-lang/noir#6541) fix: Fix poor handling of aliased references in flattening pass causing some values to be zeroed (noir-lang/noir#6434) fix: allow range checks to be performed within the comptime intepreter (noir-lang/noir#6514) fix: disallow `#[test]` on associated functions (noir-lang/noir#6449) chore(ssa): Skip array_set pass for Brillig functions (noir-lang/noir#6513) chore: Reverse ssa parser diff order (noir-lang/noir#6511) chore: Parse negatives in SSA parser (noir-lang/noir#6510) feat: avoid unnecessary ssa passes while loop unrolling (noir-lang/noir#6509) fix(tests): Use a file lock as well as a mutex to isolate tests cases (noir-lang/noir#6508) fix: set local_module before elaborating each trait (noir-lang/noir#6506) fix: parse Slice type in SSa (noir-lang/noir#6507) fix: perform arithmetic simplification through `CheckedCast` (noir-lang/noir#6502) feat: SSA parser (noir-lang/noir#6489) chore(test): Run test matrix on test_programs (noir-lang/noir#6429) chore(ci): fix cargo deny (noir-lang/noir#6501) feat: Deduplicate instructions across blocks (noir-lang/noir#6499) chore: move tests for arithmetic generics closer to the code (noir-lang/noir#6497) fix(docs): Fix broken links in oracles doc (noir-lang/noir#6488) fix: Treat all parameters as possible aliases of each other (noir-lang/noir#6477) chore: bump rust dependencies (noir-lang/noir#6482) feat: use a full `BlackBoxFunctionSolver` implementation when execution brillig during acirgen (noir-lang/noir#6481) chore(docs): Update How to Oracles (noir-lang/noir#5675) chore: Release Noir(0.38.0) (noir-lang/noir#6422) fix(ssa): Change array_set to not mutate slices coming from function inputs (noir-lang/noir#6463) chore: update example to show how to split public inputs in bash (noir-lang/noir#6472) fix: Discard optimisation that would change execution ordering or that is related to call outputs (noir-lang/noir#6461) chore: proptest for `canonicalize` on infix type expressions (noir-lang/noir#6269) fix: let formatter respect newlines between comments (noir-lang/noir#6458) fix: check infix expression is valid in program input (noir-lang/noir#6450) fix: don't crash on AsTraitPath with empty path (noir-lang/noir#6454) fix(tests): Prevent EOF error while running test programs (noir-lang/noir#6455) fix(sea): mem2reg to treat block input references as alias (noir-lang/noir#6452) chore: revamp attributes (noir-lang/noir#6424) feat!: Always Check Arithmetic Generics at Monomorphization (noir-lang/noir#6329) chore: split path and import lookups (noir-lang/noir#6430) fix(ssa): Resolve value IDs in terminator before comparing to array (noir-lang/noir#6448) fix: right shift is not a regular division (noir-lang/noir#6400) END_COMMIT_OVERRIDE --------- Co-authored-by: sirasistant <[email protected]> Co-authored-by: Tom French <[email protected]> Co-authored-by: TomAFrench <[email protected]>
Description
Problem*
Resolves #1733
Summary*
Adds a
MakeArray
instruction to explicitly create a new array. Now no other ValueIds can contain other ValueIds which simplifies a couple passes.Additional Context
Still working on getting this working in brillig.
Documentation*
Check one:
PR Checklist*
cargo fmt
on default settings.