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