To make legalization easier, the operands and outputs have the same size for
these ISD Nodes. When legalizing the results in WidenVecRes_VECTOR_DEINTERLEAVE
the operands are legalized to the same size as the outputs.
The ISD Node has two output/results, therefore the legalizing functions update
both results/outputs.
Details
- Reviewers
luke paulwalker-arm sdesmalen reames
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
| llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp | ||
|---|---|---|
| 5023–5051 | I'm not sure if i'm missing something but if i remove this whole block and run check-all tests I don't see anything failing. Is this missing a test case? | |
| 5725 | DL? | |
| llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | ||
| 11592 | This can be defined next to where it's used. Is PackedVT or LegalTY a better name for this? If InVT is nxv3i32 then WideVT = TLI.getTypeToTransformTo(Ctx, InVT); will return nxv4i32 which I found quite surprising | |
| 11625 | The way i'm reading this if statement is "before we had to widen InVT to WideTV". If we do something like: bool InVTMustWiden = (TLI.getTypeAction(Ctx, InVT) == TargetLowering::TypeWidenVector);
if (InVTMustWiden) {
WideVT = TLI.getTypeToTransformTo(Ctx, InVT);
...
...
...
if (InVTMustWiden) {
OutVT = TLI.getValueType(DAG.getDataLayout(), I.getType());
...Do you think that makes it easier to understand? | |
Unrelated change?