[llvm-branch-commits] [llvm] [DAG] Fold (setcc ((x | x >> c0 | ...) & mask)) sequences (PR #146054)
Jay Foad via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Jun 30 02:06:32 PDT 2025
================
@@ -28909,13 +28909,97 @@ SDValue DAGCombiner::SimplifySelectCC(const SDLoc &DL, SDValue N0, SDValue N1,
return SDValue();
}
+static SDValue matchMergedBFX(SDValue Root, SelectionDAG &DAG,
+ const TargetLowering &TLI) {
+ // Match a pattern such as:
+ // (X | (X >> C0) | (X >> C1) | ...) & Mask
+ // This extracts contiguous parts of X and ORs them together before comparing.
+ // We can optimize this so that we directly check (X & SomeMask) instead,
+ // eliminating the shifts.
+
+ EVT VT = Root.getValueType();
----------------
jayfoad wrote:
> Should I bother supporting vector types here?
I don't have a strong opinion on that. You could leave a TODO?
https://github.com/llvm/llvm-project/pull/146054
More information about the llvm-branch-commits
mailing list