[PATCH] D158163: [RISCV] Narrow types of index operand matched pattern (shl_vl (zext_vl), C)

Liao Chunyu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Aug 17 06:32:48 PDT 2023


liaolucy added inline comments.


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:11229
+  // just use the input to the extract.
+  if (N1.getOpcode() == ISD::INSERT_SUBVECTOR) {
+    SDValue N10 = N1.getOperand(0);
----------------
fakepaper56 wrote:
> The combine code exists in `DAGCombiner::visitINSERT_SUBVECTOR`. Why do we need this here?
an example:
```

Legalized selection DAG: %bb.0 'vpscatter_baseidx_zext_v8i8_v8i16:'
SelectionDAG has 26 nodes:
  t0: ch,glue = EntryToken
  t32: nxv4i1 = RISCVISD::VMSET_VL Constant:i64<8>
      t2: nxv4i16,ch = CopyFromReg t0, Register:nxv4i16 %0
      t6: i64,ch = CopyFromReg t0, Register:i64 %1
          t8: nxv4i8,ch = CopyFromReg t0, Register:nxv4i8 %2
        t33: nxv4i64 = RISCVISD::VZEXT_VL t8, t32, Constant:i64<8>
            t43: nxv4i64 = RISCVISD::VMV_V_X_VL undef:nxv4i64, Constant:i64<1>, Constant:i64<8>
          t44: v8i64 = extract_subvector t43, Constant:i64<0>
        t36: nxv4i64 = insert_subvector undef:nxv4i64, t44, Constant:i64<0>
      t37: nxv4i64 = RISCVISD::SHL_VL t33, t36, undef:nxv4i64, t32, Constant:i64<8>
      t11: nxv4i1,ch = CopyFromReg t0, Register:nxv4i1 %3
        t14: i64,ch = CopyFromReg t0, Register:i64 %4
      t16: i64 = AssertZext t14, ValueType:ch:i32
    t42: ch = llvm.riscv.vsoxei.mask<(store unknown-size, align 2)> t0, TargetConstant:i64<8783>, t2, t6, t37, t11, t16
  t28: ch = RISCVISD::RET_GLUE t42
```
visitINSERT_SUBVECTOR is executed after this code, and block this optimization, so add these here.



Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D158163



More information about the llvm-commits mailing list