[llvm-branch-commits] [llvm] [DAG] Fold (setcc ((x | x >> c0 | ...)	& mask)) sequences (PR #146054)
    Pierre van Houtryve via llvm-branch-commits 
    llvm-branch-commits at lists.llvm.org
       
    Mon Jun 30 01:18:59 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();
----------------
Pierre-vh wrote:
I'll update it. Should I bother supporting vector types here? I think nothing's stopping it except testing coverage. On AMDGPU we scalarize the vector compares
https://github.com/llvm/llvm-project/pull/146054
    
    
More information about the llvm-branch-commits
mailing list