[llvm] [InstCombine] Fold icmp on frexp exponent to fcmp on fabs(x) (PR #210711)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 27 02:11:48 PDT 2026
================
@@ -3606,6 +3606,51 @@ Instruction *InstCombinerImpl::foldICmpInstWithConstant(ICmpInst &Cmp) {
if (Instruction *I = foldICmpIntrinsicWithConstant(Cmp, II, *C))
return I;
+ {
+ // icmp slt/sgt (extractvalue (frexp X), 1), C -->
+ // fcmp olt/oge (fabs X), 2^ExpVal
+ // slt -> olt, ExpVal = C-1; sgt -> oge, ExpVal = C.
+ Value *X;
+ if (match(Cmp.getOperand(0),
+ m_OneUse(m_ExtractValue<1>(
+ m_OneUse(m_Intrinsic<Intrinsic::frexp>(m_Value(X)))))) &&
+ isKnownNeverInfOrNaN(X, SQ.getWithInstruction(&Cmp))) {
----------------
FathimaHaris wrote:
Moved , isKnownNeverInfOrNaN is now the last check, after the exponent range check.
https://github.com/llvm/llvm-project/pull/210711
More information about the llvm-commits
mailing list