PortfolioTriton PRsLLVM PRs

Systems / GPU · 2026

Upstream compiler patches

Bugs I hit while building on Triton and MLIR, sent upstream instead of worked around. Five patches merged, three more bugs fixed by maintainers from my reproducers, ten changes still open.

C++ · MLIR · LLVM · OpenAI Triton · CUDA · Compilers

5
patches merged

2 in Triton, 3 in LLVM's MLIR

3
bugs fixed by maintainers

reported with a reproducer

10
still open

under review upstream

Every change, and where it stands

Merged 5

  • triton #11324

    Treat the warp_specialize terminators as CTA sync points

    30 redundant barriers removed from an H100 build

  • llvm-project #216851

    Fix a mem2reg crash on a zero-extent alloca

    mlir-opt no longer asserts on a zero-sized memref

  • llvm-project #217392

    Do not read non-constant loop bounds when unrolling

    three shapes where the trip count answered but the bounds were not constant

  • llvm-project #216854

    Verify multi_reduction reduction dimensions

    an out-of-bounds write reachable from a malformed op

  • triton #11311

    Make the Example 4 plugin block in the docs parse

    documentation

Reported, fixed by a maintainer 3

  • triton #11328

    Multicast TMA into a memdesc view misses its cluster barrier

    fixed by Jokeren

  • triton #11404

    A relaxed cluster_barrier is treated as a full cluster sync point

    fixed by lezcano

  • triton #11407

    predicateOp drops the predicate on NotSpeculatable arithmetic

    fixed by lezcano

Open 10, five shown

  • triton #10766

    Fold split(join(a, b)) and join(split(x))

    shared memory 16,384 B to 0, SASS 224 to 72 instructions

  • triton #11325

    Key subslice offset comparison on the value they came from

    soundness fix in Membar

  • llvm-project #218226

    Only convert an scf.yield that terminates an scf.for

    a cast abort on vector.contract inside scf.if

  • llvm-project #216853

    Do not coalesce when an inner loop reads an outer iter_arg

    four more MLIR fixes are open alongside this one

  • sparsify #143

    Shard the latent dimension across ranks

    two more sparsify patches are open alongside this one

States verified against the GitHub API on 27 August 2026. The three reported issues were fixed by Triton maintainers, not by a patch of mine: the credit there is for the report and the reproducer.

The Membar patch removes about 30 bar.sync instructions and buys no speedup

Modelling ttg.warp_yield and ttg.warp_return as a CTA-wide rendezvous stops Triton's Membar analysis inserting a redundant barrier after every warp_specialize. On an H100 build the generated PTX loses about 30 bar.sync instructions and runs somewhere between 0.5 percent slower and 0.3 percent faster. I published that negative result on the pull request instead of quoting the barrier count and leaving it to imply a win.

Three MLIR patches: a crash, an unchecked read, a buffer overrun

PatchWhat was wrong
mem2reg on a zero-extent allocaPromotion never checked the extent in the memref shape, so mlir-opt --mem2reg asserted on legal input.
scf loop unrollerloopUnrollByFactor read bounds it had not established were constant, on the shapes where the trip-count query answered anyway.
vector.multi_reduction verifierOut-of-range and duplicate reduction_dims reached getReductionMask(), which wrote past the end of a SmallVector<bool>.

A documentation fix sat 43 days, then merged in under a day

I first sent it inside a larger pull request, next to a change a maintainer had already pushed back on, and it waited 43 days without CI. Extracted onto a fresh branch, one file, nothing contested, it merged in under a day. I no longer tie an uncontroversial fix to a contested one.

Four changes did not land, and I withdrew one myself

ChangeOutcome
Membar twin on the entry sideDeclined as marginal. I had measured that it left the generated code unchanged.
fp8 block-pointer loadsDeclined: block pointers are deprecated and being removed.
Defensive error path in global_scratch_allocWithdrawn after a reviewer showed the assert is unreachable from generated code.
Per-lane retirement pass (RFC)Maintainers asked for it out of tree. It ships as a loadable plugin.

Every state on this page was checked against the GitHub API on 27 August 2026

That covers the merged patches, the ten changes still open under review, and the closures above. Where maintainers fixed a reported bug themselves from my reproducer, the page credits the report.