[PATCH] D71074: [Aarch64][SVE] Add intrinsics for scatter stores

Eli Friedman via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Dec 6 13:29:54 PST 2019


efriedma added inline comments.


================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:11929
+      MaxVT.getSizeInBits().getKnownMinSize())
+    return SDValue();
+
----------------
Is the getKnownMinSize comparison trying to reject illegal types?  Or something else?


================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:11957
+  if (Dst.getValueType().isFloatingPoint())
+    DstNew = DAG.getNode(ISD::BITCAST, DL, HwRetVt, Dst);
+  else
----------------
Does this work correctly for nxv2f32?  It looks like we're missing test coverage, also.


================
Comment at: llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:11969
+
+  return DAG.getMergeValues({Store, StoreChain}, DL);
+}
----------------
INTRINSIC_VOID has one result: the chain.  You don't need to MergeValues here.


================
Comment at: llvm/lib/Target/AArch64/AArch64SVEInstrInfo.td:605
 
-  // Scatters using unscaled 32-bit offsets, e.g.
-  //    st1h z0.s, p0, [x0, z0.s, uxtw]
-  // and unpacked:
+  // Scatters using umpacked, unscaled 32-bit offsets, e.g.
   //    st1h z0.d, p0, [x0, z0.d, uxtw]
----------------
"unpacked"


================
Comment at: llvm/test/CodeGen/AArch64/sve-intrinsics-scatter-stores-32bit-scaled-offsets.ll:157
+                                                                     double* %base,
+                                                                     <vscale x 2 x i64> %indices)
+  ret void
----------------
Why are the offsets here using `<vscale x 2 x i64>`?  `<vscale x 2 x i32>` seems more natural.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D71074





More information about the llvm-commits mailing list