diff --git a/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/bitwise.test.cpp b/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/bitwise.test.cpp index e4f346caf2b7..5e9239f6e267 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/bitwise.test.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/constraining/relations/bitwise.test.cpp @@ -8,9 +8,13 @@ #include "barretenberg/vm2/constraining/testing/check_relation.hpp" #include "barretenberg/vm2/generated/flavor_settings.hpp" #include "barretenberg/vm2/generated/relations/bitwise.hpp" +#include "barretenberg/vm2/generated/relations/lookups_bitwise.hpp" #include "barretenberg/vm2/testing/fixtures.hpp" #include "barretenberg/vm2/testing/macros.hpp" #include "barretenberg/vm2/tracegen/bitwise_trace.hpp" +#include "barretenberg/vm2/tracegen/lib/lookup_into_bitwise.hpp" +#include "barretenberg/vm2/tracegen/lib/lookup_into_indexed_by_clk.hpp" +#include "barretenberg/vm2/tracegen/precomputed_trace.hpp" #include "barretenberg/vm2/tracegen/test_trace_container.hpp" namespace bb::avm2::constraining { @@ -22,6 +26,12 @@ using FF = AvmFlavorSettings::FF; using C = Column; using bitwise = bb::avm2::bitwise; +using tracegen::LookupIntoBitwise; +using tracegen::LookupIntoIndexedByClk; +using tracegen::PrecomputedTraceBuilder; +using lookup_bitwise_byte_operations = bb::avm2::lookup_bitwise_byte_operations_relation; +using lookup_bitwise_integral_tag_length = bb::avm2::lookup_bitwise_integral_tag_length_relation; + TEST(BitwiseConstrainingTest, EmptyRow) { check_relation(testing::empty_trace()); @@ -315,5 +325,34 @@ TEST(BitwiseConstrainingTest, NegativeWrongAccumulation) EXPECT_THROW_WITH_MESSAGE(check_relation(trace, bitwise::SR_BITW_ACC_REL_C), "BITW_ACC_REL_C"); } +TEST(BitwiseConstrainingTest, MixedOperationsInteractions) +{ + TestTraceContainer trace; + BitwiseTraceBuilder builder; + PrecomputedTraceBuilder precomputed_builder; + + builder.process( + { + { .operation = BitwiseOperation::OR, .tag = MemoryTag::U1, .a = 1, .b = 0, .res = 1 }, + { .operation = BitwiseOperation::AND, .tag = MemoryTag::U32, .a = 13793, .b = 10590617, .res = 4481 }, + { .operation = BitwiseOperation::XOR, .tag = MemoryTag::U16, .a = 5323, .b = 321, .res = 5514 }, + { .operation = BitwiseOperation::XOR, .tag = MemoryTag::U32, .a = 13793, .b = 10590617, .res = 10595448 }, + { .operation = BitwiseOperation::AND, .tag = MemoryTag::U8, .a = 85, .b = 175, .res = 5 }, + { .operation = BitwiseOperation::AND, .tag = MemoryTag::U8, .a = 85, .b = 175, .res = 5 }, + }, + trace); + + precomputed_builder.process_misc(trace, 256 * 256 * 3); + precomputed_builder.process_bitwise(trace); + precomputed_builder.process_integral_tag_length(trace); + + LookupIntoBitwise().process(trace); + LookupIntoIndexedByClk().process(trace); + + check_relation(trace); + check_interaction(trace); + check_interaction(trace); +} + } // namespace -} // namespace bb::avm2::constraining \ No newline at end of file +} // namespace bb::avm2::constraining diff --git a/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp b/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp index f32947cb32a9..9701ca7e768a 100644 --- a/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp +++ b/barretenberg/cpp/src/barretenberg/vm2/tracegen_helper.cpp @@ -246,7 +246,7 @@ TraceContainer AvmTraceGenHelper::generate_trace(EventsContainer&& events) std::make_unique>(), std::make_unique>(), std::make_unique>(), - std::make_unique>(), + std::make_unique>(), std::make_unique>(), std::make_unique>(), std::make_unique>(),