llvm/llvm-project

[DAG] ISD::matchUnaryPredicate / matchUnaryFpPredicate / matchBinaryPredicate - add DemandedElts variant

クローズ

#181,658 opened on 2026/02/16

 (6 件のコメント) (1 件のリアクション) (1 人の担当者)C++ (10,782 件のフォーク)batch import
good first issuellvm:SelectionDAG

Repository metrics

Stars
 (26,378 個のスター)
PR merge metrics
 (平均マージ 1d 2h) (30d で 1,000 merged PRs)

説明

The ISD::match*Predicate methods help us to perform all_of tests on scalar/splat/build_vector constants with a callback test.

It'd be very useful if we could provide variants of these that take a DemandedElts argument (similar to #181485 and other DAG value tracking methods), to allow us to restrict the build_vector tests to specific elements.

For instance, this would allow us to remove the vector constant checks from isKnownToBeAPowerOfTwo entirely and just use the initial matchUnaryPredicate call at the start of the method:

https://github.com/RKSimon/llvm-project/blob/20aff2085c358d3e112b245494161ddb9ffe0410/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp#L4682-L4696

scalar/splat cases can just ignore the DemandedElts argument, but we should assert the build_vector are the same size as the DemandedElts APInt

コントリビューターガイド