1#include <gmock/gmock.h>
2#include <gtest/gtest.h>
15using testing::ElementsAre;
17TEST(RangeCheckTraceGenTest, RangeCheckLte16Bit)
19 TestTraceContainer
trace;
23 uint8_t dynamic_bits = 7;
30 uint16_t dynamic_slice_register =
value & 0xFFFF;
32 uint16_t dynamic_bits_pow_2 =
static_cast<uint16_t
>(1 << dynamic_bits);
33 uint16_t dynamic_diff =
static_cast<uint16_t
>(dynamic_bits_pow_2 - dynamic_slice_register - 1);
44 ROW_FIELD_EQ(range_check_u16_r7, dynamic_slice_register),
45 ROW_FIELD_EQ(range_check_dyn_rng_chk_bits, dynamic_bits),
46 ROW_FIELD_EQ(range_check_dyn_rng_chk_pow_2, dynamic_bits_pow_2),
50TEST(RangeCheckTraceGenTest, RangeCheckLte48Bit)
52 TestTraceContainer
trace;
55 uint8_t num_bits = 34;
56 uint8_t non_dynamic_bits = 32;
57 uint8_t dynamic_bits = num_bits - non_dynamic_bits;
63 uint16_t u16_r0 =
value & 0xFFFF;
64 uint16_t u16_r1 = (
value >> 16) & 0xFFFF;
65 uint16_t dynamic_slice_register = (
value >> 32) & 0xFFFF;
67 uint16_t dynamic_bits_pow_2 =
static_cast<uint16_t
>(1 << dynamic_bits);
68 uint16_t dynamic_diff =
static_cast<uint16_t
>(dynamic_bits_pow_2 - dynamic_slice_register - 1);
81 ROW_FIELD_EQ(range_check_u16_r7, dynamic_slice_register),
82 ROW_FIELD_EQ(range_check_dyn_rng_chk_bits, dynamic_bits),
83 ROW_FIELD_EQ(range_check_dyn_rng_chk_pow_2, dynamic_bits_pow_2),
87 ROW_FIELD_EQ(range_check_sel_r1_16_bit_rng_lookup, 1))));
90TEST(RangeCheckTraceGenTest, RangeCheckLte128Bit)
92 TestTraceContainer
trace;
95 uint8_t num_bits = 128;
96 uint8_t non_dynamic_bits = 112;
97 uint8_t dynamic_bits = num_bits - non_dynamic_bits;
103 uint16_t u16_r0 =
value & 0xFFFF;
104 uint16_t u16_r1 = (
value >> 16) & 0xFFFF;
105 uint16_t u16_r2 = (
value >> 32) & 0xFFFF;
106 uint16_t u16_r3 = (
value >> 48) & 0xFFFF;
107 uint16_t u16_r4 = (
value >> 64) & 0xFFFF;
108 uint16_t u16_r5 = (
value >> 80) & 0xFFFF;
109 uint16_t u16_r6 = (
value >> 96) & 0xFFFF;
110 uint16_t dynamic_slice_register = (
value >> 112) & 0xFFFF;
112 uint32_t dynamic_bits_pow_2 =
static_cast<uint32_t
>(1 << dynamic_bits);
113 uint16_t dynamic_diff =
static_cast<uint16_t
>(dynamic_bits_pow_2 - dynamic_slice_register - 1);
131 ROW_FIELD_EQ(range_check_u16_r7, dynamic_slice_register),
132 ROW_FIELD_EQ(range_check_dyn_rng_chk_bits, dynamic_bits),
133 ROW_FIELD_EQ(range_check_dyn_rng_chk_pow_2, dynamic_bits_pow_2),
142 ROW_FIELD_EQ(range_check_sel_r6_16_bit_rng_lookup, 1))));
void process(const simulation::EventEmitterInterface< simulation::AluEvent >::Container &events, TraceContainer &trace)
std::vector< AvmFullRowConstRef > as_rows() const
static constexpr uint256_t from_uint128(const uint128_t a) noexcept
#define ROW_FIELD_EQ(field_name, expression)
TEST(EmitUnencryptedLogTest, Basic)
unsigned __int128 uint128_t