brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · f64aacd Raw
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