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? | |
5755 | 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 | |
11624 | 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? |
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?