[llvm] [InstCombine] Optimize unneeded float to int cast when icmp (PR #155501)

Yingwei Zheng via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 7 00:35:44 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:
----------------
dtcxzyw wrote:

It is used to support non-spalt vector constants. See https://github.com/llvm/llvm-project/pull/155501?notification_referrer_id=NT_kwDOAO7OmbQxODQ5MDk1OTY0OToxNTY1MDQ1Nw#discussion_r2311989751.

https://github.com/llvm/llvm-project/pull/155501


More information about the llvm-commits mailing list