79 lines · cpp
1//===- MathTest.cpp -------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// Tests for orc-rt's Math.h APIs.10//11//===----------------------------------------------------------------------===//12 13#include "orc-rt/Math.h"14#include "gtest/gtest.h"15 16using namespace orc_rt;17 18TEST(MathTest, isPowerOf2) {19 // Test [0..16]20 EXPECT_FALSE(isPowerOf2(0x00));21 EXPECT_TRUE(isPowerOf2(0x01));22 EXPECT_TRUE(isPowerOf2(0x02));23 EXPECT_FALSE(isPowerOf2(0x03));24 EXPECT_TRUE(isPowerOf2(0x04));25 EXPECT_FALSE(isPowerOf2(0x05));26 EXPECT_FALSE(isPowerOf2(0x06));27 EXPECT_FALSE(isPowerOf2(0x07));28 EXPECT_TRUE(isPowerOf2(0x08));29 EXPECT_FALSE(isPowerOf2(0x09));30 EXPECT_FALSE(isPowerOf2(0x0A));31 EXPECT_FALSE(isPowerOf2(0x0B));32 EXPECT_FALSE(isPowerOf2(0x0C));33 EXPECT_FALSE(isPowerOf2(0x0D));34 EXPECT_FALSE(isPowerOf2(0x0E));35 EXPECT_FALSE(isPowerOf2(0x0F));36 EXPECT_TRUE(isPowerOf2(0x10));37 38 // Test some higher powers of two and their adjacent values.39 EXPECT_FALSE(isPowerOf2(0x1F));40 EXPECT_TRUE(isPowerOf2(0x20));41 EXPECT_FALSE(isPowerOf2(0x21));42 43 EXPECT_FALSE(isPowerOf2(0x3F));44 EXPECT_TRUE(isPowerOf2(0x40));45 EXPECT_FALSE(isPowerOf2(0x41));46 47 EXPECT_FALSE(isPowerOf2(0x7F));48 EXPECT_TRUE(isPowerOf2(0x80));49 EXPECT_FALSE(isPowerOf2(0x81));50 51 // Test larger values.52 EXPECT_FALSE(isPowerOf2(0x3fffffff));53 EXPECT_TRUE(isPowerOf2(0x40000000));54 EXPECT_FALSE(isPowerOf2(0x40000001));55 56 // Test negatives.57 EXPECT_FALSE(isPowerOf2(-1));58}59 60TEST(MathTest, nextPowerOf2) {61 EXPECT_EQ(nextPowerOf2(0x00), (1 << 0));62 EXPECT_EQ(nextPowerOf2(0x01), (1 << 1));63 EXPECT_EQ(nextPowerOf2(0x02), (1 << 2));64 EXPECT_EQ(nextPowerOf2(0x03), (1 << 2));65 EXPECT_EQ(nextPowerOf2(0x04), (1 << 3));66 EXPECT_EQ(nextPowerOf2(0x05), (1 << 3));67 EXPECT_EQ(nextPowerOf2(0x06), (1 << 3));68 EXPECT_EQ(nextPowerOf2(0x07), (1 << 3));69 EXPECT_EQ(nextPowerOf2(0x08), (1 << 4));70 EXPECT_EQ(nextPowerOf2(0x09), (1 << 4));71 EXPECT_EQ(nextPowerOf2(0x0a), (1 << 4));72 EXPECT_EQ(nextPowerOf2(0x0b), (1 << 4));73 EXPECT_EQ(nextPowerOf2(0x0c), (1 << 4));74 EXPECT_EQ(nextPowerOf2(0x0d), (1 << 4));75 EXPECT_EQ(nextPowerOf2(0x0e), (1 << 4));76 EXPECT_EQ(nextPowerOf2(0x0f), (1 << 4));77 EXPECT_EQ(nextPowerOf2(0x10), (1 << 5));78}79