[PATCH] D140638: [Codegen][LegalizeIntegerTypes] New legalization strategy for scalar shifts: shift through stack
Roman Lebedev via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 13 11:44:38 PST 2023
lebedev.ri added inline comments.
================
Comment at: llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp:4134
+ unsigned VTByteWidth = VTBitWidth / 8;
+ EVT ByteVecVT = EVT::getVectorVT(
+ *DAG.getContext(), EVT::getIntegerVT(*DAG.getContext(), 8), VTByteWidth);
----------------
craig.topper wrote:
> Is this ByteVecVT only used to make clampDynamicVectorIndex work? It won't cause vector instructions to be generated from scalar code will it?
Yes, only for `clampDynamicVectorIndex()`.
================
Comment at: llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp:4164
+ // And spill it into the stack slot.
+ Ch = DAG.getStore(Ch, dl, Init, StackPtr, StackPtrInfo);
+
----------------
craig.topper wrote:
> I think the alignment is incorrect on this store.
Bingo!
================
Comment at: llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp:4212
+ DAG.getConstant(7, dl, ShAmtVT));
+ Res = DAG.getNode(N->getOpcode(), dl, VT, Res, ShAmtRem);
+ }
----------------
craig.topper wrote:
> Does this shift end up in `ExpandShiftWithKnownAmountBit` because of the AND?
That's the goal, yes.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D140638/new/
https://reviews.llvm.org/D140638
More information about the llvm-commits
mailing list