aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Support/MathExtrasTest.cpp
diff options
context:
space:
mode:
authorRamkumar Ramachandra <ramkumar.ramachandra@codasip.com>2024-06-11 23:00:02 +0100
committerGitHub <noreply@github.com>2024-06-11 23:00:02 +0100
commit0fb216fb2fbb49c1fe90c1c3267873a100b1c356 (patch)
treeca9a9200c5c1d827ece9d9faf52d1eb363fee89d /llvm/unittests/Support/MathExtrasTest.cpp
parentcc04bbb2752a0b2a5e7fb41ed1a9d54fbdd3be89 (diff)
downloadllvm-0fb216fb2fbb49c1fe90c1c3267873a100b1c356.zip
llvm-0fb216fb2fbb49c1fe90c1c3267873a100b1c356.tar.gz
llvm-0fb216fb2fbb49c1fe90c1c3267873a100b1c356.tar.bz2
mlir/MathExtras: consolidate with llvm/MathExtras (#95087)
This patch is part of a project to move the Presburger library into LLVM.
Diffstat (limited to 'llvm/unittests/Support/MathExtrasTest.cpp')
-rw-r--r--llvm/unittests/Support/MathExtrasTest.cpp36
1 files changed, 33 insertions, 3 deletions
diff --git a/llvm/unittests/Support/MathExtrasTest.cpp b/llvm/unittests/Support/MathExtrasTest.cpp
index 67239a2..e75700d 100644
--- a/llvm/unittests/Support/MathExtrasTest.cpp
+++ b/llvm/unittests/Support/MathExtrasTest.cpp
@@ -434,8 +434,39 @@ TEST(MathExtras, IsShiftedInt) {
EXPECT_FALSE((isShiftedInt<6, 10>(int64_t(1) << 15)));
}
-template <typename T>
-class OverflowTest : public ::testing::Test { };
+TEST(MathExtras, DivideCeilSigned) {
+ EXPECT_EQ(divideCeilSigned(14, 3), 5);
+ EXPECT_EQ(divideCeilSigned(15, 3), 5);
+ EXPECT_EQ(divideCeilSigned(14, -3), -4);
+ EXPECT_EQ(divideCeilSigned(-14, -3), 5);
+ EXPECT_EQ(divideCeilSigned(-14, 3), -4);
+ EXPECT_EQ(divideCeilSigned(-15, 3), -5);
+ EXPECT_EQ(divideCeilSigned(0, 3), 0);
+ EXPECT_EQ(divideCeilSigned(0, -3), 0);
+}
+
+TEST(MathExtras, DivideFloorSigned) {
+ EXPECT_EQ(divideFloorSigned(14, 3), 4);
+ EXPECT_EQ(divideFloorSigned(15, 3), 5);
+ EXPECT_EQ(divideFloorSigned(14, -3), -5);
+ EXPECT_EQ(divideFloorSigned(-14, -3), 4);
+ EXPECT_EQ(divideFloorSigned(-14, 3), -5);
+ EXPECT_EQ(divideFloorSigned(-15, 3), -5);
+ EXPECT_EQ(divideFloorSigned(0, 3), 0);
+ EXPECT_EQ(divideFloorSigned(0, -3), 0);
+}
+
+TEST(MathExtras, Mod) {
+ EXPECT_EQ(mod(1, 14), 1);
+ EXPECT_EQ(mod(-1, 14), 13);
+ EXPECT_EQ(mod(14, 3), 2);
+ EXPECT_EQ(mod(15, 3), 0);
+ EXPECT_EQ(mod(-14, 3), 1);
+ EXPECT_EQ(mod(-15, 3), 0);
+ EXPECT_EQ(mod(0, 3), 0);
+}
+
+template <typename T> class OverflowTest : public ::testing::Test {};
using OverflowTestTypes = ::testing::Types<signed char, short, int, long,
long long>;
@@ -560,5 +591,4 @@ TYPED_TEST(OverflowTest, MulResultZero) {
EXPECT_FALSE(MulOverflow<TypeParam>(0, -5, Result));
EXPECT_EQ(Result, TypeParam(0));
}
-
} // namespace