102 return MemoryValue::from<uint128_t>(
static_cast<uint128_t>(lo.
as<uint64_t>()) |
103 (
static_cast<uint128_t>(hi.
as<uint64_t>()) << 64));
123 "SIMD-64 AND operands must have U64 tags");
130 return { MemoryValue::from<uint64_t>(
static_cast<uint64_t
>(res)),
131 MemoryValue::from<uint64_t>(
static_cast<uint64_t
>(res >> 64)) };
144 "SIMD-64 XOR operands must have U64 tags");
151 return { MemoryValue::from<uint64_t>(
static_cast<uint64_t
>(res)),
152 MemoryValue::from<uint64_t>(
static_cast<uint64_t
>(res >> 64)) };
#define BB_ASSERT_DEBUG(expression,...)
std::pair< MemoryValue, MemoryValue > simd_xor_op_64(const MemoryValue &a1, const MemoryValue &b1, const MemoryValue &a2, const MemoryValue &b2) override
Two independent U64 XORs packed into one U128 sub-trace row (SIMD-64). See simd_and_op_64.
MemoryValue and_op(const MemoryValue &a, const MemoryValue &b) override
Perform bitwise AND on two tagged memory values.
std::pair< MemoryValue, MemoryValue > simd_and_op_64(const MemoryValue &a1, const MemoryValue &b1, const MemoryValue &a2, const MemoryValue &b2) override
Two independent U64 ANDs packed into one U128 sub-trace row (SIMD-64).
EventEmitterInterface< BitwiseEvent > & events
MemoryValue or_op(const MemoryValue &a, const MemoryValue &b) override
Perform bitwise OR on two tagged memory values.
MemoryValue xor_op(const MemoryValue &a, const MemoryValue &b) override
Perform bitwise XOR on two tagged memory values.
AVM range check gadget for witness generation.
constexpr decltype(auto) get(::tuplet::tuple< T... > &&t) noexcept
unsigned __int128 uint128_t