[llvm] [ValueTracking] Range of cmp intrinsics are -1, 0, and 1 (PR #144365)

via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 16 07:57:59 PDT 2025


https://github.com/AZero13 updated https://github.com/llvm/llvm-project/pull/144365

>From 83012ac0e3679cd870991284d7202c621adc7746 Mon Sep 17 00:00:00 2001
From: Rose <gfunni234 at gmail.com>
Date: Mon, 16 Jun 2025 10:49:58 -0400
Subject: [PATCH] [ValueTracking] Range of cmp intrinsics are -1, 0, and 1

---
 llvm/lib/Analysis/ValueTracking.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index 9df667926faf0..2379aba69aad0 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -9785,6 +9785,10 @@ static ConstantRange getRangeForIntrinsic(const IntrinsicInst &II,
   unsigned Width = II.getType()->getScalarSizeInBits();
   const APInt *C;
   switch (II.getIntrinsicID()) {
+  case Intrinsic::scmp:
+  case Intrinsic::ucmp:
+    return ConstantRange::getNonEmpty(APInt::getAllOnes(Width),
+                                      APInt::getOneBitSet(Width, 0));
   case Intrinsic::ctlz:
   case Intrinsic::cttz: {
     APInt Upper(Width, Width);



More information about the llvm-commits mailing list