//===- MathTest.cpp -------------------------------------------------------===// // // 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 // //===----------------------------------------------------------------------===// // // Tests for orc-rt's Math.h APIs. // //===----------------------------------------------------------------------===// #include "orc-rt/Math.h" #include "gtest/gtest.h" using namespace orc_rt; TEST(STLExtrasTest, isPowerOf2) { // Test [0..16] EXPECT_FALSE(isPowerOf2(0x00)); EXPECT_TRUE(isPowerOf2(0x01)); EXPECT_TRUE(isPowerOf2(0x02)); EXPECT_FALSE(isPowerOf2(0x03)); EXPECT_TRUE(isPowerOf2(0x04)); EXPECT_FALSE(isPowerOf2(0x05)); EXPECT_FALSE(isPowerOf2(0x06)); EXPECT_FALSE(isPowerOf2(0x07)); EXPECT_TRUE(isPowerOf2(0x08)); EXPECT_FALSE(isPowerOf2(0x09)); EXPECT_FALSE(isPowerOf2(0x0A)); EXPECT_FALSE(isPowerOf2(0x0B)); EXPECT_FALSE(isPowerOf2(0x0C)); EXPECT_FALSE(isPowerOf2(0x0D)); EXPECT_FALSE(isPowerOf2(0x0E)); EXPECT_FALSE(isPowerOf2(0x0F)); EXPECT_TRUE(isPowerOf2(0x10)); // Test some higher powers of two and their adjacent values. EXPECT_FALSE(isPowerOf2(0x1F)); EXPECT_TRUE(isPowerOf2(0x20)); EXPECT_FALSE(isPowerOf2(0x21)); EXPECT_FALSE(isPowerOf2(0x3F)); EXPECT_TRUE(isPowerOf2(0x40)); EXPECT_FALSE(isPowerOf2(0x41)); EXPECT_FALSE(isPowerOf2(0x7F)); EXPECT_TRUE(isPowerOf2(0x80)); EXPECT_FALSE(isPowerOf2(0x81)); // Test larger values. EXPECT_FALSE(isPowerOf2(0x3fffffff)); EXPECT_TRUE(isPowerOf2(0x40000000)); EXPECT_FALSE(isPowerOf2(0x40000001)); // Test negatives. EXPECT_FALSE(isPowerOf2(-1)); } TEST(STLExtrasTest, nextPowerOf2) { EXPECT_EQ(nextPowerOf2(0x00), (1 << 0)); EXPECT_EQ(nextPowerOf2(0x01), (1 << 1)); EXPECT_EQ(nextPowerOf2(0x02), (1 << 2)); EXPECT_EQ(nextPowerOf2(0x03), (1 << 2)); EXPECT_EQ(nextPowerOf2(0x04), (1 << 3)); EXPECT_EQ(nextPowerOf2(0x05), (1 << 3)); EXPECT_EQ(nextPowerOf2(0x06), (1 << 3)); EXPECT_EQ(nextPowerOf2(0x07), (1 << 3)); EXPECT_EQ(nextPowerOf2(0x08), (1 << 4)); EXPECT_EQ(nextPowerOf2(0x09), (1 << 4)); EXPECT_EQ(nextPowerOf2(0x0a), (1 << 4)); EXPECT_EQ(nextPowerOf2(0x0b), (1 << 4)); EXPECT_EQ(nextPowerOf2(0x0c), (1 << 4)); EXPECT_EQ(nextPowerOf2(0x0d), (1 << 4)); EXPECT_EQ(nextPowerOf2(0x0e), (1 << 4)); EXPECT_EQ(nextPowerOf2(0x0f), (1 << 4)); EXPECT_EQ(nextPowerOf2(0x10), (1 << 5)); }