Skip to content

Commit 8d60853

Browse files
authored
Using s_add_u64 for tdm address increment (ROCm#8798)
## Motivation In the wave-separated TDM address increment path (tdmIncrementABWaveSperated), the 64-bit address update was split into s_add_u32 + s_addc_u32. Merging them into a single s_add_u64 removes one instruction issue from the stagger-U wrap path. ## Technical Details Merging s_add_u32 + s_addc_u32 into s_add_u64. ## Test Plan tox ## Test Result tox passed ## Submission Checklist - [ ] Look over the contributing guidelines at https://github.com/ROCm/ROCm/blob/develop/CONTRIBUTING.md#pull-requests.
1 parent 8bbd00a commit 8d60853

1 file changed

Lines changed: 6 additions & 9 deletions

File tree

projects/hipblaslt/tensilelite/Tensile/KernelWriterAssembly.py

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
DSStoreB64, DSStoreB8, DSStoreInstruction, FlatLoadB128, FlatLoadB32, FlatLoadB64, \
5050
FlatLoadD16B16, FlatLoadD16HIB16, FlatStoreB128, FlatStoreB32, FlatStoreB64, \
5151
FlatStoreD16B16, FlatStoreD16HIB16, MXMFMAInstruction, MFMAInstruction, MUBUFReadInstruction, \
52-
MacroInstruction, SAShiftRightI32, SAbsI32, SAddCU32, SAddI32, SAddU32, SAndB32, \
52+
MacroInstruction, SAShiftRightI32, SAbsI32, SAddCU32, SAddI32, SAddU32, SAddU64, SAndB32, \
5353
SAndB64, SAndN2B32, SAtomicDec, SBarrier, SBfmB32, SBitcmp1B32, SBranch, SCBranchSCC0, \
5454
SCBranchSCC1, SCBranchVCCNZ, SCBranchVCCZ, SCMovB32, SCSelectB32, SCSelectB64, SCmpEQI32, \
5555
SCmpEQU32, SCmpEQU64, SCmpGeI32, SCmpGeU32, SCmpGtI32, SCmpGtU32, SCmpKEQU32, \
@@ -19261,10 +19261,9 @@ def tdmIncrementAB(self, kernel, tP, loopIdx=None, prefetchIndex=0) -> Module:
1926119261
mod.add(SCSelectB32(dst=sgpr(incTmpHi), src0=sgpr(f"WrapU{tc}+1"), src1=0, \
1926219262
comment="select WrapU or normal inc (hi)"))
1926319263

19264-
mod.add(SAddU32(dst=sgpr(f"{tdmGroup0}+2"), src0=sgpr(f"{tdmGroup0}+2"), \
19265-
src1=sgpr(incTmpLo), comment="TDM addr += inc (with wrap, lo)"))
19266-
mod.add(SAddCU32(dst=sgpr(f"{tdmGroup0}+3"), src0=sgpr(f"{tdmGroup0}+3"), \
19267-
src1=sgpr(incTmpHi), comment="TDM addr += inc (with wrap, hi)"))
19264+
mod.add(SAddU64(dst=sgpr(f"{tdmGroup0}+2", 2), src0=sgpr(f"{tdmGroup0}+2", 2), \
19265+
src1=sgpr(incTmpLo, 2), comment="TDM addr += inc (with wrap, 64-bit)"))
19266+
1926819267
else:
1926919268
mod.add(comp.incrementGlobalAddr(self, tdmGroup0, incSgprName))
1927019269

@@ -19340,10 +19339,8 @@ def tdmIncrementABWaveSperated(self, kernel, tPA, tPB, loopIdx=None, prefetchInd
1934019339
mod.add(SCSelectB32(dst=sgpr(incTmpHi), src0=sgpr(wrapTmpHi), src1=0, \
1934119340
comment="select WrapU or normal inc (hi)"))
1934219341

19343-
mod.add(SAddU32(dst=sgpr(f"{tdmGroup0}+2"), src0=sgpr(f"{tdmGroup0}+2"), \
19344-
src1=sgpr(incTmpLo), comment="TDM addr += inc (with wrap, lo)"))
19345-
mod.add(SAddCU32(dst=sgpr(f"{tdmGroup0}+3"), src0=sgpr(f"{tdmGroup0}+3"), \
19346-
src1=sgpr(incTmpHi), comment="TDM addr += inc (with wrap, hi)"))
19342+
mod.add(SAddU64(dst=sgpr(f"{tdmGroup0}+2", 2), src0=sgpr(f"{tdmGroup0}+2", 2), \
19343+
src1=sgpr(incTmpLo, 2), comment="TDM addr += inc (with wrap, 64-bit)"))
1934719344
else:
1934819345
mod.add(comp.incrementGlobalAddr(self, tdmGroup0, incSgprName))
1934919346

0 commit comments

Comments
 (0)