diff options
author | Luke Lau <luke@igalia.com> | 2025-07-23 20:09:33 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-07-23 20:09:33 +0800 |
commit | 114d74e39151ea60afd211a307011f3943ecc9a9 (patch) | |
tree | de4495c35d65c08b13ca782f1a054f7a698ebd92 /llvm/unittests/IR/ModuleTest.cpp | |
parent | d65cc97ab1bdc61b22e853f3882c9ba267764e53 (diff) | |
download | llvm-114d74e39151ea60afd211a307011f3943ecc9a9.zip llvm-114d74e39151ea60afd211a307011f3943ecc9a9.tar.gz llvm-114d74e39151ea60afd211a307011f3943ecc9a9.tar.bz2 |
[VPlan] Expand VPBlendRecipes to select instructions. NFC (#133993)
When looking at some EVL tail folded code in SPEC CPU 2017 I noticed we
sometimes have both VPBlendRecipes and select VPInstructions in the same
plan:
EMIT vp<%active.lane.mask> = active lane mask vp<%5>, vp<%3>
EMIT vp<%7> = icmp ...
EMIT vp<%8> = logical-and vp<%active.lane.mask>, vp<%7>
BLEND ir<%8> = ir<%n.015> ir<%foo>/vp<%8>
EMIT vp<%9> = select vp<%active.lane.mask>, ir<%8>, ir<%n.015>
Since a blend will ultimately generate a chain of selects, we could fold
the blend into the select:
EMIT vp<%active.lane.mask> = active lane mask vp<%5>, vp<%3>
EMIT vp<%7> = icmp ...
EMIT vp<%8> = logical-and vp<%active.lane.mask>, vp<%7>
EMIT ir<%8> = select vp<%8>, ir<%foo>, ir<%n.015>
So as a first step, this patch expands blends to a series of select
instructions, which may allow them to be simplified further with other
select instructions.
Diffstat (limited to 'llvm/unittests/IR/ModuleTest.cpp')
0 files changed, 0 insertions, 0 deletions