23 trace.set(C::bitwise_last, 0, 1);
26 for (
const auto&
event : events) {
27 auto tag =
event.a.get_tag();
37 bool is_tag_mismatch =
event.a.get_tag() !=
event.b.get_tag();
46 ? (
FF(
static_cast<uint8_t
>(
event.a.get_tag())) -
FF(
static_cast<uint8_t
>(
event.b.get_tag()))).invert()
49 if (is_tag_ff || is_tag_mismatch) {
53 { C::bitwise_op_id,
static_cast<uint8_t
>(
event.operation) },
54 { C::bitwise_start, 1 },
55 { C::bitwise_sel_get_ctr, 0 },
56 { C::bitwise_last, 1 },
63 { C::bitwise_tag_a,
static_cast<uint8_t
>(
event.a.get_tag()) },
64 { C::bitwise_tag_b,
static_cast<uint8_t
>(
event.b.get_tag()) },
65 { C::bitwise_tag_c,
static_cast<uint8_t
>(
event.a.get_tag()) },
67 { C::bitwise_sel_tag_ff_err, is_tag_ff ? 1 : 0 },
68 { C::bitwise_sel_tag_mismatch_err, is_tag_mismatch ? 1 : 0 },
69 { C::bitwise_err, 1 },
71 { C::bitwise_tag_a_inv, tag_a_inv },
72 { C::bitwise_tag_ab_diff_inv, tag_ab_diff_inv },
84 const uint128_t mask_low_byte = (1 << 8) - 1;
87 for (
int ctr = start_ctr; ctr > 0; ctr--) {
88 bool is_start = (ctr == start_ctr);
90 { { { C::bitwise_op_id,
static_cast<uint8_t
>(
event.operation) },
97 { C::bitwise_tag_a, is_start ?
static_cast<uint8_t
>(
event.a.get_tag()) : 0 },
98 { C::bitwise_tag_b, is_start ?
static_cast<uint8_t
>(
event.b.get_tag()) : 0 },
99 { C::bitwise_tag_c, is_start ?
static_cast<uint8_t
>(
event.a.get_tag()) : 0 },
100 { C::bitwise_ctr, ctr },
101 { C::bitwise_ctr_inv, ctr != 0 ?
FF(ctr).invert() : 1 },
102 { C::bitwise_ctr_min_one_inv, ctr != 1 ?
FF(ctr - 1).invert() : 1 },
103 { C::bitwise_last, ctr == 1 ? 1 : 0 },
104 { C::bitwise_sel, ctr != 0 ? 1 : 0 },
105 { C::bitwise_start, is_start ? 1 : 0 },
106 { C::bitwise_sel_get_ctr, is_start ? 1 : 0 },
108 { C::bitwise_tag_a_inv, is_start ? tag_a_inv : 0 },
109 { C::bitwise_tag_ab_diff_inv, is_start ? tag_ab_diff_inv : 0 } } });