summaryrefslogtreecommitdiff
path: root/lldb/source/Plugins/ObjectFile/JSON/ObjectFileJSON.cpp
diff options
context:
space:
mode:
authorAlexey Bataev <a.bataev@outlook.com>2025-03-04 15:47:23 -0500
committerGitHub <noreply@github.com>2025-03-04 15:47:23 -0500
commit855178af99ac6597f3ae09c3c9b7edbc37b28009 (patch)
tree2ebd0dc0ffa4fa8a06e9403d71f3f94b67eb97d1 /lldb/source/Plugins/ObjectFile/JSON/ObjectFileJSON.cpp
parent5cc033b5f2ac0f257ee6c7fd457da0425dc64d37 (diff)
[SLP]Fix/improve getSpillCost analysis
Previous implementation may took some extra time, when walked over the same instructions several times. And also it did not include proper analysis for cross-basic-block use of the vectorized values. This version fixes it. It walks over the tree and checks the deps between entries and their operands. If there are non-vectorized calls in between, it adds a single(!) spill cost, because the vector value should be spilled/reloaded only once. Also, this version caches analysis for each entries, which are detected, and do not repeats it, uses data, found during previous analysis for previous nodes. Also, it has the internal limit. If the number of instructions between nodes and their operands is too big (> than ScheduleRegionSizeBudget / VectorizableTree.size()), it is considered that the spill is required. It allows to improve compile time. Reviewers: preames, RKSimon, mikhailramalho Reviewed By: preames Pull Request: https://github.com/llvm/llvm-project/pull/129258
Diffstat (limited to 'lldb/source/Plugins/ObjectFile/JSON/ObjectFileJSON.cpp')
0 files changed, 0 insertions, 0 deletions