[llvm] [InstCombine] Optimize unneeded float to int cast when icmp (PR #155501)
Artem Trokhymchuk via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 7 04:30:43 PDT 2025
================
@@ -7611,6 +7613,117 @@ Instruction *InstCombinerImpl::foldICmpCommutative(CmpPredicate Pred,
return nullptr;
}
+enum class SignType {
+ Positive,
+ NonPositive,
+ Negative,
+ NonNegative,
+};
+
+/// Check signess of a constant integer or vector of integers
+///
+/// \param C constant to check for signedness
+/// \param SignType the sign type to check against
+///
+/// \return whether constant is signess corresponds with the requesed requested
+/// sign
+static bool checkConstantSignType(const Constant *C, SignType Sign) {
+ auto CheckSign = [Sign](const APInt &Value) {
+ switch (Sign) {
+ case SignType::Positive:
+ return Value.isStrictlyPositive();
+ case SignType::NonPositive:
+ return Value.isNonPositive();
+ case SignType::Negative:
+ return Value.isNegative();
+ case SignType::NonNegative:
+ return Value.isNonNegative();
+ default:
----------------
trokhymchuk wrote:
I removed use of this function completely and used matcher instead (thanks for pointing out), pls take a look
https://github.com/llvm/llvm-project/pull/155501
More information about the llvm-commits
mailing list