[llvm] [X86] Replace custom AND/OR/XOR reduction pattern matching with ISD::VECREDUCE_AND/OR/XOR support (PR #199544)

Phoebe Wang via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 5 00:32:34 PDT 2026


================
@@ -23673,16 +23676,14 @@ static SDValue MatchVectorAllEqualTest(SDValue OrigLHS, SDValue OrigRHS,
 
   // Match icmp(reduce_or(X),0) anyof reduction patterns.
   // Match icmp(reduce_and(X),-1) allof reduction patterns.
-  if (Op.getOpcode() == ISD::EXTRACT_VECTOR_ELT) {
-    ISD::NodeType BinOp;
-    if (SDValue Match =
-            DAG.matchBinOpReduction(Op.getNode(), BinOp, {LogicOp})) {
-      EVT MatchVT = Match.getValueType();
-      return LowerVectorAllEqual(DL, Match,
-                                 CmpNull ? DAG.getConstant(0, DL, MatchVT)
-                                         : DAG.getAllOnesConstant(DL, MatchVT),
-                                 CC, Mask, Subtarget, DAG, X86CC);
-    }
+  if ((LogicOp == ISD::AND && Op.getOpcode() == ISD::VECREDUCE_AND) ||
+      (LogicOp == ISD::OR && Op.getOpcode() == ISD::VECREDUCE_OR)) {
----------------
phoebewang wrote:

Use `CmpNull`, `!CmpNull` instead?

https://github.com/llvm/llvm-project/pull/199544


More information about the llvm-commits mailing list