[llvm] [ADT] Add fshl/fshr operations to APSInt (PR #153790)
via llvm-commits
llvm-commits at lists.llvm.org
Fri Aug 15 04:32:27 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff HEAD~1 HEAD --extensions h,cpp -- llvm/include/llvm/ADT/APSInt.h llvm/lib/Support/APSInt.cpp llvm/unittests/ADT/APSIntTest.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/llvm/lib/Support/APSInt.cpp b/llvm/lib/Support/APSInt.cpp
index 8e2dc55bf..99643a7d7 100644
--- a/llvm/lib/Support/APSInt.cpp
+++ b/llvm/lib/Support/APSInt.cpp
@@ -45,21 +45,21 @@ void APSInt::Profile(FoldingSetNodeID& ID) const {
APSInt llvm::APSIntOps::fshl(const APSInt &Hi, const APSInt &Lo,
const APSInt &Shift) {
bool IsUnsigned = Hi.isUnsigned();
- APSInt BitWidth(APInt(Hi.getBitWidth(),
- static_cast<uint64_t>(Hi.getBitWidth())),
- IsUnsigned);
+ APSInt BitWidth(
+ APInt(Hi.getBitWidth(), static_cast<uint64_t>(Hi.getBitWidth())),
+ IsUnsigned);
return APSInt((Hi << (Shift % BitWidth)) |
- (Lo >> (BitWidth - (Shift % BitWidth))),
+ (Lo >> (BitWidth - (Shift % BitWidth))),
IsUnsigned);
}
APSInt llvm::APSIntOps::fshr(const APSInt &Hi, const APSInt &Lo,
const APSInt &Shift) {
bool IsUnsigned = Hi.isUnsigned();
- APSInt BitWidth(APInt(Hi.getBitWidth(),
- static_cast<uint64_t>(Hi.getBitWidth())),
- IsUnsigned);
+ APSInt BitWidth(
+ APInt(Hi.getBitWidth(), static_cast<uint64_t>(Hi.getBitWidth())),
+ IsUnsigned);
return APSInt((Hi << (BitWidth - (Shift % BitWidth))) |
- (Lo >> (Shift % BitWidth)),
+ (Lo >> (Shift % BitWidth)),
IsUnsigned);
}
diff --git a/llvm/unittests/ADT/APSIntTest.cpp b/llvm/unittests/ADT/APSIntTest.cpp
index be303a99b..7f76f9515 100644
--- a/llvm/unittests/ADT/APSIntTest.cpp
+++ b/llvm/unittests/ADT/APSIntTest.cpp
@@ -288,8 +288,8 @@ TEST(APSIntTest, UnsignedHighBit) {
// Right shift of unsigned numbers translates to a logical shift.
TEST(APSIntTest, RightShiftUnsigned) {
// Right shift of a negative number.
- const APInt neg_one(128, static_cast<uint64_t>(-1), /*isSigned*/true);
- const APSInt neg_one_unsigned(APSInt(neg_one, /*isUnsigned*/true));
+ const APInt neg_one(128, static_cast<uint64_t>(-1), /*isSigned*/ true);
+ const APSInt neg_one_unsigned(APSInt(neg_one, /*isUnsigned*/ true));
EXPECT_EQ(0, neg_one_unsigned >> 128);
APSInt i256(APSInt(APInt::getHighBitsSet(256, 2)));
@@ -307,66 +307,94 @@ TEST(APSIntTest, RightShiftUnsigned) {
// Right shift of signed numbers translates to a arithmetic shift.
TEST(APSIntTest, RightShiftSigned) {
// Right shift of a negative number.
- const APInt neg_one = APInt(64, static_cast<uint64_t>(-1), /*isSigned*/true);
- const APSInt neg_one_signed(APSInt(neg_one, /*isUnsigned*/false));
+ const APInt neg_one = APInt(64, static_cast<uint64_t>(-1), /*isSigned*/ true);
+ const APSInt neg_one_signed(APSInt(neg_one, /*isUnsigned*/ false));
EXPECT_EQ(neg_one, neg_one_signed >> 7);
- APSInt i72(APSInt(APInt::getHighBitsSet(72, 1), /*isUnsigned*/false));
+ APSInt i72(APSInt(APInt::getHighBitsSet(72, 1), /*isUnsigned*/ false));
i72 >>= 46;
EXPECT_EQ(47U, i72.countl_one());
EXPECT_EQ(25U, i72.countr_zero());
EXPECT_EQ(47U, i72.popcount());
// Ensure we handle large shifts of multi-word.
- const APSInt signmin128(APSInt(APInt::getSignedMinValue(128), /*isUnsigned*/false));
+ const APSInt signmin128(
+ APSInt(APInt::getSignedMinValue(128), /*isUnsigned*/ false));
EXPECT_TRUE((signmin128 >> 128).isAllOnes());
// Ensure we handle large shifts of multi-word.
- const APSInt umax128(APSInt(APInt::getSignedMaxValue(128), /*isUnsigned*/false));
+ const APSInt umax128(
+ APSInt(APInt::getSignedMaxValue(128), /*isUnsigned*/ false));
EXPECT_EQ(0, umax128 >> 128);
}
TEST(APSIntTest, Fshl) {
// Unsigned
EXPECT_EQ(APSIntOps::fshl(APSInt(APInt(8, 0)), APSInt(APInt(8, 255)),
- APSInt(APInt(8, 8))).getExtValue(), 0);
+ APSInt(APInt(8, 8)))
+ .getExtValue(),
+ 0);
EXPECT_EQ(APSIntOps::fshl(APSInt(APInt(8, 255)), APSInt(APInt(8, 0)),
- APSInt(APInt(8, 8))).getExtValue(), 255);
+ APSInt(APInt(8, 8)))
+ .getExtValue(),
+ 255);
EXPECT_EQ(APSIntOps::fshl(APSInt(APInt(8, 255)), APSInt(APInt(8, 0)),
- APSInt(APInt(8, 15))).getExtValue(), 128);
+ APSInt(APInt(8, 15)))
+ .getExtValue(),
+ 128);
EXPECT_EQ(APSIntOps::fshl(APSInt(APInt(8, 15)), APSInt(APInt(8, 15)),
- APSInt(APInt(8, 11))).getExtValue(), 120);
+ APSInt(APInt(8, 11)))
+ .getExtValue(),
+ 120);
EXPECT_EQ(APSIntOps::fshl(APSInt(APInt(8, 2)), APSInt(APInt(8, 1)),
- APSInt(APInt(8, 3))).getExtValue(), 16);
+ APSInt(APInt(8, 3)))
+ .getExtValue(),
+ 16);
// Signed
EXPECT_EQ(APSIntOps::fshl(APSInt(APInt(32, 0), false),
APSInt(APInt(32, 2147483647), false),
- APSInt(APInt(32, 32), false)).getExtValue(), 0);
+ APSInt(APInt(32, 32), false))
+ .getExtValue(),
+ 0);
EXPECT_EQ(APSIntOps::fshl(APSInt(APInt(64, 1), false),
APSInt(APInt(64, 2), false),
- APSInt(APInt(64, 3), false)).getExtValue(), 8);
+ APSInt(APInt(64, 3), false))
+ .getExtValue(),
+ 8);
}
TEST(APSIntTest, Fshr) {
// Unsigned
EXPECT_EQ(APSIntOps::fshr(APSInt(APInt(8, 0)), APSInt(APInt(8, 255)),
- APSInt(APInt(8, 8))).getExtValue(), 255);
+ APSInt(APInt(8, 8)))
+ .getExtValue(),
+ 255);
EXPECT_EQ(APSIntOps::fshr(APSInt(APInt(8, 255)), APSInt(APInt(8, 0)),
- APSInt(APInt(8, 8))).getExtValue(), 0);
+ APSInt(APInt(8, 8)))
+ .getExtValue(),
+ 0);
EXPECT_EQ(APSIntOps::fshr(APSInt(APInt(8, 255)), APSInt(APInt(8, 0)),
- APSInt(APInt(8, 15))).getExtValue(), 254);
+ APSInt(APInt(8, 15)))
+ .getExtValue(),
+ 254);
EXPECT_EQ(APSIntOps::fshr(APSInt(APInt(8, 15)), APSInt(APInt(8, 15)),
- APSInt(APInt(8, 11))).getExtValue(), 225);
+ APSInt(APInt(8, 11)))
+ .getExtValue(),
+ 225);
EXPECT_EQ(APSIntOps::fshr(APSInt(APInt(8, 1)), APSInt(APInt(8, 2)),
- APSInt(APInt(8, 3))).getExtValue(), 32);
+ APSInt(APInt(8, 3)))
+ .getExtValue(),
+ 32);
// Signed
EXPECT_EQ(APSIntOps::fshr(APSInt(APInt(64, 0), false),
APSInt(APInt(64, 9223372036854775807), false),
- APSInt(APInt(64, 64), false)).getExtValue(),
+ APSInt(APInt(64, 64), false))
+ .getExtValue(),
9223372036854775807);
EXPECT_EQ(APSIntOps::fshr(APSInt(APInt(64, 1), false),
APSInt(APInt(64, 2), false),
- APSInt(APInt(64, 3), false)).getExtValue(),
+ APSInt(APInt(64, 3), false))
+ .getExtValue(),
2305843009213693952);
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/153790
More information about the llvm-commits
mailing list