[llvm] [DAG] Fold freeze(shuffle(x,y,m)) -> shuffle(freeze(x),freeze(y),m) (PR #90952)

Björn Pettersson via llvm-commits llvm-commits at lists.llvm.org
Fri May 3 10:46:18 PDT 2024


================
@@ -15533,8 +15534,16 @@ SDValue DAGCombiner::visitFREEZE(SDNode *N) {
     if (Op.getOpcode() == ISD::UNDEF)
       Op = DAG.getFreeze(Op);
   }
-  // NOTE: this strips poison generating flags.
-  SDValue R = DAG.getNode(N0.getOpcode(), SDLoc(N0), N0->getVTList(), Ops);
+
+  SDValue R;
+  if (auto *SVN = dyn_cast<ShuffleVectorSDNode>(N0)) {
----------------
bjope wrote:

Wouldn't the else part work just fine also for VECTOR_SHUFFLE?
The mask is in Ops[2].

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


More information about the llvm-commits mailing list