8#include "../columns.hpp"
17 static constexpr std::string_view
NAME =
"PERM_POSEIDON2_MEM_POS_READ_MEM_0";
22 static constexpr Column INVERSES = Column::perm_poseidon2_mem_pos_read_mem_0_inv;
23 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
SRC_COLUMNS = {
24 ColumnAndShifts::poseidon2_perm_mem_execution_clk, ColumnAndShifts::poseidon2_perm_mem_space_id,
25 ColumnAndShifts::poseidon2_perm_mem_read_address_0_, ColumnAndShifts::poseidon2_perm_mem_input_0_,
26 ColumnAndShifts::poseidon2_perm_mem_input_tag_0_, ColumnAndShifts::precomputed_zero
28 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
DST_COLUMNS = {
29 ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_address,
30 ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, ColumnAndShifts::memory_rw
35template <
typename FF_>
42 static constexpr std::string_view
NAME =
"PERM_POSEIDON2_MEM_POS_READ_MEM_1";
47 static constexpr Column INVERSES = Column::perm_poseidon2_mem_pos_read_mem_1_inv;
48 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
SRC_COLUMNS = {
49 ColumnAndShifts::poseidon2_perm_mem_execution_clk, ColumnAndShifts::poseidon2_perm_mem_space_id,
50 ColumnAndShifts::poseidon2_perm_mem_read_address_1_, ColumnAndShifts::poseidon2_perm_mem_input_1_,
51 ColumnAndShifts::poseidon2_perm_mem_input_tag_1_, ColumnAndShifts::precomputed_zero
53 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
DST_COLUMNS = {
54 ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_address,
55 ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, ColumnAndShifts::memory_rw
60template <
typename FF_>
67 static constexpr std::string_view
NAME =
"PERM_POSEIDON2_MEM_POS_READ_MEM_2";
72 static constexpr Column INVERSES = Column::perm_poseidon2_mem_pos_read_mem_2_inv;
73 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
SRC_COLUMNS = {
74 ColumnAndShifts::poseidon2_perm_mem_execution_clk, ColumnAndShifts::poseidon2_perm_mem_space_id,
75 ColumnAndShifts::poseidon2_perm_mem_read_address_2_, ColumnAndShifts::poseidon2_perm_mem_input_2_,
76 ColumnAndShifts::poseidon2_perm_mem_input_tag_2_, ColumnAndShifts::precomputed_zero
78 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
DST_COLUMNS = {
79 ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_address,
80 ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, ColumnAndShifts::memory_rw
85template <
typename FF_>
92 static constexpr std::string_view
NAME =
"PERM_POSEIDON2_MEM_POS_READ_MEM_3";
97 static constexpr Column INVERSES = Column::perm_poseidon2_mem_pos_read_mem_3_inv;
98 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
SRC_COLUMNS = {
99 ColumnAndShifts::poseidon2_perm_mem_execution_clk, ColumnAndShifts::poseidon2_perm_mem_space_id,
100 ColumnAndShifts::poseidon2_perm_mem_read_address_3_, ColumnAndShifts::poseidon2_perm_mem_input_3_,
101 ColumnAndShifts::poseidon2_perm_mem_input_tag_3_, ColumnAndShifts::precomputed_zero
103 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
DST_COLUMNS = {
104 ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_address,
105 ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, ColumnAndShifts::memory_rw
110template <
typename FF_>
117 static constexpr std::string_view
NAME =
"PERM_POSEIDON2_MEM_POS_WRITE_MEM_0";
122 static constexpr Column INVERSES = Column::perm_poseidon2_mem_pos_write_mem_0_inv;
123 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
SRC_COLUMNS = {
124 ColumnAndShifts::poseidon2_perm_mem_execution_clk,
125 ColumnAndShifts::poseidon2_perm_mem_space_id,
126 ColumnAndShifts::poseidon2_perm_mem_write_address_0_,
127 ColumnAndShifts::poseidon2_perm_mem_output_0_,
128 ColumnAndShifts::precomputed_zero,
129 ColumnAndShifts::poseidon2_perm_mem_sel_should_exec
131 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
DST_COLUMNS = {
132 ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_address,
133 ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, ColumnAndShifts::memory_rw
138template <
typename FF_>
145 static constexpr std::string_view
NAME =
"PERM_POSEIDON2_MEM_POS_WRITE_MEM_1";
150 static constexpr Column INVERSES = Column::perm_poseidon2_mem_pos_write_mem_1_inv;
151 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
SRC_COLUMNS = {
152 ColumnAndShifts::poseidon2_perm_mem_execution_clk,
153 ColumnAndShifts::poseidon2_perm_mem_space_id,
154 ColumnAndShifts::poseidon2_perm_mem_write_address_1_,
155 ColumnAndShifts::poseidon2_perm_mem_output_1_,
156 ColumnAndShifts::precomputed_zero,
157 ColumnAndShifts::poseidon2_perm_mem_sel_should_exec
159 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
DST_COLUMNS = {
160 ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_address,
161 ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, ColumnAndShifts::memory_rw
166template <
typename FF_>
173 static constexpr std::string_view
NAME =
"PERM_POSEIDON2_MEM_POS_WRITE_MEM_2";
178 static constexpr Column INVERSES = Column::perm_poseidon2_mem_pos_write_mem_2_inv;
179 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
SRC_COLUMNS = {
180 ColumnAndShifts::poseidon2_perm_mem_execution_clk,
181 ColumnAndShifts::poseidon2_perm_mem_space_id,
182 ColumnAndShifts::poseidon2_perm_mem_write_address_2_,
183 ColumnAndShifts::poseidon2_perm_mem_output_2_,
184 ColumnAndShifts::precomputed_zero,
185 ColumnAndShifts::poseidon2_perm_mem_sel_should_exec
187 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
DST_COLUMNS = {
188 ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_address,
189 ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, ColumnAndShifts::memory_rw
194template <
typename FF_>
201 static constexpr std::string_view
NAME =
"PERM_POSEIDON2_MEM_POS_WRITE_MEM_3";
206 static constexpr Column INVERSES = Column::perm_poseidon2_mem_pos_write_mem_3_inv;
207 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
SRC_COLUMNS = {
208 ColumnAndShifts::poseidon2_perm_mem_execution_clk,
209 ColumnAndShifts::poseidon2_perm_mem_space_id,
210 ColumnAndShifts::poseidon2_perm_mem_write_address_3_,
211 ColumnAndShifts::poseidon2_perm_mem_output_3_,
212 ColumnAndShifts::precomputed_zero,
213 ColumnAndShifts::poseidon2_perm_mem_sel_should_exec
215 static constexpr std::array<ColumnAndShifts, COLUMNS_PER_SET>
DST_COLUMNS = {
216 ColumnAndShifts::memory_clk, ColumnAndShifts::memory_space_id, ColumnAndShifts::memory_address,
217 ColumnAndShifts::memory_value, ColumnAndShifts::memory_tag, ColumnAndShifts::memory_rw
222template <
typename FF_>
This file contains the template for the generic permutation that can be specialized to enforce variou...
static constexpr Column SRC_SELECTOR
static constexpr size_t COLUMNS_PER_SET
static constexpr Column DST_SELECTOR
static constexpr std::string_view NAME
static constexpr std::string_view RELATION_NAME
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > SRC_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > SRC_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr Column INVERSES
static constexpr size_t COLUMNS_PER_SET
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > DST_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr Column INVERSES
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > DST_COLUMNS
static constexpr size_t COLUMNS_PER_SET
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr Column DST_SELECTOR
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > DST_COLUMNS
static constexpr std::string_view NAME
static constexpr Column INVERSES
static constexpr size_t COLUMNS_PER_SET
static constexpr Column INVERSES
static constexpr Column DST_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr size_t COLUMNS_PER_SET
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > DST_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > DST_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr Column DST_SELECTOR
static constexpr size_t COLUMNS_PER_SET
static constexpr Column INVERSES
static constexpr std::string_view NAME
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr size_t COLUMNS_PER_SET
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > DST_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr Column SRC_SELECTOR
static constexpr std::string_view NAME
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr size_t COLUMNS_PER_SET
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, COLUMNS_PER_SET > DST_COLUMNS