Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
lookups_public_data_check.hpp
Go to the documentation of this file.
1// AUTOGENERATED FILE
2#pragma once
3
4#include <cstddef>
5#include <string_view>
6#include <tuple>
7
8#include "../columns.hpp"
11
12namespace bb::avm2 {
13
15
17 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_CLK_DIFF_RANGE_LO";
18 static constexpr std::string_view RELATION_NAME = "public_data_check";
19 static constexpr size_t LOOKUP_TUPLE_SIZE = 1;
20 static constexpr Column SRC_SELECTOR = Column::public_data_check_not_end;
21 static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_16;
22 static constexpr Column COUNTS = Column::lookup_public_data_check_clk_diff_range_lo_counts;
23 static constexpr Column INVERSES = Column::lookup_public_data_check_clk_diff_range_lo_inv;
24 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
25 ColumnAndShifts::public_data_check_clk_diff_lo
26 };
27 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::precomputed_clk };
28};
29
32template <typename FF_>
35
37
39 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_CLK_DIFF_RANGE_HI";
40 static constexpr std::string_view RELATION_NAME = "public_data_check";
41 static constexpr size_t LOOKUP_TUPLE_SIZE = 1;
42 static constexpr Column SRC_SELECTOR = Column::public_data_check_not_end;
43 static constexpr Column DST_SELECTOR = Column::precomputed_sel_range_16;
44 static constexpr Column COUNTS = Column::lookup_public_data_check_clk_diff_range_hi_counts;
45 static constexpr Column INVERSES = Column::lookup_public_data_check_clk_diff_range_hi_inv;
46 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
47 ColumnAndShifts::public_data_check_clk_diff_hi
48 };
49 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::precomputed_clk };
50};
51
54template <typename FF_>
57
59
61 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_SILO_POSEIDON2";
62 static constexpr std::string_view RELATION_NAME = "public_data_check";
63 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
64 static constexpr Column SRC_SELECTOR = Column::public_data_check_sel;
65 static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end;
66 static constexpr Column COUNTS = Column::lookup_public_data_check_silo_poseidon2_counts;
67 static constexpr Column INVERSES = Column::lookup_public_data_check_silo_poseidon2_inv;
68 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
69 ColumnAndShifts::public_data_check_sel,
70 ColumnAndShifts::public_data_check_siloing_separator,
71 ColumnAndShifts::public_data_check_address,
72 ColumnAndShifts::public_data_check_slot,
73 ColumnAndShifts::public_data_check_leaf_slot
74 };
75 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
76 ColumnAndShifts::poseidon2_hash_start,
77 ColumnAndShifts::poseidon2_hash_input_0,
78 ColumnAndShifts::poseidon2_hash_input_1,
79 ColumnAndShifts::poseidon2_hash_input_2,
80 ColumnAndShifts::poseidon2_hash_output
81 };
82};
83
86template <typename FF_>
89
91
93 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_LOW_LEAF_SLOT_VALIDATION";
94 static constexpr std::string_view RELATION_NAME = "public_data_check";
95 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
96 static constexpr Column SRC_SELECTOR = Column::public_data_check_leaf_not_exists;
97 static constexpr Column DST_SELECTOR = Column::ff_gt_sel_gt;
98 static constexpr Column COUNTS = Column::lookup_public_data_check_low_leaf_slot_validation_counts;
99 static constexpr Column INVERSES = Column::lookup_public_data_check_low_leaf_slot_validation_inv;
100 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
101 ColumnAndShifts::public_data_check_leaf_slot,
102 ColumnAndShifts::public_data_check_low_leaf_slot,
103 ColumnAndShifts::public_data_check_sel
104 };
105 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::ff_gt_a,
106 ColumnAndShifts::ff_gt_b,
107 ColumnAndShifts::ff_gt_result };
108};
109
112template <typename FF_>
115
117
119 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_LOW_LEAF_NEXT_SLOT_VALIDATION";
120 static constexpr std::string_view RELATION_NAME = "public_data_check";
121 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
122 static constexpr Column SRC_SELECTOR = Column::public_data_check_next_slot_is_nonzero;
123 static constexpr Column DST_SELECTOR = Column::ff_gt_sel_gt;
124 static constexpr Column COUNTS = Column::lookup_public_data_check_low_leaf_next_slot_validation_counts;
125 static constexpr Column INVERSES = Column::lookup_public_data_check_low_leaf_next_slot_validation_inv;
126 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
127 ColumnAndShifts::public_data_check_low_leaf_next_slot,
128 ColumnAndShifts::public_data_check_leaf_slot,
129 ColumnAndShifts::public_data_check_sel
130 };
131 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::ff_gt_a,
132 ColumnAndShifts::ff_gt_b,
133 ColumnAndShifts::ff_gt_result };
134};
135
138template <typename FF_>
141
143
145 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_LOW_LEAF_POSEIDON2_0";
146 static constexpr std::string_view RELATION_NAME = "public_data_check";
147 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
148 static constexpr Column SRC_SELECTOR = Column::public_data_check_sel;
149 static constexpr Column DST_SELECTOR = Column::poseidon2_hash_start;
150 static constexpr Column COUNTS = Column::lookup_public_data_check_low_leaf_poseidon2_0_counts;
151 static constexpr Column INVERSES = Column::lookup_public_data_check_low_leaf_poseidon2_0_inv;
152 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
153 ColumnAndShifts::public_data_check_low_leaf_slot,
154 ColumnAndShifts::public_data_check_low_leaf_value,
155 ColumnAndShifts::public_data_check_low_leaf_next_index,
156 ColumnAndShifts::public_data_check_low_leaf_hash,
157 ColumnAndShifts::public_data_check_const_two
158 };
159 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
160 ColumnAndShifts::poseidon2_hash_input_0,
161 ColumnAndShifts::poseidon2_hash_input_1,
162 ColumnAndShifts::poseidon2_hash_input_2,
163 ColumnAndShifts::poseidon2_hash_output,
164 ColumnAndShifts::poseidon2_hash_num_perm_rounds_rem
165 };
166};
167
170template <typename FF_>
173
175
177 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_LOW_LEAF_POSEIDON2_1";
178 static constexpr std::string_view RELATION_NAME = "public_data_check";
179 static constexpr size_t LOOKUP_TUPLE_SIZE = 4;
180 static constexpr Column SRC_SELECTOR = Column::public_data_check_sel;
181 static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end;
182 static constexpr Column COUNTS = Column::lookup_public_data_check_low_leaf_poseidon2_1_counts;
183 static constexpr Column INVERSES = Column::lookup_public_data_check_low_leaf_poseidon2_1_inv;
184 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
185 ColumnAndShifts::public_data_check_low_leaf_next_slot,
186 ColumnAndShifts::precomputed_zero,
187 ColumnAndShifts::precomputed_zero,
188 ColumnAndShifts::public_data_check_low_leaf_hash
189 };
190 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
191 ColumnAndShifts::poseidon2_hash_input_0,
192 ColumnAndShifts::poseidon2_hash_input_1,
193 ColumnAndShifts::poseidon2_hash_input_2,
194 ColumnAndShifts::poseidon2_hash_output
195 };
196};
197
200template <typename FF_>
203
205
207 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_UPDATED_LOW_LEAF_POSEIDON2_0";
208 static constexpr std::string_view RELATION_NAME = "public_data_check";
209 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
210 static constexpr Column SRC_SELECTOR = Column::public_data_check_write;
211 static constexpr Column DST_SELECTOR = Column::poseidon2_hash_start;
212 static constexpr Column COUNTS = Column::lookup_public_data_check_updated_low_leaf_poseidon2_0_counts;
213 static constexpr Column INVERSES = Column::lookup_public_data_check_updated_low_leaf_poseidon2_0_inv;
214 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
215 ColumnAndShifts::public_data_check_low_leaf_slot,
216 ColumnAndShifts::public_data_check_updated_low_leaf_value,
217 ColumnAndShifts::public_data_check_updated_low_leaf_next_index,
218 ColumnAndShifts::public_data_check_updated_low_leaf_hash,
219 ColumnAndShifts::public_data_check_const_two
220 };
221 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
222 ColumnAndShifts::poseidon2_hash_input_0,
223 ColumnAndShifts::poseidon2_hash_input_1,
224 ColumnAndShifts::poseidon2_hash_input_2,
225 ColumnAndShifts::poseidon2_hash_output,
226 ColumnAndShifts::poseidon2_hash_num_perm_rounds_rem
227 };
228};
229
232template <typename FF_>
235
237
239 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_UPDATED_LOW_LEAF_POSEIDON2_1";
240 static constexpr std::string_view RELATION_NAME = "public_data_check";
241 static constexpr size_t LOOKUP_TUPLE_SIZE = 4;
242 static constexpr Column SRC_SELECTOR = Column::public_data_check_write;
243 static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end;
244 static constexpr Column COUNTS = Column::lookup_public_data_check_updated_low_leaf_poseidon2_1_counts;
245 static constexpr Column INVERSES = Column::lookup_public_data_check_updated_low_leaf_poseidon2_1_inv;
246 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
247 ColumnAndShifts::public_data_check_updated_low_leaf_next_slot,
248 ColumnAndShifts::precomputed_zero,
249 ColumnAndShifts::precomputed_zero,
250 ColumnAndShifts::public_data_check_updated_low_leaf_hash
251 };
252 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
253 ColumnAndShifts::poseidon2_hash_input_0,
254 ColumnAndShifts::poseidon2_hash_input_1,
255 ColumnAndShifts::poseidon2_hash_input_2,
256 ColumnAndShifts::poseidon2_hash_output
257 };
258};
259
262template <typename FF_>
265
267
269 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_LOW_LEAF_MERKLE_CHECK";
270 static constexpr std::string_view RELATION_NAME = "public_data_check";
271 static constexpr size_t LOOKUP_TUPLE_SIZE = 7;
272 static constexpr Column SRC_SELECTOR = Column::public_data_check_sel;
273 static constexpr Column DST_SELECTOR = Column::merkle_check_start;
274 static constexpr Column COUNTS = Column::lookup_public_data_check_low_leaf_merkle_check_counts;
275 static constexpr Column INVERSES = Column::lookup_public_data_check_low_leaf_merkle_check_inv;
276 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
277 ColumnAndShifts::public_data_check_write,
278 ColumnAndShifts::public_data_check_low_leaf_hash,
279 ColumnAndShifts::public_data_check_updated_low_leaf_hash,
280 ColumnAndShifts::public_data_check_low_leaf_index,
281 ColumnAndShifts::public_data_check_tree_height,
282 ColumnAndShifts::public_data_check_root,
283 ColumnAndShifts::public_data_check_intermediate_root
284 };
285 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
286 ColumnAndShifts::merkle_check_write, ColumnAndShifts::merkle_check_read_node,
287 ColumnAndShifts::merkle_check_write_node, ColumnAndShifts::merkle_check_index,
288 ColumnAndShifts::merkle_check_path_len, ColumnAndShifts::merkle_check_read_root,
289 ColumnAndShifts::merkle_check_write_root
290 };
291};
292
295template <typename FF_>
298
300
302 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_NEW_LEAF_POSEIDON2_0";
303 static constexpr std::string_view RELATION_NAME = "public_data_check";
304 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
305 static constexpr Column SRC_SELECTOR = Column::public_data_check_should_insert;
306 static constexpr Column DST_SELECTOR = Column::poseidon2_hash_start;
307 static constexpr Column COUNTS = Column::lookup_public_data_check_new_leaf_poseidon2_0_counts;
308 static constexpr Column INVERSES = Column::lookup_public_data_check_new_leaf_poseidon2_0_inv;
309 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
310 ColumnAndShifts::public_data_check_leaf_slot,
311 ColumnAndShifts::public_data_check_value,
312 ColumnAndShifts::public_data_check_low_leaf_next_index,
313 ColumnAndShifts::public_data_check_new_leaf_hash,
314 ColumnAndShifts::public_data_check_const_two
315 };
316 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
317 ColumnAndShifts::poseidon2_hash_input_0,
318 ColumnAndShifts::poseidon2_hash_input_1,
319 ColumnAndShifts::poseidon2_hash_input_2,
320 ColumnAndShifts::poseidon2_hash_output,
321 ColumnAndShifts::poseidon2_hash_num_perm_rounds_rem
322 };
323};
324
327template <typename FF_>
330
332
334 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_NEW_LEAF_POSEIDON2_1";
335 static constexpr std::string_view RELATION_NAME = "public_data_check";
336 static constexpr size_t LOOKUP_TUPLE_SIZE = 4;
337 static constexpr Column SRC_SELECTOR = Column::public_data_check_should_insert;
338 static constexpr Column DST_SELECTOR = Column::poseidon2_hash_end;
339 static constexpr Column COUNTS = Column::lookup_public_data_check_new_leaf_poseidon2_1_counts;
340 static constexpr Column INVERSES = Column::lookup_public_data_check_new_leaf_poseidon2_1_inv;
341 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
342 ColumnAndShifts::public_data_check_low_leaf_next_slot,
343 ColumnAndShifts::precomputed_zero,
344 ColumnAndShifts::precomputed_zero,
345 ColumnAndShifts::public_data_check_new_leaf_hash
346 };
347 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
348 ColumnAndShifts::poseidon2_hash_input_0,
349 ColumnAndShifts::poseidon2_hash_input_1,
350 ColumnAndShifts::poseidon2_hash_input_2,
351 ColumnAndShifts::poseidon2_hash_output
352 };
353};
354
357template <typename FF_>
360
362
364 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_NEW_LEAF_MERKLE_CHECK";
365 static constexpr std::string_view RELATION_NAME = "public_data_check";
366 static constexpr size_t LOOKUP_TUPLE_SIZE = 7;
367 static constexpr Column SRC_SELECTOR = Column::public_data_check_should_insert;
368 static constexpr Column DST_SELECTOR = Column::merkle_check_start;
369 static constexpr Column COUNTS = Column::lookup_public_data_check_new_leaf_merkle_check_counts;
370 static constexpr Column INVERSES = Column::lookup_public_data_check_new_leaf_merkle_check_inv;
371 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
372 ColumnAndShifts::public_data_check_sel, ColumnAndShifts::precomputed_zero,
373 ColumnAndShifts::public_data_check_new_leaf_hash, ColumnAndShifts::public_data_check_tree_size_before_write,
374 ColumnAndShifts::public_data_check_tree_height, ColumnAndShifts::public_data_check_intermediate_root,
375 ColumnAndShifts::public_data_check_write_root
376 };
377 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
378 ColumnAndShifts::merkle_check_write, ColumnAndShifts::merkle_check_read_node,
379 ColumnAndShifts::merkle_check_write_node, ColumnAndShifts::merkle_check_index,
380 ColumnAndShifts::merkle_check_path_len, ColumnAndShifts::merkle_check_read_root,
381 ColumnAndShifts::merkle_check_write_root
382 };
383};
384
387template <typename FF_>
390
392
394 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_WRITE_PUBLIC_DATA_TO_PUBLIC_INPUTS";
395 static constexpr std::string_view RELATION_NAME = "public_data_check";
396 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
397 static constexpr Column SRC_SELECTOR = Column::public_data_check_should_write_to_public_inputs;
398 static constexpr Column DST_SELECTOR = Column::public_inputs_sel;
399 static constexpr Column COUNTS = Column::lookup_public_data_check_write_public_data_to_public_inputs_counts;
400 static constexpr Column INVERSES = Column::lookup_public_data_check_write_public_data_to_public_inputs_inv;
401 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
402 ColumnAndShifts::public_data_check_write_idx,
403 ColumnAndShifts::public_data_check_leaf_slot,
404 ColumnAndShifts::public_data_check_final_value
405 };
406 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
407 ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_, ColumnAndShifts::public_inputs_cols_1_
408 };
409};
410
413template <typename FF_>
416
418
420 static constexpr std::string_view NAME = "LOOKUP_PUBLIC_DATA_CHECK_WRITE_WRITES_LENGTH_TO_PUBLIC_INPUTS";
421 static constexpr std::string_view RELATION_NAME = "public_data_check";
422 static constexpr size_t LOOKUP_TUPLE_SIZE = 2;
423 static constexpr Column SRC_SELECTOR = Column::public_data_check_end;
424 static constexpr Column DST_SELECTOR = Column::public_inputs_sel;
425 static constexpr Column COUNTS = Column::lookup_public_data_check_write_writes_length_to_public_inputs_counts;
426 static constexpr Column INVERSES = Column::lookup_public_data_check_write_writes_length_to_public_inputs_inv;
427 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
428 ColumnAndShifts::public_data_check_length_pi_idx, ColumnAndShifts::public_data_check_public_data_writes_length
429 };
430 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
431 ColumnAndShifts::precomputed_clk, ColumnAndShifts::public_inputs_cols_0_
432 };
433};
434
437template <typename FF_>
440
441} // namespace bb::avm2
This file contains the template for the generic lookup that can be specialized to enforce various loo...
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS