Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
opcodes.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <ostream>
4
#include <string>
5
6
namespace
bb::avm2
{
7
8
enum class
WireOpCode
{
9
// Compute
10
ADD_8
,
11
ADD_16
,
12
SUB_8
,
13
SUB_16
,
14
MUL_8
,
15
MUL_16
,
16
DIV_8
,
17
DIV_16
,
18
FDIV_8
,
19
FDIV_16
,
20
EQ_8
,
21
EQ_16
,
22
LT_8
,
23
LT_16
,
24
LTE_8
,
25
LTE_16
,
26
AND_8
,
27
AND_16
,
28
OR_8
,
29
OR_16
,
30
XOR_8
,
31
XOR_16
,
32
NOT_8
,
33
NOT_16
,
34
SHL_8
,
35
SHL_16
,
36
SHR_8
,
37
SHR_16
,
38
CAST_8
,
39
CAST_16
,
40
41
// Execution Environment
42
GETENVVAR_16
,
43
// Execution Environment - Calldata
44
CALLDATACOPY
,
45
SUCCESSCOPY
,
46
RETURNDATASIZE
,
47
RETURNDATACOPY
,
48
49
// Machine State
50
// Machine State - Internal Control Flow
51
JUMP_32
,
52
JUMPI_32
,
53
INTERNALCALL
,
54
INTERNALRETURN
,
55
// Machine State - Memory
56
SET_8
,
57
SET_16
,
58
SET_32
,
59
SET_64
,
60
SET_128
,
61
SET_FF
,
62
MOV_8
,
63
MOV_16
,
64
65
// World State
66
SLOAD
,
// Public Storage
67
SSTORE
,
// Public Storage
68
NOTEHASHEXISTS
,
// Notes & Nullifiers
69
EMITNOTEHASH
,
// Notes & Nullifiers
70
NULLIFIEREXISTS
,
// Notes & Nullifiers
71
EMITNULLIFIER
,
// Notes & Nullifiers
72
L1TOL2MSGEXISTS
,
// Messages
73
GETCONTRACTINSTANCE
,
74
75
// Accrued Substate
76
EMITUNENCRYPTEDLOG
,
77
SENDL2TOL1MSG
,
// Messages
78
79
// Control Flow - Contract Calls
80
CALL
,
81
STATICCALL
,
82
RETURN
,
83
REVERT_8
,
84
REVERT_16
,
85
86
// Misc
87
DEBUGLOG
,
88
89
// Gadgets
90
POSEIDON2PERM
,
91
SHA256COMPRESSION
,
92
KECCAKF1600
,
93
ECADD
,
94
// Conversions
95
TORADIXBE
,
96
97
// Sentinel
98
LAST_OPCODE_SENTINEL
,
99
};
100
101
std::ostream&
operator<<
(std::ostream& os,
const
WireOpCode
& op);
102
103
// List of opcodes that can be executed.
104
// This is like WireOpCode but without the variants.
105
// Order doesn't really matter as long as it's in sync with the circuit.
106
enum class
ExecutionOpCode
{
107
ADD
,
108
SUB
,
109
MUL
,
110
DIV
,
111
FDIV
,
112
EQ
,
113
LT
,
114
LTE
,
115
AND
,
116
OR
,
117
XOR
,
118
NOT
,
119
SHL
,
120
SHR
,
121
CAST
,
122
GETENVVAR
,
123
CALLDATACOPY
,
124
SUCCESSCOPY
,
125
RETURNDATASIZE
,
126
RETURNDATACOPY
,
127
JUMP
,
128
JUMPI
,
129
INTERNALCALL
,
130
INTERNALRETURN
,
131
SET
,
132
MOV
,
133
SLOAD
,
134
SSTORE
,
135
NOTEHASHEXISTS
,
136
EMITNOTEHASH
,
137
NULLIFIEREXISTS
,
138
EMITNULLIFIER
,
139
L1TOL2MSGEXISTS
,
140
GETCONTRACTINSTANCE
,
141
EMITUNENCRYPTEDLOG
,
142
SENDL2TOL1MSG
,
143
CALL
,
144
STATICCALL
,
145
RETURN
,
146
REVERT
,
147
DEBUGLOG
,
148
POSEIDON2PERM
,
149
SHA256COMPRESSION
,
150
KECCAKF1600
,
151
ECADD
,
152
TORADIXBE
,
153
};
154
155
std::ostream&
operator<<
(std::ostream& os,
const
ExecutionOpCode
& op);
156
157
}
// namespace bb::avm2
bb::avm2
Definition
flavor.hpp:472
bb::avm2::ExecutionOpCode
ExecutionOpCode
Definition
opcodes.hpp:106
bb::avm2::ExecutionOpCode::SHR
@ SHR
bb::avm2::ExecutionOpCode::NOT
@ NOT
bb::avm2::ExecutionOpCode::JUMPI
@ JUMPI
bb::avm2::ExecutionOpCode::MOV
@ MOV
bb::avm2::ExecutionOpCode::SUB
@ SUB
bb::avm2::ExecutionOpCode::CAST
@ CAST
bb::avm2::ExecutionOpCode::DIV
@ DIV
bb::avm2::ExecutionOpCode::MUL
@ MUL
bb::avm2::ExecutionOpCode::EQ
@ EQ
bb::avm2::ExecutionOpCode::GETENVVAR
@ GETENVVAR
bb::avm2::ExecutionOpCode::JUMP
@ JUMP
bb::avm2::ExecutionOpCode::SET
@ SET
bb::avm2::ExecutionOpCode::ADD
@ ADD
bb::avm2::ExecutionOpCode::REVERT
@ REVERT
bb::avm2::ExecutionOpCode::SHL
@ SHL
bb::avm2::ExecutionOpCode::FDIV
@ FDIV
bb::avm2::ExecutionOpCode::LT
@ LT
bb::avm2::ExecutionOpCode::LTE
@ LTE
bb::avm2::BitwiseOperation::OR
@ OR
bb::avm2::BitwiseOperation::AND
@ AND
bb::avm2::BitwiseOperation::XOR
@ XOR
bb::avm2::WireOpCode
WireOpCode
Definition
opcodes.hpp:8
bb::avm2::WireOpCode::SET_32
@ SET_32
bb::avm2::WireOpCode::AND_8
@ AND_8
bb::avm2::WireOpCode::SET_8
@ SET_8
bb::avm2::WireOpCode::SSTORE
@ SSTORE
bb::avm2::WireOpCode::JUMP_32
@ JUMP_32
bb::avm2::WireOpCode::SLOAD
@ SLOAD
bb::avm2::WireOpCode::SHR_8
@ SHR_8
bb::avm2::WireOpCode::SET_16
@ SET_16
bb::avm2::WireOpCode::SENDL2TOL1MSG
@ SENDL2TOL1MSG
bb::avm2::WireOpCode::DIV_16
@ DIV_16
bb::avm2::WireOpCode::LAST_OPCODE_SENTINEL
@ LAST_OPCODE_SENTINEL
bb::avm2::WireOpCode::RETURNDATACOPY
@ RETURNDATACOPY
bb::avm2::WireOpCode::SET_FF
@ SET_FF
bb::avm2::WireOpCode::SET_64
@ SET_64
bb::avm2::WireOpCode::REVERT_16
@ REVERT_16
bb::avm2::WireOpCode::SHL_8
@ SHL_8
bb::avm2::WireOpCode::LT_8
@ LT_8
bb::avm2::WireOpCode::ADD_8
@ ADD_8
bb::avm2::WireOpCode::NOT_8
@ NOT_8
bb::avm2::WireOpCode::INTERNALRETURN
@ INTERNALRETURN
bb::avm2::WireOpCode::LTE_16
@ LTE_16
bb::avm2::WireOpCode::EMITNULLIFIER
@ EMITNULLIFIER
bb::avm2::WireOpCode::EQ_16
@ EQ_16
bb::avm2::WireOpCode::NULLIFIEREXISTS
@ NULLIFIEREXISTS
bb::avm2::WireOpCode::SHL_16
@ SHL_16
bb::avm2::WireOpCode::CAST_16
@ CAST_16
bb::avm2::WireOpCode::MOV_8
@ MOV_8
bb::avm2::WireOpCode::ADD_16
@ ADD_16
bb::avm2::WireOpCode::JUMPI_32
@ JUMPI_32
bb::avm2::WireOpCode::AND_16
@ AND_16
bb::avm2::WireOpCode::SUB_16
@ SUB_16
bb::avm2::WireOpCode::POSEIDON2PERM
@ POSEIDON2PERM
bb::avm2::WireOpCode::L1TOL2MSGEXISTS
@ L1TOL2MSGEXISTS
bb::avm2::WireOpCode::RETURNDATASIZE
@ RETURNDATASIZE
bb::avm2::WireOpCode::EMITNOTEHASH
@ EMITNOTEHASH
bb::avm2::WireOpCode::SHR_16
@ SHR_16
bb::avm2::WireOpCode::INTERNALCALL
@ INTERNALCALL
bb::avm2::WireOpCode::LTE_8
@ LTE_8
bb::avm2::WireOpCode::RETURN
@ RETURN
bb::avm2::WireOpCode::GETCONTRACTINSTANCE
@ GETCONTRACTINSTANCE
bb::avm2::WireOpCode::DEBUGLOG
@ DEBUGLOG
bb::avm2::WireOpCode::EMITUNENCRYPTEDLOG
@ EMITUNENCRYPTEDLOG
bb::avm2::WireOpCode::ECADD
@ ECADD
bb::avm2::WireOpCode::FDIV_8
@ FDIV_8
bb::avm2::WireOpCode::OR_16
@ OR_16
bb::avm2::WireOpCode::NOTEHASHEXISTS
@ NOTEHASHEXISTS
bb::avm2::WireOpCode::FDIV_16
@ FDIV_16
bb::avm2::WireOpCode::CALLDATACOPY
@ CALLDATACOPY
bb::avm2::WireOpCode::DIV_8
@ DIV_8
bb::avm2::WireOpCode::REVERT_8
@ REVERT_8
bb::avm2::WireOpCode::MUL_16
@ MUL_16
bb::avm2::WireOpCode::CALL
@ CALL
bb::avm2::WireOpCode::SET_128
@ SET_128
bb::avm2::WireOpCode::NOT_16
@ NOT_16
bb::avm2::WireOpCode::KECCAKF1600
@ KECCAKF1600
bb::avm2::WireOpCode::XOR_16
@ XOR_16
bb::avm2::WireOpCode::OR_8
@ OR_8
bb::avm2::WireOpCode::MUL_8
@ MUL_8
bb::avm2::WireOpCode::XOR_8
@ XOR_8
bb::avm2::WireOpCode::MOV_16
@ MOV_16
bb::avm2::WireOpCode::SHA256COMPRESSION
@ SHA256COMPRESSION
bb::avm2::WireOpCode::EQ_8
@ EQ_8
bb::avm2::WireOpCode::STATICCALL
@ STATICCALL
bb::avm2::WireOpCode::GETENVVAR_16
@ GETENVVAR_16
bb::avm2::WireOpCode::SUB_8
@ SUB_8
bb::avm2::WireOpCode::LT_16
@ LT_16
bb::avm2::WireOpCode::CAST_8
@ CAST_8
bb::avm2::WireOpCode::TORADIXBE
@ TORADIXBE
bb::avm2::WireOpCode::SUCCESSCOPY
@ SUCCESSCOPY
bb::avm2::operator<<
std::ostream & operator<<(std::ostream &os, const WireOpCode &op)
Definition
opcodes.cpp:8
src
barretenberg
vm2
common
opcodes.hpp
Generated by
1.9.8