4#include <gmock/gmock.h>
5#include <gtest/gtest.h>
12using simulation::Bitwise;
19 { MemoryValue::from<uint1_t>(1), MemoryValue::from<uint1_t>(1), MemoryValue::from<uint1_t>(1) },
20 { MemoryValue::from<uint8_t>(0xAB), MemoryValue::from<uint8_t>(0x5F), MemoryValue::from<uint8_t>(0x0B) },
21 { MemoryValue::from<uint16_t>(0xF0F0), MemoryValue::from<uint16_t>(0x3C3C), MemoryValue::from<uint16_t>(0x3030) },
23 MemoryValue::from<uint32_t>(0xDEADBEEF),
24 MemoryValue::from<uint32_t>(0x12345678),
25 MemoryValue::from<uint32_t>(0x12241668),
28 MemoryValue::from<uint64_t>(0xCAFEBABEDEADBEEF),
29 MemoryValue::from<uint64_t>(0x1234567890ABCDEF),
30 MemoryValue::from<uint64_t>(0x234123890A98CEF),
33 MemoryValue::from<uint128_t>((
static_cast<uint128_t>(0xFEDCBA9876543210ULL) << 64) | 0x0123456789ABCDEFULL),
34 MemoryValue::from<uint128_t>((
static_cast<uint128_t>(0x1111111111111111ULL) << 64) | 0x2222222222222222ULL),
35 MemoryValue::from<uint128_t>((
static_cast<uint128_t>(1157442765409226768ULL) << 64) | 9570295239278626ULL),
40 { MemoryValue::from<uint1_t>(0), MemoryValue::from<uint1_t>(0), MemoryValue::from<uint1_t>(0) },
41 { MemoryValue::from<uint8_t>(0xAB), MemoryValue::from<uint8_t>(0x5F), MemoryValue::from<uint8_t>(0xFF) },
42 { MemoryValue::from<uint16_t>(0xF0F0), MemoryValue::from<uint16_t>(0x3C3C), MemoryValue::from<uint16_t>(0xFCFC) },
44 MemoryValue::from<uint32_t>(0xDEADBEEF),
45 MemoryValue::from<uint32_t>(0x12345678),
46 MemoryValue::from<uint32_t>(0xDEBDFEFF),
49 MemoryValue::from<uint64_t>(0xCAFEBABEDEADBEEF),
50 MemoryValue::from<uint64_t>(0x1234567890ABCDEF),
51 MemoryValue::from<uint64_t>(0xDAFEFEFEDEAFFFEF),
54 MemoryValue::from<uint128_t>((
static_cast<uint128_t>(0xFEDCBA9876543210ULL) << 64) | 0x0123456789ABCDEFULL),
55 MemoryValue::from<uint128_t>((
static_cast<uint128_t>(0x1111111111111111ULL) << 64) | 0x2222222222222222ULL),
56 MemoryValue::from<uint128_t>((
static_cast<uint128_t>(0xFFDDBB9977553311ULL) << 64) | 0x23236767ABABEFEFULL),
61 { MemoryValue::from<uint1_t>(0), MemoryValue::from<uint1_t>(0), MemoryValue::from<uint1_t>(0) },
62 { MemoryValue::from<uint8_t>(0xAB), MemoryValue::from<uint8_t>(0x5F), MemoryValue::from<uint8_t>(0xF4) },
63 { MemoryValue::from<uint16_t>(0xF0F0), MemoryValue::from<uint16_t>(0x3C3C), MemoryValue::from<uint16_t>(0xCCCC) },
65 MemoryValue::from<uint32_t>(0xDEADBEEF),
66 MemoryValue::from<uint32_t>(0x12345678),
67 MemoryValue::from<uint32_t>(0xCC99E897),
70 MemoryValue::from<uint64_t>(0xCAFEBABEDEADBEEF),
71 MemoryValue::from<uint64_t>(0x1234567890ABCDEF),
72 MemoryValue::from<uint64_t>(0xD8CAECC64E067300),
75 MemoryValue::from<uint128_t>((
static_cast<uint128_t>(0xFEDCBA9876543210ULL) << 64) | 0x0123456789ABCDEFULL),
76 MemoryValue::from<uint128_t>((
static_cast<uint128_t>(0x1111111111111111ULL) << 64) | 0x2222222222222222ULL),
77 MemoryValue::from<uint128_t>((
static_cast<uint128_t>(0xEFCDAB8967452301ULL) << 64) | 0x23016745AB89EFCDULL),
84class BitwiseSimulationTest :
public testing::Test {
86 BitwiseSimulationTest() =
default;
92TEST_F(BitwiseSimulationTest, ErrorTagFF)
102TEST_F(BitwiseSimulationTest, ErrorTagMismatch)
112class BitwiseAndSimulationTest :
public BitwiseSimulationTest,
public testing::WithParamInterface<BitwiseTestParams> {};
114class BitwiseOrSimulationTest :
public BitwiseSimulationTest,
public testing::WithParamInterface<BitwiseTestParams> {};
116class BitwiseXorSimulationTest :
public BitwiseSimulationTest,
public testing::WithParamInterface<BitwiseTestParams> {};
119TEST_P(BitwiseAndSimulationTest, SimpleAnd)
124 auto [
a,
b, expected] = GetParam();
126 EXPECT_EQ(c, expected);
129TEST_P(BitwiseOrSimulationTest, SimpleOr)
134 auto [
a,
b, expected] = GetParam();
136 EXPECT_EQ(c, expected);
139TEST_P(BitwiseXorSimulationTest, SimpleXor)
144 auto [
a,
b, expected] = GetParam();
146 EXPECT_EQ(c, expected);
static TaggedValue from_tag(ValueTag tag, FF value)
MemoryValue and_op(const MemoryValue &a, const MemoryValue &b) override
MemoryValue or_op(const MemoryValue &a, const MemoryValue &b) override
MemoryValue xor_op(const MemoryValue &a, const MemoryValue &b) override
EventEmitter< DataCopyEvent > event_emitter
INSTANTIATE_TEST_SUITE_P(PaddingVariants, AvmRecursiveTestsParameterized, ::testing::Values(false, true), [](const auto &info) { return info.param ? "Padded" :"Unpadded";})
TEST_P(AvmRecursiveTestsParameterized, GoblinRecursion)
A test of the Goblinized AVM recursive verifier.
TEST_F(IPATest, ChallengesAreZero)
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
unsigned __int128 uint128_t