[PATCH] D82744: [CodeGen] Fix warnings in getCopyToPartsVector
David Sherwood via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 2 01:34:18 PDT 2020
This revision was automatically updated to reflect the committed changes.
Closed by commit rGc7df35d2b28e: [CodeGen] Fix warnings in getCopyToPartsVector (authored by david-arm).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D82744/new/
https://reviews.llvm.org/D82744
Files:
llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
===================================================================
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -745,12 +745,16 @@
NumParts = NumRegs; // Silence a compiler warning.
assert(RegisterVT == PartVT && "Part type doesn't match vector breakdown!");
- unsigned IntermediateNumElts = IntermediateVT.isVector() ?
- IntermediateVT.getVectorNumElements() : 1;
+ assert(IntermediateVT.isScalableVector() == ValueVT.isScalableVector() &&
+ "Mixing scalable and fixed vectors when copying in parts");
+
+ ElementCount DestEltCnt;
+
+ if (IntermediateVT.isVector())
+ DestEltCnt = IntermediateVT.getVectorElementCount() * NumIntermediates;
+ else
+ DestEltCnt = ElementCount(NumIntermediates, false);
- // Convert the vector to the appropriate type if necessary.
- auto DestEltCnt = ElementCount(NumIntermediates * IntermediateNumElts,
- ValueVT.isScalableVector());
EVT BuiltVectorTy = EVT::getVectorVT(
*DAG.getContext(), IntermediateVT.getScalarType(), DestEltCnt);
if (ValueVT != BuiltVectorTy) {
@@ -764,6 +768,9 @@
SmallVector<SDValue, 8> Ops(NumIntermediates);
for (unsigned i = 0; i != NumIntermediates; ++i) {
if (IntermediateVT.isVector()) {
+ // This does something sensible for scalable vectors - see the
+ // definition of EXTRACT_SUBVECTOR for further details.
+ unsigned IntermediateNumElts = IntermediateVT.getVectorMinNumElements();
Ops[i] =
DAG.getNode(ISD::EXTRACT_SUBVECTOR, DL, IntermediateVT, Val,
DAG.getVectorIdxConstant(i * IntermediateNumElts, DL));
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D82744.275017.patch
Type: text/x-patch
Size: 1759 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200702/33d4a53a/attachment.bin>
More information about the llvm-commits
mailing list