[PATCH] D144092: [RISCV] Lower interleave and deinterleave intrinsics

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Feb 20 17:31:54 PST 2023


craig.topper added inline comments.


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:6537
+static SDValue widenVectorOpToi8(SDValue N, SDLoc &DL, SelectionDAG &DAG,
+                                 const RISCVSubtarget &Subtarget) {
+  MVT VT = N.getSimpleValueType();
----------------
`Subtarget` is unused


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:6696
+    Idx = DAG.getNode(RISCVISD::ADD_VL, DL, IdxVT, Idx,
+                      DAG.getSplatVector(IdxVT, DL, VLMAX), DAG.getUNDEF(IdxVT),
+                      OddMask, VL);
----------------
Need to pass `Idx` instead of `UNDEF` to get a mask undisturbed vadd.vv.


================
Comment at: llvm/test/CodeGen/RISCV/rvv/vector-interleave.ll:71
+; CHECK-NEXT:    vsrl.vi v12, v12, 1
+; CHECK-NEXT:    vadd.vx v16, v12, a0, v0.t
+; CHECK-NEXT:    vsetvli zero, zero, e64, m4, ta, ma
----------------
This is a mask agnostic vadd.vx. You need mask undisturbed.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144092/new/

https://reviews.llvm.org/D144092



More information about the llvm-commits mailing list