[orc-rt] Group SPS headers under sps/ subdirectories. NFC. (#219614)
The SPS format headers move from support/ to support/sps/, and
SimpleRemoteCA -- whose wire format is SPS, fixed by compatibility with
LLVM's SimpleRemoteEPC -- moves from bedrock/ to bedrock/sps/. Every
file whose contents are SPS-specific now lives under an sps/ directory
in its layer, matching what the sps-ci -> sps rename set up. Tests and
include guards follow.
[ADT] Simplify SmallPtrSetIterator (NFC) (#219087)
This patch simplifies SmallPtrSetIterator by defining it directly
without the type-erased SmallPtrSetIteratorImpl.
In commit cc3fe3c546e0 (#160814), SmallPtrSetIteratorImpl was introduced
to reduce template instantiation bloat. However, because
SmallPtrSetIteratorImpl is defined entirely in the header and its
trivial iterator loops are aggressively inlined at call sites, the
separate base class adds structural complexity without providing
meaningful code size savings.
Assisted-by: Antigravity
[mlir][xegpu] Resolve layout conflict on scf.for init operands (#215911)
Extends XeGPU layout conflict resolution to cover values carried across
region boundaries. Previously
`ResolveLayoutConflicts::resolveVectorConsumer` skipped all
region-branch operands, so a mismatch between a loop-carried
value's own layout and the layout its loop position requires was never
reconciled and causing lowering issue.
assisted-by-claude
---------
Co-authored-by: Claude Opus 4.8 (1M context) <noreply at anthropic.com>
[mlir][gpu] Drop the explicit sm_70 from the CUDA WMMA integration tests (#219373)
Let the three TensorCore WMMA tests compile for the default chip.
CUDA 13 dropped Volta, so its `ptxas` no longer knows `sm_70`:
ptxas fatal : Value 'sm_70' is not defined for option 'gpu-name'
which fails all three tests on any machine with a current toolkit,
whatever GPU it has -- the arch is pinned in the RUN line and never
reached the hardware's own.
Nothing here needs the arch pinned. `sm_75` is already the default chip
of `gpu-lower-to-nvvm-pipeline`, of `nvvm-attach-target`, and of
`#nvvm.target`, and it is the oldest arch a current `ptxas` accepts; the
WMMA shapes these tests use are available there. Every other CUDA
integration test that doesn't need a specific arch takes that default,
so take it here too, and these tests follow the one place the minimum
supported arch is written down rather than pinning their own copy of it
[2 lines not shown]
[orc-rt] Replace Math.h in favor of bit.h. (#219390)
Replace isPowerOf2 with has_single_bit, and nextPowerOf2 with bit_width
(plus necessary arithmetic at the call sites, and a guard on the long
from sysconf in detectPageSize, which only excluded -1).
Bitmask enums must now have an unsigned underlying type (STL <bit> APIs
require it, and "bit.h" matches the STL).
WIP preserve move uniform cfg, BROKEN
Masks for blends originated from preserved CFG are `true` which is wrong
with the current algorithm, see blend_masks_triangle_phi in
predicator.ll
[VPlan][Predicator] Preserve some uniform control flow
Implements "Partial Control-Flow Linearization" by Simon Moll and
Sebastian Hack. Does **NOT** improve predication/masking yet, so
applicability is artificially narrowed, only some uniform branches are
preserved. In particular, the following is left for future PRs:
* Block masks still contains now-unnecessary term for the preserved
uniform branches.
* Mixed blends/phis aren't supported yet. Detecting where they would be
necessary is as complex as implementing proper support (which would
need either Luke's `reconstructSSA` or Iterated Dominance Frontier),
so we also limit it to a trivial/structured CFG where there's only
single block where those would need to be inserted.
I think even the current version might be enough to start implementing
an alternative to https://github.com/llvm/llvm-project/pull/141900 (see
BOSCC in the paper).
[VPlan] Use compact RPOT instead of just RPOT
This is necessary for the future partial linearization change, but I
wanted to commit this bit independently because it changes some tests on
itself and could potentially provide more blend optimization
opportunites (at least I hoped) but that didn't seem to happen.