Export of internal Abseil changes.
-- 4e224c85c3730398919fc5195cb1fc7a752e6e4f by Mark Barolak <mbar@google.com>: Update some references to "StringPiece" to say "string_view" instead. PiperOrigin-RevId: 219693697 -- 6bdc925a3db5e97f1f8a404bdfda2e47e48f7b9a by Abseil Team <absl-team@google.com>: Disable weak symbols for the Windows backend of LLVM, since they are currently buggy. See https://bugs.llvm.org/show_bug.cgi?id=37598 for more information. PiperOrigin-RevId: 219676493 -- 5823f495036181191f435efa4c45d60ca3160145 by Derek Mauro <dmauro@google.com>: Don't use the SSE2 implementation of container_internal::Group with -funsigned-char under GCC. This is a workaround for https://github.com/abseil/abseil-cpp/issues/209. _mm_cmpgt_epi8 is broken under GCC with -funsigned-char. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87853 PiperOrigin-RevId: 219666066 GitOrigin-RevId: 4e224c85c3730398919fc5195cb1fc7a752e6e4f Change-Id: I2f115d0256576cf476ae73a9464c21d4106a2a56
This commit is contained in:
parent
cc8dcd307b
commit
f95179062e
5 changed files with 71 additions and 47 deletions
|
|
@ -130,45 +130,50 @@ TEST(Group, EmptyGroup) {
|
|||
for (h2_t h = 0; h != 128; ++h) EXPECT_FALSE(Group{EmptyGroup()}.Match(h));
|
||||
}
|
||||
|
||||
#if SWISSTABLE_HAVE_SSE2
|
||||
TEST(Group, Match) {
|
||||
ctrl_t group[] = {kEmpty, 1, kDeleted, 3, kEmpty, 5, kSentinel, 7,
|
||||
7, 5, 3, 1, 1, 1, 1, 1};
|
||||
EXPECT_THAT(Group{group}.Match(0), ElementsAre());
|
||||
EXPECT_THAT(Group{group}.Match(1), ElementsAre(1, 11, 12, 13, 14, 15));
|
||||
EXPECT_THAT(Group{group}.Match(3), ElementsAre(3, 10));
|
||||
EXPECT_THAT(Group{group}.Match(5), ElementsAre(5, 9));
|
||||
EXPECT_THAT(Group{group}.Match(7), ElementsAre(7, 8));
|
||||
if (Group::kWidth == 16) {
|
||||
ctrl_t group[] = {kEmpty, 1, kDeleted, 3, kEmpty, 5, kSentinel, 7,
|
||||
7, 5, 3, 1, 1, 1, 1, 1};
|
||||
EXPECT_THAT(Group{group}.Match(0), ElementsAre());
|
||||
EXPECT_THAT(Group{group}.Match(1), ElementsAre(1, 11, 12, 13, 14, 15));
|
||||
EXPECT_THAT(Group{group}.Match(3), ElementsAre(3, 10));
|
||||
EXPECT_THAT(Group{group}.Match(5), ElementsAre(5, 9));
|
||||
EXPECT_THAT(Group{group}.Match(7), ElementsAre(7, 8));
|
||||
} else if (Group::kWidth == 8) {
|
||||
ctrl_t group[] = {kEmpty, 1, 2, kDeleted, 2, 1, kSentinel, 1};
|
||||
EXPECT_THAT(Group{group}.Match(0), ElementsAre());
|
||||
EXPECT_THAT(Group{group}.Match(1), ElementsAre(1, 5, 7));
|
||||
EXPECT_THAT(Group{group}.Match(2), ElementsAre(2, 4));
|
||||
} else {
|
||||
FAIL() << "No test coverage for Group::kWidth==" << Group::kWidth;
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Group, MatchEmpty) {
|
||||
ctrl_t group[] = {kEmpty, 1, kDeleted, 3, kEmpty, 5, kSentinel, 7,
|
||||
7, 5, 3, 1, 1, 1, 1, 1};
|
||||
EXPECT_THAT(Group{group}.MatchEmpty(), ElementsAre(0, 4));
|
||||
if (Group::kWidth == 16) {
|
||||
ctrl_t group[] = {kEmpty, 1, kDeleted, 3, kEmpty, 5, kSentinel, 7,
|
||||
7, 5, 3, 1, 1, 1, 1, 1};
|
||||
EXPECT_THAT(Group{group}.MatchEmpty(), ElementsAre(0, 4));
|
||||
} else if (Group::kWidth == 8) {
|
||||
ctrl_t group[] = {kEmpty, 1, 2, kDeleted, 2, 1, kSentinel, 1};
|
||||
EXPECT_THAT(Group{group}.MatchEmpty(), ElementsAre(0));
|
||||
} else {
|
||||
FAIL() << "No test coverage for Group::kWidth==" << Group::kWidth;
|
||||
}
|
||||
}
|
||||
|
||||
TEST(Group, MatchEmptyOrDeleted) {
|
||||
ctrl_t group[] = {kEmpty, 1, kDeleted, 3, kEmpty, 5, kSentinel, 7,
|
||||
7, 5, 3, 1, 1, 1, 1, 1};
|
||||
EXPECT_THAT(Group{group}.MatchEmptyOrDeleted(), ElementsAre(0, 2, 4));
|
||||
if (Group::kWidth == 16) {
|
||||
ctrl_t group[] = {kEmpty, 1, kDeleted, 3, kEmpty, 5, kSentinel, 7,
|
||||
7, 5, 3, 1, 1, 1, 1, 1};
|
||||
EXPECT_THAT(Group{group}.MatchEmptyOrDeleted(), ElementsAre(0, 2, 4));
|
||||
} else if (Group::kWidth == 8) {
|
||||
ctrl_t group[] = {kEmpty, 1, 2, kDeleted, 2, 1, kSentinel, 1};
|
||||
EXPECT_THAT(Group{group}.MatchEmptyOrDeleted(), ElementsAre(0, 3));
|
||||
} else {
|
||||
FAIL() << "No test coverage for Group::kWidth==" << Group::kWidth;
|
||||
}
|
||||
}
|
||||
#else
|
||||
TEST(Group, Match) {
|
||||
ctrl_t group[] = {kEmpty, 1, 2, kDeleted, 2, 1, kSentinel, 1};
|
||||
EXPECT_THAT(Group{group}.Match(0), ElementsAre());
|
||||
EXPECT_THAT(Group{group}.Match(1), ElementsAre(1, 5, 7));
|
||||
EXPECT_THAT(Group{group}.Match(2), ElementsAre(2, 4));
|
||||
}
|
||||
TEST(Group, MatchEmpty) {
|
||||
ctrl_t group[] = {kEmpty, 1, 2, kDeleted, 2, 1, kSentinel, 1};
|
||||
EXPECT_THAT(Group{group}.MatchEmpty(), ElementsAre(0));
|
||||
}
|
||||
|
||||
TEST(Group, MatchEmptyOrDeleted) {
|
||||
ctrl_t group[] = {kEmpty, 1, 2, kDeleted, 2, 1, kSentinel, 1};
|
||||
EXPECT_THAT(Group{group}.MatchEmptyOrDeleted(), ElementsAre(0, 3));
|
||||
}
|
||||
#endif
|
||||
|
||||
TEST(Batch, DropDeletes) {
|
||||
constexpr size_t kCapacity = 63;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue