Skip to content

Final sync release branch to main - #9122

Open
Ashley Coleman (V-FEXrt) wants to merge 9 commits into
release-1.10.2611from
main
Open

Ashley Coleman (V-FEXrt) wants to merge 9 commits into
release-1.10.2611from
main

Conversation

@V-FEXrt

Copy link
Copy Markdown
Collaborator

Sync latest changes from main into the release branch in preparation to diverge

…-heap-stride CLI flags (#8519)

Building off of #8518, this PR adds two new command-line flags that
override the ArrayStride of the descriptor heap runtime arrays emitted
by -fspv-use-descriptor-heap. It is part 3/4 in a series.

-fvk-resource-heap-stride <N> and -fvk-sampler-heap-stride <M> sets the
stride for ResourceDescriptorHeap SamplerDescriptorHeap arrays
respectively. N and M must be a power of two in [8, 256]. When set, the
CLI value takes the highest precedence.

Assisted by an AI agent.

@dnovillo
This updates the HLSL SROA pass's split copy function to not chase
pointers through layers of nesting. Because this function calls itself
recursively you can end up walking too many layers through pointers
instead of just copying a pointer.

This patch works by detecting when the index list is already populated
and bouncing out to a non-recursive simple pointer copy.
…sts (#9096)

The LinAlg float matrix multiply tests compared results exactly, but
some hardware returns results a few units off even when the exact result
is representable, for example -2.9999993 instead of -3.0 in an F32
accumulator. The larger shapes added in #8939 exposed this. The spec
owner has confirmed that correctly rounded results are not required.

- Accept F32 matrix multiply results within K + 2 ULPs of the expected
value, where K is the inner dimension, since the error of a K-term dot
product grows with K (for example -0.9999986 instead of -1.0 at K = 32).
Accept F16 results within 4 ULPs. ULPs are taken of max(|expected|, 1.0)
so results near zero aren't held to a tighter bound. Inf and NaN must
match.
- Applies to MatMatMul and MatMatMulAccum at Wave and ThreadGroup scope.
- MatVec, outer product, element-wise accumulate, integer multiplies,
transfers and conversions stay exact.

---------

Co-authored-by: Jack Elliott <jackell@ntdev.microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Copilot-Session: f05f926c-8544-4ea3-87aa-307088e1622a
GVN::performScalarPRE replaces an instruction with a PHI node whose
incoming values include existing predecessor instructions. Intersect
poison-generating flags and metadata on those existing values with the
instruction being replaced so later passes do not optimize using flags
that only held on one path.

Backports llvm/llvm-project@722339e40562
(D39637).
pre-jt-add.ll is omitted because DXC's LazyValueInfo does not infer the
nuw range that triggered JumpThreading in upstream LLVM.
…#9110)

InstCombiner::visitICmpInst unconditionally emitted nsw when folding
icmp (A + C1), (C + C2) into a single add. Only preserve nsw from the
original add, and only preserve nuw when the constant difference does
not wrap unsigned.

Backports llvm/llvm-project@29f189f90d44
(D100095).
SimplifyIndvar::eliminateIVComparison folds a proven ICmp in place via
replaceAllUsesWith without notifying ScalarEvolution. Because i1 values
have no SCEVCallbackVH, cached SCEV expressions on users of the ICmp
remain live after their def-use link to the loop is severed, surviving
ScalarEvolution::forgetLoop if the loop is deleted. Call forgetValue on
the ICmp before replacing its uses.

Backports llvm/llvm-project@fd236772f566.
ScalarEvolution::getGEPExpr previously converted a GEP instruction's
inbounds flag into SCEV::FlagNSW on the index-by-size multiplication and
base addition. When a GEP is guarded by control flow, its inbounds
property may not hold across the entire loop, and attaching no-wrap
flags to the resulting recurrence can pollute a globally uniqued
SCEVAddRecExpr shared with another value (such as the loop's induction
variable), causing IndVarSimplify to fold away live loop exit checks.

This resolves the PR23527 FIXME in ScalarEvolution::getGEPExpr, matching
createSCEV's handling of Add and Mul and partially backporting the fix from:
llvm/llvm-project@2ca8a3f
(PR23527, D109789)

---------

Co-authored-by: Chris B <beanz@abolishcrlf.org>
`ubuntu-latest` was recently updated to `26.04` and as part of that bump
`clang-format 17.0.1` is now unavailable. Bump to `clang-format 17.0.6`
Runtime metadata tracking would give up and report the most conservative
flagset when encountering a dynamically indexed array of matrices. This 
change updates the tracking to follow up to the array alloca then assume
every stored matrix is used which allows the tracking to be slighly less
conservative.

Fixes #9097

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

This branch was successfully deployed

1 active deployment
github-pages — 49fea47e Deployed Nov 13, 2026 by V-FEXrt via deploy #1751
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: New

Development

Successfully merging this pull request may close these issues.

6 participants