[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