[llvm] [DAG] ISD::matchUnaryPredicate / matchUnaryFpPredicate / matchBinaryPredicate - add DemandedElts variant (PR #183013)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 2 00:14:48 PST 2026
================
@@ -6173,7 +6166,8 @@ bool SelectionDAG::isKnownNeverZero(SDValue Op, const APInt &DemandedElts,
return !V.isZero();
};
- if (ISD::matchUnaryPredicate(Op, IsNeverZero))
+ if (ISD::matchUnaryPredicate(Op, DemandedElts, IsNeverZero,
+ /*AllowUndefs=*/false, /*AllowTruncation=*/true))
----------------
VachanVY wrote:
But the below tests were failing with the default values, so I added `/*AllowTruncation=*/true`.
<details>
<summary>Failing Tests</summary
Script:
--
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/unittests/Target/AArch64/./AArch64Tests --gtest_filter=AArch64SelectionDAGTest.KnownNeverZero_Constants
--
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:1463
Value of: DAG->isKnownNeverZero(Vec04, DemandHi)
Actual: false
Expected: true
LLVM-Unit.Target/AArch64/_/AArch64Tests/AArch64SelectionDAGTest/KnownNeverZero_Select
Script:
--
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/unittests/Target/AArch64/./AArch64Tests --gtest_filter=AArch64SelectionDAGTest.KnownNeverZero_Select
--
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:1510
Value of: DAG->isKnownNeverZero(VSelect444Big, DemandLo)
Actual: false
Expected: true
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:1514
Value of: DAG->isKnownNeverZero(VSelect0444, DemandHi)
Actual: false
Expected: true
LLVM-Unit.Target/AArch64/_/AArch64Tests/AArch64SelectionDAGTest/KnownToBeAPowerOfTwo_Constants
Script:
--
/home/gha/actions-runner/_work/llvm-project/llvm-project/build/unittests/Target/AArch64/./AArch64Tests --gtest_filter=AArch64SelectionDAGTest.KnownToBeAPowerOfTwo_Constants
--
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:889
Value of: DAG->isKnownToBeAPowerOfTwo(Vec04, true)
Actual: false
Expected: true
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:890
Value of: DAG->isKnownToBeAPowerOfTwo(Vec44)
Actual: false
Expected: true
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:891
Value of: DAG->isKnownToBeAPowerOfTwo(Vec44, true)
Actual: false
Expected: true
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:893
Value of: DAG->isKnownToBeAPowerOfTwo(Vec4Big, true)
Actual: false
Expected: true
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:895
Value of: DAG->isKnownToBeAPowerOfTwo(Vec0Big, true)
Actual: false
Expected: true
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:899
Value of: DAG->isKnownToBeAPowerOfTwo(Vec04, DemandLo, true)
Actual: false
Expected: true
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:902
Value of: DAG->isKnownToBeAPowerOfTwo(Vec04, DemandHi)
Actual: false
Expected: true
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:903
Value of: DAG->isKnownToBeAPowerOfTwo(Vec04, DemandHi, true)
Actual: false
Expected: true
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:910
Value of: DAG->isKnownToBeAPowerOfTwo(Splat4, true)
Actual: false
Expected: true
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:911
Value of: DAG->isKnownToBeAPowerOfTwo(Splat4)
Actual: false
Expected: true
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:912
Value of: DAG->isKnownToBeAPowerOfTwo(Splat4, true)
Actual: false
Expected: true
/home/gha/actions-runner/_work/llvm-project/llvm-project/llvm/unittests/Target/AArch64/AArch64SelectionDAGTest.cpp:914
Value of: DAG->isKnownToBeAPowerOfTwo(SplatBig, true)
Actual: false
Expected: true
<details>
https://github.com/llvm/llvm-project/pull/183013
More information about the llvm-commits
mailing list