Barretenberg
The ZK-SNARK library at the core of Aztec
Loading...
Searching...
No Matches
lookups_sha256.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_SHA256_RANGE_COMP_W_LHS";
18 static constexpr std::string_view RELATION_NAME = "sha256";
19 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
20 static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w;
21 static constexpr Column DST_SELECTOR = Column::gt_sel;
22 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_w_lhs_counts;
23 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_w_lhs_inv;
24 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
25 ColumnAndShifts::sha256_two_pow_32,
26 ColumnAndShifts::sha256_computed_w_lhs,
27 ColumnAndShifts::sha256_sel_compute_w
28 };
29 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
30 ColumnAndShifts::gt_input_b,
31 ColumnAndShifts::gt_res };
32};
33
35template <typename FF_>
37
39
41 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_W_RHS";
42 static constexpr std::string_view RELATION_NAME = "sha256";
43 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
44 static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w;
45 static constexpr Column DST_SELECTOR = Column::gt_sel;
46 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_w_rhs_counts;
47 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_w_rhs_inv;
48 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
49 ColumnAndShifts::sha256_two_pow_32,
50 ColumnAndShifts::sha256_computed_w_rhs,
51 ColumnAndShifts::sha256_sel_compute_w
52 };
53 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
54 ColumnAndShifts::gt_input_b,
55 ColumnAndShifts::gt_res };
56};
57
59template <typename FF_>
61
63
65 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_W_7";
66 static constexpr std::string_view RELATION_NAME = "sha256";
67 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
68 static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w;
69 static constexpr Column DST_SELECTOR = Column::gt_sel;
70 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_7_counts;
71 static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_w_7_inv;
72 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
73 ColumnAndShifts::sha256_two_pow_7, ColumnAndShifts::sha256_rhs_w_7, ColumnAndShifts::sha256_sel_compute_w
74 };
75 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
76 ColumnAndShifts::gt_input_b,
77 ColumnAndShifts::gt_res };
78};
79
81template <typename FF_>
83
85
87 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_W_18";
88 static constexpr std::string_view RELATION_NAME = "sha256";
89 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
90 static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w;
91 static constexpr Column DST_SELECTOR = Column::gt_sel;
92 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_18_counts;
93 static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_w_18_inv;
94 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
95 ColumnAndShifts::sha256_two_pow_18, ColumnAndShifts::sha256_rhs_w_18, ColumnAndShifts::sha256_sel_compute_w
96 };
97 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
98 ColumnAndShifts::gt_input_b,
99 ColumnAndShifts::gt_res };
100};
101
103template <typename FF_>
105
107
109 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_W_3";
110 static constexpr std::string_view RELATION_NAME = "sha256";
111 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
112 static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w;
113 static constexpr Column DST_SELECTOR = Column::gt_sel;
114 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_3_counts;
115 static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_w_3_inv;
116 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
117 ColumnAndShifts::sha256_two_pow_3, ColumnAndShifts::sha256_rhs_w_3, ColumnAndShifts::sha256_sel_compute_w
118 };
119 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
120 ColumnAndShifts::gt_input_b,
121 ColumnAndShifts::gt_res };
122};
123
125template <typename FF_>
127
129
131 static constexpr std::string_view NAME = "LOOKUP_SHA256_W_S_0_XOR_0";
132 static constexpr std::string_view RELATION_NAME = "sha256";
133 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
134 static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w;
135 static constexpr Column DST_SELECTOR = Column::bitwise_start;
136 static constexpr Column COUNTS = Column::lookup_sha256_w_s_0_xor_0_counts;
137 static constexpr Column INVERSES = Column::lookup_sha256_w_s_0_xor_0_inv;
138 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
139 ColumnAndShifts::sha256_w_15_rotr_7,
140 ColumnAndShifts::sha256_w_15_rotr_18,
141 ColumnAndShifts::sha256_w_15_rotr_7_xor_w_15_rotr_18,
142 ColumnAndShifts::sha256_xor_sel,
143 ColumnAndShifts::sha256_u32_tag
144 };
145 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
146 ColumnAndShifts::bitwise_acc_ib,
147 ColumnAndShifts::bitwise_acc_ic,
148 ColumnAndShifts::bitwise_op_id,
149 ColumnAndShifts::bitwise_tag_a };
150};
151
153template <typename FF_>
155
157
159 static constexpr std::string_view NAME = "LOOKUP_SHA256_W_S_0_XOR_1";
160 static constexpr std::string_view RELATION_NAME = "sha256";
161 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
162 static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w;
163 static constexpr Column DST_SELECTOR = Column::bitwise_start;
164 static constexpr Column COUNTS = Column::lookup_sha256_w_s_0_xor_1_counts;
165 static constexpr Column INVERSES = Column::lookup_sha256_w_s_0_xor_1_inv;
166 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
167 ColumnAndShifts::sha256_w_15_rotr_7_xor_w_15_rotr_18,
168 ColumnAndShifts::sha256_w_15_rshift_3,
169 ColumnAndShifts::sha256_w_s_0,
170 ColumnAndShifts::sha256_xor_sel,
171 ColumnAndShifts::sha256_u32_tag
172 };
173 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
174 ColumnAndShifts::bitwise_acc_ib,
175 ColumnAndShifts::bitwise_acc_ic,
176 ColumnAndShifts::bitwise_op_id,
177 ColumnAndShifts::bitwise_tag_a };
178};
179
181template <typename FF_>
183
185
187 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_W_17";
188 static constexpr std::string_view RELATION_NAME = "sha256";
189 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
190 static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w;
191 static constexpr Column DST_SELECTOR = Column::gt_sel;
192 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_17_counts;
193 static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_w_17_inv;
194 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
195 ColumnAndShifts::sha256_two_pow_17, ColumnAndShifts::sha256_rhs_w_17, ColumnAndShifts::sha256_sel_compute_w
196 };
197 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
198 ColumnAndShifts::gt_input_b,
199 ColumnAndShifts::gt_res };
200};
201
203template <typename FF_>
205
207
209 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_W_19";
210 static constexpr std::string_view RELATION_NAME = "sha256";
211 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
212 static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w;
213 static constexpr Column DST_SELECTOR = Column::gt_sel;
214 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_19_counts;
215 static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_w_19_inv;
216 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
217 ColumnAndShifts::sha256_two_pow_19, ColumnAndShifts::sha256_rhs_w_19, ColumnAndShifts::sha256_sel_compute_w
218 };
219 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
220 ColumnAndShifts::gt_input_b,
221 ColumnAndShifts::gt_res };
222};
223
225template <typename FF_>
227
229
231 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_W_10";
232 static constexpr std::string_view RELATION_NAME = "sha256";
233 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
234 static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w;
235 static constexpr Column DST_SELECTOR = Column::gt_sel;
236 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_10_counts;
237 static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_w_10_inv;
238 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
239 ColumnAndShifts::sha256_two_pow_10, ColumnAndShifts::sha256_rhs_w_10, ColumnAndShifts::sha256_sel_compute_w
240 };
241 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
242 ColumnAndShifts::gt_input_b,
243 ColumnAndShifts::gt_res };
244};
245
247template <typename FF_>
249
251
253 static constexpr std::string_view NAME = "LOOKUP_SHA256_W_S_1_XOR_0";
254 static constexpr std::string_view RELATION_NAME = "sha256";
255 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
256 static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w;
257 static constexpr Column DST_SELECTOR = Column::bitwise_start;
258 static constexpr Column COUNTS = Column::lookup_sha256_w_s_1_xor_0_counts;
259 static constexpr Column INVERSES = Column::lookup_sha256_w_s_1_xor_0_inv;
260 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
261 ColumnAndShifts::sha256_w_2_rotr_17,
262 ColumnAndShifts::sha256_w_2_rotr_19,
263 ColumnAndShifts::sha256_w_2_rotr_17_xor_w_2_rotr_19,
264 ColumnAndShifts::sha256_xor_sel,
265 ColumnAndShifts::sha256_u32_tag
266 };
267 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
268 ColumnAndShifts::bitwise_acc_ib,
269 ColumnAndShifts::bitwise_acc_ic,
270 ColumnAndShifts::bitwise_op_id,
271 ColumnAndShifts::bitwise_tag_a };
272};
273
275template <typename FF_>
277
279
281 static constexpr std::string_view NAME = "LOOKUP_SHA256_W_S_1_XOR_1";
282 static constexpr std::string_view RELATION_NAME = "sha256";
283 static constexpr size_t LOOKUP_TUPLE_SIZE = 6;
284 static constexpr Column SRC_SELECTOR = Column::sha256_sel_compute_w;
285 static constexpr Column DST_SELECTOR = Column::bitwise_start;
286 static constexpr Column COUNTS = Column::lookup_sha256_w_s_1_xor_1_counts;
287 static constexpr Column INVERSES = Column::lookup_sha256_w_s_1_xor_1_inv;
288 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
289 ColumnAndShifts::sha256_w_2_rotr_17_xor_w_2_rotr_19,
290 ColumnAndShifts::sha256_w_2_rshift_10,
291 ColumnAndShifts::sha256_w_s_1,
292 ColumnAndShifts::sha256_xor_sel,
293 ColumnAndShifts::sha256_u32_tag,
294 ColumnAndShifts::sha256_u32_tag
295 };
296 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
297 ColumnAndShifts::bitwise_acc_ia, ColumnAndShifts::bitwise_acc_ib, ColumnAndShifts::bitwise_acc_ic,
298 ColumnAndShifts::bitwise_op_id, ColumnAndShifts::bitwise_tag_a, ColumnAndShifts::bitwise_tag_a
299 };
300};
301
303template <typename FF_>
305
307
309 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_E_6";
310 static constexpr std::string_view RELATION_NAME = "sha256";
311 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
312 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
313 static constexpr Column DST_SELECTOR = Column::gt_sel;
314 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_e_6_counts;
315 static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_e_6_inv;
316 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
317 ColumnAndShifts::sha256_two_pow_6, ColumnAndShifts::sha256_rhs_e_6, ColumnAndShifts::sha256_perform_round
318 };
319 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
320 ColumnAndShifts::gt_input_b,
321 ColumnAndShifts::gt_res };
322};
323
325template <typename FF_>
327
329
331 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_E_11";
332 static constexpr std::string_view RELATION_NAME = "sha256";
333 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
334 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
335 static constexpr Column DST_SELECTOR = Column::gt_sel;
336 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_e_11_counts;
337 static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_e_11_inv;
338 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
339 ColumnAndShifts::sha256_two_pow_11, ColumnAndShifts::sha256_rhs_e_11, ColumnAndShifts::sha256_perform_round
340 };
341 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
342 ColumnAndShifts::gt_input_b,
343 ColumnAndShifts::gt_res };
344};
345
347template <typename FF_>
349
351
353 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_E_25";
354 static constexpr std::string_view RELATION_NAME = "sha256";
355 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
356 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
357 static constexpr Column DST_SELECTOR = Column::gt_sel;
358 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_e_25_counts;
359 static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_e_25_inv;
360 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
361 ColumnAndShifts::sha256_two_pow_25, ColumnAndShifts::sha256_rhs_e_25, ColumnAndShifts::sha256_perform_round
362 };
363 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
364 ColumnAndShifts::gt_input_b,
365 ColumnAndShifts::gt_res };
366};
367
369template <typename FF_>
371
373
375 static constexpr std::string_view NAME = "LOOKUP_SHA256_S_1_XOR_0";
376 static constexpr std::string_view RELATION_NAME = "sha256";
377 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
378 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
379 static constexpr Column DST_SELECTOR = Column::bitwise_start;
380 static constexpr Column COUNTS = Column::lookup_sha256_s_1_xor_0_counts;
381 static constexpr Column INVERSES = Column::lookup_sha256_s_1_xor_0_inv;
382 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
383 ColumnAndShifts::sha256_e_rotr_6,
384 ColumnAndShifts::sha256_e_rotr_11,
385 ColumnAndShifts::sha256_e_rotr_6_xor_e_rotr_11,
386 ColumnAndShifts::sha256_xor_sel,
387 ColumnAndShifts::sha256_u32_tag
388 };
389 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
390 ColumnAndShifts::bitwise_acc_ib,
391 ColumnAndShifts::bitwise_acc_ic,
392 ColumnAndShifts::bitwise_op_id,
393 ColumnAndShifts::bitwise_tag_a };
394};
395
397template <typename FF_>
399
401
403 static constexpr std::string_view NAME = "LOOKUP_SHA256_S_1_XOR_1";
404 static constexpr std::string_view RELATION_NAME = "sha256";
405 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
406 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
407 static constexpr Column DST_SELECTOR = Column::bitwise_start;
408 static constexpr Column COUNTS = Column::lookup_sha256_s_1_xor_1_counts;
409 static constexpr Column INVERSES = Column::lookup_sha256_s_1_xor_1_inv;
410 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
411 ColumnAndShifts::sha256_e_rotr_6_xor_e_rotr_11,
412 ColumnAndShifts::sha256_e_rotr_25,
413 ColumnAndShifts::sha256_s_1,
414 ColumnAndShifts::sha256_xor_sel,
415 ColumnAndShifts::sha256_u32_tag
416 };
417 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
418 ColumnAndShifts::bitwise_acc_ib,
419 ColumnAndShifts::bitwise_acc_ic,
420 ColumnAndShifts::bitwise_op_id,
421 ColumnAndShifts::bitwise_tag_a };
422};
423
425template <typename FF_>
427
429
431 static constexpr std::string_view NAME = "LOOKUP_SHA256_CH_AND_0";
432 static constexpr std::string_view RELATION_NAME = "sha256";
433 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
434 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
435 static constexpr Column DST_SELECTOR = Column::bitwise_start;
436 static constexpr Column COUNTS = Column::lookup_sha256_ch_and_0_counts;
437 static constexpr Column INVERSES = Column::lookup_sha256_ch_and_0_inv;
438 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = { ColumnAndShifts::sha256_e,
439 ColumnAndShifts::sha256_f,
440 ColumnAndShifts::sha256_e_and_f,
441 ColumnAndShifts::sha256_and_sel,
442 ColumnAndShifts::sha256_u32_tag };
443 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
444 ColumnAndShifts::bitwise_acc_ib,
445 ColumnAndShifts::bitwise_acc_ic,
446 ColumnAndShifts::bitwise_op_id,
447 ColumnAndShifts::bitwise_tag_a };
448};
449
451template <typename FF_>
453
455
457 static constexpr std::string_view NAME = "LOOKUP_SHA256_CH_AND_1";
458 static constexpr std::string_view RELATION_NAME = "sha256";
459 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
460 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
461 static constexpr Column DST_SELECTOR = Column::bitwise_start;
462 static constexpr Column COUNTS = Column::lookup_sha256_ch_and_1_counts;
463 static constexpr Column INVERSES = Column::lookup_sha256_ch_and_1_inv;
464 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = { ColumnAndShifts::sha256_not_e,
465 ColumnAndShifts::sha256_g,
466 ColumnAndShifts::sha256_not_e_and_g,
467 ColumnAndShifts::sha256_and_sel,
468 ColumnAndShifts::sha256_u32_tag };
469 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
470 ColumnAndShifts::bitwise_acc_ib,
471 ColumnAndShifts::bitwise_acc_ic,
472 ColumnAndShifts::bitwise_op_id,
473 ColumnAndShifts::bitwise_tag_a };
474};
475
477template <typename FF_>
479
481
483 static constexpr std::string_view NAME = "LOOKUP_SHA256_CH_XOR";
484 static constexpr std::string_view RELATION_NAME = "sha256";
485 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
486 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
487 static constexpr Column DST_SELECTOR = Column::bitwise_start;
488 static constexpr Column COUNTS = Column::lookup_sha256_ch_xor_counts;
489 static constexpr Column INVERSES = Column::lookup_sha256_ch_xor_inv;
490 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = { ColumnAndShifts::sha256_e_and_f,
491 ColumnAndShifts::sha256_not_e_and_g,
492 ColumnAndShifts::sha256_ch,
493 ColumnAndShifts::sha256_xor_sel,
494 ColumnAndShifts::sha256_u32_tag };
495 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
496 ColumnAndShifts::bitwise_acc_ib,
497 ColumnAndShifts::bitwise_acc_ic,
498 ColumnAndShifts::bitwise_op_id,
499 ColumnAndShifts::bitwise_tag_a };
500};
501
504
506
508 static constexpr std::string_view NAME = "LOOKUP_SHA256_ROUND_CONSTANT";
509 static constexpr std::string_view RELATION_NAME = "sha256";
510 static constexpr size_t LOOKUP_TUPLE_SIZE = 2;
511 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
512 static constexpr Column DST_SELECTOR = Column::precomputed_sel_sha256_compression;
513 static constexpr Column COUNTS = Column::lookup_sha256_round_constant_counts;
514 static constexpr Column INVERSES = Column::lookup_sha256_round_constant_inv;
515 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
516 ColumnAndShifts::sha256_round_count, ColumnAndShifts::sha256_round_constant
517 };
518 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = {
519 ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_sha256_compression_round_constant
520 };
521};
522
524template <typename FF_>
526
528
530 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_A_2";
531 static constexpr std::string_view RELATION_NAME = "sha256";
532 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
533 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
534 static constexpr Column DST_SELECTOR = Column::gt_sel;
535 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_a_2_counts;
536 static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_a_2_inv;
537 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
538 ColumnAndShifts::sha256_two_pow_2, ColumnAndShifts::sha256_rhs_a_2, ColumnAndShifts::sha256_perform_round
539 };
540 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
541 ColumnAndShifts::gt_input_b,
542 ColumnAndShifts::gt_res };
543};
544
546template <typename FF_>
548
550
552 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_A_13";
553 static constexpr std::string_view RELATION_NAME = "sha256";
554 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
555 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
556 static constexpr Column DST_SELECTOR = Column::gt_sel;
557 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_a_13_counts;
558 static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_a_13_inv;
559 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
560 ColumnAndShifts::sha256_two_pow_13, ColumnAndShifts::sha256_rhs_a_13, ColumnAndShifts::sha256_perform_round
561 };
562 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
563 ColumnAndShifts::gt_input_b,
564 ColumnAndShifts::gt_res };
565};
566
568template <typename FF_>
570
572
574 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_RHS_A_22";
575 static constexpr std::string_view RELATION_NAME = "sha256";
576 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
577 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
578 static constexpr Column DST_SELECTOR = Column::gt_sel;
579 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_a_22_counts;
580 static constexpr Column INVERSES = Column::lookup_sha256_range_rhs_a_22_inv;
581 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
582 ColumnAndShifts::sha256_two_pow_22, ColumnAndShifts::sha256_rhs_a_22, ColumnAndShifts::sha256_perform_round
583 };
584 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
585 ColumnAndShifts::gt_input_b,
586 ColumnAndShifts::gt_res };
587};
588
590template <typename FF_>
592
594
596 static constexpr std::string_view NAME = "LOOKUP_SHA256_S_0_XOR_0";
597 static constexpr std::string_view RELATION_NAME = "sha256";
598 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
599 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
600 static constexpr Column DST_SELECTOR = Column::bitwise_start;
601 static constexpr Column COUNTS = Column::lookup_sha256_s_0_xor_0_counts;
602 static constexpr Column INVERSES = Column::lookup_sha256_s_0_xor_0_inv;
603 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
604 ColumnAndShifts::sha256_a_rotr_2,
605 ColumnAndShifts::sha256_a_rotr_13,
606 ColumnAndShifts::sha256_a_rotr_2_xor_a_rotr_13,
607 ColumnAndShifts::sha256_xor_sel,
608 ColumnAndShifts::sha256_u32_tag
609 };
610 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
611 ColumnAndShifts::bitwise_acc_ib,
612 ColumnAndShifts::bitwise_acc_ic,
613 ColumnAndShifts::bitwise_op_id,
614 ColumnAndShifts::bitwise_tag_a };
615};
616
618template <typename FF_>
620
622
624 static constexpr std::string_view NAME = "LOOKUP_SHA256_S_0_XOR_1";
625 static constexpr std::string_view RELATION_NAME = "sha256";
626 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
627 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
628 static constexpr Column DST_SELECTOR = Column::bitwise_start;
629 static constexpr Column COUNTS = Column::lookup_sha256_s_0_xor_1_counts;
630 static constexpr Column INVERSES = Column::lookup_sha256_s_0_xor_1_inv;
631 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
632 ColumnAndShifts::sha256_a_rotr_2_xor_a_rotr_13,
633 ColumnAndShifts::sha256_a_rotr_22,
634 ColumnAndShifts::sha256_s_0,
635 ColumnAndShifts::sha256_xor_sel,
636 ColumnAndShifts::sha256_u32_tag
637 };
638 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
639 ColumnAndShifts::bitwise_acc_ib,
640 ColumnAndShifts::bitwise_acc_ic,
641 ColumnAndShifts::bitwise_op_id,
642 ColumnAndShifts::bitwise_tag_a };
643};
644
646template <typename FF_>
648
650
652 static constexpr std::string_view NAME = "LOOKUP_SHA256_MAJ_AND_0";
653 static constexpr std::string_view RELATION_NAME = "sha256";
654 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
655 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
656 static constexpr Column DST_SELECTOR = Column::bitwise_start;
657 static constexpr Column COUNTS = Column::lookup_sha256_maj_and_0_counts;
658 static constexpr Column INVERSES = Column::lookup_sha256_maj_and_0_inv;
659 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = { ColumnAndShifts::sha256_a,
660 ColumnAndShifts::sha256_b,
661 ColumnAndShifts::sha256_a_and_b,
662 ColumnAndShifts::sha256_and_sel,
663 ColumnAndShifts::sha256_u32_tag };
664 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
665 ColumnAndShifts::bitwise_acc_ib,
666 ColumnAndShifts::bitwise_acc_ic,
667 ColumnAndShifts::bitwise_op_id,
668 ColumnAndShifts::bitwise_tag_a };
669};
670
672template <typename FF_>
674
676
678 static constexpr std::string_view NAME = "LOOKUP_SHA256_MAJ_AND_1";
679 static constexpr std::string_view RELATION_NAME = "sha256";
680 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
681 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
682 static constexpr Column DST_SELECTOR = Column::bitwise_start;
683 static constexpr Column COUNTS = Column::lookup_sha256_maj_and_1_counts;
684 static constexpr Column INVERSES = Column::lookup_sha256_maj_and_1_inv;
685 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = { ColumnAndShifts::sha256_a,
686 ColumnAndShifts::sha256_c,
687 ColumnAndShifts::sha256_a_and_c,
688 ColumnAndShifts::sha256_and_sel,
689 ColumnAndShifts::sha256_u32_tag };
690 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
691 ColumnAndShifts::bitwise_acc_ib,
692 ColumnAndShifts::bitwise_acc_ic,
693 ColumnAndShifts::bitwise_op_id,
694 ColumnAndShifts::bitwise_tag_a };
695};
696
698template <typename FF_>
700
702
704 static constexpr std::string_view NAME = "LOOKUP_SHA256_MAJ_AND_2";
705 static constexpr std::string_view RELATION_NAME = "sha256";
706 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
707 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
708 static constexpr Column DST_SELECTOR = Column::bitwise_start;
709 static constexpr Column COUNTS = Column::lookup_sha256_maj_and_2_counts;
710 static constexpr Column INVERSES = Column::lookup_sha256_maj_and_2_inv;
711 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = { ColumnAndShifts::sha256_b,
712 ColumnAndShifts::sha256_c,
713 ColumnAndShifts::sha256_b_and_c,
714 ColumnAndShifts::sha256_and_sel,
715 ColumnAndShifts::sha256_u32_tag };
716 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
717 ColumnAndShifts::bitwise_acc_ib,
718 ColumnAndShifts::bitwise_acc_ic,
719 ColumnAndShifts::bitwise_op_id,
720 ColumnAndShifts::bitwise_tag_a };
721};
722
724template <typename FF_>
726
728
730 static constexpr std::string_view NAME = "LOOKUP_SHA256_MAJ_XOR_0";
731 static constexpr std::string_view RELATION_NAME = "sha256";
732 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
733 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
734 static constexpr Column DST_SELECTOR = Column::bitwise_start;
735 static constexpr Column COUNTS = Column::lookup_sha256_maj_xor_0_counts;
736 static constexpr Column INVERSES = Column::lookup_sha256_maj_xor_0_inv;
737 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
738 ColumnAndShifts::sha256_a_and_b,
739 ColumnAndShifts::sha256_a_and_c,
740 ColumnAndShifts::sha256_a_and_b_xor_a_and_c,
741 ColumnAndShifts::sha256_xor_sel,
742 ColumnAndShifts::sha256_u32_tag
743 };
744 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
745 ColumnAndShifts::bitwise_acc_ib,
746 ColumnAndShifts::bitwise_acc_ic,
747 ColumnAndShifts::bitwise_op_id,
748 ColumnAndShifts::bitwise_tag_a };
749};
750
752template <typename FF_>
754
756
758 static constexpr std::string_view NAME = "LOOKUP_SHA256_MAJ_XOR_1";
759 static constexpr std::string_view RELATION_NAME = "sha256";
760 static constexpr size_t LOOKUP_TUPLE_SIZE = 5;
761 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
762 static constexpr Column DST_SELECTOR = Column::bitwise_start;
763 static constexpr Column COUNTS = Column::lookup_sha256_maj_xor_1_counts;
764 static constexpr Column INVERSES = Column::lookup_sha256_maj_xor_1_inv;
765 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
766 ColumnAndShifts::sha256_a_and_b_xor_a_and_c,
767 ColumnAndShifts::sha256_b_and_c,
768 ColumnAndShifts::sha256_maj,
769 ColumnAndShifts::sha256_xor_sel,
770 ColumnAndShifts::sha256_u32_tag
771 };
772 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
773 ColumnAndShifts::bitwise_acc_ib,
774 ColumnAndShifts::bitwise_acc_ic,
775 ColumnAndShifts::bitwise_op_id,
776 ColumnAndShifts::bitwise_tag_a };
777};
778
780template <typename FF_>
782
784
786 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_NEXT_A_LHS";
787 static constexpr std::string_view RELATION_NAME = "sha256";
788 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
789 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
790 static constexpr Column DST_SELECTOR = Column::gt_sel;
791 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_next_a_lhs_counts;
792 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_next_a_lhs_inv;
793 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
794 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_next_a_lhs, ColumnAndShifts::sha256_perform_round
795 };
796 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
797 ColumnAndShifts::gt_input_b,
798 ColumnAndShifts::gt_res };
799};
800
802template <typename FF_>
805
807
809 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_NEXT_A_RHS";
810 static constexpr std::string_view RELATION_NAME = "sha256";
811 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
812 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
813 static constexpr Column DST_SELECTOR = Column::gt_sel;
814 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_next_a_rhs_counts;
815 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_next_a_rhs_inv;
816 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
817 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_next_a_rhs, ColumnAndShifts::sha256_perform_round
818 };
819 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
820 ColumnAndShifts::gt_input_b,
821 ColumnAndShifts::gt_res };
822};
823
825template <typename FF_>
828
830
832 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_NEXT_E_LHS";
833 static constexpr std::string_view RELATION_NAME = "sha256";
834 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
835 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
836 static constexpr Column DST_SELECTOR = Column::gt_sel;
837 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_next_e_lhs_counts;
838 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_next_e_lhs_inv;
839 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
840 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_next_e_lhs, ColumnAndShifts::sha256_perform_round
841 };
842 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
843 ColumnAndShifts::gt_input_b,
844 ColumnAndShifts::gt_res };
845};
846
848template <typename FF_>
851
853
855 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_NEXT_E_RHS";
856 static constexpr std::string_view RELATION_NAME = "sha256";
857 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
858 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
859 static constexpr Column DST_SELECTOR = Column::gt_sel;
860 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_next_e_rhs_counts;
861 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_next_e_rhs_inv;
862 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
863 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_next_e_rhs, ColumnAndShifts::sha256_perform_round
864 };
865 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
866 ColumnAndShifts::gt_input_b,
867 ColumnAndShifts::gt_res };
868};
869
871template <typename FF_>
874
876
878 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_A_LHS";
879 static constexpr std::string_view RELATION_NAME = "sha256";
880 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
881 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
882 static constexpr Column DST_SELECTOR = Column::gt_sel;
883 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_a_lhs_counts;
884 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_a_lhs_inv;
885 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
886 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_a_lhs, ColumnAndShifts::sha256_perform_round
887 };
888 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
889 ColumnAndShifts::gt_input_b,
890 ColumnAndShifts::gt_res };
891};
892
894template <typename FF_>
896
898
900 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_A_RHS";
901 static constexpr std::string_view RELATION_NAME = "sha256";
902 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
903 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
904 static constexpr Column DST_SELECTOR = Column::gt_sel;
905 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_a_rhs_counts;
906 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_a_rhs_inv;
907 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
908 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_a_rhs, ColumnAndShifts::sha256_perform_round
909 };
910 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
911 ColumnAndShifts::gt_input_b,
912 ColumnAndShifts::gt_res };
913};
914
916template <typename FF_>
918
920
922 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_B_LHS";
923 static constexpr std::string_view RELATION_NAME = "sha256";
924 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
925 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
926 static constexpr Column DST_SELECTOR = Column::gt_sel;
927 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_b_lhs_counts;
928 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_b_lhs_inv;
929 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
930 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_b_lhs, ColumnAndShifts::sha256_perform_round
931 };
932 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
933 ColumnAndShifts::gt_input_b,
934 ColumnAndShifts::gt_res };
935};
936
938template <typename FF_>
940
942
944 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_B_RHS";
945 static constexpr std::string_view RELATION_NAME = "sha256";
946 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
947 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
948 static constexpr Column DST_SELECTOR = Column::gt_sel;
949 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_b_rhs_counts;
950 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_b_rhs_inv;
951 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
952 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_b_rhs, ColumnAndShifts::sha256_perform_round
953 };
954 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
955 ColumnAndShifts::gt_input_b,
956 ColumnAndShifts::gt_res };
957};
958
960template <typename FF_>
962
964
966 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_C_LHS";
967 static constexpr std::string_view RELATION_NAME = "sha256";
968 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
969 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
970 static constexpr Column DST_SELECTOR = Column::gt_sel;
971 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_c_lhs_counts;
972 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_c_lhs_inv;
973 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
974 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_c_lhs, ColumnAndShifts::sha256_perform_round
975 };
976 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
977 ColumnAndShifts::gt_input_b,
978 ColumnAndShifts::gt_res };
979};
980
982template <typename FF_>
984
986
988 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_C_RHS";
989 static constexpr std::string_view RELATION_NAME = "sha256";
990 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
991 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
992 static constexpr Column DST_SELECTOR = Column::gt_sel;
993 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_c_rhs_counts;
994 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_c_rhs_inv;
995 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
996 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_c_rhs, ColumnAndShifts::sha256_perform_round
997 };
998 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
999 ColumnAndShifts::gt_input_b,
1000 ColumnAndShifts::gt_res };
1001};
1002
1004template <typename FF_>
1006
1008
1010 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_D_LHS";
1011 static constexpr std::string_view RELATION_NAME = "sha256";
1012 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
1013 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
1014 static constexpr Column DST_SELECTOR = Column::gt_sel;
1015 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_d_lhs_counts;
1016 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_d_lhs_inv;
1017 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
1018 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_d_lhs, ColumnAndShifts::sha256_perform_round
1019 };
1020 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1021 ColumnAndShifts::gt_input_b,
1022 ColumnAndShifts::gt_res };
1023};
1024
1026template <typename FF_>
1028
1030
1032 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_D_RHS";
1033 static constexpr std::string_view RELATION_NAME = "sha256";
1034 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
1035 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
1036 static constexpr Column DST_SELECTOR = Column::gt_sel;
1037 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_d_rhs_counts;
1038 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_d_rhs_inv;
1039 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
1040 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_d_rhs, ColumnAndShifts::sha256_perform_round
1041 };
1042 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1043 ColumnAndShifts::gt_input_b,
1044 ColumnAndShifts::gt_res };
1045};
1046
1048template <typename FF_>
1050
1052
1054 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_E_LHS";
1055 static constexpr std::string_view RELATION_NAME = "sha256";
1056 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
1057 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
1058 static constexpr Column DST_SELECTOR = Column::gt_sel;
1059 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_e_lhs_counts;
1060 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_e_lhs_inv;
1061 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
1062 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_e_lhs, ColumnAndShifts::sha256_perform_round
1063 };
1064 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1065 ColumnAndShifts::gt_input_b,
1066 ColumnAndShifts::gt_res };
1067};
1068
1070template <typename FF_>
1072
1074
1076 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_E_RHS";
1077 static constexpr std::string_view RELATION_NAME = "sha256";
1078 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
1079 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
1080 static constexpr Column DST_SELECTOR = Column::gt_sel;
1081 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_e_rhs_counts;
1082 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_e_rhs_inv;
1083 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
1084 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_e_rhs, ColumnAndShifts::sha256_perform_round
1085 };
1086 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1087 ColumnAndShifts::gt_input_b,
1088 ColumnAndShifts::gt_res };
1089};
1090
1092template <typename FF_>
1094
1096
1098 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_F_LHS";
1099 static constexpr std::string_view RELATION_NAME = "sha256";
1100 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
1101 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
1102 static constexpr Column DST_SELECTOR = Column::gt_sel;
1103 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_f_lhs_counts;
1104 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_f_lhs_inv;
1105 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
1106 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_f_lhs, ColumnAndShifts::sha256_perform_round
1107 };
1108 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1109 ColumnAndShifts::gt_input_b,
1110 ColumnAndShifts::gt_res };
1111};
1112
1114template <typename FF_>
1116
1118
1120 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_F_RHS";
1121 static constexpr std::string_view RELATION_NAME = "sha256";
1122 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
1123 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
1124 static constexpr Column DST_SELECTOR = Column::gt_sel;
1125 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_f_rhs_counts;
1126 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_f_rhs_inv;
1127 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
1128 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_f_rhs, ColumnAndShifts::sha256_perform_round
1129 };
1130 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1131 ColumnAndShifts::gt_input_b,
1132 ColumnAndShifts::gt_res };
1133};
1134
1136template <typename FF_>
1138
1140
1142 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_G_LHS";
1143 static constexpr std::string_view RELATION_NAME = "sha256";
1144 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
1145 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
1146 static constexpr Column DST_SELECTOR = Column::gt_sel;
1147 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_g_lhs_counts;
1148 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_g_lhs_inv;
1149 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
1150 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_g_lhs, ColumnAndShifts::sha256_perform_round
1151 };
1152 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1153 ColumnAndShifts::gt_input_b,
1154 ColumnAndShifts::gt_res };
1155};
1156
1158template <typename FF_>
1160
1162
1164 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_G_RHS";
1165 static constexpr std::string_view RELATION_NAME = "sha256";
1166 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
1167 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
1168 static constexpr Column DST_SELECTOR = Column::gt_sel;
1169 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_g_rhs_counts;
1170 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_g_rhs_inv;
1171 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
1172 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_g_rhs, ColumnAndShifts::sha256_perform_round
1173 };
1174 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1175 ColumnAndShifts::gt_input_b,
1176 ColumnAndShifts::gt_res };
1177};
1178
1180template <typename FF_>
1182
1184
1186 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_H_LHS";
1187 static constexpr std::string_view RELATION_NAME = "sha256";
1188 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
1189 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
1190 static constexpr Column DST_SELECTOR = Column::gt_sel;
1191 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_h_lhs_counts;
1192 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_h_lhs_inv;
1193 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
1194 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_h_lhs, ColumnAndShifts::sha256_perform_round
1195 };
1196 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1197 ColumnAndShifts::gt_input_b,
1198 ColumnAndShifts::gt_res };
1199};
1200
1202template <typename FF_>
1204
1206
1208 static constexpr std::string_view NAME = "LOOKUP_SHA256_RANGE_COMP_H_RHS";
1209 static constexpr std::string_view RELATION_NAME = "sha256";
1210 static constexpr size_t LOOKUP_TUPLE_SIZE = 3;
1211 static constexpr Column SRC_SELECTOR = Column::sha256_perform_round;
1212 static constexpr Column DST_SELECTOR = Column::gt_sel;
1213 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_h_rhs_counts;
1214 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_h_rhs_inv;
1215 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> SRC_COLUMNS = {
1216 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_h_rhs, ColumnAndShifts::sha256_perform_round
1217 };
1218 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE> DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1219 ColumnAndShifts::gt_input_b,
1220 ColumnAndShifts::gt_res };
1221};
1222
1224template <typename FF_>
1226
1227} // namespace bb::avm2
This file contains the template for the generic lookup that can be specialized to enforce various loo...
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr std::string_view RELATION_NAME
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::string_view NAME
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
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::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
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 > 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 > 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 > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view RELATION_NAME
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::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
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::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
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::string_view RELATION_NAME
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::string_view RELATION_NAME
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
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::string_view NAME
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS