[llvm] [SDAG] Follow target boolean semantics in `PromoteIntOp_VECTOR_FIND_LAST_ACTIVE` (PR #187949)

Antonio Frighetto via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 24 14:49:23 PDT 2026


================
@@ -2992,7 +2992,15 @@ SDValue DAGTypeLegalizer::PromoteIntOp_VECTOR_HISTOGRAM(SDNode *N,
 SDValue DAGTypeLegalizer::PromoteIntOp_VECTOR_FIND_LAST_ACTIVE(SDNode *N,
                                                                unsigned OpNo) {
   SmallVector<SDValue, 1> NewOps(N->ops());
-  NewOps[OpNo] = GetPromotedInteger(N->getOperand(OpNo));
+  SDValue Op = N->getOperand(OpNo);
+  EVT InVT = Op.getValueType();
+
+  if (TLI.getBooleanContents(InVT) ==
+      TargetLowering::ZeroOrNegativeOneBooleanContent)
+    NewOps[OpNo] = SExtPromotedInteger(Op);
+  else
+    NewOps[OpNo] = ZExtPromotedInteger(Op);
+
   return SDValue(DAG.UpdateNodeOperands(N, NewOps), 0);
----------------
antoniofrighetto wrote:

Polished it up, thanks, possibly a leftover change.

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


More information about the llvm-commits mailing list