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_computed_w_lhs
27 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::precomputed_idx };
31template <
typename FF_>
37 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_W_RHS";
42 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_w_rhs_counts;
43 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_w_rhs_inv;
44 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
45 ColumnAndShifts::sha256_two_pow_32,
46 ColumnAndShifts::sha256_computed_w_rhs,
47 ColumnAndShifts::sha256_sel_compute_w
49 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
50 ColumnAndShifts::gt_input_b,
51 ColumnAndShifts::gt_res };
55template <
typename FF_>
61 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_W_7";
66 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_7_counts;
68 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
69 ColumnAndShifts::sha256_two_pow_7, ColumnAndShifts::sha256_rhs_w_7, ColumnAndShifts::sha256_sel_compute_w
71 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
72 ColumnAndShifts::gt_input_b,
73 ColumnAndShifts::gt_res };
77template <
typename FF_>
83 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_W_18";
88 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_18_counts;
90 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
91 ColumnAndShifts::sha256_two_pow_18, ColumnAndShifts::sha256_rhs_w_18, ColumnAndShifts::sha256_sel_compute_w
93 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
94 ColumnAndShifts::gt_input_b,
95 ColumnAndShifts::gt_res };
99template <
typename FF_>
105 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_W_3";
110 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_3_counts;
112 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
113 ColumnAndShifts::sha256_two_pow_3, ColumnAndShifts::sha256_rhs_w_3, ColumnAndShifts::sha256_sel_compute_w
115 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
116 ColumnAndShifts::gt_input_b,
117 ColumnAndShifts::gt_res };
121template <
typename FF_>
127 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_W_S_0_XOR_0";
132 static constexpr Column COUNTS = Column::lookup_sha256_w_s_0_xor_0_counts;
134 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
135 ColumnAndShifts::sha256_w_15_rotr_7,
136 ColumnAndShifts::sha256_w_15_rotr_18,
137 ColumnAndShifts::sha256_w_15_rotr_7_xor_w_15_rotr_18,
138 ColumnAndShifts::sha256_xor_op_id,
139 ColumnAndShifts::sha256_u32_tag
141 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
142 ColumnAndShifts::bitwise_acc_ib,
143 ColumnAndShifts::bitwise_acc_ic,
144 ColumnAndShifts::bitwise_op_id,
145 ColumnAndShifts::bitwise_tag_a };
149template <
typename FF_>
155 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_W_S_0_XOR_1";
160 static constexpr Column COUNTS = Column::lookup_sha256_w_s_0_xor_1_counts;
162 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
163 ColumnAndShifts::sha256_w_15_rotr_7_xor_w_15_rotr_18,
164 ColumnAndShifts::sha256_lhs_w_3,
165 ColumnAndShifts::sha256_w_s_0,
166 ColumnAndShifts::sha256_xor_op_id,
167 ColumnAndShifts::sha256_u32_tag
169 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
170 ColumnAndShifts::bitwise_acc_ib,
171 ColumnAndShifts::bitwise_acc_ic,
172 ColumnAndShifts::bitwise_op_id,
173 ColumnAndShifts::bitwise_tag_a };
177template <
typename FF_>
183 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_W_17";
188 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_17_counts;
190 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
191 ColumnAndShifts::sha256_two_pow_17, ColumnAndShifts::sha256_rhs_w_17, ColumnAndShifts::sha256_sel_compute_w
193 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
194 ColumnAndShifts::gt_input_b,
195 ColumnAndShifts::gt_res };
199template <
typename FF_>
205 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_W_19";
210 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_19_counts;
212 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
213 ColumnAndShifts::sha256_two_pow_19, ColumnAndShifts::sha256_rhs_w_19, ColumnAndShifts::sha256_sel_compute_w
215 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
216 ColumnAndShifts::gt_input_b,
217 ColumnAndShifts::gt_res };
221template <
typename FF_>
227 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_W_10";
232 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_w_10_counts;
234 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
235 ColumnAndShifts::sha256_two_pow_10, ColumnAndShifts::sha256_rhs_w_10, ColumnAndShifts::sha256_sel_compute_w
237 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
238 ColumnAndShifts::gt_input_b,
239 ColumnAndShifts::gt_res };
243template <
typename FF_>
249 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_W_S_1_XOR_0";
254 static constexpr Column COUNTS = Column::lookup_sha256_w_s_1_xor_0_counts;
256 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
257 ColumnAndShifts::sha256_w_2_rotr_17,
258 ColumnAndShifts::sha256_w_2_rotr_19,
259 ColumnAndShifts::sha256_w_2_rotr_17_xor_w_2_rotr_19,
260 ColumnAndShifts::sha256_xor_op_id,
261 ColumnAndShifts::sha256_u32_tag
263 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
264 ColumnAndShifts::bitwise_acc_ib,
265 ColumnAndShifts::bitwise_acc_ic,
266 ColumnAndShifts::bitwise_op_id,
267 ColumnAndShifts::bitwise_tag_a };
271template <
typename FF_>
277 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_W_S_1_XOR_1";
282 static constexpr Column COUNTS = Column::lookup_sha256_w_s_1_xor_1_counts;
284 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
285 ColumnAndShifts::sha256_w_2_rotr_17_xor_w_2_rotr_19,
286 ColumnAndShifts::sha256_lhs_w_10,
287 ColumnAndShifts::sha256_w_s_1,
288 ColumnAndShifts::sha256_xor_op_id,
289 ColumnAndShifts::sha256_u32_tag
291 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
292 ColumnAndShifts::bitwise_acc_ib,
293 ColumnAndShifts::bitwise_acc_ic,
294 ColumnAndShifts::bitwise_op_id,
295 ColumnAndShifts::bitwise_tag_a };
299template <
typename FF_>
305 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_E_6";
310 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_e_6_counts;
312 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
313 ColumnAndShifts::sha256_two_pow_6, ColumnAndShifts::sha256_rhs_e_6, ColumnAndShifts::sha256_perform_round
315 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
316 ColumnAndShifts::gt_input_b,
317 ColumnAndShifts::gt_res };
321template <
typename FF_>
327 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_E_11";
332 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_e_11_counts;
334 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
335 ColumnAndShifts::sha256_two_pow_11, ColumnAndShifts::sha256_rhs_e_11, ColumnAndShifts::sha256_perform_round
337 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
338 ColumnAndShifts::gt_input_b,
339 ColumnAndShifts::gt_res };
343template <
typename FF_>
349 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_E_25";
354 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_e_25_counts;
356 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
357 ColumnAndShifts::sha256_two_pow_25, ColumnAndShifts::sha256_rhs_e_25, ColumnAndShifts::sha256_perform_round
359 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
360 ColumnAndShifts::gt_input_b,
361 ColumnAndShifts::gt_res };
365template <
typename FF_>
371 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_S_1_XOR_0";
376 static constexpr Column COUNTS = Column::lookup_sha256_s_1_xor_0_counts;
378 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
379 ColumnAndShifts::sha256_e_rotr_6,
380 ColumnAndShifts::sha256_e_rotr_11,
381 ColumnAndShifts::sha256_e_rotr_6_xor_e_rotr_11,
382 ColumnAndShifts::sha256_xor_op_id,
383 ColumnAndShifts::sha256_u32_tag
385 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
386 ColumnAndShifts::bitwise_acc_ib,
387 ColumnAndShifts::bitwise_acc_ic,
388 ColumnAndShifts::bitwise_op_id,
389 ColumnAndShifts::bitwise_tag_a };
393template <
typename FF_>
399 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_S_1_XOR_1";
404 static constexpr Column COUNTS = Column::lookup_sha256_s_1_xor_1_counts;
406 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
407 ColumnAndShifts::sha256_e_rotr_6_xor_e_rotr_11,
408 ColumnAndShifts::sha256_e_rotr_25,
409 ColumnAndShifts::sha256_s_1,
410 ColumnAndShifts::sha256_xor_op_id,
411 ColumnAndShifts::sha256_u32_tag
413 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
414 ColumnAndShifts::bitwise_acc_ib,
415 ColumnAndShifts::bitwise_acc_ic,
416 ColumnAndShifts::bitwise_op_id,
417 ColumnAndShifts::bitwise_tag_a };
421template <
typename FF_>
427 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_CH_AND_0";
432 static constexpr Column COUNTS = Column::lookup_sha256_ch_and_0_counts;
434 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = { ColumnAndShifts::sha256_e,
435 ColumnAndShifts::sha256_f,
436 ColumnAndShifts::sha256_e_and_f,
437 ColumnAndShifts::sha256_and_op_id,
438 ColumnAndShifts::sha256_u32_tag };
439 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
440 ColumnAndShifts::bitwise_acc_ib,
441 ColumnAndShifts::bitwise_acc_ic,
442 ColumnAndShifts::bitwise_op_id,
443 ColumnAndShifts::bitwise_tag_a };
447template <
typename FF_>
453 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_CH_AND_1";
458 static constexpr Column COUNTS = Column::lookup_sha256_ch_and_1_counts;
460 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = { ColumnAndShifts::sha256_not_e,
461 ColumnAndShifts::sha256_g,
462 ColumnAndShifts::sha256_not_e_and_g,
463 ColumnAndShifts::sha256_and_op_id,
464 ColumnAndShifts::sha256_u32_tag };
465 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
466 ColumnAndShifts::bitwise_acc_ib,
467 ColumnAndShifts::bitwise_acc_ic,
468 ColumnAndShifts::bitwise_op_id,
469 ColumnAndShifts::bitwise_tag_a };
473template <
typename FF_>
479 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_CH_XOR";
486 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = { ColumnAndShifts::sha256_e_and_f,
487 ColumnAndShifts::sha256_not_e_and_g,
488 ColumnAndShifts::sha256_ch,
489 ColumnAndShifts::sha256_xor_op_id,
490 ColumnAndShifts::sha256_u32_tag };
491 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
492 ColumnAndShifts::bitwise_acc_ib,
493 ColumnAndShifts::bitwise_acc_ic,
494 ColumnAndShifts::bitwise_op_id,
495 ColumnAndShifts::bitwise_tag_a };
504 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_ROUND_CONSTANT";
509 static constexpr Column COUNTS = Column::lookup_sha256_round_constant_counts;
511 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
512 ColumnAndShifts::sha256_round_count, ColumnAndShifts::sha256_round_constant
514 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = {
515 ColumnAndShifts::precomputed_idx, ColumnAndShifts::precomputed_sha256_compression_round_constant
520template <
typename FF_>
526 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_A_2";
531 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_a_2_counts;
533 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
534 ColumnAndShifts::sha256_two_pow_2, ColumnAndShifts::sha256_rhs_a_2, ColumnAndShifts::sha256_perform_round
536 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
537 ColumnAndShifts::gt_input_b,
538 ColumnAndShifts::gt_res };
542template <
typename FF_>
548 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_A_13";
553 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_a_13_counts;
555 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
556 ColumnAndShifts::sha256_two_pow_13, ColumnAndShifts::sha256_rhs_a_13, ColumnAndShifts::sha256_perform_round
558 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
559 ColumnAndShifts::gt_input_b,
560 ColumnAndShifts::gt_res };
564template <
typename FF_>
570 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_RHS_A_22";
575 static constexpr Column COUNTS = Column::lookup_sha256_range_rhs_a_22_counts;
577 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
578 ColumnAndShifts::sha256_two_pow_22, ColumnAndShifts::sha256_rhs_a_22, ColumnAndShifts::sha256_perform_round
580 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
581 ColumnAndShifts::gt_input_b,
582 ColumnAndShifts::gt_res };
586template <
typename FF_>
592 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_S_0_XOR_0";
597 static constexpr Column COUNTS = Column::lookup_sha256_s_0_xor_0_counts;
599 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
600 ColumnAndShifts::sha256_a_rotr_2,
601 ColumnAndShifts::sha256_a_rotr_13,
602 ColumnAndShifts::sha256_a_rotr_2_xor_a_rotr_13,
603 ColumnAndShifts::sha256_xor_op_id,
604 ColumnAndShifts::sha256_u32_tag
606 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
607 ColumnAndShifts::bitwise_acc_ib,
608 ColumnAndShifts::bitwise_acc_ic,
609 ColumnAndShifts::bitwise_op_id,
610 ColumnAndShifts::bitwise_tag_a };
614template <
typename FF_>
620 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_S_0_XOR_1";
625 static constexpr Column COUNTS = Column::lookup_sha256_s_0_xor_1_counts;
627 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
628 ColumnAndShifts::sha256_a_rotr_2_xor_a_rotr_13,
629 ColumnAndShifts::sha256_a_rotr_22,
630 ColumnAndShifts::sha256_s_0,
631 ColumnAndShifts::sha256_xor_op_id,
632 ColumnAndShifts::sha256_u32_tag
634 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
635 ColumnAndShifts::bitwise_acc_ib,
636 ColumnAndShifts::bitwise_acc_ic,
637 ColumnAndShifts::bitwise_op_id,
638 ColumnAndShifts::bitwise_tag_a };
642template <
typename FF_>
648 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_MAJ_AND_0";
653 static constexpr Column COUNTS = Column::lookup_sha256_maj_and_0_counts;
655 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = { ColumnAndShifts::sha256_a,
656 ColumnAndShifts::sha256_b,
657 ColumnAndShifts::sha256_a_and_b,
658 ColumnAndShifts::sha256_and_op_id,
659 ColumnAndShifts::sha256_u32_tag };
660 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
661 ColumnAndShifts::bitwise_acc_ib,
662 ColumnAndShifts::bitwise_acc_ic,
663 ColumnAndShifts::bitwise_op_id,
664 ColumnAndShifts::bitwise_tag_a };
668template <
typename FF_>
674 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_MAJ_AND_1";
679 static constexpr Column COUNTS = Column::lookup_sha256_maj_and_1_counts;
681 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = { ColumnAndShifts::sha256_a,
682 ColumnAndShifts::sha256_c,
683 ColumnAndShifts::sha256_a_and_c,
684 ColumnAndShifts::sha256_and_op_id,
685 ColumnAndShifts::sha256_u32_tag };
686 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
687 ColumnAndShifts::bitwise_acc_ib,
688 ColumnAndShifts::bitwise_acc_ic,
689 ColumnAndShifts::bitwise_op_id,
690 ColumnAndShifts::bitwise_tag_a };
694template <
typename FF_>
700 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_MAJ_AND_2";
705 static constexpr Column COUNTS = Column::lookup_sha256_maj_and_2_counts;
707 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = { ColumnAndShifts::sha256_b,
708 ColumnAndShifts::sha256_c,
709 ColumnAndShifts::sha256_b_and_c,
710 ColumnAndShifts::sha256_and_op_id,
711 ColumnAndShifts::sha256_u32_tag };
712 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
713 ColumnAndShifts::bitwise_acc_ib,
714 ColumnAndShifts::bitwise_acc_ic,
715 ColumnAndShifts::bitwise_op_id,
716 ColumnAndShifts::bitwise_tag_a };
720template <
typename FF_>
726 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_MAJ_XOR_0";
731 static constexpr Column COUNTS = Column::lookup_sha256_maj_xor_0_counts;
733 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
734 ColumnAndShifts::sha256_a_and_b,
735 ColumnAndShifts::sha256_a_and_c,
736 ColumnAndShifts::sha256_a_and_b_xor_a_and_c,
737 ColumnAndShifts::sha256_xor_op_id,
738 ColumnAndShifts::sha256_u32_tag
740 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
741 ColumnAndShifts::bitwise_acc_ib,
742 ColumnAndShifts::bitwise_acc_ic,
743 ColumnAndShifts::bitwise_op_id,
744 ColumnAndShifts::bitwise_tag_a };
748template <
typename FF_>
754 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_MAJ_XOR_1";
759 static constexpr Column COUNTS = Column::lookup_sha256_maj_xor_1_counts;
761 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
762 ColumnAndShifts::sha256_a_and_b_xor_a_and_c,
763 ColumnAndShifts::sha256_b_and_c,
764 ColumnAndShifts::sha256_maj,
765 ColumnAndShifts::sha256_xor_op_id,
766 ColumnAndShifts::sha256_u32_tag
768 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::bitwise_acc_ia,
769 ColumnAndShifts::bitwise_acc_ib,
770 ColumnAndShifts::bitwise_acc_ic,
771 ColumnAndShifts::bitwise_op_id,
772 ColumnAndShifts::bitwise_tag_a };
776template <
typename FF_>
782 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_NEXT_A_LHS";
787 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_next_a_lhs_counts;
788 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_next_a_lhs_inv;
789 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
790 ColumnAndShifts::sha256_next_a_lhs
792 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::precomputed_idx };
796template <
typename FF_>
803 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_NEXT_A_RHS";
808 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_next_a_rhs_counts;
809 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_next_a_rhs_inv;
810 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
811 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_next_a_rhs, ColumnAndShifts::sha256_perform_round
813 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
814 ColumnAndShifts::gt_input_b,
815 ColumnAndShifts::gt_res };
819template <
typename FF_>
826 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_NEXT_E_LHS";
831 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_next_e_lhs_counts;
832 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_next_e_lhs_inv;
833 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
834 ColumnAndShifts::sha256_next_e_lhs
836 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::precomputed_idx };
840template <
typename FF_>
847 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_NEXT_E_RHS";
852 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_next_e_rhs_counts;
853 static constexpr Column INVERSES = Column::lookup_sha256_range_comp_next_e_rhs_inv;
854 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
855 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_next_e_rhs, ColumnAndShifts::sha256_perform_round
857 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
858 ColumnAndShifts::gt_input_b,
859 ColumnAndShifts::gt_res };
863template <
typename FF_>
870 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_A_RHS";
875 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_a_rhs_counts;
877 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
878 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_a_rhs, ColumnAndShifts::sha256_last
880 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
881 ColumnAndShifts::gt_input_b,
882 ColumnAndShifts::gt_res };
886template <
typename FF_>
892 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_B_RHS";
897 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_b_rhs_counts;
899 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
900 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_b_rhs, ColumnAndShifts::sha256_last
902 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
903 ColumnAndShifts::gt_input_b,
904 ColumnAndShifts::gt_res };
908template <
typename FF_>
914 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_C_RHS";
919 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_c_rhs_counts;
921 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
922 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_c_rhs, ColumnAndShifts::sha256_last
924 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
925 ColumnAndShifts::gt_input_b,
926 ColumnAndShifts::gt_res };
930template <
typename FF_>
936 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_D_RHS";
941 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_d_rhs_counts;
943 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
944 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_d_rhs, ColumnAndShifts::sha256_last
946 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
947 ColumnAndShifts::gt_input_b,
948 ColumnAndShifts::gt_res };
952template <
typename FF_>
958 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_E_RHS";
963 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_e_rhs_counts;
965 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
966 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_e_rhs, ColumnAndShifts::sha256_last
968 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
969 ColumnAndShifts::gt_input_b,
970 ColumnAndShifts::gt_res };
974template <
typename FF_>
980 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_F_RHS";
985 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_f_rhs_counts;
987 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
988 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_f_rhs, ColumnAndShifts::sha256_last
990 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
991 ColumnAndShifts::gt_input_b,
992 ColumnAndShifts::gt_res };
996template <
typename FF_>
1002 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_G_RHS";
1007 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_g_rhs_counts;
1009 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
1010 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_g_rhs, ColumnAndShifts::sha256_last
1012 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1013 ColumnAndShifts::gt_input_b,
1014 ColumnAndShifts::gt_res };
1018template <
typename FF_>
1024 static constexpr std::string_view
NAME =
"LOOKUP_SHA256_RANGE_COMP_H_RHS";
1029 static constexpr Column COUNTS = Column::lookup_sha256_range_comp_h_rhs_counts;
1031 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
SRC_COLUMNS = {
1032 ColumnAndShifts::sha256_two_pow_32, ColumnAndShifts::sha256_output_h_rhs, ColumnAndShifts::sha256_last
1034 static constexpr std::array<ColumnAndShifts, LOOKUP_TUPLE_SIZE>
DST_COLUMNS = { ColumnAndShifts::gt_input_a,
1035 ColumnAndShifts::gt_input_b,
1036 ColumnAndShifts::gt_res };
1040template <
typename FF_>
Settings to be passed ot GenericLookupRelationImpl.
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::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::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 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 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 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::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 > 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 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