TileOP: add options+groupM overloads across the TMATMUL family - #93
Merged
Conversation
The explicit-groupM coverage was asymmetric: only TMATMUL had the (options, groupM) combination, so the FA-style call TMATMUL_ACC(tO, tO, tW, tV, pvOptions, kGroupM); failed with 'no matching function'. This adds the (options, groupM) overload to the remaining five family members: TMATMUL_ACC(d, c, a, b, options, groupM) TMATMUL_BIAS(d, a, b, bias, options, groupM) TMATMUL_MX(d, a, sa, b, sb, options, groupM) TMATMUL_MX_ACC(d, c, a, sa, b, sb, options, groupM) TMATMUL_MX_BIAS(d, a, sa, b, sb, bias, options, groupM) Each variant is the full options overload with the runtime group_M substituted into the emitter's M slot, plus the shared cooperative guards (Local-A/Shared-B only; group_M in 1..128 via the pto_matmul_groupm_detail helpers). All other PostProcess capabilities (quant/PReLU/RowMax/GroupMax/CScale) flow through unchanged. Verified (fixture CoopGroupMOverloads, options_groupm_forms namespace): - the reported call pattern compiles: BSTART.CUBE TMATMUL.ACC with LB0 = runtime group_M (B.DIM reg, 0), N/K immediate-form, no dead descriptor materialisation before B.FPATR - all five family members emit the correct bundle - full gate 64/74 (11 failures identical on baseline); unittest 40/40
VV0003
pushed a commit
that referenced
this pull request
Sep 8, 2026
…e same PR Records the working convention (applied in #87/#93): any public-header interface change must update the corresponding docs/tileop-usage pages (signature block with template declarations, parameter table, overload selection), plus options.md / migration entries for cross-cutting changes, verified by the docs freshness unittest.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Completes the explicit-groupM overload matrix. Before this PR only
TMATMULhad the(options, groupM)combination — an FA-style call likefailed to compile. This adds the same overload to the remaining five family members:
Each variant is the corresponding full-options overload with the runtime group_M substituted into the emitter M slot, plus the shared cooperative guards from
pto_matmul_groupm_detail(Local-A/Shared-B only; group_M 1..128). All PostProcess capabilities (quant/PReLU/RowMax/GroupMax/CScale) flow through unchanged — including the parameter-freekeep_acc()path with zero dead descriptor materialisation.Overload matrix after this PR
Verification
TMATMUL_ACC(o, o, w, sv, Opt{}, 128)) compiles:BSTART.CUBE TMATMUL.ACCwith LB0 = runtime group_M (B.DIM reg, 0), N/K immediate-form, no dead descriptors before B.FPATRCoopGroupMOverloadsextended with the options_groupm_forms namespace)