[PATCH] D102687: [RISCV] Ensure shuffle splat operands are type-legal

Craig Topper via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue May 18 09:52:49 PDT 2021


craig.topper added inline comments.


================
Comment at: llvm/lib/Target/RISCV/RISCVISelLowering.cpp:1853
   // encounter a bitcasted BUILD_VECTOR with low/high i32 values.
-  if (SDValue SplatValue = DAG.getSplatValue(V1)) {
+  SDValue SplatValue = DAG.getSplatValue(V1);
+  if (SplatValue && (isa<ConstantSDNode>(SplatValue) ||
----------------
This still creates the illegal type. The node just ends up unused with this patch and gets deleted before anyone notices?

Could we call getSplatSourceVector instead and create an XLenVT extract_vector_elt ourselves? Or teach getSplatValue to obey NewNodesMustHaveLegalTypes.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D102687



More information about the llvm-commits mailing list