31 auto UINT32_XOR = plookup::MultiTableId::UINT32_XOR;
39 auto left_idx =
builder.add_variable(left);
40 auto right_idx =
builder.add_variable(right);
44 builder.create_gates_from_plookup_accumulators(UINT32_XOR, accumulators, left_idx, right_idx);
46 EXPECT_EQ(
builder.lookup_tables.size(), 2);
47 EXPECT_EQ(
builder.lookup_tables[0].size(), 4096);
48 EXPECT_EQ(
builder.lookup_tables[1].size(), 16);
50 size_t circuit_size = 8192;
55 builder.blocks.compute_offsets(
false);
56 construct_lookup_read_counts<Flavor>(read_counts, read_tags,
builder, circuit_size);
66 for (
auto [idx, count, tag] :
zip_polys(read_counts, read_tags)) {
70 }
else if (idx == (69 +
offset)) {
73 }
else if (idx == (64 * 64 +
offset)) {
ReadData< bb::fr > get_lookup_accumulators(const MultiTableId id, const fr &key_a, const fr &key_b, const bool is_2_to_1_lookup)
Given a table ID and the key(s) for a key-value lookup, return the lookup accumulators.