Skip to content

Commit 370f680

Browse files
author
Julian LALU
committed
Add sse2_group
1 parent 17a5ebd commit 370f680

1 file changed

Lines changed: 29 additions & 5 deletions

File tree

test/hashset/hashset_misc.cpp

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,12 +94,36 @@ GTEST_TEST(hashset, control_type_and_group_are_ok)
9494
// The slot is empty (0x80)
9595
// The slot is deleted (0xFE)
9696
// The slot is a sentinel (0xFF)
97-
u128 group_value = 0x80FEFF7F80FEFF7F;
97+
u128 group_value = u128 {0x80FEFF7F80FEFF7F, 0x80FEFF7F80FEFF7F};
9898
group_type g {reinterpret_cast<control_type *>(&group_value)};
99-
hud_assert_eq(g.match(0x7F), mask_type {0b00010001});
100-
hud_assert_eq(g.mask_of_empty_slot(), mask_empty_type {0b10001000});
101-
hud_assert_eq(g.mask_of_empty_or_deleted_slot(), mask_empty_or_deleted_type {0b11001100});
102-
hud_assert_eq(g.mask_of_full_slot(), mask_full_type {0b1111111100010001}); // 00 is full
99+
hud_assert_eq(g.match(0x7F), mask_type {0b0001000100010001});
100+
hud_assert_eq(g.mask_of_empty_slot(), mask_empty_type {0b1000100010001000});
101+
hud_assert_eq(g.mask_of_empty_or_deleted_slot(), mask_empty_or_deleted_type {0b1100110011001100});
102+
hud_assert_eq(g.mask_of_full_slot(), mask_full_type {0b0001000100010001}); // 00 is full
103+
104+
// Test group at index
105+
// empty (0x80), deleted (0xFE), sentinel (0xFF)
106+
u128 two_group[2] = {
107+
{0x80FEFF7F80FEFF7F, 0x7F00806DFE002A6D},
108+
{0x807B00800000FEFF, 0x80FEFF7F80FEFF7F}
109+
};
110+
111+
control_type *metadata_ptr(reinterpret_cast<control_type *>(&two_group));
112+
group_type g0 {metadata_ptr};
113+
// Read first group
114+
hud_assert_eq(g0.match(0x7F), mask_type {0b0001000110000000});
115+
hud_assert_eq(g0.match(0x2A), mask_type {0b0000000000000010});
116+
hud_assert_eq(g0.match(0x6D), mask_type {0b0000000000010001});
117+
hud_assert_eq(g0.mask_of_empty_or_deleted_slot(), mask_empty_or_deleted_type {0b1100110000101000});
118+
hud_assert_eq(g0.mask_of_empty_slot(), mask_empty_type {0b1000100000100000});
119+
hud_assert_eq(g0.mask_of_full_slot(), mask_full_type {0b0001000111010111});
120+
121+
group_type g1 {metadata_ptr + group_type::SLOT_PER_GROUP * 1};
122+
// Read second group
123+
hud_assert_eq(g1.match(0x7B), mask_type {0b0100000000000000});
124+
hud_assert_eq(g1.mask_of_empty_or_deleted_slot(), mask_empty_or_deleted_type {0b1001001011001100});
125+
hud_assert_eq(g1.mask_of_empty_slot(), mask_empty_type {0b1001000010001000});
126+
hud_assert_eq(g1.mask_of_full_slot(), mask_full_type {0b0110110000010001});
103127
}
104128
#endif
105129
}

0 commit comments

Comments
 (0)