HomePhabricator

[SelectionDAG] Unify scalarizeVectorLoad and VectorLegalizer::ExpandLoad

Authored by LemonBoy on May 2 2020, 2:09 PM.

Description

[SelectionDAG] Unify scalarizeVectorLoad and VectorLegalizer::ExpandLoad

The two code paths have the same goal, legalizing a load of a non-byte-sized vector by loading the "flattened" representation in memory, slicing off each single element and then building a vector out of those pieces.

The technique employed by ExpandLoad is slightly more convoluted and produces slightly better codegen on ARM, AMDGPU and x86 but suffers from some bugs (D78480) and is wrong for BE machines.

Differential Revision: https://reviews.llvm.org/D79096