https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104933
Bug ID: 104933
Summary: [nvptx] muniform-simt optimization: determine
inside/outside SIMT region at compile time
Product: gcc
Version: 12.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: target
Assignee: unassigned at gcc dot gnu.org
Reporter: vries at gcc dot gnu.org
Target Milestone: ---
The switch -muniform-simt attempts to deal with a problem outside simt regions
by rewriting the instruction stream.
In the general case we don't know for an insn whether it's inside or outside an
simt region, so the reorg pass nvptx_reorg_uniform_simt rewrites all insns.
However, inside the simt regions, the rewrite should have no effect, and this
is done by maintaining predicates in some registers which have different values
inside and outside an simt region.
But for a function that contains SIMT entry/exit markers, we do known whether
an insn is inside or outside and SIMT region, and we could evaluate these
predicates at compile time, which might be more optimal, and might make the
code more readable.