[llvm] 134d017 - [ADT] Add unittest coverage for ADT/bit.h header
Simon Pilgrim via llvm-commits
llvm-commits at lists.llvm.org
Tue Aug 23 04:31:40 PDT 2022
Author: Simon Pilgrim
Date: 2022-08-23T12:31:17+01:00
New Revision: 134d017b88cabb408417a2b570ef62264bfd6f72
URL: https://github.com/llvm/llvm-project/commit/134d017b88cabb408417a2b570ef62264bfd6f72
DIFF: https://github.com/llvm/llvm-project/commit/134d017b88cabb408417a2b570ef62264bfd6f72.diff
LOG: [ADT] Add unittest coverage for ADT/bit.h header
Added:
llvm/unittests/ADT/BitTest.cpp
Modified:
llvm/unittests/ADT/CMakeLists.txt
Removed:
################################################################################
diff --git a/llvm/unittests/ADT/BitTest.cpp b/llvm/unittests/ADT/BitTest.cpp
new file mode 100644
index 0000000000000..59af29d872a2c
--- /dev/null
+++ b/llvm/unittests/ADT/BitTest.cpp
@@ -0,0 +1,45 @@
+//===- llvm/unittests/ADT/BitTest.cpp - <bit> tests ---===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/ADT/bit.h"
+#include "gtest/gtest.h"
+#include <cstdint>
+#include <cstdlib>
+
+using namespace llvm;
+
+namespace {
+
+TEST(BitTest, BitCast) {
+ static const uint8_t kValueU8 = 0x80;
+ EXPECT_TRUE(llvm::bit_cast<int8_t>(kValueU8) < 0);
+
+ static const uint16_t kValueU16 = 0x8000;
+ EXPECT_TRUE(llvm::bit_cast<int16_t>(kValueU16) < 0);
+
+ static const float kValueF32 = 5632.34f;
+ EXPECT_FLOAT_EQ(kValueF32,
+ llvm::bit_cast<float>(llvm::bit_cast<uint32_t>(kValueF32)));
+
+ static const double kValueF64 = 87987234.983498;
+ EXPECT_DOUBLE_EQ(kValueF64,
+ llvm::bit_cast<double>(llvm::bit_cast<uint64_t>(kValueF64)));
+}
+
+TEST(BitTest, PopCount) {
+ EXPECT_EQ(0, llvm::popcount(0U));
+ EXPECT_EQ(0, llvm::popcount(0ULL));
+
+ EXPECT_EQ(32, llvm::popcount(~0U));
+ EXPECT_EQ(64, llvm::popcount(~0ULL));
+
+ for (int I = 0; I != 32; ++I)
+ EXPECT_EQ(1, llvm::popcount(1U << I));
+}
+
+} // anonymous namespace
diff --git a/llvm/unittests/ADT/CMakeLists.txt b/llvm/unittests/ADT/CMakeLists.txt
index c6bd570d69ae7..cac7280717496 100644
--- a/llvm/unittests/ADT/CMakeLists.txt
+++ b/llvm/unittests/ADT/CMakeLists.txt
@@ -11,6 +11,7 @@ add_llvm_unittest(ADTTests
ArrayRefTest.cpp
BitFieldsTest.cpp
BitmaskEnumTest.cpp
+ BitTest.cpp
BitVectorTest.cpp
BreadthFirstIteratorTest.cpp
BumpPtrListTest.cpp
More information about the llvm-commits
mailing list