[llvm] [RISCV][CodeGen] Add initial vzip codegen support (PR #194548)

Pengcheng Wang via llvm-commits llvm-commits at lists.llvm.org
Wed Apr 29 20:17:32 PDT 2026


================
@@ -6435,8 +6472,13 @@ SDValue RISCVTargetLowering::lowerVECTOR_SHUFFLE(SDValue Op,
       OddV = DAG.getExtractSubvector(DL, HalfVT, OddV, OddSrc % Size);
     }
 
-    // Prefer vzip2a if available.
-    // TODO: Extend to matching zip2b if EvenSrc and OddSrc allow.
+    // Prefer vzip2a or vzip if available.
+    // TODO: Extend to matching ri.vzip2b or vzip if EvenSrc and OddSrc allow.
+    if (Subtarget.hasStdExtZvzip() && isLegalVTForZvzip(VT, Subtarget, *this)) {
+      EvenV = DAG.getInsertSubvector(DL, DAG.getUNDEF(VT), EvenV, 0);
+      OddV = DAG.getInsertSubvector(DL, DAG.getUNDEF(VT), OddV, 0);
+      return lowerZvzipVZIP(EvenV, OddV, DL, DAG, Subtarget, /*Part=*/0);
----------------
wangpc-pp wrote:

Good catch! I think we just copied it from `XRivosVizip` and passed the tests mistakenly in silence. :-)

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


More information about the llvm-commits mailing list