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

Some operands reordering in serialization #10136

Closed
jeanmon opened this issue Nov 22, 2024 · 2 comments · Fixed by #10182 or #10181
Closed

Some operands reordering in serialization #10136

jeanmon opened this issue Nov 22, 2024 · 2 comments · Fixed by #10182 or #10181
Assignees
Labels
C-avm Component: AVM related tickets (aka public VM)

Comments

@jeanmon
Copy link
Contributor

jeanmon commented Nov 22, 2024

After some analysis on the addressing resolution and bytecode decomposition (rather gluing), we expect relations to be simpler if we systematically put the address operands just after indirect byte and any immediate values at the end.

This entails the following modifications:

  • CAST_8 and CAST_16: move tag at the end

  • GETENVVAR: Move immediate (env variable value UINT8) to the end

  • JUMPI: move jumpDst (UINT32) to the end

  • SET family opcodes: move address just after the INIDRECT, then the order is: INDIRECT8, ADDRESS, TAG, immediate

  • GETCONTRACTINSTANCE: move enum (UINT8) after the addresses

  • DEBUGLOG: move message_size at the end (deserialisation layout sizes does not change, but the order of arguments in the serialisation do)

@jeanmon jeanmon added the C-avm Component: AVM related tickets (aka public VM) label Nov 22, 2024
@jeanmon jeanmon added this to A3 Nov 22, 2024
@github-project-automation github-project-automation bot moved this to Todo in A3 Nov 22, 2024
@fcarreiro
Copy link
Contributor

fcarreiro commented Nov 22, 2024

I don't think TAG needs to be moved, because it's not one of the operands, it's separate (just like ind) and doesn't ever need resolution. We only need to move immediates I think. (for addressing)

@jeanmon
Copy link
Contributor Author

jeanmon commented Nov 22, 2024

@fcarreiro For SET, the immediate is before the address which are both after TAG. We have to move the address anyway so I would directly place it before the tag because I expect some simplified equations in byte code decomposition if the operands are placed similarly to other opcodes. It is clearly not a blocker but would be nice if work is moderate.

For CAST, the same reasoning apply. What I expect by putting addresses systematically before the tag, is that equations like:

O1 = selectors_1 * (B2 + B3 * 2^8)
O2 = selectors_2 * (B4 + B5 * 2^8)

I expect to have more opcodes falling into selectors_1 and selectors_2. True for TAG you need a specific equation anyway and the suggested changes will not help that, but I think it will help with the other operands

@jeanmon jeanmon self-assigned this Nov 22, 2024
@jeanmon jeanmon moved this from Todo to In Progress in A3 Nov 25, 2024
jeanmon added a commit that referenced this issue Nov 25, 2024
@github-project-automation github-project-automation bot moved this from In Progress to Done in A3 Nov 25, 2024
critesjosh pushed a commit that referenced this issue Nov 26, 2024
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.65.0</summary>

##
[0.65.0](aztec-package-v0.64.0...aztec-package-v0.65.0)
(2024-11-26)


### Features

* **avm:** New public inputs witgen
([#10179](#10179))
([ac8f13e](ac8f13e))
</details>

<details><summary>barretenberg.js: 0.65.0</summary>

##
[0.65.0](barretenberg.js-v0.64.0...barretenberg.js-v0.65.0)
(2024-11-26)


### Bug Fixes

* **bb.js:** Don't minify bb.js - webpack config
([#10170](#10170))
([6e7fae7](6e7fae7))
</details>

<details><summary>aztec-packages: 0.65.0</summary>

##
[0.65.0](aztec-packages-v0.64.0...aztec-packages-v0.65.0)
(2024-11-26)


### ⚠ BREAKING CHANGES

* remove SharedImmutable
([#10183](#10183))
* rename sharedimmutable methods
([#10164](#10164))

### Features

* **avm:** New public inputs witgen
([#10179](#10179))
([ac8f13e](ac8f13e))
* Blobs.
([#9302](#9302))
([03b7e0e](03b7e0e))
* One liner for nodes to join rough-rhino
([#10168](#10168))
([3a425e9](3a425e9))
* Origin tags implemented in biggroup
([#10002](#10002))
([c8696b1](c8696b1))
* Remove SharedImmutable
([#10183](#10183))
([a9f3b5f](a9f3b5f))
* Rename sharedimmutable methods
([#10164](#10164))
([ef7cd86](ef7cd86))
* UltraRollupRecursiveFlavor
([#10088](#10088))
([4418ef2](4418ef2))


### Bug Fixes

* Aztec-nargo curl in the earthfile also
([#10199](#10199))
([985a678](985a678))
* **bb.js:** Don't minify bb.js - webpack config
([#10170](#10170))
([6e7fae7](6e7fae7))
* Docker compose aztec up fix
([#10197](#10197))
([d7ae959](d7ae959))
* Increase test timeouts
([#10205](#10205))
([195aa3d](195aa3d))
* Release l1-contracts
([#10095](#10095))
([29f0d7a](29f0d7a))
* Revert "feat: blobs.
([#9302](#9302))"
([#10187](#10187))
([a415f65](a415f65))


### Miscellaneous

* Added ref to env variables
([#10193](#10193))
([b51fc43](b51fc43))
* **avm:** Operands reordering
([#10182](#10182))
([69bdf4f](69bdf4f)),
closes
[#10136](#10136)
* Fix devbox
([#10201](#10201))
([323eaee](323eaee))
* Misc cleanup
([#10194](#10194))
([dd01417](dd01417))
* Reinstate docs-preview, fix doc publish
([#10213](#10213))
([ed9a0e3](ed9a0e3))
* Replace relative paths to noir-protocol-circuits
([1650446](1650446))
</details>

<details><summary>barretenberg: 0.65.0</summary>

##
[0.65.0](barretenberg-v0.64.0...barretenberg-v0.65.0)
(2024-11-26)


### Features

* **avm:** New public inputs witgen
([#10179](#10179))
([ac8f13e](ac8f13e))
* Origin tags implemented in biggroup
([#10002](#10002))
([c8696b1](c8696b1))
* UltraRollupRecursiveFlavor
([#10088](#10088))
([4418ef2](4418ef2))


### Miscellaneous

* **avm:** Operands reordering
([#10182](#10182))
([69bdf4f](69bdf4f)),
closes
[#10136](#10136)
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
AztecBot added a commit to AztecProtocol/barretenberg that referenced this issue Nov 27, 2024
🤖 I have created a release *beep* *boop*
---


<details><summary>aztec-package: 0.65.0</summary>

##
[0.65.0](AztecProtocol/aztec-packages@aztec-package-v0.64.0...aztec-package-v0.65.0)
(2024-11-26)


### Features

* **avm:** New public inputs witgen
([#10179](AztecProtocol/aztec-packages#10179))
([ac8f13e](AztecProtocol/aztec-packages@ac8f13e))
</details>

<details><summary>barretenberg.js: 0.65.0</summary>

##
[0.65.0](AztecProtocol/aztec-packages@barretenberg.js-v0.64.0...barretenberg.js-v0.65.0)
(2024-11-26)


### Bug Fixes

* **bb.js:** Don't minify bb.js - webpack config
([#10170](AztecProtocol/aztec-packages#10170))
([6e7fae7](AztecProtocol/aztec-packages@6e7fae7))
</details>

<details><summary>aztec-packages: 0.65.0</summary>

##
[0.65.0](AztecProtocol/aztec-packages@aztec-packages-v0.64.0...aztec-packages-v0.65.0)
(2024-11-26)


### ⚠ BREAKING CHANGES

* remove SharedImmutable
([#10183](AztecProtocol/aztec-packages#10183))
* rename sharedimmutable methods
([#10164](AztecProtocol/aztec-packages#10164))

### Features

* **avm:** New public inputs witgen
([#10179](AztecProtocol/aztec-packages#10179))
([ac8f13e](AztecProtocol/aztec-packages@ac8f13e))
* Blobs.
([#9302](AztecProtocol/aztec-packages#9302))
([03b7e0e](AztecProtocol/aztec-packages@03b7e0e))
* One liner for nodes to join rough-rhino
([#10168](AztecProtocol/aztec-packages#10168))
([3a425e9](AztecProtocol/aztec-packages@3a425e9))
* Origin tags implemented in biggroup
([#10002](AztecProtocol/aztec-packages#10002))
([c8696b1](AztecProtocol/aztec-packages@c8696b1))
* Remove SharedImmutable
([#10183](AztecProtocol/aztec-packages#10183))
([a9f3b5f](AztecProtocol/aztec-packages@a9f3b5f))
* Rename sharedimmutable methods
([#10164](AztecProtocol/aztec-packages#10164))
([ef7cd86](AztecProtocol/aztec-packages@ef7cd86))
* UltraRollupRecursiveFlavor
([#10088](AztecProtocol/aztec-packages#10088))
([4418ef2](AztecProtocol/aztec-packages@4418ef2))


### Bug Fixes

* Aztec-nargo curl in the earthfile also
([#10199](AztecProtocol/aztec-packages#10199))
([985a678](AztecProtocol/aztec-packages@985a678))
* **bb.js:** Don't minify bb.js - webpack config
([#10170](AztecProtocol/aztec-packages#10170))
([6e7fae7](AztecProtocol/aztec-packages@6e7fae7))
* Docker compose aztec up fix
([#10197](AztecProtocol/aztec-packages#10197))
([d7ae959](AztecProtocol/aztec-packages@d7ae959))
* Increase test timeouts
([#10205](AztecProtocol/aztec-packages#10205))
([195aa3d](AztecProtocol/aztec-packages@195aa3d))
* Release l1-contracts
([#10095](AztecProtocol/aztec-packages#10095))
([29f0d7a](AztecProtocol/aztec-packages@29f0d7a))
* Revert "feat: blobs.
([#9302](AztecProtocol/aztec-packages#9302))"
([#10187](AztecProtocol/aztec-packages#10187))
([a415f65](AztecProtocol/aztec-packages@a415f65))


### Miscellaneous

* Added ref to env variables
([#10193](AztecProtocol/aztec-packages#10193))
([b51fc43](AztecProtocol/aztec-packages@b51fc43))
* **avm:** Operands reordering
([#10182](AztecProtocol/aztec-packages#10182))
([69bdf4f](AztecProtocol/aztec-packages@69bdf4f)),
closes
[#10136](AztecProtocol/aztec-packages#10136)
* Fix devbox
([#10201](AztecProtocol/aztec-packages#10201))
([323eaee](AztecProtocol/aztec-packages@323eaee))
* Misc cleanup
([#10194](AztecProtocol/aztec-packages#10194))
([dd01417](AztecProtocol/aztec-packages@dd01417))
* Reinstate docs-preview, fix doc publish
([#10213](AztecProtocol/aztec-packages#10213))
([ed9a0e3](AztecProtocol/aztec-packages@ed9a0e3))
* Replace relative paths to noir-protocol-circuits
([1650446](AztecProtocol/aztec-packages@1650446))
</details>

<details><summary>barretenberg: 0.65.0</summary>

##
[0.65.0](AztecProtocol/aztec-packages@barretenberg-v0.64.0...barretenberg-v0.65.0)
(2024-11-26)


### Features

* **avm:** New public inputs witgen
([#10179](AztecProtocol/aztec-packages#10179))
([ac8f13e](AztecProtocol/aztec-packages@ac8f13e))
* Origin tags implemented in biggroup
([#10002](AztecProtocol/aztec-packages#10002))
([c8696b1](AztecProtocol/aztec-packages@c8696b1))
* UltraRollupRecursiveFlavor
([#10088](AztecProtocol/aztec-packages#10088))
([4418ef2](AztecProtocol/aztec-packages@4418ef2))


### Miscellaneous

* **avm:** Operands reordering
([#10182](AztecProtocol/aztec-packages#10182))
([69bdf4f](AztecProtocol/aztec-packages@69bdf4f)),
closes
[#10136](AztecProtocol/aztec-packages#10136)
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-avm Component: AVM related tickets (aka public VM)
Projects
Status: Done
2 participants