8#include "../columns.hpp"
17 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_W_LHS";
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
29 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
30 ColumnAndShifts::gt_input_b,
31 ColumnAndShifts::gt_res };
35template <
typename FF_>
41 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_W_RHS";
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
53 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
54 ColumnAndShifts::gt_input_b,
55 ColumnAndShifts::gt_res };
59template <
typename FF_>
65 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_W_7";
70 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_7_counts;
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
75 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
76 ColumnAndShifts::gt_input_b,
77 ColumnAndShifts::gt_res };
81template <
typename FF_>
87 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_W_18";
92 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_18_counts;
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
97 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
98 ColumnAndShifts::gt_input_b,
99 ColumnAndShifts::gt_res };
103template <
typename FF_>
109 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_W_3";
114 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_3_counts;
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
119 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
120 ColumnAndShifts::gt_input_b,
121 ColumnAndShifts::gt_res };
125template <
typename FF_>
131 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_W_S_0_XOR_0";
136 static constexpr Column COUNTS = Column::lookup_sha256_w_s_0_xor_0_counts;
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
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 };
153template <
typename FF_>
159 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_W_S_0_XOR_1";
164 static constexpr Column COUNTS = Column::lookup_sha256_w_s_0_xor_1_counts;
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
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 };
181template <
typename FF_>
187 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_W_17";
192 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_17_counts;
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
197 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
198 ColumnAndShifts::gt_input_b,
199 ColumnAndShifts::gt_res };
203template <
typename FF_>
209 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_W_19";
214 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_19_counts;
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
219 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
220 ColumnAndShifts::gt_input_b,
221 ColumnAndShifts::gt_res };
225template <
typename FF_>
231 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_W_10";
236 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_10_counts;
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
241 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
242 ColumnAndShifts::gt_input_b,
243 ColumnAndShifts::gt_res };
247template <
typename FF_>
253 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_W_S_1_XOR_0";
258 static constexpr Column COUNTS = Column::lookup_sha256_w_s_1_xor_0_counts;
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
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 };
275template <
typename FF_>
281 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_W_S_1_XOR_1";
286 static constexpr Column COUNTS = Column::lookup_sha256_w_s_1_xor_1_counts;
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
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
303template <
typename FF_>
309 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_E_6";
314 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_e_6_counts;
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
319 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
320 ColumnAndShifts::gt_input_b,
321 ColumnAndShifts::gt_res };
325template <
typename FF_>
331 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_E_11";
336 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_e_11_counts;
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
341 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
342 ColumnAndShifts::gt_input_b,
343 ColumnAndShifts::gt_res };
347template <
typename FF_>
353 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_E_25";
358 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_e_25_counts;
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
363 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
364 ColumnAndShifts::gt_input_b,
365 ColumnAndShifts::gt_res };
369template <
typename FF_>
375 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_S_1_XOR_0";
380 static constexpr Column COUNTS = Column::lookup_sha256_s_1_xor_0_counts;
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
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 };
397template <
typename FF_>
403 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_S_1_XOR_1";
408 static constexpr Column COUNTS = Column::lookup_sha256_s_1_xor_1_counts;
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
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 };
425template <
typename FF_>
431 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_CH_AND_0";
436 static constexpr Column COUNTS = Column::lookup_sha256_ch_and_0_counts;
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 };
451template <
typename FF_>
457 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_CH_AND_1";
462 static constexpr Column COUNTS = Column::lookup_sha256_ch_and_1_counts;
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 };
477template <
typename FF_>
483 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_CH_XOR";
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 };
508 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_ROUND_CONSTANT";
513 static constexpr Column COUNTS = Column::lookup_sha256_round_constant_counts;
515 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
516 ColumnAndShifts::sha256_round_count, ColumnAndShifts::sha256_round_constant
518 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
519 ColumnAndShifts::precomputed_clk, ColumnAndShifts::precomputed_sha256_compression_round_constant
524template <
typename FF_>
530 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_A_2";
535 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_a_2_counts;
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
540 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
541 ColumnAndShifts::gt_input_b,
542 ColumnAndShifts::gt_res };
546template <
typename FF_>
552 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_A_13";
557 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_a_13_counts;
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
562 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
563 ColumnAndShifts::gt_input_b,
564 ColumnAndShifts::gt_res };
568template <
typename FF_>
574 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_A_22";
579 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_a_22_counts;
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
584 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
585 ColumnAndShifts::gt_input_b,
586 ColumnAndShifts::gt_res };
590template <
typename FF_>
596 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_S_0_XOR_0";
601 static constexpr Column COUNTS = Column::lookup_sha256_s_0_xor_0_counts;
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
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 };
618template <
typename FF_>
624 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_S_0_XOR_1";
629 static constexpr Column COUNTS = Column::lookup_sha256_s_0_xor_1_counts;
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
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 };
646template <
typename FF_>
652 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_MAJ_AND_0";
657 static constexpr Column COUNTS = Column::lookup_sha256_maj_and_0_counts;
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 };
672template <
typename FF_>
678 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_MAJ_AND_1";
683 static constexpr Column COUNTS = Column::lookup_sha256_maj_and_1_counts;
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 };
698template <
typename FF_>
704 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_MAJ_AND_2";
709 static constexpr Column COUNTS = Column::lookup_sha256_maj_and_2_counts;
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 };
724template <
typename FF_>
730 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_MAJ_XOR_0";
735 static constexpr Column COUNTS = Column::lookup_sha256_maj_xor_0_counts;
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
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 };
752template <
typename FF_>
758 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_MAJ_XOR_1";
763 static constexpr Column COUNTS = Column::lookup_sha256_maj_xor_1_counts;
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
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 };
780template <
typename FF_>
786 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_NEXT_A_LHS";
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
796 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
797 ColumnAndShifts::gt_input_b,
798 ColumnAndShifts::gt_res };
802template <
typename FF_>
809 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_NEXT_A_RHS";
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
819 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
820 ColumnAndShifts::gt_input_b,
821 ColumnAndShifts::gt_res };
825template <
typename FF_>
832 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_NEXT_E_LHS";
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
842 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
843 ColumnAndShifts::gt_input_b,
844 ColumnAndShifts::gt_res };
848template <
typename FF_>
855 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_NEXT_E_RHS";
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
865 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
866 ColumnAndShifts::gt_input_b,
867 ColumnAndShifts::gt_res };
871template <
typename FF_>
878 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_A_LHS";
883 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_a_lhs_counts;
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
888 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
889 ColumnAndShifts::gt_input_b,
890 ColumnAndShifts::gt_res };
894template <
typename FF_>
900 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_A_RHS";
905 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_a_rhs_counts;
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
910 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
911 ColumnAndShifts::gt_input_b,
912 ColumnAndShifts::gt_res };
916template <
typename FF_>
922 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_B_LHS";
927 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_b_lhs_counts;
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
932 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
933 ColumnAndShifts::gt_input_b,
934 ColumnAndShifts::gt_res };
938template <
typename FF_>
944 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_B_RHS";
949 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_b_rhs_counts;
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
954 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
955 ColumnAndShifts::gt_input_b,
956 ColumnAndShifts::gt_res };
960template <
typename FF_>
966 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_C_LHS";
971 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_c_lhs_counts;
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
976 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
977 ColumnAndShifts::gt_input_b,
978 ColumnAndShifts::gt_res };
982template <
typename FF_>
988 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_C_RHS";
993 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_c_rhs_counts;
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
998 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
999 ColumnAndShifts::gt_input_b,
1000 ColumnAndShifts::gt_res };
1004template <
typename FF_>
1010 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_D_LHS";
1015 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_d_lhs_counts;
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
1020 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1021 ColumnAndShifts::gt_input_b,
1022 ColumnAndShifts::gt_res };
1026template <
typename FF_>
1032 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_D_RHS";
1037 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_d_rhs_counts;
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
1042 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1043 ColumnAndShifts::gt_input_b,
1044 ColumnAndShifts::gt_res };
1048template <
typename FF_>
1054 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_E_LHS";
1059 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_e_lhs_counts;
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
1064 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1065 ColumnAndShifts::gt_input_b,
1066 ColumnAndShifts::gt_res };
1070template <
typename FF_>
1076 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_E_RHS";
1081 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_e_rhs_counts;
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
1086 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1087 ColumnAndShifts::gt_input_b,
1088 ColumnAndShifts::gt_res };
1092template <
typename FF_>
1098 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_F_LHS";
1103 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_f_lhs_counts;
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
1108 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1109 ColumnAndShifts::gt_input_b,
1110 ColumnAndShifts::gt_res };
1114template <
typename FF_>
1120 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_F_RHS";
1125 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_f_rhs_counts;
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
1130 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1131 ColumnAndShifts::gt_input_b,
1132 ColumnAndShifts::gt_res };
1136template <
typename FF_>
1142 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_G_LHS";
1147 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_g_lhs_counts;
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
1152 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1153 ColumnAndShifts::gt_input_b,
1154 ColumnAndShifts::gt_res };
1158template <
typename FF_>
1164 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_G_RHS";
1169 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_g_rhs_counts;
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
1174 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1175 ColumnAndShifts::gt_input_b,
1176 ColumnAndShifts::gt_res };
1180template <
typename FF_>
1186 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_H_LHS";
1191 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_h_lhs_counts;
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
1196 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1197 ColumnAndShifts::gt_input_b,
1198 ColumnAndShifts::gt_res };
1202template <
typename FF_>
1208 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_H_RHS";
1213 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_h_rhs_counts;
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
1218 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1219 ColumnAndShifts::gt_input_b,
1220 ColumnAndShifts::gt_res };
1224template <
typename FF_>
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 Column COUNTS
static constexpr Column INVERSES
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column DST_SELECTOR
static constexpr std::string_view NAME
static constexpr Column SRC_SELECTOR
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 Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr Column INVERSES
static constexpr Column DST_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column DST_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column COUNTS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column INVERSES
static constexpr Column DST_SELECTOR
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr Column DST_SELECTOR
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column COUNTS
static constexpr std::string_view NAME
static constexpr std::string_view RELATION_NAME
static constexpr Column SRC_SELECTOR
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column COUNTS
static constexpr std::string_view NAME
static constexpr std::string_view RELATION_NAME
static constexpr Column INVERSES
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr std::string_view NAME
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr Column SRC_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr Column COUNTS
static constexpr std::string_view RELATION_NAME
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view NAME
static constexpr Column COUNTS
static constexpr std::string_view RELATION_NAME
static constexpr Column COUNTS
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr Column SRC_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view NAME
static constexpr Column COUNTS
static constexpr Column INVERSES
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view NAME
static constexpr Column DST_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr Column COUNTS
static constexpr std::string_view NAME
static constexpr Column DST_SELECTOR
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 size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr Column COUNTS
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column INVERSES
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column COUNTS
static constexpr std::string_view NAME
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr Column SRC_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column COUNTS
static constexpr std::string_view RELATION_NAME
static constexpr Column DST_SELECTOR
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 Column SRC_SELECTOR
static constexpr Column INVERSES
static constexpr Column INVERSES
static constexpr Column SRC_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr Column COUNTS
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::string_view NAME
static constexpr Column INVERSES
static constexpr Column DST_SELECTOR
static constexpr Column COUNTS
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column SRC_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column INVERSES
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column SRC_SELECTOR
static constexpr Column COUNTS
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 NAME
static constexpr Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column DST_SELECTOR
static constexpr Column INVERSES
static constexpr std::string_view RELATION_NAME
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column INVERSES
static constexpr Column COUNTS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column DST_SELECTOR
static constexpr std::string_view NAME
static constexpr std::string_view RELATION_NAME
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column COUNTS
static constexpr Column SRC_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr Column INVERSES
static constexpr std::string_view RELATION_NAME
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view NAME
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column INVERSES
static constexpr Column COUNTS
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view RELATION_NAME
static constexpr Column COUNTS
static constexpr Column INVERSES
static constexpr std::string_view NAME
static constexpr std::string_view RELATION_NAME
static constexpr Column COUNTS
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view NAME
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column INVERSES
static constexpr std::string_view NAME
static constexpr Column INVERSES
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
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 Column COUNTS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr size_t LOOKUP_TUPLE_SIZE
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 Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column COUNTS
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column COUNTS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view RELATION_NAME
static constexpr Column INVERSES
static constexpr std::string_view NAME
static constexpr Column DST_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column SRC_SELECTOR
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 Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view NAME
static constexpr Column COUNTS
static constexpr Column INVERSES
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr Column COUNTS
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column COUNTS
static constexpr Column SRC_SELECTOR
static constexpr std::string_view NAME
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column DST_SELECTOR
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 Column INVERSES
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view NAME
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column DST_SELECTOR
static constexpr Column SRC_SELECTOR
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::string_view RELATION_NAME
static constexpr Column COUNTS
static constexpr Column DST_SELECTOR
static constexpr std::string_view NAME
static constexpr Column INVERSES
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column SRC_SELECTOR
static constexpr Column COUNTS
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 size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr std::string_view RELATION_NAME
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column COUNTS
static constexpr std::string_view NAME
static constexpr Column DST_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr Column INVERSES
static constexpr std::string_view RELATION_NAME
static constexpr Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column COUNTS
static constexpr std::string_view RELATION_NAME
static constexpr Column INVERSES
static constexpr std::string_view NAME
static constexpr Column DST_SELECTOR
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column SRC_SELECTOR
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 Column DST_SELECTOR
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column COUNTS
static constexpr Column INVERSES
static constexpr Column SRC_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view RELATION_NAME
static constexpr std::string_view NAME
static constexpr Column DST_SELECTOR
static constexpr Column COUNTS
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::string_view NAME
static constexpr Column COUNTS
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column SRC_SELECTOR
static constexpr Column DST_SELECTOR
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr std::string_view NAME
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr Column DST_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr Column DST_SELECTOR
static constexpr std::string_view RELATION_NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column COUNTS
static constexpr Column INVERSES
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column SRC_SELECTOR
static constexpr std::string_view NAME
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
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 Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr Column COUNTS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr Column COUNTS
static constexpr std::string_view NAME
static constexpr Column DST_SELECTOR
static constexpr Column INVERSES
static constexpr std::string_view RELATION_NAME
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column DST_SELECTOR
static constexpr Column INVERSES
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr Column SRC_SELECTOR
static constexpr Column COUNTS
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 size_t LOOKUP_TUPLE_SIZE
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr Column COUNTS
static constexpr std::string_view NAME
static constexpr Column DST_SELECTOR
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 Column DST_SELECTOR
static constexpr Column COUNTS
static constexpr Column SRC_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column INVERSES
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column COUNTS
static constexpr std::string_view RELATION_NAME
static constexpr Column DST_SELECTOR
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 Column INVERSES
static constexpr Column SRC_SELECTOR
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view NAME
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr Column COUNTS
static constexpr Column INVERSES
static constexpr std::string_view RELATION_NAME
static constexpr Column DST_SELECTOR
static constexpr Column INVERSES
static constexpr std::string_view RELATION_NAME
static constexpr size_t LOOKUP_TUPLE_SIZE
static constexpr std::string_view NAME
static constexpr Column COUNTS
static constexpr Column DST_SELECTOR
static constexpr Column SRC_SELECTOR
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > SRC_COLUMNS
static constexpr std::array< ColumnAndShifts, LOOKUP_TUPLE_SIZE > DST_COLUMNS