diff options
| author | Princeton Ferro <pferro@nvidia.com> | 2025-10-29 09:46:01 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-29 09:46:01 -0700 |
| commit | 68e74f8f8435ae565394ab83b44720ec0e7c631f (patch) | |
| tree | f375a906e63225b2a64bc557aec0aa6e327de60c /lldb/source/Plugins/ScriptInterpreter/Python/SWIGPythonBridge.h | |
| parent | affed57d3611b114ade0f703d48e5217c8cbf248 (diff) | |
| download | llvm-68e74f8f8435ae565394ab83b44720ec0e7c631f.zip llvm-68e74f8f8435ae565394ab83b44720ec0e7c631f.tar.gz llvm-68e74f8f8435ae565394ab83b44720ec0e7c631f.tar.bz2 | |
[DAGCombiner] Lower dynamic insertelt chain more efficiently (#162368)
For an insertelt with a dynamic index, the default handling in
DAGTypeLegalizer and LegalizeDAG will reserve a stack slot for the
vector, lower the insertelt to a store, then load the modified vector
back into temporaries. The vector store and load may be legalized into a
sequence of smaller operations depending on the target.
Let V = the vector size and L = the length of a chain of insertelts with
dynamic indices. In the worse case, this chain will lower to O(VL)
operations, which can increase code size dramatically.
Instead, identify such chains, reserve one stack slot for the vector,
and lower all of the insertelts to stores at once. This requires only
O(V + L) operations. This change only affects the default lowering
behavior.
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/SWIGPythonBridge.h')
0 files changed, 0 insertions, 0 deletions
