[llvm] [DAG] Fold build_vector(build_pair()) patterns. (PR #88261)

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Sat Apr 13 21:16:04 PDT 2024


================
@@ -23497,6 +23497,29 @@ SDValue DAGCombiner::visitBUILD_VECTOR(SDNode *N) {
       return DAG.getNode(ISD::SPLAT_VECTOR, SDLoc(N), VT, V);
     }
 
+  // build_vector(build_pair(x,y)) -> bitcast(build_pair(x,y))
+  if (N->getNumOperands() == 1 &&
+      N->getOperand(0).getOpcode() == ISD::BUILD_PAIR)
+    return DAG.getBitcast(VT, N->getOperand(0));
+
+  // build_vector(build_pair(x,y),build_pair(z,w),...)
+  // --> build_vector(x,y,z,w,...)
----------------
topperc wrote:

should be `bitcast(build_vector(x,y,z,w,...))` right?

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


More information about the llvm-commits mailing list