diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6afbf0a068..6261859663 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -704,6 +704,8 @@ jobs: # TODO: run all once emulator is faster - name: Run RDNA3 ops tests run: SKIP_SLOW_TEST=1 AMD_LLVM=0 pytest -n=auto test/test_ops.py -k "test_sparse_categorical_crossentropy or test_tril or test_nonzero or test_softmax_argmax" --durations 20 + - name: Run RDNA4 emulator tests + run: MOCKGPU_ARCH=rdna4 python -m pytest test/test_tiny.py -v --durations 20 testnvidia: strategy: diff --git a/examples/mlperf/training_submission_v6.0/tinycorp/benchmarks/llama8b/implementations/tinybox_8xMI350X/dev_run.sh b/examples/mlperf/training_submission_v6.0/tinycorp/benchmarks/llama8b/implementations/tinybox_8xMI350X/dev_run.sh index 87e303851e..756774b7b0 100755 --- a/examples/mlperf/training_submission_v6.0/tinycorp/benchmarks/llama8b/implementations/tinybox_8xMI350X/dev_run.sh +++ b/examples/mlperf/training_submission_v6.0/tinycorp/benchmarks/llama8b/implementations/tinybox_8xMI350X/dev_run.sh @@ -10,6 +10,7 @@ export DEBUG=${DEBUG:-0} export FLASH_ATTENTION=${FLASH_ATTENTION:-1} export ALL2ALL=${ALL2ALL:-1} export USE_ATOMICS=${USE_ATOMICS:-1} +export ASM_GEMM=${ASM_GEMM:-1} export DEFAULT_FLOAT="bfloat16" OPTIM_DTYPE="bfloat16" export DP=${DP:-8} BS=${BS:-8} EVAL_BS=${EVAL_BS:-8} GRADIENT_ACC_STEPS=${GRADIENT_ACC_STEPS:-2} diff --git a/extra/assembly/amd/emu.py b/extra/assembly/amd/emu.py index b7aa412764..f7e8caac43 100644 --- a/extra/assembly/amd/emu.py +++ b/extra/assembly/amd/emu.py @@ -49,10 +49,11 @@ from tinygrad.helpers import Context, DEBUG, colored from tinygrad.engine.realize import get_runner from extra.assembly.amd import decode_inst -from extra.assembly.amd.autogen.rdna3.str_pcode import PCODE -from extra.assembly.amd.autogen.rdna3.ins import (SOP1, SOP2, SOPC, SOPK, SOPP, SMEM, VOP1, VOP1_SDST, VOP2, VOP3, VOP3_SDST, VOP3SD, VOP3P, VOPC, - DS, FLAT, GLOBAL, SCRATCH, VOPD, SOPPOp, SMEMOp, VOP1Op, VOP2Op, VOP3Op, VOPDOp) -from extra.assembly.amd.dsl import VCC_LO, EXEC_LO, SCC +from extra.assembly.amd.autogen.rdna3.str_pcode import PCODE as PCODE_RDNA3 +from extra.assembly.amd.autogen.rdna4.str_pcode import PCODE as PCODE_RDNA4 +from extra.assembly.amd.autogen.rdna3 import ins as ir3 +from extra.assembly.amd.autogen.rdna4 import ins as ir4 +from extra.assembly.amd.dsl import VCC_LO, EXEC_LO, SCC, ttmp from extra.assembly.amd.autogen.common import Fmt, OpType from extra.assembly.amd.pcode import parse_block, _FUNCS @@ -79,15 +80,23 @@ def _apply_src_mods(val: UOp, mod_bit: int, abs_bits: int, neg_bits: int, bits: if neg_bits & (1 << mod_bit): fv = fv.neg() return fv.bitcast(ut).cast(dtypes.uint32) if bits == 16 else fv.bitcast(ut) -# Map VOPD ops to VOP2 ops for pcode lookup +# Map VOPD ops to VOP2 ops for pcode lookup (both RDNA3 and RDNA4) VOPD_TO_VOP2 = { - VOPDOp.V_DUAL_FMAC_F32: VOP2Op.V_FMAC_F32_E32, VOPDOp.V_DUAL_MUL_F32: VOP2Op.V_MUL_F32_E32, - VOPDOp.V_DUAL_ADD_F32: VOP2Op.V_ADD_F32_E32, VOPDOp.V_DUAL_SUB_F32: VOP2Op.V_SUB_F32_E32, - VOPDOp.V_DUAL_SUBREV_F32: VOP2Op.V_SUBREV_F32_E32, VOPDOp.V_DUAL_MAX_F32: VOP2Op.V_MAX_F32_E32, - VOPDOp.V_DUAL_MIN_F32: VOP2Op.V_MIN_F32_E32, VOPDOp.V_DUAL_ADD_NC_U32: VOP2Op.V_ADD_NC_U32_E32, - VOPDOp.V_DUAL_LSHLREV_B32: VOP2Op.V_LSHLREV_B32_E32, VOPDOp.V_DUAL_AND_B32: VOP2Op.V_AND_B32_E32, - VOPDOp.V_DUAL_MOV_B32: VOP1Op.V_MOV_B32_E32, VOPDOp.V_DUAL_CNDMASK_B32: VOP2Op.V_CNDMASK_B32_E32, - VOPDOp.V_DUAL_FMAAK_F32: VOP2Op.V_FMAAK_F32_E32, VOPDOp.V_DUAL_FMAMK_F32: VOP2Op.V_FMAMK_F32_E32, + ir3.VOPDOp.V_DUAL_FMAC_F32: ir3.VOP2Op.V_FMAC_F32_E32, ir3.VOPDOp.V_DUAL_MUL_F32: ir3.VOP2Op.V_MUL_F32_E32, + ir3.VOPDOp.V_DUAL_ADD_F32: ir3.VOP2Op.V_ADD_F32_E32, ir3.VOPDOp.V_DUAL_SUB_F32: ir3.VOP2Op.V_SUB_F32_E32, + ir3.VOPDOp.V_DUAL_SUBREV_F32: ir3.VOP2Op.V_SUBREV_F32_E32, ir3.VOPDOp.V_DUAL_MAX_F32: ir3.VOP2Op.V_MAX_F32_E32, + ir3.VOPDOp.V_DUAL_MIN_F32: ir3.VOP2Op.V_MIN_F32_E32, ir3.VOPDOp.V_DUAL_ADD_NC_U32: ir3.VOP2Op.V_ADD_NC_U32_E32, + ir3.VOPDOp.V_DUAL_LSHLREV_B32: ir3.VOP2Op.V_LSHLREV_B32_E32, ir3.VOPDOp.V_DUAL_AND_B32: ir3.VOP2Op.V_AND_B32_E32, + ir3.VOPDOp.V_DUAL_MOV_B32: ir3.VOP1Op.V_MOV_B32_E32, ir3.VOPDOp.V_DUAL_CNDMASK_B32: ir3.VOP2Op.V_CNDMASK_B32_E32, + ir3.VOPDOp.V_DUAL_FMAAK_F32: ir3.VOP2Op.V_FMAAK_F32_E32, ir3.VOPDOp.V_DUAL_FMAMK_F32: ir3.VOP2Op.V_FMAMK_F32_E32, + # RDNA4 mappings (same VOP1/VOP2 targets, RDNA4 uses _NUM_ suffix for min/max) + ir4.VOPDOp.V_DUAL_FMAC_F32: ir3.VOP2Op.V_FMAC_F32_E32, ir4.VOPDOp.V_DUAL_MUL_F32: ir3.VOP2Op.V_MUL_F32_E32, + ir4.VOPDOp.V_DUAL_ADD_F32: ir3.VOP2Op.V_ADD_F32_E32, ir4.VOPDOp.V_DUAL_SUB_F32: ir3.VOP2Op.V_SUB_F32_E32, + ir4.VOPDOp.V_DUAL_SUBREV_F32: ir3.VOP2Op.V_SUBREV_F32_E32, ir4.VOPDOp.V_DUAL_MAX_NUM_F32: ir3.VOP2Op.V_MAX_F32_E32, + ir4.VOPDOp.V_DUAL_MIN_NUM_F32: ir3.VOP2Op.V_MIN_F32_E32, ir4.VOPDOp.V_DUAL_ADD_NC_U32: ir3.VOP2Op.V_ADD_NC_U32_E32, + ir4.VOPDOp.V_DUAL_LSHLREV_B32: ir3.VOP2Op.V_LSHLREV_B32_E32, ir4.VOPDOp.V_DUAL_AND_B32: ir3.VOP2Op.V_AND_B32_E32, + ir4.VOPDOp.V_DUAL_MOV_B32: ir3.VOP1Op.V_MOV_B32_E32, ir4.VOPDOp.V_DUAL_CNDMASK_B32: ir3.VOP2Op.V_CNDMASK_B32_E32, + ir4.VOPDOp.V_DUAL_FMAAK_F32: ir3.VOP2Op.V_FMAAK_F32_E32, ir4.VOPDOp.V_DUAL_FMAMK_F32: ir3.VOP2Op.V_FMAMK_F32_E32, } WAVE_SIZE = 32 # Special registers stored after inline constants (256-259) @@ -146,11 +155,15 @@ _pcode_fixes = { 'V_TRIG_PREOP_F64': ("result = 64'F((1201'B(2.0 / PI)[1200 : 0] << shift.u32) & 1201'0x1fffffffffffff)", "result = trig_preop_result(shift)"), } +def _get_pcode_dict(op) -> dict: + """Return the PCODE dictionary for the given opcode based on its architecture.""" + return PCODE_RDNA4 if 'rdna4' in type(op).__module__ else PCODE_RDNA3 + # Pcode parser @functools.cache def get_pcode(op) -> str: op_name = op.name - pcode = PCODE[op] + pcode = _get_pcode_dict(op)[op] if op_name in _pcode_fixes: pcode = pcode.replace(*_pcode_fixes[op_name]) if 'V_DIV_SCALE' in op_name: dt, exp_lim, ldexp_val = ('f32', '23', '64') if 'F32' in op_name else ('f64', '52', '128') @@ -174,7 +187,12 @@ def get_pcode(op) -> str: def parse_pcode(pcode: str, srcs: dict[str, UOp] | None = None) -> tuple[dict, list[tuple[str, UOp]]]: vars: dict = srcs.copy() if srcs else {} assigns: list[tuple[str, UOp]] = [] - lines = [l.strip().rstrip(';') for l in pcode.split('\n') if l.strip() and not l.strip().startswith('//')] + raw_lines = [l.strip().rstrip(';') for l in pcode.split('\n') if l.strip() and not l.strip().startswith('//')] + # TODO: pcode.py should tokenize full pcode string instead of line-by-line, then this hack can be removed + lines: list[str] = [] + for l in raw_lines: + if lines and lines[-1].endswith('&&'): lines[-1] = lines[-1] + ' ' + l + else: lines.append(l) _, final, _ = parse_block(lines, 0, vars, assigns=assigns) sliced = set(d.split('[')[0] for d, _ in assigns if '[' in d) for var, val in final.items(): @@ -317,9 +335,9 @@ class _Ctx: return base, mask, size # Dynamic register access (takes UOp index instead of int) - def rsgpr_dyn(self, reg: UOp) -> UOp: + def rsgpr_dyn(self, reg: UOp, valid: UOp | None = None) -> UOp: """Read SGPR with dynamic register index.""" - return self.sgpr.index(reg.cast(dtypes.int), ptr=True).load() + return self.sgpr.index(reg.cast(dtypes.int), valid, ptr=True).load() if valid is not None else self.sgpr.index(reg.cast(dtypes.int), ptr=True).load() def wsgpr_dyn(self, reg: UOp, val: UOp) -> UOp: """Write SGPR with dynamic register index. Writes to NULL (124) are discarded.""" @@ -341,15 +359,18 @@ class _Ctx: If lane is None, only scalar access is supported (off must be < 256). is_f64: True for F64 operations where 64-bit literals go in high 32 bits.""" is_float_const = (off >= _c(240)) & (off <= _c(248)) - sgpr_lo = self.rsgpr_dyn(off) + is_vgpr = off >= _c(256) + is_sgpr = is_vgpr.ne(True) + sgpr_lo = self.rsgpr_dyn(off, is_sgpr) if lane is not None: - is_vgpr, vgpr_reg = off >= _c(256), off - _c(256) + vgpr_reg = off - _c(256) vgpr_lo = self.rvgpr_dyn(vgpr_reg, lane, is_vgpr) vgpr_val = _u64(vgpr_lo, self.rvgpr_dyn(vgpr_reg + _c(1), lane, is_vgpr)) if bits == 64 else vgpr_lo if bits == 64: - sgpr_val = _u64(sgpr_lo, self.rsgpr_dyn(off + _c(1))) + sgpr_hi = self.rsgpr_dyn(off + _c(1), is_sgpr) + sgpr_val = _u64(sgpr_lo, sgpr_hi) # Integer inline constants: sign-extend 32-bit value from buffer to 64-bit # Float constants: cast F32 to F64 int_inline = sgpr_lo.cast(dtypes.int32).cast(dtypes.int64) @@ -402,17 +423,19 @@ class _Ctx: return UOp.sink(*self.scalar_stores(assigns, sdst_reg, sdst_size), *self.inc_pc()) def compile_lane_pcode(self, op, inst) -> UOp: - """Compile READLANE/READFIRSTLANE/WRITELANE using pcode parser.""" + """Compile cross-lane ops (READLANE/WRITELANE/PERMLANE) using pcode parser.""" pcode = get_pcode(op) op_name = op.name if hasattr(op, 'name') else str(op) src0_off, vdst_off = self.inst_field(type(inst).src0), self.inst_field(type(inst).vdst) src0_reg = (src0_off >= _c(256)).where(src0_off - _c(256), _c(0)) # VGPR index or 0 src1_off = self.inst_field(type(inst).src1) if hasattr(type(inst), 'src1') else None + src2_off = self.inst_field(type(inst).src2) if hasattr(type(inst), 'src2') else None exec_lo = self.rsgpr_dyn(_c(EXEC_LO.offset)) srcs = { 'SRC0': src0_reg, 'VDST': vdst_off, 'EXEC_LO': exec_lo, 'EXEC': exec_lo.cast(dtypes.uint64), '_vgpr': self.vgpr, 'S0': self.rsrc_dyn(src0_off, _c(0, dtypes.int)) if 'WRITELANE' in op_name else src0_reg, 'S1': self.rsrc_dyn(src1_off, _c(0, dtypes.int)) if src1_off is not None else _c(0), + 'S2': self.rsrc_dyn(src2_off, _c(0, dtypes.int)) if src2_off is not None else _c(0), } _, assigns = parse_pcode(pcode, srcs) stores = [] @@ -480,13 +503,14 @@ class _Ctx: # INSTRUCTION HANDLERS # ═══════════════════════════════════════════════════════════════════════════════ -def _compile_sopp(inst: SOPP, ctx: _Ctx) -> UOp: - simm16 = ctx.inst_field_signed(SOPP.simm16).cast(dtypes.int16) - if inst.op == SOPPOp.S_ENDPGM: +def _compile_sopp(inst: ir3.SOPP | ir4.SOPP, ctx: _Ctx) -> UOp: + simm16 = ctx.inst_field_signed(type(inst).simm16).cast(dtypes.int16) + if inst.op in (ir3.SOPPOp.S_ENDPGM, ir4.SOPPOp.S_ENDPGM): return UOp.sink(ctx.wsgpr_dyn(_c(PC_LO_IDX), UOp.const(dtypes.uint32, 0xFFFFFFFF)), ctx.wsgpr_dyn(_c(PC_HI_IDX), UOp.const(dtypes.uint32, 0xFFFFFFFF))) + if inst.op in (ir3.SOPPOp.S_NOP, ir4.SOPPOp.S_NOP): return UOp.sink(*ctx.inc_pc()) # S_NOP is a no-op # NOTE: we ignore SOPPs without PCODE - if inst.op in PCODE: + if inst.op in _get_pcode_dict(inst.op): pcode = get_pcode(inst.op) pc_bytes = ctx.rpc() # PC is already 64-bit byte address vcc, exec_lo = ctx.rsgpr_dyn(_c(VCC_LO.offset)), ctx.rsgpr_dyn(_c(EXEC_LO.offset)) @@ -498,50 +522,57 @@ def _compile_sopp(inst: SOPP, ctx: _Ctx) -> UOp: return UOp.sink(ctx.wsgpr_dyn(_c(PC_LO_IDX), lo), ctx.wsgpr_dyn(_c(PC_HI_IDX), hi)) return UOp.sink(*ctx.inc_pc()) -def _compile_smem(inst: SMEM, ctx: _Ctx) -> UOp: +def _compile_smem(inst: ir3.SMEM | ir4.SMEM, ctx: _Ctx) -> UOp: # Cache invalidation instructions are no-ops in the emulator (we don't model caches) - if inst.op in (SMEMOp.S_GL1_INV, SMEMOp.S_DCACHE_INV): + cache_inv_ops = [ir3.SMEMOp.S_GL1_INV, ir3.SMEMOp.S_DCACHE_INV, ir4.SMEMOp.S_DCACHE_INV] + if hasattr(ir4.SMEMOp, 'S_GL1_INV'): cache_inv_ops.append(ir4.SMEMOp.S_GL1_INV) + if inst.op in cache_inv_ops: return UOp.sink(*ctx.inc_pc()) # Dynamic sbase field (bits 5:0) - SGPR pair, field value * 2 = register offset - sbase = ctx.inst_field(SMEM.sbase) * _c(2) + sbase = ctx.inst_field(type(inst).sbase) * _c(2) # Dynamic sdata field (bits 12:6) - destination SGPR - sdata_reg = ctx.inst_field(SMEM.sdata) - offset = ctx.inst_field_signed(SMEM.offset) # 21-bit signed immediate - # Dynamic soffset field (bits 63:57) - SGPR for additional offset (NULL=124 reads as 0) - soffset = ctx.inst_field(SMEM.soffset) + sdata_reg = ctx.inst_field(type(inst).sdata) + # RDNA4 uses 'ioffset', RDNA3 uses 'offset' - use type(inst) to get correct field + offset_field = type(inst).ioffset if hasattr(type(inst), 'ioffset') else type(inst).offset + offset = ctx.inst_field_signed(offset_field) # signed immediate + # Dynamic soffset field - SGPR for additional offset (NULL=124 reads as 0) + soffset = ctx.inst_field(type(inst).soffset) addr = _u64(ctx.rsgpr_dyn(sbase), ctx.rsgpr_dyn(sbase + _c(1))) + offset.cast(dtypes.uint64) + ctx.rsgpr_dyn(soffset).cast(dtypes.uint64) - ndwords = {SMEMOp.S_LOAD_B32: 1, SMEMOp.S_LOAD_B64: 2, SMEMOp.S_LOAD_B128: 4, SMEMOp.S_LOAD_B256: 8, SMEMOp.S_LOAD_B512: 16}.get(inst.op, 1) + _SMEM_NDWORDS = {ir3.SMEMOp.S_LOAD_B32: 1, ir3.SMEMOp.S_LOAD_B64: 2, ir3.SMEMOp.S_LOAD_B128: 4, + ir3.SMEMOp.S_LOAD_B256: 8, ir3.SMEMOp.S_LOAD_B512: 16, ir4.SMEMOp.S_LOAD_B32: 1, ir4.SMEMOp.S_LOAD_B64: 2, + ir4.SMEMOp.S_LOAD_B96: 3, ir4.SMEMOp.S_LOAD_B128: 4, ir4.SMEMOp.S_LOAD_B256: 8, ir4.SMEMOp.S_LOAD_B512: 16} + ndwords = _SMEM_NDWORDS[inst.op] stores = [ctx.wsgpr_dyn(sdata_reg + _c(i), ctx.vmem.index((addr + UOp.const(dtypes.uint64, i * 4) >> UOp.const(dtypes.uint64, 2)).cast(dtypes.int))) for i in range(ndwords)] return UOp.sink(*stores, *ctx.inc_pc()) -def _compile_sop(inst: SOP1 | SOP2 | SOPC | SOPK, ctx: _Ctx) -> UOp: +def _compile_sop(inst: ir3.SOP1 | ir3.SOP2 | ir3.SOPC | ir3.SOPK | ir4.SOP1 | ir4.SOP2 | ir4.SOPC | ir4.SOPK, ctx: _Ctx) -> UOp: bits = inst.canonical_op_bits literal = ctx.inst_field(type(inst).literal) if hasattr(type(inst), 'literal') else None - if isinstance(inst, SOPK): - sdst_off = ctx.inst_field(SOPK.sdst) - simm16 = ctx.inst_field(SOPK.simm16) + if isinstance(inst, (ir3.SOPK, ir4.SOPK)): + sdst_off = ctx.inst_field(type(inst).sdst) + simm16 = ctx.inst_field(type(inst).simm16) # Sign-extend simm16 simm16_sext = simm16.cast(dtypes.int16).cast(dtypes.int32) srcs = {'S0': ctx.rsgpr_dyn(sdst_off), 'SIMM16': simm16_sext, 'D0': ctx.rsgpr_dyn(sdst_off)} dst_off, dst_size = sdst_off, 1 - elif isinstance(inst, SOP1): - sdst_off = ctx.inst_field(SOP1.sdst) - ssrc0_off = ctx.inst_field(SOP1.ssrc0) + elif isinstance(inst, (ir3.SOP1, ir4.SOP1)): + sdst_off = ctx.inst_field(type(inst).sdst) + ssrc0_off = ctx.inst_field(type(inst).ssrc0) srcs = {'S0': ctx.rsrc_dyn(ssrc0_off, None, bits['s0'], literal)} dst_off, dst_size = sdst_off, bits['d'] // 32 - elif isinstance(inst, SOP2): - sdst_off = ctx.inst_field(SOP2.sdst) - ssrc0_off = ctx.inst_field(SOP2.ssrc0) - ssrc1_off = ctx.inst_field(SOP2.ssrc1) + elif isinstance(inst, (ir3.SOP2, ir4.SOP2)): + sdst_off = ctx.inst_field(type(inst).sdst) + ssrc0_off = ctx.inst_field(type(inst).ssrc0) + ssrc1_off = ctx.inst_field(type(inst).ssrc1) srcs = {'S0': ctx.rsrc_dyn(ssrc0_off, None, bits['s0'], literal), 'S1': ctx.rsrc_dyn(ssrc1_off, None, bits['s1'], literal)} if literal is not None: srcs['SIMM32'] = literal dst_off, dst_size = sdst_off, bits['d'] // 32 - elif isinstance(inst, SOPC): - ssrc0_off = ctx.inst_field(SOPC.ssrc0) - ssrc1_off = ctx.inst_field(SOPC.ssrc1) + elif isinstance(inst, (ir3.SOPC, ir4.SOPC)): + ssrc0_off = ctx.inst_field(type(inst).ssrc0) + ssrc1_off = ctx.inst_field(type(inst).ssrc1) srcs = {'S0': ctx.rsrc_dyn(ssrc0_off, None, bits['s0'], literal), 'S1': ctx.rsrc_dyn(ssrc1_off, None, bits['s1'], literal)} dst_off, dst_size = _c(0), 0 # SOPC writes to SCC, not sdst @@ -550,18 +581,18 @@ def _compile_sop(inst: SOP1 | SOP2 | SOPC | SOPK, ctx: _Ctx) -> UOp: return ctx.compile_sop_pcode(inst.op, srcs, dst_off, dst_size) -def _compile_vop12(inst: VOP1 | VOP1_SDST | VOP2, ctx: _Ctx) -> UOp: +def _compile_vop12(inst: ir3.VOP1 | ir3.VOP1_SDST | ir3.VOP2 | ir4.VOP1 | ir4.VOP1_SDST | ir4.VOP2, ctx: _Ctx) -> UOp: op_name = _op_name(inst) - if op_name == 'V_READFIRSTLANE_B32_E32': return ctx.compile_lane_pcode(inst.op, inst) + if op_name in ('V_READFIRSTLANE_B32_E32', 'V_PERMLANE64_B32_E32'): return ctx.compile_lane_pcode(inst.op, inst) lane, exec_mask, bits = ctx.range(), ctx.rsgpr_dyn(_c(EXEC_LO.offset)), inst.canonical_op_bits literal = ctx.inst_field(type(inst).literal) if hasattr(type(inst), 'literal') else None - vdst_reg = ctx.inst_field(VOP1.vdst) + vdst_reg = ctx.inst_field(type(inst).vdst) write_hi_half = bits['d'] == 16 and (vdst_reg >= _c(128)) if isinstance(write_hi_half, UOp): vdst_reg = write_hi_half.where(vdst_reg - _c(128), vdst_reg) elif write_hi_half: vdst_reg -= 128 - if isinstance(inst, VOP1): + if isinstance(inst, (ir3.VOP1, ir4.VOP1)): # Handle VOP1 hi-half source operand (src0 >= v[128] for 16-bit ops) - src0_off = ctx.inst_field(VOP1.src0) + src0_off = ctx.inst_field(type(inst).src0) s0 = ctx.rsrc_dyn(src0_off, lane, bits['s0'], literal) if bits['s0'] == 16: src0_hi = src0_off >= _c(384) @@ -570,13 +601,13 @@ def _compile_vop12(inst: VOP1 | VOP1_SDST | VOP2, ctx: _Ctx) -> UOp: s0 = src0_hi.where(_hi16(ctx.rvgpr_dyn(src0_reg, lane)), s0) srcs = {'S0': s0} else: - vsrc1_reg = ctx.inst_field(VOP2.vsrc1) + vsrc1_reg = ctx.inst_field(type(inst).vsrc1) vsrc1_hi = bits['s0'] == 16 and (vsrc1_reg >= _c(128)) vsrc1_actual = _cond(vsrc1_hi, vsrc1_reg - _c(128), vsrc1_reg) s1 = _cond_hi16(vsrc1_hi, ctx.rvgpr_dyn(vsrc1_actual, lane)) d0 = _cond_hi16(write_hi_half, ctx.rvgpr_dyn(vdst_reg, lane)) # FMAC/FMAMK hi-half dest needs hi-half accumulator # Handle VOP2 hi-half src0 operand (src0 >= v[128] for 16-bit ops) - src0_off = ctx.inst_field(VOP2.src0) + src0_off = ctx.inst_field(type(inst).src0) s0 = ctx.rsrc_dyn(src0_off, lane, bits['s0'], literal) if bits['s0'] == 16: src0_hi = src0_off >= _c(384) @@ -584,19 +615,20 @@ def _compile_vop12(inst: VOP1 | VOP1_SDST | VOP2, ctx: _Ctx) -> UOp: src0_reg = src0_hi.where(src0_off - _c(384), _c(0)) s0 = src0_hi.where(_hi16(ctx.rvgpr_dyn(src0_reg, lane)), s0) srcs = {'S0': s0, 'S1': s1, 'D0': d0} - if inst.op in (VOP2Op.V_FMAAK_F32_E32, VOP2Op.V_FMAMK_F32_E32, VOP2Op.V_FMAAK_F16_E32, VOP2Op.V_FMAMK_F16_E32): + if inst.op in (ir3.VOP2Op.V_FMAAK_F32_E32, ir3.VOP2Op.V_FMAMK_F32_E32, ir3.VOP2Op.V_FMAAK_F16_E32, + ir3.VOP2Op.V_FMAMK_F16_E32): assert literal is not None srcs['SIMM32'] = literal return ctx.compile_vop_pcode(inst.op, srcs, lane, vdst_reg, exec_mask, opsel_dst_hi=write_hi_half) -def _compile_vopc(inst: VOPC | VOP3, ctx: _Ctx, opsel: int = 0, abs_bits: int = 0, neg_bits: int = 0) -> UOp: +def _compile_vopc(inst: ir3.VOPC | ir3.VOP3 | ir4.VOPC | ir4.VOP3, ctx: _Ctx, opsel: int = 0, abs_bits: int = 0, neg_bits: int = 0) -> UOp: exec_mask, op_name, bits = ctx.rsgpr_dyn(_c(EXEC_LO.offset)), _op_name(inst), inst.canonical_op_bits is_cmpx, is_vopc = 'CMPX' in op_name, hasattr(inst, 'vsrc1') # is_vopc: e32 vs e64 # Handle both VOPC (vsrc1) and VOP3 (src1) instruction formats - read operands dynamically if is_vopc: - src0_off = ctx.inst_field(VOPC.src0) - vsrc1_off = ctx.inst_field(VOPC.vsrc1) + src0_off = ctx.inst_field(type(inst).src0) + vsrc1_off = ctx.inst_field(type(inst).vsrc1) # For 16-bit ops, vsrc1 >= 128 means hi-half of v[vsrc1-128] if bits['s0'] == 16: vsrc1_hi = vsrc1_off >= _c(128) @@ -605,9 +637,9 @@ def _compile_vopc(inst: VOPC | VOP3, ctx: _Ctx, opsel: int = 0, abs_bits: int = vsrc1_hi = False src1_off = _c(256) + vsrc1_off else: - src0_off = ctx.inst_field(VOP3.src0) - src1_off = ctx.inst_field(VOP3.src1) - dst_off = ctx.inst_field(VOP3.vdst) + src0_off = ctx.inst_field(type(inst).src0) + src1_off = ctx.inst_field(type(inst).src1) + dst_off = ctx.inst_field(type(inst).vdst) vsrc1_hi = False literal = ctx.inst_field(type(inst).literal) if hasattr(type(inst), 'literal') else None @@ -636,7 +668,7 @@ def _compile_vopc(inst: VOPC | VOP3, ctx: _Ctx, opsel: int = 0, abs_bits: int = stores = [ctx.wsgpr_dyn(dst_off, new_result)] if not is_vopc else [ctx.wsgpr_dyn(_c(VCC_LO.offset), new_result)] return UOp.sink(*stores, *ctx.inc_pc()) -def _compile_vop3(inst: VOP3, ctx: _Ctx) -> UOp: +def _compile_vop3(inst: ir3.VOP3 | ir4.VOP3, ctx: _Ctx) -> UOp: exec_mask = ctx.rsgpr_dyn(_c(EXEC_LO.offset)) bits = inst.canonical_op_bits opsel, op_name = getattr(inst, 'opsel', 0) or 0, _op_name(inst) @@ -645,18 +677,22 @@ def _compile_vop3(inst: VOP3, ctx: _Ctx) -> UOp: if op_name in ('V_READLANE_B32', 'V_READFIRSTLANE_B32', 'V_READFIRSTLANE_B32_E64', 'V_WRITELANE_B32'): return ctx.compile_lane_pcode(inst.op, inst) + # V_PERMLANE16_B32 / V_PERMLANEX16_B32: cross-lane swizzle via pcode + if 'PERMLANE16' in op_name or 'PERMLANEX16' in op_name: + return ctx.compile_lane_pcode(inst.op, inst) + # VOP3 VOPC (v_cmp_*_e64) - delegate to unified VOPC handler if 'V_CMP' in op_name or 'V_CMPX' in op_name: return _compile_vopc(inst, ctx, opsel=opsel, abs_bits=getattr(inst, 'abs', 0) or 0, neg_bits=getattr(inst, 'neg', 0) or 0) # Regular VOP3 - read operands dynamically lane = ctx.range() - vdst_reg = ctx.inst_field(VOP3.vdst) + vdst_reg = ctx.inst_field(type(inst).vdst) literal = ctx.inst_field(type(inst).literal) if hasattr(type(inst), 'literal') else None ops = inst.canonical_operands - src0 = ctx.rsrc_dyn(ctx.inst_field(VOP3.src0), lane, bits['s0'], literal, 's0' in ops and ops['s0'][0] == Fmt.FMT_NUM_F64) - src1 = ctx.rsrc_dyn(ctx.inst_field(VOP3.src1), lane, bits['s1'], literal, 's1' in ops and ops['s1'][0] == Fmt.FMT_NUM_F64) - src2 = ctx.rsrc_dyn(ctx.inst_field(VOP3.src2), lane, bits['s2'], literal, 's2' in ops and ops['s2'][0] == Fmt.FMT_NUM_F64) + src0 = ctx.rsrc_dyn(ctx.inst_field(type(inst).src0), lane, bits['s0'], literal, 's0' in ops and ops['s0'][0] == Fmt.FMT_NUM_F64) + src1 = ctx.rsrc_dyn(ctx.inst_field(type(inst).src1), lane, bits['s1'], literal, 's1' in ops and ops['s1'][0] == Fmt.FMT_NUM_F64) + src2 = ctx.rsrc_dyn(ctx.inst_field(type(inst).src2), lane, bits['s2'], literal, 's2' in ops and ops['s2'][0] == Fmt.FMT_NUM_F64) if bits['s0'] == 16: src0 = _apply_opsel(src0, 0, opsel) src1 = _apply_opsel(src1, 1, opsel) @@ -666,19 +702,19 @@ def _compile_vop3(inst: VOP3, ctx: _Ctx) -> UOp: src1 = _apply_src_mods(src1, 1, abs_bits, neg_bits, bits['s1']) src2 = _apply_src_mods(src2, 2, abs_bits, neg_bits, bits['s2']) srcs = {'S0': src0, 'S1': src1, 'S2': src2} - if inst.op in (VOP3Op.V_CNDMASK_B32_E64, VOP3Op.V_CNDMASK_B16) and src2 is not None: srcs['VCC'] = src2 + if inst.op in (ir3.VOP3Op.V_CNDMASK_B32_E64, ir3.VOP3Op.V_CNDMASK_B16) and src2 is not None: srcs['VCC'] = src2 # FMAC instructions need D0 (accumulator) from destination register if 'FMAC' in op_name: srcs['D0'] = ctx.rvgpr_dyn(vdst_reg, lane) opsel_dst_hi = bool(opsel & 0b1000) and bits['d'] == 16 return ctx.compile_vop_pcode(inst.op, srcs, lane, vdst_reg, exec_mask, opsel_dst_hi=opsel_dst_hi, clmp=getattr(inst, 'clmp', 0)) -def _compile_vop3sd(inst: VOP3SD, ctx: _Ctx) -> UOp: +def _compile_vop3sd(inst: ir3.VOP3SD | ir4.VOP3SD, ctx: _Ctx) -> UOp: exec_mask = ctx.rsgpr_dyn(_c(EXEC_LO.offset)) bits, pcode, ops = inst.canonical_op_bits, get_pcode(inst.op), inst.canonical_operands # Read operands dynamically from instruction encoding - vdst_reg, sdst_off = ctx.inst_field(VOP3SD.vdst), ctx.inst_field(VOP3SD.sdst) - src0_off, src1_off, src2_off = ctx.inst_field(VOP3SD.src0), ctx.inst_field(VOP3SD.src1), ctx.inst_field(VOP3SD.src2) + vdst_reg, sdst_off = ctx.inst_field(type(inst).vdst), ctx.inst_field(type(inst).sdst) + src0_off, src1_off, src2_off = ctx.inst_field(type(inst).src0), ctx.inst_field(type(inst).src1), ctx.inst_field(type(inst).src2) literal = ctx.inst_field(type(inst).literal) if hasattr(type(inst), 'literal') else None has_carry_in = 's2' in ops and ops['s2'][2] == OpType.OPR_SREG @@ -724,13 +760,13 @@ def _compile_vop3sd(inst: VOP3SD, ctx: _Ctx) -> UOp: else: return ctx.compile_vop_pcode(inst.op, srcs, lane, vdst_reg, exec_mask, sdst_reg=inst.sdst.offset) -def _compile_wmma(inst: VOP3P, ctx: _Ctx) -> UOp: +def _compile_wmma(inst: ir3.VOP3P | ir4.VOP3P, ctx: _Ctx) -> UOp: op_name = _op_name(inst) exec_mask = ctx.rsgpr_dyn(_c(EXEC_LO.offset)) - vdst_reg = ctx.inst_field(VOP3P.vdst) - src0_r = ctx.inst_field(VOP3P.src0) - _c(256) - src1_r = ctx.inst_field(VOP3P.src1) - _c(256) - src2_r = ctx.inst_field(VOP3P.src2) - _c(256) + vdst_reg = ctx.inst_field(type(inst).vdst) + src0_r = ctx.inst_field(type(inst).src0) - _c(256) + src1_r = ctx.inst_field(type(inst).src1) - _c(256) + src2_r = ctx.inst_field(type(inst).src2) - _c(256) is_f16_output = 'F16_16X16X16_F16' in op_name or 'BF16_16X16X16_BF16' in op_name # F16/BF16 output vs F32 output is_bf16 = 'BF16' in op_name cvt = _FUNCS['bf16_to_f32'] if is_bf16 else _FUNCS['f16_to_f32'] @@ -757,16 +793,16 @@ def _compile_wmma(inst: VOP3P, ctx: _Ctx) -> UOp: stores = [ctx.wvgpr_dyn(vdst_reg + _c(i // 32), UOp.const(dtypes.int, i % 32), mat_d[i].bitcast(dtypes.uint32), exec_mask) for i in range(256)] return UOp.sink(*stores, *ctx.inc_pc()) -def _compile_vop3p(inst: VOP3P, ctx: _Ctx) -> UOp: +def _compile_vop3p(inst: ir3.VOP3P | ir4.VOP3P, ctx: _Ctx) -> UOp: op_name = _op_name(inst) if 'WMMA' in op_name and ('16X16X16_F16' in op_name or '16X16X16_BF16' in op_name): return _compile_wmma(inst, ctx) lane = ctx.range() exec_mask = ctx.rsgpr_dyn(_c(EXEC_LO.offset)) - vdst_reg = ctx.inst_field(VOP3P.vdst) - src0 = ctx.rsrc_dyn(ctx.inst_field(VOP3P.src0), lane, 16) - src1 = ctx.rsrc_dyn(ctx.inst_field(VOP3P.src1), lane, 16) - src2 = ctx.rsrc_dyn(ctx.inst_field(VOP3P.src2), lane, 16) + vdst_reg = ctx.inst_field(type(inst).vdst) + src0 = ctx.rsrc_dyn(ctx.inst_field(type(inst).src0), lane, 16) + src1 = ctx.rsrc_dyn(ctx.inst_field(type(inst).src1), lane, 16) + src2 = ctx.rsrc_dyn(ctx.inst_field(type(inst).src2), lane, 16) opsel, opsel_hi = getattr(inst, 'opsel', 0) or 0, getattr(inst, 'opsel_hi', 3) if getattr(inst, 'opsel_hi', 3) is not None else 3 opsel_hi2 = getattr(inst, 'opsel_hi2', 1) if getattr(inst, 'opsel_hi2', 1) is not None else 1 neg, neg_hi = getattr(inst, 'neg', 0) or 0, getattr(inst, 'neg_hi', 0) or 0 @@ -788,7 +824,7 @@ def _compile_vop3p(inst: VOP3P, ctx: _Ctx) -> UOp: s0_mod = apply_neg_mix(apply_abs(src0, 1, 1, 1), 1, 1, 1) s1_mod = apply_neg_mix(apply_abs(src1, 2, 2, 2), 2, 2, 2) s2_mod = apply_neg_mix(apply_abs(src2, 4, 4, 4), 4, 4, 4) - srcs = {'S0': s0_mod, 'S1': s1_mod, 'S2': s2_mod, + srcs = {'S@0': s0_mod, 'S@1': s1_mod, 'S@2': s2_mod, 'OPSEL_HI': UOp.const(dtypes.uint32, combined_opsel_hi), 'OPSEL': UOp.const(dtypes.uint32, opsel)} else: def get_half_bits(val: UOp, use_hi: bool, apply_neg: bool = False) -> UOp: @@ -806,18 +842,19 @@ def _compile_vop3p(inst: VOP3P, ctx: _Ctx) -> UOp: if is_dot_iu: srcs['NEG'] = UOp.const(dtypes.uint32, neg) return ctx.compile_vop_pcode(inst.op, srcs, lane, vdst_reg, exec_mask) -def _compile_vopd(inst: VOPD, ctx: _Ctx) -> UOp: +def _compile_vopd(inst: ir3.VOPD | ir4.VOPD, ctx: _Ctx) -> UOp: exec_mask = ctx.rsgpr_dyn(_c(EXEC_LO.offset)) - # Read operands dynamically - vdstx_reg = ctx.inst_field(VOPD.vdstx) + # Read operands dynamically - use type(inst) to get correct field descriptors + inst_type = type(inst) + vdstx_reg = ctx.inst_field(inst_type.vdstx) # vdsty has complex encoding: actual = (raw << 1) | ((vdstx & 1) ^ 1) - vdsty_raw = ctx.inst_field(VOPD.vdsty) + vdsty_raw = ctx.inst_field(inst_type.vdsty) vdsty_reg = (vdsty_raw << _c(1)) | ((vdstx_reg & _c(1)) ^ _c(1)) - srcx0_off = ctx.inst_field(VOPD.srcx0) - srcy0_off = ctx.inst_field(VOPD.srcy0) - vsrcx1_reg = ctx.inst_field(VOPD.vsrcx1) - vsrcy1_reg = ctx.inst_field(VOPD.vsrcy1) - literal = ctx.inst_field(type(inst).literal) if hasattr(type(inst), 'literal') else None + srcx0_off = ctx.inst_field(inst_type.srcx0) + srcy0_off = ctx.inst_field(inst_type.srcy0) + vsrcx1_reg = ctx.inst_field(inst_type.vsrcx1) + vsrcy1_reg = ctx.inst_field(inst_type.vsrcy1) + literal = ctx.inst_field(inst_type.literal) if hasattr(inst_type, 'literal') else None lane = ctx.range() srcy0, srcy1 = ctx.rsrc_dyn(srcy0_off, lane, literal=literal), ctx.rvgpr_dyn(vsrcy1_reg, lane) @@ -828,49 +865,64 @@ def _compile_vopd(inst: VOPD, ctx: _Ctx) -> UOp: assert vop is not None, f"no VOP mapping for VOPD {label}: {op}" if label == 'Y': srcs = {'S0': srcy0, 'S1': srcy1, 'D0': ctx.rvgpr_dyn(vdst_reg, lane)} else: srcs = {'S0': ctx.rsrc_dyn(src0_off, lane, literal=literal), 'S1': ctx.rvgpr_dyn(vsrc1_reg, lane), 'D0': ctx.rvgpr_dyn(vdst_reg, lane)} - if op in (VOPDOp.V_DUAL_FMAAK_F32, VOPDOp.V_DUAL_FMAMK_F32): + if op in (ir3.VOPDOp.V_DUAL_FMAAK_F32, ir3.VOPDOp.V_DUAL_FMAMK_F32, ir4.VOPDOp.V_DUAL_FMAAK_F32, ir4.VOPDOp.V_DUAL_FMAMK_F32): assert literal is not None srcs['SIMM32'] = literal - if op == VOPDOp.V_DUAL_CNDMASK_B32: srcs['VCC'] = ctx.rsgpr_dyn(_c(VCC_LO.offset)) + if op in (ir3.VOPDOp.V_DUAL_CNDMASK_B32, ir4.VOPDOp.V_DUAL_CNDMASK_B32): srcs['VCC'] = ctx.rsgpr_dyn(_c(VCC_LO.offset)) pcode = get_pcode(vop) srcs.update({'VCC': ctx.rsgpr_dyn(_c(VCC_LO.offset)), 'EXEC': exec_mask, 'SCC': ctx.rsgpr_dyn(_c(SCC.offset)), 'laneId': lane}) for dest, val in parse_pcode(pcode, srcs)[1]: if dest.startswith('D0'): all_stores.append(ctx.wvgpr_dyn(vdst_reg, lane, _val_to_u32(val), exec_mask, after=srcy1)) return UOp.sink(UOp.group(*all_stores).end(lane), *ctx.inc_pc()) -def _compile_mem_op(inst: DS | FLAT | GLOBAL | SCRATCH, ctx: _Ctx) -> UOp: +def _compile_mem_op(inst: ir3.DS | ir3.FLAT | ir3.GLOBAL | ir3.SCRATCH | ir4.DS | ir4.VFLAT | ir4.VGLOBAL | ir4.VSCRATCH, ctx: _Ctx) -> UOp: """Unified memory operation compiler for DS, FLAT, GLOBAL, SCRATCH.""" exec_mask, op_name = ctx.rsgpr_dyn(_c(EXEC_LO.offset)), _op_name(inst) pcode = get_pcode(inst.op) - is_lds = isinstance(inst, DS) - is_scratch = isinstance(inst, SCRATCH) + is_lds = isinstance(inst, (ir3.DS, ir4.DS)) + is_scratch = isinstance(inst, (ir3.SCRATCH, ir4.VSCRATCH)) mem = ctx.lds if is_lds else ctx.scratch if is_scratch else ctx.vmem addr_shift = UOp.const(dtypes.uint32 if is_lds else dtypes.uint64, 2) # Extract register info - all dynamic for deduplication if is_lds: - addr_reg = ctx.inst_field(DS.addr) - vdata_reg = ctx.inst_field(DS.data0) - vdst_reg = ctx.inst_field(DS.vdst) - offset0 = ctx.inst_field(DS.offset0) - offset1 = ctx.inst_field(DS.offset1) + addr_reg = ctx.inst_field(type(inst).addr) + vdata_reg = ctx.inst_field(type(inst).data0) + vdst_reg = ctx.inst_field(type(inst).vdst) + offset0 = ctx.inst_field(type(inst).offset0) + offset1 = ctx.inst_field(type(inst).offset1) offset = offset0 # DS uses offset0 as primary offset saddr_reg = None - else: + elif isinstance(inst, (ir4.VGLOBAL, ir4.VSCRATCH, ir4.VFLAT)): # RDNA4: vaddr, vsrc, ioffset + addr_reg = ctx.inst_field(type(inst).vaddr) + vdata_reg = ctx.inst_field(type(inst).vsrc) + vdst_reg = ctx.inst_field(type(inst).vdst) + offset = ctx.inst_field_signed(type(inst).ioffset) + offset0, offset1 = _c(0), _c(0) + saddr_reg = ctx.inst_field(type(inst).saddr) if hasattr(type(inst), 'saddr') else None + else: # RDNA3: addr, data, offset addr_reg = ctx.inst_field(type(inst).addr) vdata_reg = ctx.inst_field(type(inst).data) vdst_reg = ctx.inst_field(type(inst).vdst) offset = ctx.inst_field_signed(type(inst).offset) offset0, offset1 = _c(0), _c(0) - # Dynamic saddr - read field, NULL (124) or >= 128 means no saddr - saddr_reg = ctx.inst_field(type(inst).saddr) if hasattr(inst, 'saddr') else None + saddr_reg = ctx.inst_field(type(inst).saddr) if hasattr(type(inst), 'saddr') else None # Data width from canonical_op_bits (32/64/96/128), default to 32 for untyped ops data_bits_mem = inst.canonical_op_bits.get('data', 32) is_atomic, glc = 'ATOMIC' in op_name, getattr(inst, 'glc', 0) has_data1 = is_lds and hasattr(inst, 'data1') and inst.data1 is not None - data1_reg = ctx.inst_field(DS.data1) if is_lds else _c(0) + data1_reg = ctx.inst_field(type(inst).data1) if is_lds else _c(0) + + # DS_PERMUTE/DS_BPERMUTE: cross-lane VGPR access via pcode + if is_lds and 'PERMUTE' in op_name: + pcode = get_pcode(inst.op) + srcs = {'ADDR': addr_reg, 'DATA0': vdata_reg, 'VDST': vdst_reg, 'OFFSET': offset, + 'EXEC': exec_mask.cast(dtypes.uint64), '_vgpr': ctx.vgpr} + _, assigns = parse_pcode(pcode, srcs) + stores = [ctx.vgpr.index(val[0].cast(dtypes.int)).store(val[1].cast(dtypes.uint32)) for dest, val in assigns if dest.startswith('VGPR[')] + return UOp.sink(*stores, *ctx.inc_pc()) def make_addr(lane: UOp) -> UOp: if is_lds: return ctx.rvgpr_dyn(addr_reg, lane) @@ -912,14 +964,26 @@ def _compile_mem_op(inst: DS | FLAT | GLOBAL | SCRATCH, ctx: _Ctx) -> UOp: else: data = {'DATA': _u64(ctx.rvgpr_dyn(vdata_reg, lane), ctx.rvgpr_dyn(vdata_reg + _c(1), lane)), 'DATA2': _u64(ctx.rvgpr_dyn(data1_reg, lane), ctx.rvgpr_dyn(data1_reg + _c(1), lane)) if has_data1 else UOp.const(dtypes.uint64, 0)} - return {'ADDR': addr, 'ADDR_BASE': addr, 'OFFSET': offset, 'OFFSET0': offset0, 'OFFSET1': offset1, '_lds': mem, 'laneId': lane, **data} + # RDNA3 uses ADDR/OFFSET, RDNA4 uses vgpr_a/offset (lowercase) + CalcDsAddr function + return {'ADDR': addr, 'ADDR_BASE': addr, 'OFFSET': offset, 'OFFSET0': offset0, 'OFFSET1': offset1, '_lds': mem, 'laneId': lane, + 'vgpr_a': ctx.rvgpr_dyn(addr_reg, lane), 'offset': offset, **data} active = _lane_active(exec_mask, lane) + # saddr < 124 means valid SGPR pair, otherwise use 0 (NULL means no saddr contribution) + use_saddr = (saddr_reg < _c(124)) if saddr_reg is not None else UOp.const(dtypes.bool, False) + saddr_raw = _u64(ctx.rsgpr_dyn(saddr_reg), ctx.rsgpr_dyn(saddr_reg + _c(1))) if saddr_reg is not None else UOp.const(dtypes.uint64, 0) + saddr_base = use_saddr.where(saddr_raw, UOp.const(dtypes.uint64, 0)) + # Sign-extend offset to 64-bit for the final address calculation + ioffset64 = offset.cast(dtypes.int64).cast(dtypes.uint64) + # v_addr for CalcGlobalAddr: when saddr valid, use low 32 bits as offset; otherwise full 64-bit address. Include ioffset. + vaddr_full = _u64(ctx.rvgpr_dyn(addr_reg, lane), ctx.rvgpr_dyn(addr_reg + _c(1), lane)) + vaddr_lo = ctx.rvgpr_dyn(addr_reg, lane).cast(dtypes.uint64) + vaddr_base = use_saddr.where(vaddr_lo + ioffset64, vaddr_full + ioffset64) if is_atomic: return {'ADDR': addr, 'DATA': _u64(ctx.rvgpr_dyn(vdata_reg, lane), ctx.rvgpr_dyn(vdata_reg + _c(1), lane)) if data_bits_mem == 64 else ctx.rvgpr_dyn(vdata_reg, lane), - '_vmem': mem, '_active': active, 'laneId': lane} + '_vmem': mem, '_active': active, 'laneId': lane, 'v_addr': vaddr_base, 's_saddr': saddr_base} vdata = ctx.rvgpr_dyn(vdata_reg, lane).cast(dtypes.uint64) if 'STORE' in op_name else ctx.rvgpr_dyn(vdst_reg, lane) if 'D16' in op_name else UOp.const(dtypes.uint32, 0) if 'STORE' in op_name and data_bits_mem >= 64: vdata = vdata | (ctx.rvgpr_dyn(vdata_reg + _c(1), lane).cast(dtypes.uint64) << UOp.const(dtypes.uint64, 32)) - srcs = {'ADDR': addr, 'VDATA': vdata, '_vmem': mem, '_active': active, 'laneId': lane} + srcs = {'ADDR': addr, 'VDATA': vdata, '_vmem': mem, '_active': active, 'laneId': lane, 'v_addr': vaddr_base, 's_saddr': saddr_base} for i in range(data_bits_mem // 32): srcs[f'VDATA{i}'] = ctx.rvgpr_dyn(vdata_reg + _c(i), lane) if 'STORE' in op_name else UOp.const(dtypes.uint32, 0) return srcs @@ -970,10 +1034,15 @@ def _compile_mem_op(inst: DS | FLAT | GLOBAL | SCRATCH, ctx: _Ctx) -> UOp: # Dispatch table: instruction type -> handler function _INST_HANDLERS: dict[type, Callable[..., UOp]] = { - SOPP: _compile_sopp, SMEM: _compile_smem, SOP1: _compile_sop, SOP2: _compile_sop, SOPC: _compile_sop, SOPK: _compile_sop, - VOP1: _compile_vop12, VOP1_SDST: _compile_vop12, VOP2: _compile_vop12, VOPC: _compile_vopc, VOP3: _compile_vop3, VOP3_SDST: _compile_vop3, - VOP3SD: _compile_vop3sd, VOP3P: _compile_vop3p, VOPD: _compile_vopd, - DS: _compile_mem_op, FLAT: _compile_mem_op, GLOBAL: _compile_mem_op, SCRATCH: _compile_mem_op, + ir3.SOPP: _compile_sopp, ir3.SMEM: _compile_smem, ir3.SOP1: _compile_sop, ir3.SOP2: _compile_sop, ir3.SOPC: _compile_sop, ir3.SOPK: _compile_sop, + ir3.VOP1: _compile_vop12, ir3.VOP1_SDST: _compile_vop12, ir3.VOP2: _compile_vop12, ir3.VOPC: _compile_vopc, ir3.VOP3: _compile_vop3, + ir3.VOP3_SDST: _compile_vop3, ir3.VOP3SD: _compile_vop3sd, ir3.VOP3P: _compile_vop3p, ir3.VOPD: _compile_vopd, + ir3.DS: _compile_mem_op, ir3.FLAT: _compile_mem_op, ir3.GLOBAL: _compile_mem_op, ir3.SCRATCH: _compile_mem_op, + # RDNA4 instruction classes + ir4.SOPP: _compile_sopp, ir4.SMEM: _compile_smem, ir4.SOP1: _compile_sop, ir4.SOP2: _compile_sop, ir4.SOPC: _compile_sop, ir4.SOPK: _compile_sop, + ir4.VOP1: _compile_vop12, ir4.VOP1_SDST: _compile_vop12, ir4.VOP2: _compile_vop12, ir4.VOPC: _compile_vopc, ir4.VOP3: _compile_vop3, + ir4.VOP3_SDST: _compile_vop3, ir4.VOP3SD: _compile_vop3sd, ir4.VOP3P: _compile_vop3p, ir4.VOPD: _compile_vopd, + ir4.DS: _compile_mem_op, ir4.VFLAT: _compile_mem_op, ir4.VGLOBAL: _compile_mem_op, ir4.VSCRATCH: _compile_mem_op, } # ═══════════════════════════════════════════════════════════════════════════════ @@ -983,9 +1052,9 @@ _INST_HANDLERS: dict[type, Callable[..., UOp]] = { _canonical_runner_cache: list[tuple[int, int, int, object]] = [] # [(base, mask, size, runner), ...] @functools.cache -def _get_runner(inst_bytes: bytes): +def _get_runner(inst_bytes: bytes, arch: str = "rdna3"): """Build and compile instruction to CompiledRunner. Cached by instruction bytes, with canonical dedup.""" - inst = decode_inst(inst_bytes) + inst = decode_inst(inst_bytes, arch) inst_size = inst.size() inst_int = int.from_bytes(inst_bytes[:inst_size], 'little') @@ -1014,15 +1083,15 @@ def _get_runner(inst_bytes: bytes): return runner, True @functools.cache -def decode_program(data: bytes) -> dict[int, tuple[str, Callable, list[int], Any]]: +def decode_program(data: bytes, arch: str = "rdna3") -> dict[int, tuple[str, Callable, list[int], Any]]: """Decode program to {pc: (name, fxn, globals, runner)}.""" result: dict[int, tuple[str, Callable, list[int], Any]] = {} i = 0 while i < len(data): - inst = decode_inst(data[i:]) - if isinstance(inst, SOPP) and inst.op == SOPPOp.S_CODE_END: break + inst = decode_inst(data[i:], arch) + if hasattr(inst, 'op') and inst.op in (ir3.SOPPOp.S_CODE_END, ir4.SOPPOp.S_CODE_END): break try: - runner, is_new = _get_runner(bytes(data[i:i + inst.size() + 4])) + runner, is_new = _get_runner(bytes(data[i:i + inst.size() + 4]), arch) if DEBUG >= 3: try: inst_str = repr(inst) except Exception: inst_str = f"<{type(inst).__name__} at PC={i}>" @@ -1081,9 +1150,9 @@ class WaveState: # ═══════════════════════════════════════════════════════════════════════════════ def run_asm(lib: int, lib_sz: int, gx: int, gy: int, gz: int, lx: int, ly: int, lz: int, args_ptr: int, rsrc2: int = 0x19c, - scratch_size: int = 0) -> int: + scratch_size: int = 0, arch: str = "rdna3") -> int: """Execute AMD assembly program. scratch_size is private_segment_fixed_size from kernel descriptor (per-lane).""" - program_raw = decode_program(bytes((ctypes.c_char * lib_sz).from_address(lib).raw)) + program_raw = decode_program(bytes((ctypes.c_char * lib_sz).from_address(lib).raw), arch) program = {lib + offset: val for offset, val in program_raw.items()} # Remap to actual addresses lds_size = ((rsrc2 & hsa.AMD_COMPUTE_PGM_RSRC_TWO_GRANULATED_LDS_SIZE) >> hsa.AMD_COMPUTE_PGM_RSRC_TWO_GRANULATED_LDS_SIZE_SHIFT) * 512 total_threads = lx * ly * lz @@ -1111,6 +1180,12 @@ def run_asm(lib: int, lib_sz: int, gx: int, gy: int, gz: int, lx: int, ly: int, (hsa.AMD_COMPUTE_PGM_RSRC_TWO_ENABLE_SGPR_WORKGROUP_ID_Z, gidz)]: if rsrc2 & enabled: st._write_sgpr(sgpr_idx, gid); sgpr_idx += 1 + # RDNA4 uses TTMP registers for workgroup IDs: ttmp[9]=gidx, ttmp[10]=gidy, ttmp[11]=gidz + if arch == "rdna4": + st._write_sgpr(ttmp[9].offset, gidx) + st._write_sgpr(ttmp[10].offset, gidy) + st._write_sgpr(ttmp[11].offset, gidz) + # v0 = packed workitem IDs, scratch stride in secret SGPR for lane in range(n_lanes): tid = wave_start + lane @@ -1127,7 +1202,7 @@ def run_asm(lib: int, lib_sz: int, gx: int, gy: int, gz: int, lx: int, ly: int, assert fxn is not None, f"[emu] No fxn for {name} at PC={pc}" assert 4 not in globals_list or scratch_buf, f"SCRATCH instruction {name} but scratch_size=0" if DEBUG >= 6: - inst = decode_inst(bytes((ctypes.c_char * 12).from_address(pc).raw)) + inst = decode_inst(bytes((ctypes.c_char * 12).from_address(pc).raw), arch) print(f"[emu] exec PC={pc:X}: {inst!r}") fxn(*[c_bufs[g] for g in globals_list]) else: raise RuntimeError("exceeded 1M instructions, likely infinite loop") diff --git a/extra/assembly/amd/pcode.py b/extra/assembly/amd/pcode.py index 3f826f3260..166f2c5e48 100644 --- a/extra/assembly/amd/pcode.py +++ b/extra/assembly/amd/pcode.py @@ -200,6 +200,17 @@ def _ff1(val: UOp, bits: int) -> UOp: result = cond.where(_const(dtypes.int, i), result) return result +def _sad_u8(a: UOp, b: UOp, acc: UOp, masked: bool = False) -> UOp: + """Sum of absolute differences of 4 unsigned bytes + accumulator. If masked, skips bytes where a == 0.""" + a, b, acc = a.cast(dtypes.uint32), b.cast(dtypes.uint32), acc.cast(dtypes.uint32) + result = acc + for i in range(4): + a_byte = (a >> _u32(i * 8)) & _u32(0xFF) + b_byte = (b >> _u32(i * 8)) & _u32(0xFF) + diff = (a_byte > b_byte).where(a_byte - b_byte, b_byte - a_byte) + result = result + (a_byte.ne(_u32(0)).where(diff, _u32(0)) if masked else diff) + return result + _FUNCS: dict[str, Callable[..., UOp]] = { 'sqrt': lambda a: UOp(Ops.SQRT, a.dtype, (a,)), 'trunc': lambda a: UOp(Ops.TRUNC, a.dtype, (a,)), 'log2': lambda a: UOp(Ops.LOG2, a.dtype, (a,)), 'sin': lambda a: _trig_reduce(a), @@ -254,6 +265,15 @@ _FUNCS: dict[str, Callable[..., UOp]] = { # Float to int16 conversions 'v_cvt_i16_f32': lambda a: UOp(Ops.TRUNC, dtypes.float32, (a.bitcast(dtypes.float32),)).cast(dtypes.int16), 'v_cvt_u16_f32': lambda a: _f_to_u(a.bitcast(dtypes.float32), dtypes.uint16), + # SAD (Sum of Absolute Differences) - sum |a_i - b_i| for 4 bytes + accumulator + 'v_sad_u8': lambda a, b, c: _sad_u8(a, b, c), + 'v_msad_u8': lambda a, b, c: _sad_u8(a, b, c, masked=True), + # System NOPs - these are scheduling hints, no effect on emulation + 'MIN': lambda a, b: (a < b).where(a, b), + 's_nop': lambda a: _u32(0), + # Address calculation for memory operations + 'CalcDsAddr': lambda a, o, *r: a.cast(dtypes.uint32) + o.cast(dtypes.uint32), + 'CalcGlobalAddr': lambda v, s, *r: v.cast(dtypes.uint64) + s.cast(dtypes.uint64), } for is_max, name in [(False, 'min'), (True, 'max')]: for dt, sfx in [(dtypes.float32, 'f32'), (dtypes.int, 'i32'), (dtypes.uint32, 'u32'), (dtypes.int16, 'i16'), (dtypes.uint16, 'u16')]: @@ -435,7 +455,7 @@ class Parser: self.eat('DOT') dt_name = self.eat('IDENT').val return self._handle_mem_load(addr, DTYPES.get(dt_name, dtypes.uint32)) - if name == 'VGPR': + if name == 'VGPR' and self.at('LBRACKET'): self.eat('LBRACKET') lane = self.parse() self.eat('RBRACKET') @@ -462,7 +482,21 @@ class Parser: if self.try_eat('LBRACE'): idx = self.eat('NUM').val self.eat('RBRACE') - elem = self.vars.get(f'{name}{idx}', _u32(0)) + # Handle VGPR{lane}[reg] - 2D array access after loop unrolling + if name == 'VGPR' and self.at('LBRACKET'): + self.eat('LBRACKET') + reg = self.parse() + self.eat('RBRACKET') + vgpr = self.vars.get('_vgpr') + if vgpr is None: return _u32(0) + return vgpr.index(_to_u32(reg) * _u32(32) + _u32(int(idx)), ptr=True).load() + elem = self.vars.get(f'{name}@{idx}', self.vars.get(f'{name}{idx}')) + if elem is None: + # Extract bit idx from base variable (like var[idx]) + base = self.vars.get(name) + assert isinstance(base, UOp), f"unknown variable: {name}{idx}" + dt = dtypes.uint64 if base.dtype in (dtypes.uint64, dtypes.int64) else dtypes.uint32 + elem = (base.cast(dt) >> _const(dt, int(idx))) & _const(dt, 1) if self.try_eat('DOT'): dt_name = self.eat('IDENT').val return _cast_to(elem, DTYPES.get(dt_name, dtypes.uint32)) @@ -475,15 +509,13 @@ class Parser: return self._handle_bracket_rest(first, _u32(0), name) if name in self.vars: v = self.vars[name] - return v if isinstance(v, UOp) else _u32(0) if isinstance(v, dict) else _u32(0) + assert isinstance(v, UOp), f"expected UOp for {name}, got {type(v)}" + return v raise RuntimeError(f"unknown variable: {name}") raise RuntimeError(f"unexpected token in primary: {self.peek()}") def _handle_dot(self, base, field: str) -> UOp: - if isinstance(base, str): return _u32(0) - if not isinstance(base, UOp): - if isinstance(base, dict): return base.get(field, _u32(0)) - return _u32(0) + assert isinstance(base, UOp), f"expected UOp for dot access, got {type(base)}" if field == 'u64' and self.at('LBRACKET') and self.peek(1).type == 'IDENT' and self.peek(1).val == 'laneId': self.eat('LBRACKET') self.eat_val('laneId', 'IDENT') @@ -541,9 +573,11 @@ class Parser: var_name = self._find_var_name(base) if first.op == Ops.CONST: idx = int(first.arg) + # Check for array element (var@idx) if var_name and f'{var_name}@{idx}' in self.vars: v = self.vars[f'{var_name}@{idx}'] return _cast_to(v, dt_suffix) if dt_suffix else v + # Bit extraction dt = dtypes.uint64 if base.dtype in (dtypes.uint64, dtypes.int64) else dtypes.uint32 base_cast = base.cast(dt) if base.dtype != dt else base result = ((base_cast >> _const(dt, idx)) & _const(dt, 1)) @@ -631,13 +665,14 @@ class Parser: raise RuntimeError(f"unexpected token after {bits}': {self.peek()}") def _parse_number(self, num: str) -> UOp: - if num.startswith('0x') or num.startswith('0X'): return _const(dtypes.uint64, int(num.rstrip('ULul'), 16)) - suffix, num = _strip_suffix(num) - if '.' in num or suffix in ('F', 'f'): - return _const(dtypes.float32 if suffix in ('F', 'f') else dtypes.float64, float(num)) - val = int(num) - if 'ULL' in suffix: return _const(dtypes.uint64, val) - if 'LL' in suffix or 'L' in suffix: return _const(dtypes.uint64, val) + if num.startswith('0x') or num.startswith('0X'): + is_u64 = num.upper().endswith('ULL') or num.upper().endswith('LL') or num.upper().endswith('UL') + return _const(dtypes.uint64 if is_u64 else dtypes.uint32, int(num.rstrip('ULul'), 16)) + suffix, num_str = _strip_suffix(num) + if '.' in num_str or suffix in ('F', 'f'): + return _const(dtypes.float32 if suffix in ('F', 'f') else dtypes.float64, float(num_str)) + val = int(num_str) + if 'ULL' in suffix or 'LL' in suffix or 'L' in suffix: return _const(dtypes.uint64, val) if 'U' in suffix: return _const(dtypes.uint32, val) return _const(dtypes.int if val < 0 else dtypes.uint32, val) @@ -655,7 +690,8 @@ class Parser: if ';' in body or '\n' in body or 'return' in body.lower(): lines = [l.strip() for l in body.replace(';', '\n').split('\n') if l.strip() and not l.strip().startswith('//')] _, _, result = parse_block(lines, 0, lv, self.funcs) - return result if result is not None else _u32(0) + assert result is not None, f"lambda {name} must return a value" + return result return parse_expr(body, lv, self.funcs) if name in self.funcs: return self.funcs[name](*args) @@ -663,7 +699,7 @@ class Parser: def _handle_mem_load(self, addr: UOp, dt) -> UOp: mem = self.vars.get('_vmem') if '_vmem' in self.vars else self.vars.get('_lds') - if mem is None: return _const(dt, 0) + assert mem is not None, "memory load requires _vmem or _lds" adt = dtypes.uint64 if addr.dtype == dtypes.uint64 else dtypes.uint32 active = self.vars.get('_active') gate = (active,) if active is not None else () @@ -725,29 +761,9 @@ def parse_tokens(toks: list[Token], vars: dict[str, VarVal], funcs: dict | None # Unified block parser for pcode def _subst_loop_var(line: str, loop_var: str, val: int) -> str: - """Substitute loop variable and evaluate bracket expressions. - Converts var[loop_var] to var{val} for array element access (like the old regex parser).""" + """Substitute loop variable with its value.""" toks = tokenize(line) - # First pass: convert var[loop_var] to var{loop_var} to mark for array element assignment - result_toks: list[Token] = [] - j = 0 - while j < len(toks): - t = toks[j] - # Check for pattern: IDENT[loop_var] where it's not preceded by a dot (not .type[...]) - if t.type == 'IDENT' and j+3 < len(toks) and toks[j+1].type == 'LBRACKET' and toks[j+2].type == 'IDENT' and toks[j+2].val == loop_var and toks[j+3].type == 'RBRACKET': - # Check that it's not .type[loop_var] - if not result_toks or result_toks[-1].type != 'DOT': - result_toks.append(t) - result_toks.append(Token('LBRACE', '{')) - result_toks.append(Token('NUM', str(val))) - result_toks.append(Token('RBRACE', '}')) - j += 4 - continue - result_toks.append(t) - j += 1 - # Second pass: substitute loop variable in remaining positions - subst_parts = [str(val) if t.type == 'IDENT' and t.val == loop_var else t.val for t in result_toks if t.type != 'EOF'] - return ' '.join(subst_parts) + return ' '.join(str(val) if t.type == 'IDENT' and t.val == loop_var else t.val for t in toks if t.type != 'EOF') def _set_bits(old: UOp, val: UOp, width: int, offset: int) -> UOp: """Set bits [offset:offset+width) in old to val, masking and shifting appropriately.""" @@ -797,8 +813,9 @@ def parse_block(lines: list[str], start: int, vars: dict[str, VarVal], funcs: di def parse_bound(): if p.at('NUM') and p.peek(1).type == 'QUOTE': p.eat('NUM'); p.eat('QUOTE') if p.at('NUM'): return int(p.eat('NUM').val.rstrip('UuLl')) - expr = p.parse() - return int(expr.arg) if expr.op == Ops.CONST else 0 + expr = p.parse().simplify() + assert expr.op == Ops.CONST, f"loop bound must be constant, got {expr}" + return int(expr.arg) start_val = parse_bound() p.eat('COLON') end_val = parse_bound() @@ -844,7 +861,9 @@ def parse_block(lines: list[str], start: int, vars: dict[str, VarVal], funcs: di # declare if first == 'declare': - if '[' not in line and len(toks) >= 2 and toks[1].type == 'IDENT': vars[toks[1].val] = _u32(0) + # Initialize scalar declarations (skip arrays and vars already passed as srcs) + if '[' not in line and len(toks) >= 2 and toks[1].type == 'IDENT': + vars.setdefault(toks[1].val, _u32(0)) i += 1; continue # lambda definition @@ -902,6 +921,7 @@ def parse_block(lines: list[str], start: int, vars: dict[str, VarVal], funcs: di j, lane_toks = _match_bracket(toks, 1) if j < len(toks) and toks[j].type == 'LBRACKET': j, reg_toks = _match_bracket(toks, j) + if j < len(toks) and toks[j].type == 'DOT': j += 2 # skip .type suffix if j < len(toks) and toks[j].type == 'EQUALS': j += 1 ln, rg, val = parse_tokens(lane_toks, vars, funcs), parse_tokens(reg_toks, vars, funcs), parse_tokens(toks[j:], vars, funcs) if assigns is not None: assigns.append((f'VGPR[{_tok_str(lane_toks)}][{_tok_str(reg_toks)}]', (_to_u32(rg) * _u32(32) + _to_u32(ln), val))) @@ -965,19 +985,32 @@ def parse_block(lines: list[str], start: int, vars: dict[str, VarVal], funcs: di block_assigns[var] = vars[var] = _set_bit(existing, _to_u32(parse_tokens(bit_toks, vars, funcs)), parse_tokens(toks[j+1:], vars, funcs)) i += 1; continue - # Array element: var{idx} = value - if len(toks) >= 5 and toks[0].type == 'IDENT' and toks[1].type == 'LBRACE' and toks[2].type == 'NUM': - var, idx = toks[0].val, int(toks[2].val) - j = 4 - while j < len(toks) and toks[j].type != 'EQUALS': j += 1 - if j < len(toks): - val = parse_tokens(toks[j+1:], vars, funcs) - existing = block_assigns.get(var, vars.get(var)) - if existing is not None and isinstance(existing, UOp): - block_assigns[var] = vars[var] = _set_bit(existing, _u32(idx), val) - else: - block_assigns[f'{var}@{idx}'] = vars[f'{var}@{idx}'] = val - i += 1; continue + # Array element: var[idx] = value (static index) or var[expr] = value (dynamic) + if len(toks) >= 4 and toks[0].type == 'IDENT' and toks[1].type == 'LBRACKET': + var = toks[0].val + j, idx_toks = _match_bracket(toks, 1) + if j < len(toks) and toks[j].type == 'EQUALS': + # Static index: var[NUM] = value + if len(idx_toks) == 1 and idx_toks[0].type == 'NUM': + idx = int(idx_toks[0].val.rstrip('UuLl')) + val = parse_tokens(toks[j+1:], vars, funcs) + existing = block_assigns.get(var, vars.get(var)) + if existing is not None and isinstance(existing, UOp): + block_assigns[var] = vars[var] = _set_bit(existing, _u32(idx), val) + else: + block_assigns[f'{var}@{idx}'] = vars[f'{var}@{idx}'] = val + i += 1; continue + # Dynamic index: var[expr] = value where var has @-elements + elems = [(k.split('@')[1], v) for k, v in {**vars, **block_assigns}.items() if k.startswith(f'{var}@') and isinstance(v, UOp)] + if elems: + idx_expr = parse_tokens(idx_toks, vars, funcs) + val = parse_tokens(toks[j+1:], vars, funcs) + for elem_idx_str, old_elem in elems: + elem_idx = int(elem_idx_str) + cond = _to_u32(idx_expr).eq(_u32(elem_idx)) + new_val = cond.where(val.cast(old_elem.dtype) if val.dtype != old_elem.dtype else val, old_elem) + block_assigns[f'{var}@{elem_idx}'] = vars[f'{var}@{elem_idx}'] = new_val + i += 1; continue # Compound assignment: var += or var -= assign_op = next((j for j, t in enumerate(toks) if t.type == 'ASSIGN_OP'), None) @@ -1024,13 +1057,14 @@ def parse_block(lines: list[str], start: int, vars: dict[str, VarVal], funcs: di def parse_cond(s, kw): ll = s.lower() return _to_bool(parse_expr(s[ll.find(kw) + len(kw):ll.rfind('then')].strip(), vars, funcs)) - def not_static_false(c): return c.op != Ops.CONST or c.arg is not False + def is_const(c, v): return c.op == Ops.CONST and c.arg is v cond = parse_cond(line, 'if') - conditions: list[tuple[UOp, UOp | dict[str, VarVal] | None]] = [(cond, None)] if not_static_false(cond) else [] + conditions: list[tuple[UOp, UOp | dict[str, VarVal] | None]] = [(cond, None)] if not is_const(cond, False) else [] else_branch: tuple[UOp | None, dict[str, VarVal]] = (None, {}) vars_snap = dict(vars) + static_true = is_const(cond, True) # track if any condition is statically true i += 1 - i, branch, ret = parse_block(lines, i, vars, funcs, assigns) + i, branch, ret = parse_block(lines, i, vars, funcs, assigns if not is_const(cond, False) else None) if conditions: conditions[0] = (cond, ret if ret is not None else branch) vars.clear(); vars.update(vars_snap) while i < len(lines): @@ -1039,12 +1073,16 @@ def parse_block(lines: list[str], start: int, vars: dict[str, VarVal], funcs: di lf = ltoks[0].val.lower() if lf == 'elsif': c = parse_cond(lines[i], 'elsif') - i += 1; i, branch, ret = parse_block(lines, i, vars, funcs, assigns) - if not_static_false(c): conditions.append((c, ret if ret is not None else branch)) + take = not static_true and not is_const(c, False) + i += 1; i, branch, ret = parse_block(lines, i, vars, funcs, assigns if take else None) + if take: + conditions.append((c, ret if ret is not None else branch)) + if is_const(c, True): static_true = True vars.clear(); vars.update(vars_snap) elif lf == 'else': - i += 1; i, branch, ret = parse_block(lines, i, vars, funcs, assigns) - else_branch = (ret, branch) + i += 1 + i, branch, ret = parse_block(lines, i, vars, funcs, assigns if not static_true else None) + if not static_true: else_branch = (ret, branch) vars.clear(); vars.update(vars_snap) elif lf == 'endif': i += 1; break else: break @@ -1056,17 +1094,21 @@ def parse_block(lines: list[str], start: int, vars: dict[str, VarVal], funcs: di if rv.dtype != result.dtype and rv.dtype.itemsize == result.dtype.itemsize: result = result.cast(rv.dtype) result = c.where(rv, result) return i, block_assigns, result - # Main style: merge variable assignments with WHERE - else_assigns = else_branch[1] - all_vars = set().union(*[ba.keys() for _, ba in conditions if isinstance(ba, dict)], else_assigns.keys()) - for var in all_vars: - res: Any = else_assigns.get(var, block_assigns.get(var, vars.get(var, _u32(0)))) - for cond, ba in reversed(conditions): - if isinstance(ba, dict) and var in ba: - tv = ba[var] - if isinstance(tv, UOp) and isinstance(res, UOp): - res = cond.where(tv, res.cast(tv.dtype) if tv.dtype != res.dtype and tv.dtype.itemsize == res.dtype.itemsize else res) - block_assigns[var] = vars[var] = res + # If statically true, use that branch directly; otherwise merge with WHERE + if static_true: + ba = next((b for c, b in conditions if is_const(c, True) and isinstance(b, dict)), {}) + block_assigns.update(ba); vars.update(ba) + else: + else_assigns = else_branch[1] + all_vars = set().union(*[ba.keys() for _, ba in conditions if isinstance(ba, dict)], else_assigns.keys()) + for var in all_vars: + res: Any = else_assigns.get(var, block_assigns.get(var, vars.get(var, _u32(0)))) + for cond, ba in reversed(conditions): + if isinstance(ba, dict) and var in ba: + tv = ba[var] + if isinstance(tv, UOp) and isinstance(res, UOp): + res = cond.where(tv, res.cast(tv.dtype) if tv.dtype != res.dtype and tv.dtype.itemsize == res.dtype.itemsize else res) + block_assigns[var] = vars[var] = res continue # Regular assignment: var = value diff --git a/extra/assembly/amd/sqttmap.py b/extra/assembly/amd/sqttmap.py index 6cb7b6b8eb..addb481eec 100644 --- a/extra/assembly/amd/sqttmap.py +++ b/extra/assembly/amd/sqttmap.py @@ -2,11 +2,8 @@ from dataclasses import dataclass from typing import Iterator -from tinygrad.runtime.support.elf import elf_loader - from extra.assembly.amd.sqtt import decode, print_packets, INST, VALUINST, IMMEDIATE, WAVESTART, WAVEEND, InstOp, PacketType, IMMEDIATE_MASK from extra.assembly.amd.dsl import Inst -from extra.assembly.amd import decode_inst from extra.assembly.amd.autogen.rdna3.ins import SOPP, s_endpgm from extra.assembly.amd.autogen.rdna3.enum import SOPPOp @@ -16,19 +13,11 @@ class InstructionInfo: wave: int inst: Inst -def map_insts(data:bytes, lib:bytes) -> Iterator[tuple[PacketType, InstructionInfo|None]]: +def map_insts(data:bytes, lib:bytes, target:int) -> Iterator[tuple[PacketType, InstructionInfo|None]]: """maps SQTT packets to instructions, yields (packet, instruction_info or None)""" # map pcs to insts - pc_map:dict[int, Inst] = {} - image, sections, _ = elf_loader(lib) - text = next((sh for sh in sections if sh.name == ".text"), None) - assert text is not None, "no .text section found" - text_off, text_size = text.header.sh_addr, text.header.sh_size - offset = text_off - while offset < text_off + text_size: - inst = decode_inst(image[offset:]) - pc_map[offset-text_off] = inst - offset += inst.size() + from tinygrad.viz.serve import amd_decode + pc_map = amd_decode(lib, target) wave_pc:dict[int, int] = {} # only processing packets on one [CU, SIMD] unit @@ -37,7 +26,7 @@ def map_insts(data:bytes, lib:bytes) -> Iterator[tuple[PacketType, InstructionIn if not simd_select(p): continue if isinstance(p, WAVESTART): assert p.wave not in wave_pc, "only one inflight wave per unit" - wave_pc[p.wave] = 0 + wave_pc[p.wave] = next(iter(pc_map)) continue if isinstance(p, WAVEEND): pc = wave_pc.pop(p.wave) @@ -80,22 +69,22 @@ def map_insts(data:bytes, lib:bytes) -> Iterator[tuple[PacketType, InstructionIn # test to compare every packet with the rocprof decoder def test_rocprof_inst_traces_match(sqtt, prg, target): - from tinygrad.viz.serve import llvm_disasm + from tinygrad.viz.serve import amd_decode from extra.sqtt.roc import decode as roc_decode, InstExec - disasm = {addr+prg.base:inst_disasm for addr, inst_disasm in llvm_disasm(target, prg.lib).items()} - rctx = roc_decode([sqtt], {prg.name:disasm}) - rwaves = rctx.inst_execs[(sqtt.kern, sqtt.exec_tag)] + addr_table = amd_decode(prg.lib, target) + disasm = {addr+prg.base:(inst.disasm(), inst.size()) for addr,inst in addr_table.items()} + rctx = roc_decode([sqtt], {prg.tag:disasm}) + rwaves = rctx.inst_execs.get((sqtt.kern, sqtt.exec_tag), []) rwaves_iter:dict[int, list[Iterator[InstExec]]] = {} # wave unit (0-15) -> list of inst trace iterators for all executions on that unit for w in rwaves: rwaves_iter.setdefault(w.wave_id, []).append(w.unpack_insts()) - rwaves_base = next(iter(disasm)) # base program counter passed_insts = 0 - for pkt, info in map_insts(sqtt.blob, prg.lib): + for pkt, info in map_insts(sqtt.blob, prg.lib, target): if DEBUG >= 2: print_packets([pkt]) if info is None: continue if DEBUG >= 2: print(f"{' '*29}{info.inst.disasm()}") rocprof_inst = next(rwaves_iter[info.wave][0]) - ref_pc = rocprof_inst.pc-rwaves_base + ref_pc = rocprof_inst.pc-prg.base # always check pc matches assert ref_pc == info.pc, f"pc mismatch {ref_pc}:{disasm[rocprof_inst.pc][0]} != {info.pc}:{info.inst.disasm()}" # special handling for s_endpgm, it marks the wave completion. @@ -110,7 +99,8 @@ def test_rocprof_inst_traces_match(sqtt, prg, target): for k,v in rwaves_iter.items(): assert len(v) == 0, f"incomplete wave {k}" - print(f"passed for {passed_insts} instructions across {len(rwaves)} waves scheduled on {len(rwaves_iter)} wave units") + if len(rwaves): + print(f"passed for {passed_insts} instructions across {len(rwaves)} waves scheduled on {len(rwaves_iter)} wave units") if __name__ == "__main__": import argparse, pickle, pathlib @@ -123,7 +113,7 @@ if __name__ == "__main__": with open(args.profile, "rb") as f: data = pickle.load(f) sqtt_events = [e for e in data if type(e).__name__ == "ProfileSQTTEvent"] - kern_events = {e.name:e for e in data if type(e).__name__ == "ProfileProgramEvent"} + kern_events = {e.tag:e for e in data if type(e).__name__ == "ProfileProgramEvent"} target = next((e for e in data if type(e).__name__ == "ProfileDeviceEvent" and e.device.startswith("AMD"))).props["gfx_target_version"] for e in sqtt_events: if args.kernel is not None and args.kernel != e.kern: continue diff --git a/extra/assembly/amd/test/hw/helpers.py b/extra/assembly/amd/test/hw/helpers.py index 5bc1227c46..73ce9cb01b 100644 --- a/extra/assembly/amd/test/hw/helpers.py +++ b/extra/assembly/amd/test/hw/helpers.py @@ -43,6 +43,23 @@ VCC = VCC_LO # For VOP3SD sdst field (VCC_LO is exported from dsl) USE_HW = os.environ.get("USE_HW", "0") == "1" FLOAT_TOLERANCE = 1e-5 +def get_gpu_target() -> tuple[int, int, int]: + """Get the GPU target as (major, minor, stepping) tuple.""" + if not USE_HW: return (0, 0, 0) + from tinygrad.device import Device + return Device["AMD"].target + +def skip_unless_gfx(min_major: int, min_minor: int = 0, reason: str = ""): + """Skip test if GPU target is below the minimum required version.""" + import unittest + def decorator(test_func): + if not USE_HW: return test_func + target = get_gpu_target() + if target[0] < min_major or (target[0] == min_major and target[1] < min_minor): + return unittest.skip(reason or f"requires gfx{min_major}{min_minor}0+")(test_func) + return test_func + return decorator + # Output buffer layout: vgpr[16][32], sgpr[16], vcc, scc, exec N_VGPRS, N_SGPRS, WAVE_SIZE = 16, 16, 32 VGPR_BYTES = N_VGPRS * WAVE_SIZE * 4 # 16 regs * 32 lanes * 4 bytes = 2048 @@ -212,8 +229,12 @@ amdhsa.kernels: return parse_output(bytes(out_buf), n_lanes) -def compare_wave_states(emu_st: WaveState, hw_st: WaveState, n_lanes: int, n_vgprs: int = N_VGPRS) -> list[str]: - """Compare two WaveStates and return list of differences.""" +def compare_wave_states(emu_st: WaveState, hw_st: WaveState, n_lanes: int, n_vgprs: int = N_VGPRS, ulp_tolerance: int = 0) -> list[str]: + """Compare two WaveStates and return list of differences. + + Args: + ulp_tolerance: Allow up to this many ULPs difference for float comparisons (0 = exact match required) + """ import math diffs = [] for i in range(n_vgprs): @@ -224,6 +245,11 @@ def compare_wave_states(emu_st: WaveState, hw_st: WaveState, n_lanes: int, n_vgp emu_f, hw_f = _f32(emu_val), _f32(hw_val) if math.isnan(emu_f) and math.isnan(hw_f): continue + # Check ULP difference for floats (only for same-sign values) + if ulp_tolerance > 0 and (emu_val < 0x80000000) == (hw_val < 0x80000000): + ulp_diff = abs(int(emu_val) - int(hw_val)) + if ulp_diff <= ulp_tolerance: + continue diffs.append(f"v[{i}] lane {lane}: emu=0x{emu_val:08x} ({emu_f:.6g}) hw=0x{hw_val:08x} ({hw_f:.6g})") for i in range(N_SGPRS): emu_val = emu_st.sgpr[i] @@ -236,16 +262,19 @@ def compare_wave_states(emu_st: WaveState, hw_st: WaveState, n_lanes: int, n_vgp diffs.append(f"scc: emu={emu_st.scc} hw={hw_st.scc}") return diffs -def run_program(instructions: list, n_lanes: int = 1) -> WaveState: +def run_program(instructions: list, n_lanes: int = 1, ulp_tolerance: int = 0) -> WaveState: """Run instructions and return WaveState. If USE_HW=1, runs on both emulator and hardware, compares results, and raises if they differ. Otherwise, runs only on emulator. + + Args: + ulp_tolerance: Allow up to this many ULPs difference for float comparisons (0 = exact match required) """ emu_st = run_program_emu(instructions, n_lanes) if USE_HW: hw_st = run_program_hw(instructions, n_lanes) - diffs = compare_wave_states(emu_st, hw_st, n_lanes) + diffs = compare_wave_states(emu_st, hw_st, n_lanes, ulp_tolerance=ulp_tolerance) if diffs: raise AssertionError(f"Emulator vs Hardware mismatch:\n" + "\n".join(diffs)) return hw_st diff --git a/extra/assembly/amd/test/hw/test_ds.py b/extra/assembly/amd/test/hw/test_ds.py index 4f307bcf67..45e9080d27 100644 --- a/extra/assembly/amd/test/hw/test_ds.py +++ b/extra/assembly/amd/test/hw/test_ds.py @@ -719,5 +719,47 @@ class TestAtomicOrdering(unittest.TestCase): self.assertEqual(st.vgpr[0][4], 150, "Final value should be 150") +class TestDsPermute(unittest.TestCase): + """Tests for DS_PERMUTE_B32 and DS_BPERMUTE_B32 instructions.""" + + def test_ds_permute_b32_identity(self): + """DS_PERMUTE_B32 with identity permutation (lane 0 sends to lane 0).""" + # For simplicity, test with single lane + instructions = [ + v_mov_b32_e32(v[0], 0), # addr = 0 (lane 0) + v_mov_b32_e32(v[1], 0xDEADBEEF), # data + ds_permute_b32(v[2], v[0], v[1]), + s_waitcnt(lgkmcnt=0), + ] + st = run_program(instructions, n_lanes=1) + # Lane 0 sends to lane 0, so lane 0 gets 0xDEADBEEF + self.assertEqual(st.vgpr[0][2], 0xDEADBEEF) + + def test_ds_bpermute_b32_identity(self): + """DS_BPERMUTE_B32 with identity permutation (each lane reads from itself).""" + instructions = [ + v_mov_b32_e32(v[0], 0), # addr = 0 (read from lane 0) + v_mov_b32_e32(v[1], 0xCAFEBABE), # data in lane 0 + ds_bpermute_b32(v[2], v[0], v[1]), + s_waitcnt(lgkmcnt=0), + ] + st = run_program(instructions, n_lanes=1) + # Lane 0 reads from lane 0's v[1] + self.assertEqual(st.vgpr[0][2], 0xCAFEBABE) + + def test_ds_permute_b32_broadcast(self): + """DS_PERMUTE_B32 broadcast - all lanes send to lane 0.""" + # With 4 lanes, all sending to lane 0, highest lane wins + instructions = [ + v_mov_b32_e32(v[0], 0), # All lanes send to addr 0 (lane 0) + v_mov_b32_e32(v[1], 0x11111111), # All lanes send same data + ds_permute_b32(v[2], v[0], v[1]), + s_waitcnt(lgkmcnt=0), + ] + st = run_program(instructions, n_lanes=4) + # Lane 0 receives data (highest numbered active lane wins) + self.assertEqual(st.vgpr[0][2], 0x11111111) + + if __name__ == '__main__': unittest.main() diff --git a/extra/assembly/amd/test/hw/test_sop.py b/extra/assembly/amd/test/hw/test_sop.py index b8f340ad7b..4f51e67abc 100644 --- a/extra/assembly/amd/test/hw/test_sop.py +++ b/extra/assembly/amd/test/hw/test_sop.py @@ -62,6 +62,7 @@ class TestBasicScalar(unittest.TestCase): st = run_program(instructions, n_lanes=1) self.assertEqual(st.sgpr[1], 0x80000000) + @skip_unless_gfx(11, 5, "SALU FP ops require gfx1150+") def test_s_fmamk_f32(self): """S_FMAMK_F32: D = S0 * literal + S1.""" # 2.0 * 3.0 + 1.0 = 7.0 @@ -73,6 +74,7 @@ class TestBasicScalar(unittest.TestCase): st = run_program(instructions, n_lanes=1) self.assertEqual(st.sgpr[2], f2i(7.0)) + @skip_unless_gfx(11, 5, "SALU FP ops require gfx1150+") def test_s_fmamk_f32_negative(self): """S_FMAMK_F32 with negative values.""" # -2.0 * 4.0 + 10.0 = 2.0 diff --git a/extra/assembly/amd/test/hw/test_vop1.py b/extra/assembly/amd/test/hw/test_vop1.py index 12d518a066..10e7f24c52 100644 --- a/extra/assembly/amd/test/hw/test_vop1.py +++ b/extra/assembly/amd/test/hw/test_vop1.py @@ -1561,5 +1561,24 @@ class TestCvtNormF16(unittest.TestCase): self.assertAlmostEqual(result, 32768, delta=1) +class TestPermlane64(unittest.TestCase): + """Tests for V_PERMLANE64_B32 instruction (wave64 cross-half swap).""" + + def test_v_permlane64_b32_is_nop_in_wave32(self): + """V_PERMLANE64_B32 is a NOP in wave32 mode. + + Per AMD pcode: "if WAVE32 then s_nop(...) else ... endif" + The emulator runs in wave32 mode, so this instruction should not modify registers. + """ + instructions = [ + v_mov_b32_e32(v[0], 0xCAFEBABE), # source + v_mov_b32_e32(v[1], 0x12345678), # dest (should be preserved) + v_permlane64_b32_e32(v[1], v[0]), # NOP in wave32 + ] + st = run_program(instructions, n_lanes=1) + # Dest register should be unchanged (NOP behavior in wave32) + self.assertEqual(st.vgpr[0][1], 0x12345678) + + if __name__ == '__main__': unittest.main() diff --git a/extra/assembly/amd/test/hw/test_vop3.py b/extra/assembly/amd/test/hw/test_vop3.py index 596fcd4711..f798519f91 100644 --- a/extra/assembly/amd/test/hw/test_vop3.py +++ b/extra/assembly/amd/test/hw/test_vop3.py @@ -3262,5 +3262,81 @@ class TestMinMaxF16Vop3(unittest.TestCase): self.assertAlmostEqual(result, 4.0, delta=0.01) +class TestSadHi(unittest.TestCase): + """Tests for V_SAD_HI_U8 instruction.""" + + def test_v_sad_hi_u8_basic(self): + """V_SAD_HI_U8: (sad << 16) + acc.""" + # |1-5| + |2-6| + |3-7| + |4-8| = 16, << 16 = 0x100000, + 100 = 0x100064 + instructions = [ + v_mov_b32_e32(v[0], 0x04030201), + v_mov_b32_e32(v[1], 0x08070605), + v_mov_b32_e32(v[2], 100), + v_sad_hi_u8(v[3], v[0], v[1], v[2]), + ] + st = run_program(instructions, n_lanes=1) + self.assertEqual(st.vgpr[0][3], (16 << 16) + 100) + + def test_v_sad_hi_u8_zero_diff(self): + """V_SAD_HI_U8: identical inputs gives acc only.""" + instructions = [ + v_mov_b32_e32(v[0], 0x12345678), + v_mov_b32_e32(v[2], 50), + v_sad_hi_u8(v[3], v[0], v[0], v[2]), + ] + st = run_program(instructions, n_lanes=1) + self.assertEqual(st.vgpr[0][3], 50) + + +class TestPermlane(unittest.TestCase): + """Tests for V_PERMLANE16_B32 and V_PERMLANEX16_B32 instructions.""" + + def test_v_permlane16_b32_identity(self): + """V_PERMLANE16_B32 with identity permutation (lane i reads from lane i within row).""" + # lanesel encodes 4 bits per position: position i gets lanesel[i*4+3:i*4] + # Identity: position 0->0, 1->1, ..., 15->15 + # lanesel = 0xFEDCBA9876543210 (positions 15-0 in nibbles) + instructions = [ + v_mov_b32_e32(v[0], 0xDEADBEEF), # source data + s_mov_b32(s[0], 0x76543210), # lanesel low (positions 0-7) + s_mov_b32(s[1], 0xFEDCBA98), # lanesel high (positions 8-15) + v_permlane16_b32(v[1], v[0], s[0], s[1]), + ] + st = run_program(instructions, n_lanes=1) + # Lane 0 reads from lane 0 (position 0 -> lanesel[3:0] = 0) + self.assertEqual(st.vgpr[0][1], 0xDEADBEEF) + + def test_v_permlane16_b32_broadcast(self): + """V_PERMLANE16_B32 broadcast lane 0 to all lanes in row.""" + # lanesel = all zeros -> all positions read from lane 0 within row + instructions = [ + v_mov_b32_e32(v[0], 0xCAFEBABE), # source data + s_mov_b32(s[0], 0), # lanesel low = 0 (all read lane 0) + s_mov_b32(s[1], 0), # lanesel high = 0 + v_permlane16_b32(v[1], v[0], s[0], s[1]), + ] + st = run_program(instructions, n_lanes=4) + # All lanes read from lane 0 of their row + for lane in range(4): + self.assertEqual(st.vgpr[lane][1], 0xCAFEBABE) + + def test_v_permlanex16_b32_identity(self): + """V_PERMLANEX16_B32 cross-row read with identity selection.""" + # In wave32: row 0 (lanes 0-15) reads from row 1 (lanes 16-31) and vice versa + # With single lane in row 0, it reads from lane 0 of row 1 (lane 16) + # But lane 16 doesn't exist in 1-lane test, so use 32 lanes + instructions = [ + v_mov_b32_e32(v[0], 0x11111111), # All lanes have this initially + s_mov_b32(s[0], 0x76543210), # lanesel low + s_mov_b32(s[1], 0xFEDCBA98), # lanesel high + v_permlanex16_b32(v[1], v[0], s[0], s[1]), + ] + st = run_program(instructions, n_lanes=32) + # Lane 0 in row 0 reads from lane 0 of row 1 (lane 16) + self.assertEqual(st.vgpr[0][1], 0x11111111) + # Lane 16 in row 1 reads from lane 0 of row 0 (lane 0) + self.assertEqual(st.vgpr[16][1], 0x11111111) + + if __name__ == '__main__': unittest.main() diff --git a/extra/assembly/amd/test/hw/test_vop3p.py b/extra/assembly/amd/test/hw/test_vop3p.py index 62671b4ad8..185c61f7bb 100644 --- a/extra/assembly/amd/test/hw/test_vop3p.py +++ b/extra/assembly/amd/test/hw/test_vop3p.py @@ -767,6 +767,7 @@ class TestDot2F32F16(unittest.TestCase): """V_DOT2_F32_F16 with negative f16 values.""" # src0 = {hi=-2.0, lo=3.0}, src1 = {hi=1.0, lo=2.0} # result = 3.0*2.0 + (-2.0)*1.0 + 0 = 6 - 2 = 4.0 + # NOTE: Hardware DOT2 may have up to 1 ULP difference due to internal implementation src0 = (f32_to_f16(-2.0) << 16) | f32_to_f16(3.0) src1 = (f32_to_f16(1.0) << 16) | f32_to_f16(2.0) instructions = [ @@ -777,7 +778,7 @@ class TestDot2F32F16(unittest.TestCase): v_mov_b32_e32(v[2], 0), v_dot2_f32_f16(v[3], v[0], v[1], v[2], opsel_hi=3, opsel_hi2=1), ] - st = run_program(instructions, n_lanes=1) + st = run_program(instructions, n_lanes=1, ulp_tolerance=1) result = i2f(st.vgpr[0][3]) self.assertAlmostEqual(result, 4.0, places=2) diff --git a/extra/assembly/amd/test/test_rdna4_emu.py b/extra/assembly/amd/test/test_rdna4_emu.py new file mode 100644 index 0000000000..57e427e643 --- /dev/null +++ b/extra/assembly/amd/test/test_rdna4_emu.py @@ -0,0 +1,98 @@ +import unittest, ctypes +from extra.assembly.amd.autogen.rdna4 import ins as ir4 +from extra.assembly.amd.dsl import v, s +from extra.assembly.amd.emu import WaveState, decode_program +from tinygrad.device import Buffer, BufferSpec +from tinygrad.dtype import dtypes + +class TestRDNA4Emu(unittest.TestCase): + def _run(self, insts: list, sgprs: dict[int, int] = None, vgprs: dict[tuple[int, int], int] = None) -> WaveState: + """Run instructions and return final WaveState.""" + # Add S_ENDPGM if not present + if not any(isinstance(i, ir4.SOPP) and i.op == ir4.SOPPOp.S_ENDPGM for i in insts): + insts = list(insts) + [ir4.SOPP(ir4.SOPPOp.S_ENDPGM, simm=0)] + + # Assemble and decode + code = b''.join(i.to_bytes() for i in insts) + code_buf = (ctypes.c_uint8 * len(code)).from_buffer_copy(code) + code_addr = ctypes.addressof(code_buf) + program_raw = decode_program(code, "rdna4") + program = {code_addr + offset: val for offset, val in program_raw.items()} + + # Setup wave state + st = WaveState(n_lanes=1) + st.pc = code_addr + if sgprs: + for idx, val in sgprs.items(): st._write_sgpr(idx, val) + if vgprs: + for (reg, lane), val in vgprs.items(): st._write_vgpr(reg, lane, val) + + # Setup vmem buffer with external_ptr=0 (maps to address 0, allows any pointer access) + vmem_buf = Buffer('CPU', 1 << 40, dtypes.uint32, options=BufferSpec(external_ptr=0)).ensure_allocated() + + # Execute + c_bufs = [ctypes.c_uint64(st.sgpr_buf._buf.va_addr), ctypes.c_uint64(st.vgpr_buf._buf.va_addr), + ctypes.c_uint64(vmem_buf._buf.va_addr), ctypes.c_uint64(0), ctypes.c_uint64(0)] + for _ in range(100): + if (pc := st.pc) == 0xFFFFFFFFFFFFFFFF or pc not in program: break + _, fxn, globals_list, _ = program[pc] + fxn(*[c_bufs[g] for g in globals_list]) + return st + + def test_vopd_dual_mov(self): + """Test VOPD with two V_DUAL_MOV_B32 operations: v[1]=s[1], v[2]=s[2].""" + insts = [ir4.VOPD(ir4.VOPDOp.V_DUAL_MOV_B32, ir4.VOPDOp.V_DUAL_MOV_B32, + vdstx=v[1], vdsty=v[2], srcx0=s[1], srcy0=s[2], vsrcx1=v[0], vsrcy1=v[0])] + st = self._run(insts, sgprs={1: 0x40e00000, 2: 0x41100000}) # 7.0f, 9.0f + self.assertEqual(st._read_vgpr(1, 0), 0x40e00000) # v[1] = 7.0 + self.assertEqual(st._read_vgpr(2, 0), 0x41100000) # v[2] = 9.0 + + def test_vopd_dual_mov_after_other_vopd(self): + """Test VOPD reuse: first VOPD(v[3]=0, v[0]=?), then VOPD(v[1]=s[1], v[2]=s[2]).""" + # This matches the BEAM kernel sequence that fails + insts = [ + ir4.VOPD(ir4.VOPDOp.V_DUAL_MOV_B32, ir4.VOPDOp.V_DUAL_MOV_B32, + vdstx=v[3], vdsty=v[0], srcx0=0, srcy0=s[0], vsrcx1=v[0], vsrcy1=v[0]), # v[3]=0, v[0]=s[0] + ir4.VOPD(ir4.VOPDOp.V_DUAL_MOV_B32, ir4.VOPDOp.V_DUAL_MOV_B32, + vdstx=v[1], vdsty=v[2], srcx0=s[1], srcy0=s[2], vsrcx1=v[0], vsrcy1=v[0]), # v[1]=s[1], v[2]=s[2] + ] + st = self._run(insts, sgprs={0: 0x40a00000, 1: 0x40e00000, 2: 0x41100000}) # 5.0f, 7.0f, 9.0f + self.assertEqual(st._read_vgpr(1, 0), 0x40e00000) # v[1] = 7.0 + self.assertEqual(st._read_vgpr(2, 0), 0x41100000) # v[2] = 9.0 + + def test_vopd_with_s_add_f32_sequence(self): + """Test full BEAM kernel sequence: s_add_f32 then VOPD.""" + # This is the exact sequence from the failing BEAM kernel + insts = [ + ir4.SOP2(ir4.SOP2Op.S_ADD_F32, sdst=s[0], ssrc0=s[0], ssrc1=s[8]), # s[0] = s[0] + s[8] + ir4.SOP2(ir4.SOP2Op.S_ADD_F32, sdst=s[1], ssrc0=s[1], ssrc1=s[9]), # s[1] = s[1] + s[9] + ir4.SOP2(ir4.SOP2Op.S_ADD_F32, sdst=s[2], ssrc0=s[2], ssrc1=s[10]), # s[2] = s[2] + s[10] + ir4.VOPD(ir4.VOPDOp.V_DUAL_MOV_B32, ir4.VOPDOp.V_DUAL_MOV_B32, + vdstx=v[3], vdsty=v[0], srcx0=0, srcy0=s[0], vsrcx1=v[0], vsrcy1=v[0]), + ir4.VOPD(ir4.VOPDOp.V_DUAL_MOV_B32, ir4.VOPDOp.V_DUAL_MOV_B32, + vdstx=v[1], vdsty=v[2], srcx0=s[1], srcy0=s[2], vsrcx1=v[0], vsrcy1=v[0]), + ] + # Input: s[0:2] = [1,2,3], s[8:10] = [4,5,6] + # After s_add_f32: s[0:2] = [5,7,9] + st = self._run(insts, sgprs={0: 0x3f800000, 1: 0x40000000, 2: 0x40400000, # 1.0, 2.0, 3.0 + 8: 0x40800000, 9: 0x40a00000, 10: 0x40c00000}) # 4.0, 5.0, 6.0 + self.assertEqual(st._read_vgpr(1, 0), 0x40e00000) # v[1] = 7.0 + self.assertEqual(st._read_vgpr(2, 0), 0x41100000) # v[2] = 9.0 + + def test_s_mov_b32_then_vopd(self): + """Test s_mov_b32 followed by VOPD - simulates BEAM kernel sequence.""" + # Use s_mov_b32 with SGPR source (copy from pre-initialized SGPRs) + # s[10:12] will have values set by test harness, copy to s[0:2], then VOPD to VGPRs + insts = [ + ir4.SOP1(ir4.SOP1Op.S_MOV_B32, sdst=s[0], ssrc0=s[10]), # s[0] = s[10] + ir4.SOP1(ir4.SOP1Op.S_MOV_B32, sdst=s[1], ssrc0=s[11]), # s[1] = s[11] + ir4.SOP1(ir4.SOP1Op.S_MOV_B32, sdst=s[2], ssrc0=s[12]), # s[2] = s[12] + ir4.VOPD(ir4.VOPDOp.V_DUAL_MOV_B32, ir4.VOPDOp.V_DUAL_MOV_B32, + vdstx=v[1], vdsty=v[2], srcx0=s[1], srcy0=s[2], vsrcx1=v[0], vsrcy1=v[0]), + ] + st = self._run(insts, sgprs={10: 0x40a00000, 11: 0x40e00000, 12: 0x41100000}) # 5.0, 7.0, 9.0 + self.assertEqual(st._read_vgpr(1, 0), 0x40e00000) # v[1] = 7.0 + self.assertEqual(st._read_vgpr(2, 0), 0x41100000) # v[2] = 9.0 + +if __name__ == '__main__': + unittest.main() diff --git a/extra/assembly/amd/test/test_sqtt_examples.py b/extra/assembly/amd/test/test_sqtt_examples.py index e50b0d6bd5..161664675a 100644 --- a/extra/assembly/amd/test/test_sqtt_examples.py +++ b/extra/assembly/amd/test/test_sqtt_examples.py @@ -203,12 +203,12 @@ class SQTTExamplesTestBase(unittest.TestCase): class TestSQTTExamplesRDNA3(SQTTExamplesTestBase): target = "gfx1100" expected = { - "profile_empty_run_0": [1803, 1908, 1928, 1979, 2006, 1912], - "profile_empty_run_1": [1803, 1908, 1928, 1979, 2006, 1912], - "profile_gemm_run_0": [2531, 1844, 1864, 1915, 1942, 1848, 3074, 1919, 1939, 1990, 2017, 1923, 19026, 1919, 1939, 1990, 2017, 1929], - "profile_gemm_run_1": [2554, 1844, 1864, 1915, 1942, 1848, 3084, 1919, 1939, 1990, 2017, 1923, 19010, 1919, 1939, 1990, 2017, 1923], - "profile_plus_run_0": [1900, 1908, 1928, 1979, 2006, 1912], - "profile_plus_run_1": [1856, 1908, 1928, 1979, 2006, 1912], + "profile_empty_run_0": [1844, 1885, 1905, 1956, 1983, 1889], + "profile_empty_run_1": [1780, 1885, 1905, 1956, 1983, 1889], + "profile_gemm_run_0": [2656, 2025, 2045, 2096, 2123, 2029, 3183, 2019, 2039, 2090, 2117, 2023, 19119, 2013, 2033, 2084, 2111, 2017], + "profile_gemm_run_1": [2662, 2025, 2045, 2096, 2123, 2029, 3179, 2019, 2039, 2090, 2117, 2023, 19113, 2071, 2091, 2142, 2169, 2075], + "profile_plus_run_0": [1886, 2013, 2033, 2084, 2111, 2017], + "profile_plus_run_1": [1988, 2071, 2091, 2142, 2169, 2075], } class TestSQTTExamplesRDNA4(SQTTExamplesTestBase): target = "gfx1200" diff --git a/extra/gemm/amd_asm_matmul.py b/extra/gemm/amd_asm_matmul.py index 0eb581c160..c2dc9f7456 100644 --- a/extra/gemm/amd_asm_matmul.py +++ b/extra/gemm/amd_asm_matmul.py @@ -471,7 +471,7 @@ THREADS = 128 def test_matmul(): dev = Device[Device.DEFAULT] - print(f"Device arch: {dev.arch}") + print(f"Device arch: {dev.renderer.arch}") if getenv("STOCK", 0): # Load the stock kernel from amd_seb/kernel8_batched_gmem.s @@ -479,7 +479,7 @@ def test_matmul(): asm = stock_path.read_text() print(f"Loaded stock kernel from {stock_path}") else: - asm = build_kernel(dev.arch) + asm = build_kernel(dev.renderer.arch) binary = dev.compiler.compile(asm) print(f"Compiled! Binary size: {len(binary)} bytes") diff --git a/extra/gemm/asm/cdna/asm.py b/extra/gemm/asm/cdna/asm.py new file mode 100644 index 0000000000..96611dddc9 --- /dev/null +++ b/extra/gemm/asm/cdna/asm.py @@ -0,0 +1,11517 @@ +from extra.assembly.amd.autogen.cdna.ins import * +from tinygrad.dtype import dtypes + +# M0 is encoded with 124 (NULL in RDNA) in CDNA +M0 = NULL + +# (M, N, K) -> (numWG, iters, total) +GEMM_ARGS = { + (8192, 4096, 4096): (256, 64, 32768), + (8192, 14336, 4096): (256, 64, 114688), + (8192, 4096, 14336): (256, 224, 114688), + (8192, 128256, 4096): (16032, 64, 1026048), + (8192, 8192, 8192): (256, 128, 131072), + (4096, 4096, 4096): (256, 64, 16384), + (4096, 14336, 4096): (256, 64, 57344), + (4096, 4096, 14336): (256, 224, 57344), +} +ITERS_ARGS = {64: (67108864, 0), 128: (33554432, 0), 224: (613566757, 2147483656)} + +class Kernel: + def __init__(self, name="gemm"): self.name, self.instructions, self.labels, self.label_at_pos, self.pos = name, [], {}, {}, 0 + + def label(self, name): + self.labels[name] = self.pos + self.label_at_pos[self.pos] = name + + def emit(self, inst, target=None): + self.instructions.append(inst) + inst._target, inst._pos = target, self.pos + self.pos += inst.size() + return inst + + def waitcnt(self, lgkm=None, vm=None): + vmcnt, lgkmcnt, expcnt = vm if vm is not None else 63, lgkm if lgkm is not None else 15, 7 + waitcnt = (vmcnt & 0xF) | ((expcnt & 0x7) << 4) | ((lgkmcnt & 0xF) << 8) | (((vmcnt >> 4) & 0x3) << 14) + self.emit(s_waitcnt(waitcnt)) + + def to_asm(self): + # patch branches + for inst in self.instructions: + if inst._target is None: continue + inst.simm16 = (self.labels[inst._target] - inst._pos - inst.size()) // 4 + # convert instructions to bytes, pack hsa + inst_bytes = b"".join(inst.to_bytes() for inst in self.instructions) + body = "\n".join(" .byte " + ",".join(f"0x{b:02x}" for b in inst_bytes[i:i+16]) for i in range(0, len(inst_bytes), 16)) + hsa = [('group_segment_fixed_size', 133120), ('private_segment_fixed_size', 0), ('kernarg_size', 24), + ('next_free_vgpr', 512), ('next_free_sgpr', 96), ('system_sgpr_workgroup_id_x', 1), + ('system_sgpr_workgroup_id_y', 1), ('system_sgpr_workgroup_id_z', 1), ('user_sgpr_kernarg_segment_ptr', 1), + ('user_sgpr_count', 2), ('user_sgpr_kernarg_preload_length', 0), ('user_sgpr_kernarg_preload_offset', 0), + ('accum_offset', 256), ('uses_dynamic_stack', 0), ('tg_split', 0), ('float_round_mode_32', 0), + ('float_round_mode_16_64', 0), ('float_denorm_mode_32', 3), ('float_denorm_mode_16_64', 3), + ('ieee_mode', 1), ('fp16_overflow', 0), ('dx10_clamp', 1)] + args = '\n'.join(f' - .address_space: generic\n .name: {n}\n .offset: {i*8}\n' + f' .size: 8\n .value_kind: global_buffer' for i,n in enumerate(['C', 'A', 'B'])) + n = self.name + return '\n'.join(['.text', '.section\t.text.', f'.global\t{n}', '.p2align\t8', f'.type\t{n},@function', '', f'{n}:', + body, '', '.section .rodata,"a",@progbits', '.p2align 6, 0x0', f'.amdhsa_kernel {n}', + *[f' .amdhsa_{k} {v}' for k, v in hsa], '.end_amdhsa_kernel', '', '.amdgpu_metadata', '---', 'amdhsa.kernels:', + ' - .args:', args, ' .group_segment_fixed_size: 133120', ' .kernarg_segment_align: 8', + ' .kernarg_segment_size: 24', ' .max_flat_workgroup_size: 256', f' .name: {n}', + ' .private_segment_fixed_size: 0', ' .sgpr_count: 95', ' .sgpr_spill_count: 0', f' .symbol: {n}.kd', + ' .vgpr_count: 249', ' .vgpr_spill_count: 0', ' .wavefront_size: 64', 'amdhsa.version:', ' - 1', + ' - 1', '...', '.end_amdgpu_metadata', '']) + + # outputs readable source code for this kernel + def to_text(self) -> str: + lines, pos = [], 0 + for inst in self.instructions: + if (label := self.label_at_pos.get(pos)) is not None: lines.append(f"{label}:") + lines.append(f" {inst.disasm()}" if inst._target is None else f" {inst.op_name.lower()} {inst._target}") + pos += inst.size() + return "\n".join(lines) + +def build_kernel(batch, M, N, K, dtype): + numWG, iters, total = GEMM_ARGS[(M, N, K)] + total *= batch + magic, shift = ITERS_ARGS[iters] + v_mfma_16x16x32 = {dtypes.half:v_mfma_f32_16x16x32_f16, dtypes.bfloat16:v_mfma_f32_16x16x32_bf16}[dtype] + v_cvt_pk = {dtypes.half:v_cvt_pk_f16_f32, dtypes.bfloat16:v_cvt_pk_bf16_f32}[dtype] + v_cvt = {dtypes.half:v_cvt_f32_f16_e32, dtypes.bfloat16:v_cvt_f32_bf16_e32}[dtype] + k = Kernel(f"gemm_{batch}_{M}_{N}_{K}") + # load D, A, B pointers + k.emit(s_load_dwordx2(s[24:25], s[0:1], s[0], 0, 0, 0, 0, 1)) + k.emit(s_load_dwordx2(s[30:31], s[0:1], s[0], 8, 0, 0, 0, 1)) + k.emit(s_load_dwordx2(s[28:29], s[0:1], s[0], 16, 0, 0, 0, 1)) + k.waitcnt(lgkm=0) + # params as constants + k.emit(s_mov_b32(s[69], numWG)) + k.emit(s_mov_b32(s[20], N)) + k.emit(s_mov_b32(s[21], batch * M)) + k.emit(s_mov_b32(s[22], 1)) + k.emit(s_mov_b32(s[23], K)) + k.emit(s_mov_b32(s[36], N)) + k.emit(s_mov_b32(s[37], 0)) + k.emit(s_mov_b32(s[40], N)) + k.emit(s_mov_b32(s[41], 0)) + k.emit(s_mov_b32(s[42], K)) + k.emit(s_mov_b32(s[43], 0)) + k.emit(s_mov_b32(s[46], iters)) + k.emit(s_mov_b32(s[47], magic)) + k.emit(s_mov_b32(s[48], shift)) + k.emit(s_mov_b32(s[49], total)) + k.emit(s_mov_b32(s[62], 0)) + k.emit(s_mov_b32(s[68], 0)) + # kernel size is 256x256 + k.emit(s_mov_b32(s[51], 256)); k.emit(s_mov_b32(s[52], 256)) + k.emit(s_mov_b32(s[38], s[36])) + k.emit(s_mov_b32(s[39], s[37])) + k.emit(s_mov_b64(s[26:27], s[24:25])) + k.emit(s_and_b32(s[6], s[68], 4294901760)) + k.emit(s_lshr_b32(s[6], s[6], 16)) + k.emit(s_mov_b32(s[63], 0)) + k.emit(s_setprio(3)) + k.emit(s_mov_b32(M0, 133120)) + k.emit(v_mov_b32_e32(v[180], v[0])) + # XCCG=256 + # labels are named based on function: + # PGR = Prefetch Global Read (the global→LDS pipeline stage) + # SK = Stream-K (work partitioning by K-iterations, not tiles) + # WGM = WorkGroup Mapping (tile assignment scheme for cache locality) + # GLVW = Global Load Vector Width (edge tile width handling) + # BM0 = Block M offset 0 (register block position) + # OrdNLL = Ordered No-Load-Loop (final iteration without prefetch loads) + k.emit(s_mov_b32(s[75], 256)) + k.emit(v_cvt_f32_u32_e32(v[18], s[75])) + k.emit(v_rcp_iflag_f32_e32(v[18], v[18])) + k.emit(v_cvt_f32_u32_e32(v[19], s[2])) + k.emit(v_mul_f32_e32(v[18], v[18], v[19])) + k.emit(v_cvt_u32_f32_e32(v[18], v[18])) + k.emit(v_mul_u32_u24_e64(v[19], v[18], s[75])) + k.emit(v_sub_u32_e32(v[19], s[2], v[19])) + k.emit(v_cmpx_eq_u32_e64(EXEC, v[19], s[75])) + k.emit(v_add_u32_e32(v[18], 1, v[18])) + k.emit(v_mov_b32_e32(v[19], 0)) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_cmpx_gt_u32_e64(EXEC, v[19], s[75])) + k.emit(v_sub_u32_e64(v[18], v[18], 1)) + k.emit(v_mul_u32_u24_e64(v[19], v[18], s[75])) + k.emit(v_sub_u32_e32(v[19], s[2], v[19])) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_readfirstlane_b32_e32(v[71], v[18])) + k.emit(v_readfirstlane_b32_e32(v[72], v[19])) + k.emit(s_mul_i32(s[71], s[71], s[75])) + k.emit(s_lshr_b32(s[72], s[72], 1)) + k.emit(s_add_u32(s[71], s[71], s[72])) + k.emit(v_cvt_f32_u32_e32(v[18], s[75])) + k.emit(v_rcp_iflag_f32_e32(v[18], v[18])) + k.emit(v_cvt_f32_u32_e32(v[19], s[69])) + k.emit(v_mul_f32_e32(v[18], v[18], v[19])) + k.emit(v_cvt_u32_f32_e32(v[18], v[18])) + k.emit(v_mul_u32_u24_e64(v[19], v[18], s[75])) + k.emit(v_sub_u32_e32(v[19], s[69], v[19])) + k.emit(v_cmpx_eq_u32_e64(EXEC, v[19], s[75])) + k.emit(v_add_u32_e32(v[18], 1, v[18])) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_cmpx_gt_u32_e64(EXEC, v[19], s[75])) + k.emit(v_sub_u32_e64(v[18], v[18], 1)) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_readfirstlane_b32_e32(v[72], v[18])) + k.emit(s_mul_i32(s[72], s[72], s[75])) + k.emit(s_sub_u32(s[73], s[69], s[72])) + k.emit(s_cmp_gt_u32(s[2], s[72])) + k.emit(s_cselect_b32(s[72], s[73], s[75])) + k.emit(s_lshr_b32(s[72], s[72], 1)) + k.emit(s_bfm_b32(s[73], 1, 0)) + k.emit(s_and_b32(s[73], s[2], s[73])) + k.emit(s_mul_i32(s[72], s[72], s[73])) + k.emit(s_add_u32(s[2], s[71], s[72])) + k.label('skip_WGMXCC') + k.emit(v_mov_b32_e32(v[20], 256)) + k.emit(v_mov_b32_e32(v[19], s[20])) + k.emit(v_cvt_f32_u32_e32(v[18], v[20])) + k.emit(v_rcp_iflag_f32_e32(v[18], v[18])) + k.emit(v_cvt_f32_u32_e32(v[21], v[19])) + k.emit(v_mul_f32_e32(v[18], v[18], v[21])) + k.emit(v_cvt_u32_f32_e32(v[18], v[18])) + k.emit(v_mul_u32_u24_e32(v[21], v[18], v[20])) + k.emit(v_sub_u32_e32(v[21], v[19], v[21])) + k.emit(v_cmp_ne_u32_e64(VCC, v[21], 0)) + k.emit(v_addc_co_u32(v[18], VCC, v[18], 0, VCC)) + k.emit(v_mov_b32_e32(v[20], 256)) + k.emit(v_mov_b32_e32(v[19], s[21])) + k.emit(v_readfirstlane_b32_e32(v[10], v[18])) + k.emit(v_cvt_f32_u32_e32(v[18], v[20])) + k.emit(v_rcp_iflag_f32_e32(v[18], v[18])) + k.emit(v_cvt_f32_u32_e32(v[21], v[19])) + k.emit(v_mul_f32_e32(v[18], v[18], v[21])) + k.emit(v_cvt_u32_f32_e32(v[18], v[18])) + k.emit(v_mul_u32_u24_e32(v[21], v[18], v[20])) + k.emit(v_sub_u32_e32(v[21], v[19], v[21])) + k.emit(v_cmp_ne_u32_e64(VCC, v[21], 0)) + k.emit(v_addc_co_u32(v[18], VCC, v[18], 0, VCC)) + k.emit(s_nop()) + k.emit(v_readfirstlane_b32_e32(v[11], v[18])) + k.waitcnt(lgkm=0) + k.emit(s_mov_b32(s[85], 84148480)) + k.emit(s_mov_b32(s[86], 117834498)) + k.emit(s_sub_u32(s[28], s[28], 16)) + k.emit(s_subb_u32(s[29], s[29], 0)) + k.emit(s_sub_u32(s[30], s[30], 16)) + k.emit(s_subb_u32(s[31], s[31], 0)) + k.label('AlphaNonZero') + k.emit(s_mov_b32(s[57], s[2])) + k.emit(s_mul_i32(s[58], s[57], s[46])) + k.emit(s_mov_b32(s[59], s[49])) + k.emit(s_mul_i32(s[87], s[52], s[46])) + k.emit(s_cmp_lt_u32(s[87], s[49])) + k.emit(s_cbranch_scc1(), target='SK_InitDone') + k.emit(s_mul_i32(s[87], s[52], s[46])) + k.emit(s_mul_i32(s[88], s[46], s[51])) + k.emit(s_sub_u32(s[87], s[87], s[88])) + k.emit(s_mul_i32(s[58], s[57], s[46])) + k.emit(s_add_u32(s[58], s[58], s[87])) + k.emit(s_add_u32(s[59], s[58], s[46])) + k.emit(s_add_u32(s[89], s[46], 1)) + k.emit(s_mul_i32(s[88], s[57], s[89])) + k.emit(s_add_u32(s[89], s[88], s[89])) + k.emit(s_cmp_lt_u32(s[57], s[87])) + k.emit(s_cselect_b32(s[58], s[88], s[58])) + k.emit(s_cselect_b32(s[59], s[89], s[59])) + k.emit(s_mul_i32(s[87], s[52], s[46])) + k.emit(s_min_u32(s[59], s[59], s[87])) + k.label('SK_InitDone') + k.emit(s_cmp_ge_u32(s[58], s[49])) + k.emit(s_cbranch_scc1(), target='KernelEnd') + k.label('PersistentLoopStart') + k.emit(v_xor_b32_e32(v[18], v[178], v[16])) + k.emit(v_min_i32_e32(v[16], v[16], v[18])) + k.emit(v_xor_b32_e32(v[18], v[179], v[17])) + k.emit(v_min_i32_e32(v[17], v[17], v[18])) + k.emit(s_mul_hi_u32(s[89], s[58], s[47])) + k.emit(s_lshr_b32(s[90], s[48], 31)) + k.emit(s_mul_i32(s[88], s[58], s[90])) + k.emit(s_add_u32(s[88], s[88], s[89])) + k.emit(s_and_b32(s[90], s[48], 2147483647)) + k.emit(s_lshr_b32(s[88], s[88], s[90])) + k.emit(s_mul_i32(s[89], s[88], s[46])) + k.emit(s_add_u32(s[90], s[89], s[46])) + k.emit(s_sub_u32(s[60], s[58], s[89])) + k.emit(s_min_u32(s[61], s[59], s[90])) + k.emit(s_sub_u32(s[61], s[61], s[89])) + k.emit(s_mul_i32(s[91], s[52], s[46])) + k.emit(s_sub_u32(s[91], s[49], s[91])) + k.emit(s_mul_i32(s[89], s[51], s[46])) + k.emit(s_add_u32(s[89], s[89], s[58])) + k.emit(s_cmp_lt_u32(s[89], s[91])) + k.emit(s_cbranch_scc1(), target='NoBranch_8G3ZEUE1ZDJOP9IU') + k.emit(s_mov_b32(s[89], s[90])) + k.emit(s_cmp_le_u32(s[91], s[58])) + k.emit(s_cbranch_scc1(), target='NoBranch_8G3ZEUE1ZDJOP9IU') + k.emit(s_mul_i32(s[87], s[52], s[46])) + k.emit(s_mul_i32(s[92], s[46], s[51])) + k.emit(s_sub_u32(s[87], s[87], s[92])) + k.emit(s_mul_i32(s[58], s[57], s[46])) + k.emit(s_add_u32(s[58], s[58], s[87])) + k.emit(s_add_u32(s[59], s[58], s[46])) + k.emit(s_add_u32(s[93], s[46], 1)) + k.emit(s_mul_i32(s[92], s[57], s[93])) + k.emit(s_add_u32(s[93], s[92], s[93])) + k.emit(s_cmp_lt_u32(s[57], s[87])) + k.emit(s_cselect_b32(s[58], s[92], s[58])) + k.emit(s_cselect_b32(s[59], s[93], s[59])) + k.emit(s_add_u32(s[89], s[58], s[91])) + k.emit(s_add_u32(s[59], s[59], s[91])) + k.emit(s_min_u32(s[59], s[59], s[49])) + k.emit(s_cmp_ge_u32(s[58], s[49])) + k.emit(s_cbranch_scc1(), target='KernelEnd') + k.label('NoBranch_8G3ZEUE1ZDJOP9IU') + k.emit(s_mov_b32(s[58], s[89])) + k.emit(s_mul_i32(s[89], s[10], s[11])) + k.emit(v_cvt_f32_u32_e32(v[18], s[89])) + k.emit(v_rcp_iflag_f32_e32(v[18], v[18])) + k.emit(v_cvt_f32_u32_e32(v[19], s[88])) + k.emit(v_mul_f32_e32(v[18], v[18], v[19])) + k.emit(v_cvt_u32_f32_e32(v[18], v[18])) + k.emit(v_mul_u32_u24_e64(v[19], v[18], s[89])) + k.emit(v_sub_u32_e32(v[19], s[88], v[19])) + k.emit(v_cmpx_eq_u32_e64(EXEC, v[19], s[89])) + k.emit(v_add_u32_e32(v[18], 1, v[18])) + k.emit(v_mov_b32_e32(v[19], 0)) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_cmpx_gt_u32_e64(EXEC, v[19], s[89])) + k.emit(v_sub_u32_e64(v[18], v[18], 1)) + k.emit(v_mul_u32_u24_e64(v[19], v[18], s[89])) + k.emit(v_sub_u32_e32(v[19], s[88], v[19])) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_readfirstlane_b32_e32(v[4], v[18])) + k.emit(v_readfirstlane_b32_e32(v[90], v[19])) + k.emit(v_cvt_f32_u32_e32(v[18], s[10])) + k.emit(v_rcp_iflag_f32_e32(v[18], v[18])) + k.emit(v_cvt_f32_u32_e32(v[19], s[90])) + k.emit(v_mul_f32_e32(v[18], v[18], v[19])) + k.emit(v_cvt_u32_f32_e32(v[18], v[18])) + k.emit(v_mul_u32_u24_e64(v[19], v[18], s[10])) + k.emit(v_sub_u32_e32(v[19], s[90], v[19])) + k.emit(v_cmpx_eq_u32_e64(EXEC, v[19], s[10])) + k.emit(v_add_u32_e32(v[18], 1, v[18])) + k.emit(v_mov_b32_e32(v[19], 0)) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_cmpx_gt_u32_e64(EXEC, v[19], s[10])) + k.emit(v_sub_u32_e64(v[18], v[18], 1)) + k.emit(v_mul_u32_u24_e64(v[19], v[18], s[10])) + k.emit(v_sub_u32_e32(v[19], s[90], v[19])) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_readfirstlane_b32_e32(v[3], v[18])) + k.emit(v_readfirstlane_b32_e32(v[2], v[19])) + k.label('SKAlphaCheck') + k.emit(s_mov_b32(s[91], 16)) + k.emit(v_cvt_f32_u32_e32(v[18], s[91])) + k.emit(v_rcp_iflag_f32_e32(v[18], v[18])) + k.emit(v_cvt_f32_u32_e32(v[19], s[3])) + k.emit(v_mul_f32_e32(v[18], v[18], v[19])) + k.emit(v_cvt_u32_f32_e32(v[18], v[18])) + k.emit(v_mul_u32_u24_e64(v[19], v[18], s[91])) + k.emit(v_sub_u32_e32(v[19], s[3], v[19])) + k.emit(v_cmpx_eq_u32_e64(EXEC, v[19], s[91])) + k.emit(v_add_u32_e32(v[18], 1, v[18])) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_cmpx_gt_u32_e64(EXEC, v[19], s[91])) + k.emit(v_sub_u32_e64(v[18], v[18], 1)) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_readfirstlane_b32_e32(v[87], v[18])) + k.emit(s_mul_i32(s[90], s[87], s[91])) + k.emit(s_sub_u32(s[90], s[3], s[90])) + k.emit(s_mul_i32(s[90], s[90], s[10])) + k.emit(s_add_u32(s[90], s[90], s[2])) + k.emit(v_cvt_f32_u32_e32(v[18], s[91])) + k.emit(v_rcp_iflag_f32_e32(v[18], v[18])) + k.emit(v_cvt_f32_u32_e32(v[19], s[11])) + k.emit(v_mul_f32_e32(v[18], v[18], v[19])) + k.emit(v_cvt_u32_f32_e32(v[18], v[18])) + k.emit(v_mul_u32_u24_e64(v[19], v[18], s[91])) + k.emit(v_sub_u32_e32(v[19], s[11], v[19])) + k.emit(v_cmpx_eq_u32_e64(EXEC, v[19], s[91])) + k.emit(v_add_u32_e32(v[18], 1, v[18])) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_cmpx_gt_u32_e64(EXEC, v[19], s[91])) + k.emit(v_sub_u32_e64(v[18], v[18], 1)) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_readfirstlane_b32_e32(v[88], v[18])) + k.emit(s_mul_i32(s[89], s[91], s[88])) + k.emit(s_sub_u32(s[89], s[11], s[89])) + k.emit(s_cmp_eq_u32(s[89], 0)) + k.emit(s_cmov_b32(s[89], s[91])) + k.emit(s_cmp_ge_u32(s[87], s[88])) + k.emit(s_cselect_b32(s[88], s[89], s[91])) + k.emit(v_cvt_f32_u32_e32(v[18], s[88])) + k.emit(v_rcp_iflag_f32_e32(v[18], v[18])) + k.emit(v_cvt_f32_u32_e32(v[19], s[90])) + k.emit(v_mul_f32_e32(v[18], v[18], v[19])) + k.emit(v_cvt_u32_f32_e32(v[18], v[18])) + k.emit(v_mul_u32_u24_e64(v[19], v[18], s[88])) + k.emit(v_sub_u32_e32(v[19], s[90], v[19])) + k.emit(v_cmpx_eq_u32_e64(EXEC, v[19], s[88])) + k.emit(v_add_u32_e32(v[18], 1, v[18])) + k.emit(v_mov_b32_e32(v[19], 0)) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_cmpx_gt_u32_e64(EXEC, v[19], s[88])) + k.emit(v_sub_u32_e64(v[18], v[18], 1)) + k.emit(v_mul_u32_u24_e64(v[19], v[18], s[88])) + k.emit(v_sub_u32_e32(v[19], s[90], v[19])) + k.emit(s_mov_b64(EXEC, -1)) + k.emit(v_readfirstlane_b32_e32(v[2], v[18])) + k.emit(v_readfirstlane_b32_e32(v[3], v[19])) + k.emit(s_mul_i32(s[3], s[2], s[88])) + k.emit(s_sub_u32(s[3], s[90], s[3])) + k.emit(s_mul_i32(s[87], s[87], s[91])) + k.emit(s_add_u32(s[3], s[3], s[87])) + k.label('WGM') + k.emit(v_and_b32_e32(v[19], 63, v[180])) + k.emit(v_and_b32_e32(v[18], 15, v[19])) + k.emit(v_lshlrev_b32_e32(v[18], 3, v[18])) + k.emit(v_lshrrev_b32_e32(v[19], 4, v[19])) + k.emit(v_lshl_add_u32_e64(v[18], v[19], 11, v[18])) + k.emit(v_lshrrev_b32_e32(v[22], 6, v[180])) + k.emit(v_and_b32_e32(v[22], 1, v[22])) + k.emit(v_lshl_add_u32_e64(v[18], v[22], 7, v[18])) + k.emit(v_and_b32_e32(v[20], 63, v[180])) + k.emit(v_and_b32_e32(v[19], 15, v[20])) + k.emit(v_lshlrev_b32_e32(v[19], 6, v[19])) + k.emit(v_lshlrev_b32_e32(v[19], 3, v[19])) + k.emit(v_lshrrev_b32_e32(v[20], 4, v[20])) + k.emit(v_lshl_add_u32_e64(v[19], v[20], 3, v[19])) + k.emit(v_lshrrev_b32_e32(v[21], 7, v[180])) + k.emit(v_and_b32_e32(v[21], 1, v[21])) + k.emit(v_lshl_add_u32_e64(v[19], v[21], 13, v[19])) + k.emit(v_lshrrev_b32_e32(v[20], 6, v[180])) + k.emit(v_lshrrev_b32_e32(v[20], 2, v[20])) + k.emit(s_mov_b32(s[87], 16384)) + k.emit(v_mul_lo_u32(v[20], s[87], v[20])) + k.emit(v_add_lshl_u32_e64(v[16], v[20], v[18], 1)) + k.emit(v_lshrrev_b32_e32(v[18], 6, v[180])) + k.emit(v_lshrrev_b32_e32(v[18], 2, v[18])) + k.emit(s_mov_b32(s[87], 64)) + k.emit(v_mul_lo_u32(v[18], s[87], v[18])) + k.emit(v_add_lshl_u32_e64(v[17], v[18], v[19], 1)) + k.emit(v_lshrrev_b32_e32(v[20], 10, v[17])) + k.emit(v_lshl_add_u32_e64(v[17], v[20], 5, v[17])) + k.emit(v_add_co_u32_e32(v[17], 32768, v[17])) + k.emit(v_add_u32_e32(v[178], 66560, v[16])) + k.emit(v_xor_b32_e32(v[178], v[178], v[16])) + k.emit(v_add_u32_e32(v[179], 66560, v[17])) + k.emit(v_xor_b32_e32(v[179], v[179], v[17])) + k.emit(v_lshrrev_b32_e32(v[19], 5, v[180])) + k.emit(v_and_b32_e32(v[18], 31, v[180])) + k.emit(v_lshlrev_b32_e32(v[18], 3, v[18])) + k.emit(v_mov_b32_e32(v[22], v[19])) + k.emit(v_lshrrev_b32_e32(v[20], 3, v[180])) + k.emit(v_and_b32_e32(v[21], 7, v[180])) + k.emit(v_lshlrev_b32_e32(v[21], 3, v[21])) + k.emit(v_mov_b32_e32(v[23], v[21])) + k.emit(v_mul_u32_u24_e32(v[24], 256, v[22])) + k.emit(v_add_lshl_u32_e64(v[24], v[18], v[24], 1)) + k.emit(s_nop()) + k.emit(v_readfirstlane_b32_e32(v[53], v[24])) + k.emit(s_nop()) + k.emit(s_add_u32(s[55], s[53], 66560)) + k.emit(s_xor_b32(s[55], s[55], s[53])) + k.emit(v_mul_u32_u24_e32(v[24], 64, v[20])) + k.emit(v_add_lshl_u32_e64(v[24], v[23], v[24], 1)) + k.emit(v_lshrrev_b32_e32(v[26], 10, v[24])) + k.emit(v_lshl_add_u32_e64(v[24], v[26], 5, v[24])) + k.emit(v_add_co_u32_e32(v[24], 32768, v[24])) + k.emit(s_nop()) + k.emit(v_readfirstlane_b32_e32(v[54], v[24])) + k.emit(s_nop()) + k.emit(s_add_u32(s[56], s[54], 66560)) + k.emit(s_xor_b32(s[56], s[56], s[54])) + k.emit(v_mov_b32_e32(v[24], v[18])) + k.emit(v_mov_b32_e32(v[25], v[20])) + k.emit(v_add_co_u32_e32(v[26], 32, v[25])) + k.emit(v_add_co_u32_e32(v[27], 32, v[26])) + k.emit(v_add_co_u32_e32(v[28], 32, v[27])) + k.emit(v_add_co_u32_e32(v[29], 32, v[28])) + k.emit(v_add_co_u32_e32(v[30], 32, v[29])) + k.emit(v_add_co_u32_e32(v[31], 32, v[30])) + k.emit(v_add_co_u32_e32(v[32], 32, v[31])) + k.emit(v_mov_b32_e32(v[33], v[19])) + k.emit(v_add_co_u32_e32(v[34], 8, v[33])) + k.emit(v_add_co_u32_e32(v[35], 8, v[34])) + k.emit(v_add_co_u32_e32(v[36], 8, v[35])) + k.emit(v_add_co_u32_e32(v[37], 8, v[36])) + k.emit(v_add_co_u32_e32(v[38], 8, v[37])) + k.emit(v_add_co_u32_e32(v[39], 8, v[38])) + k.emit(v_add_co_u32_e32(v[40], 8, v[39])) + k.emit(v_mov_b32_e32(v[41], v[21])) + k.emit(s_mul_i32(s[87], s[2], 256)) + k.emit(s_sub_u32(s[87], s[20], s[87])) + k.emit(s_sub_u32(s[87], s[87], 8)) + k.emit(v_mov_b32_e32(v[42], s[87])) + k.emit(v_min_i32_e32(v[24], v[42], v[24])) + k.emit(v_mul_lo_u32(v[42], s[40], v[33])) + k.emit(v_add_co_u32_e32(v[0], v[24], v[42])) + k.emit(v_add_u32_e32(v[0], 8)) + k.emit(v_lshlrev_b32_e32(v[0], 1)) + k.emit(v_mul_lo_u32(v[42], s[40], v[34])) + k.emit(v_add_co_u32_e32(v[1], v[24], v[42])) + k.emit(v_add_u32_e32(v[1], 8, v[1])) + k.emit(v_lshlrev_b32_e32(v[1], 1, v[1])) + k.emit(v_mul_lo_u32(v[42], s[40], v[35])) + k.emit(v_add_co_u32_e32(v[2], v[24], v[42])) + k.emit(v_add_u32_e32(v[2], 8, v[2])) + k.emit(v_lshlrev_b32_e32(v[2], 1, v[2])) + k.emit(v_mul_lo_u32(v[42], s[40], v[36])) + k.emit(v_add_co_u32_e32(v[3], v[24], v[42])) + k.emit(v_add_u32_e32(v[3], 8, v[3])) + k.emit(v_lshlrev_b32_e32(v[3], 1, v[3])) + k.emit(v_mul_lo_u32(v[42], s[40], v[37])) + k.emit(v_add_co_u32_e32(v[4], v[24], v[42])) + k.emit(v_add_u32_e32(v[4], 8, v[4])) + k.emit(v_lshlrev_b32_e32(v[4], 1, v[4])) + k.emit(v_mul_lo_u32(v[42], s[40], v[38])) + k.emit(v_add_co_u32_e32(v[5], v[24], v[42])) + k.emit(v_add_u32_e32(v[5], 8, v[5])) + k.emit(v_lshlrev_b32_e32(v[5], 1, v[5])) + k.emit(v_mul_lo_u32(v[42], s[40], v[39])) + k.emit(v_add_co_u32_e32(v[6], v[24], v[42])) + k.emit(v_add_u32_e32(v[6], 8, v[6])) + k.emit(v_lshlrev_b32_e32(v[6], 1, v[6])) + k.emit(v_mul_lo_u32(v[42], s[40], v[40])) + k.emit(v_add_co_u32_e32(v[7], v[24], v[42])) + k.emit(v_add_u32_e32(v[7], 8, v[7])) + k.emit(v_lshlrev_b32_e32(v[7], 1, v[7])) + k.emit(v_mul_lo_u32(v[33], s[42], v[25])) + k.emit(v_add_co_u32_e32(v[8], v[41], v[33])) + k.emit(v_add_u32_e32(v[8], 8, v[8])) + k.emit(v_lshlrev_b32_e32(v[8], 1, v[8])) + k.emit(v_mul_lo_u32(v[33], s[42], v[26])) + k.emit(v_add_co_u32_e32(v[9], v[41], v[33])) + k.emit(v_add_u32_e32(v[9], 8, v[9])) + k.emit(v_lshlrev_b32_e32(v[9], 1, v[9])) + k.emit(v_mul_lo_u32(v[33], s[42], v[27])) + k.emit(v_add_co_u32_e32(v[10], v[41], v[33])) + k.emit(v_add_u32_e32(v[10], 8, v[10])) + k.emit(v_lshlrev_b32_e32(v[10], 1, v[10])) + k.emit(v_mul_lo_u32(v[33], s[42], v[28])) + k.emit(v_add_co_u32_e32(v[11], v[41], v[33])) + k.emit(v_add_u32_e32(v[11], 8, v[11])) + k.emit(v_lshlrev_b32_e32(v[11], 1, v[11])) + k.emit(v_mul_lo_u32(v[33], s[42], v[29])) + k.emit(v_add_co_u32_e32(v[12], v[41], v[33])) + k.emit(v_add_u32_e32(v[12], 8, v[12])) + k.emit(v_lshlrev_b32_e32(v[12], 1, v[12])) + k.emit(v_mul_lo_u32(v[33], s[42], v[30])) + k.emit(v_add_co_u32_e32(v[13], v[41], v[33])) + k.emit(v_add_u32_e32(v[13], 8, v[13])) + k.emit(v_lshlrev_b32_e32(v[13], 1, v[13])) + k.emit(v_mul_lo_u32(v[33], s[42], v[31])) + k.emit(v_add_co_u32_e32(v[14], v[41], v[33])) + k.emit(v_add_u32_e32(v[14], 8, v[14])) + k.emit(v_lshlrev_b32_e32(v[14], 1, v[14])) + k.emit(v_mul_lo_u32(v[33], s[42], v[32])) + k.emit(v_add_co_u32_e32(v[15], v[41], v[33])) + k.emit(v_add_u32_e32(v[15], 8, v[15])) + k.emit(v_lshlrev_b32_e32(v[15], 1, v[15])) + k.emit(s_mul_hi_u32(s[91], s[2], 256)) + k.emit(s_mul_i32(s[90], s[2], 256)) + k.emit(s_mul_i32(s[88], s[60], 64)) + k.emit(s_mul_hi_u32(s[89], s[88], s[40])) + k.emit(s_mul_i32(s[88], s[88], s[40])) + k.emit(s_add_u32(s[90], s[90], s[88])) + k.emit(s_addc_u32(s[91], s[91], s[89])) + k.emit(s_mov_b64(s[62:63], 1)) + k.emit(s_sub_u32(s[88], s[20], 1)) + k.emit(s_mul_hi_u32(s[89], 1, s[88])) + k.emit(s_mul_i32(s[88], 1, s[88])) + k.emit(s_add_u32(s[62], s[62], s[88])) + k.emit(s_addc_u32(s[63], s[63], s[89])) + k.emit(s_sub_u32(s[88], s[23], 1)) + k.emit(s_mul_hi_u32(s[89], s[40], s[88])) + k.emit(s_mul_i32(s[88], s[40], s[88])) + k.emit(s_add_u32(s[62], s[62], s[88])) + k.emit(s_addc_u32(s[63], s[63], s[89])) + k.emit(s_sub_u32(s[62], s[62], s[90])) + k.emit(s_subb_u32(s[63], s[63], s[91])) + k.emit(s_lshl_b64(s[62:63], s[62:63], 1)) + k.emit(s_add_u32(s[62], s[62], 16)) + k.emit(s_addc_u32(s[63], s[63], 0)) + k.emit(s_cmp_eq_u32(s[63], 0)) + k.emit(s_cselect_b32(s[70], s[62], -1)) + k.emit(s_mul_hi_u32(s[89], s[41], s[4])) + k.emit(s_mul_i32(s[88], s[41], s[4])) + k.emit(s_add_u32(s[90], s[90], s[88])) + k.emit(s_addc_u32(s[91], s[91], s[89])) + k.emit(s_lshl_b64(s[90:91], s[90:91], 1)) + k.emit(s_add_u32(s[68], s[28], s[90])) + k.emit(s_addc_u32(s[69], s[29], s[91])) + k.emit(s_mov_b32(s[71], 131072)) + k.emit(s_mul_hi_u32(s[91], s[3], 256)) + k.emit(s_mul_i32(s[90], s[3], 256)) + k.emit(s_mul_hi_u32(s[91], s[90], s[42])) + k.emit(s_mul_i32(s[90], s[90], s[42])) + k.emit(s_mul_i32(s[88], s[60], 64)) + k.emit(s_mul_hi_u32(s[89], s[88], 1)) + k.emit(s_mul_i32(s[88], s[88], 1)) + k.emit(s_add_u32(s[90], s[90], s[88])) + k.emit(s_addc_u32(s[91], s[91], s[89])) + k.emit(s_mov_b64(s[76:77], 1)) + k.emit(s_sub_u32(s[88], s[23], 1)) + k.emit(s_mul_hi_u32(s[89], 1, s[88])) + k.emit(s_mul_i32(s[88], 1, s[88])) + k.emit(s_add_u32(s[76], s[76], s[88])) + k.emit(s_addc_u32(s[77], s[77], s[89])) + k.emit(s_sub_u32(s[88], s[21], 1)) + k.emit(s_mul_hi_u32(s[89], s[42], s[88])) + k.emit(s_mul_i32(s[88], s[42], s[88])) + k.emit(s_add_u32(s[76], s[76], s[88])) + k.emit(s_addc_u32(s[77], s[77], s[89])) + k.emit(s_sub_u32(s[76], s[76], s[90])) + k.emit(s_subb_u32(s[77], s[77], s[91])) + k.emit(s_lshl_b64(s[76:77], s[76:77], 1)) + k.emit(s_add_u32(s[76], s[76], 16)) + k.emit(s_addc_u32(s[77], s[77], 0)) + k.emit(s_cmp_eq_u32(s[77], 0)) + k.emit(s_cselect_b32(s[74], s[76], -1)) + k.emit(s_mul_hi_u32(s[89], s[43], s[4])) + k.emit(s_mul_i32(s[88], s[43], s[4])) + k.emit(s_add_u32(s[90], s[90], s[88])) + k.emit(s_addc_u32(s[91], s[91], s[89])) + k.emit(s_lshl_b64(s[90:91], s[90:91], 1)) + k.emit(s_add_u32(s[72], s[30], s[90])) + k.emit(s_addc_u32(s[73], s[31], s[91])) + k.emit(s_mov_b32(s[75], 131072)) + k.emit(s_mul_i32(s[83], 128, s[40])) + k.emit(s_mov_b32(s[84], 128)) + k.emit(s_sub_u32(s[8], s[61], s[60])) + k.label('SKAlphaCheck2') + k.emit(s_and_b32(s[89], 63, s[23])) + k.emit(s_cmp_eq_u32(s[89], 0)) + k.emit(s_cselect_b32(s[88], 0, 1)) + k.emit(s_cmp_eq_u32(s[61], s[46])) + k.emit(s_cselect_b32(s[88], s[88], 0)) + k.emit(s_sub_u32(s[8], s[8], s[88])) + k.emit(s_mov_b32(s[9], s[8])) + k.emit(s_and_b32(s[90], s[6], 7936)) + k.emit(s_lshr_b32(s[90], s[90], 8)) + k.emit(s_and_b32(s[91], s[6], 57344)) + k.emit(s_and_b32(s[6], s[6], 255)) + k.emit(s_mov_b32(s[88], s[6])) + k.label('beginStaggerUIter') + k.emit(s_lshl_b32(s[89], s[88], s[90])) + k.emit(s_cmp_ge_u32(s[9], s[89])) + k.emit(s_cbranch_scc1(), target='endStaggerUIter') + k.emit(s_lshr_b32(s[88], s[88], 1)) + k.emit(s_branch(), target='beginStaggerUIter') + k.label('endStaggerUIter') + k.emit(s_sub_u32(s[89], s[88], 1)) + k.emit(s_cmp_ge_u32(s[88], 1)) + k.emit(s_cselect_b32(s[78], s[89], 0)) + k.emit(s_cmp_eq_u32(s[91], 0)) + k.emit(s_cbranch_scc1(), target='StaggerUMapping_1') + k.emit(s_mov_b32(s[88], s[2])) + k.emit(s_branch(), target='staggerInputEnd') + k.label('StaggerUMapping_1') + k.emit(s_cmp_eq_u32(s[91], 8192)) + k.emit(s_cbranch_scc1(), target='StaggerUMapping_2') + k.emit(s_mov_b32(s[88], s[3])) + k.emit(s_branch(), target='staggerInputEnd') + k.label('StaggerUMapping_2') + k.emit(s_cmp_eq_u32(s[91], 16384)) + k.emit(s_cbranch_scc1(), target='StaggerUMapping_3') + k.emit(s_mov_b32(s[88], -1)) + k.emit(s_branch(), target='staggerInputEnd') + k.label('StaggerUMapping_3') + k.emit(s_cmp_eq_u32(s[91], 24576)) + k.emit(s_cbranch_scc1(), target='StaggerUMapping_4') + k.emit(s_mul_i32(s[89], s[10], s[3])) + k.emit(s_add_u32(s[88], s[88], s[89])) + k.emit(s_add_u32(s[88], s[88], s[2])) + k.emit(s_branch(), target='staggerInputEnd') + k.label('StaggerUMapping_4') + k.emit(s_cmp_eq_u32(s[91], 32768)) + k.emit(s_cbranch_scc1(), target='staggerInputEnd') + k.emit(s_mov_b32(s[88], -1)) + k.emit(s_branch(), target='staggerInputEnd') + k.label('staggerInputEnd') + k.emit(s_and_b32(s[78], s[78], s[88])) + k.emit(s_lshl_b32(s[78], s[78], s[90])) + k.emit(s_cmp_gt_u32(s[60], 0)) + k.emit(s_cmov_b32(s[78], 0)) + k.emit(s_cmp_lt_u32(s[61], s[46])) + k.emit(s_cmov_b32(s[78], 0)) + k.emit(s_mul_hi_i32(s[89], s[78], s[83])) + k.emit(s_mul_i32(s[88], s[78], s[83])) + k.emit(s_mul_hi_i32(s[80], s[8], s[83])) + k.emit(s_mul_i32(s[79], s[8], s[83])) + k.emit(s_sub_u32(s[79], s[83], s[79])) + k.emit(s_subb_u32(s[80], 0, s[80])) + k.emit(s_add_u32(s[68], s[68], s[88])) + k.emit(s_addc_u32(s[69], s[69], s[89])) + k.emit(s_sub_u32(s[62], s[62], s[88])) + k.emit(s_subb_u32(s[63], s[63], s[89])) + k.emit(s_cmp_eq_u32(s[63], 0)) + k.emit(s_cselect_b32(s[70], s[62], -1)) + k.emit(s_mul_hi_i32(s[89], s[78], s[84])) + k.emit(s_mul_i32(s[88], s[78], s[84])) + k.emit(s_mul_hi_i32(s[82], s[8], s[84])) + k.emit(s_mul_i32(s[81], s[8], s[84])) + k.emit(s_sub_u32(s[81], s[84], s[81])) + k.emit(s_subb_u32(s[82], 0, s[82])) + k.emit(s_add_u32(s[72], s[72], s[88])) + k.emit(s_addc_u32(s[73], s[73], s[89])) + k.emit(s_sub_u32(s[76], s[76], s[88])) + k.emit(s_subb_u32(s[77], s[77], s[89])) + k.emit(s_cmp_eq_u32(s[77], 0)) + k.emit(s_cselect_b32(s[74], s[76], -1)) + k.emit(s_add_u32(s[78], s[78], 2)) + k.emit(s_cmp_eq_u32(s[8], 0)) + k.emit(s_setprio()) + k.emit(s_cbranch_scc1(), target='ShadowInitStart') + k.emit(s_mov_b32(M0, s[53])) + k.waitcnt(lgkm=0) + k.emit(s_barrier()) + k.emit(buffer_load_dwordx4(v[0:3], v[0], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[1], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[2], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[3], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[4], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[5], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[6], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[7], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_mov_b32(M0, 133120)) + k.emit(s_mov_b32(M0, s[54])) + k.emit(buffer_load_dwordx4(v[0:3], v[8], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[9], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[10], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[11], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[12], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[13], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[14], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[15], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_mov_b32(M0, 133120)) + k.emit(s_add_u32(s[90], s[8], 1)) + k.emit(s_cmp_eq_u32(s[78], s[90])) + k.emit(s_cselect_b32(s[88], s[79], s[83])) + k.emit(s_cselect_b32(s[89], s[80], 0)) + k.emit(s_add_u32(s[68], s[68], s[88])) + k.emit(s_addc_u32(s[69], s[69], s[89])) + k.emit(s_sub_u32(s[62], s[62], s[88])) + k.emit(s_subb_u32(s[63], s[63], s[89])) + k.emit(s_cmp_eq_u32(s[63], 0)) + k.emit(s_cselect_b32(s[70], s[62], -1)) + k.emit(s_add_u32(s[90], s[8], 1)) + k.emit(s_cmp_eq_u32(s[78], s[90])) + k.emit(s_cselect_b32(s[88], s[81], s[84])) + k.emit(s_cselect_b32(s[89], s[82], 0)) + k.emit(s_add_u32(s[72], s[72], s[88])) + k.emit(s_addc_u32(s[73], s[73], s[89])) + k.emit(s_sub_u32(s[76], s[76], s[88])) + k.emit(s_subb_u32(s[77], s[77], s[89])) + k.emit(s_cmp_eq_u32(s[77], 0)) + k.emit(s_cselect_b32(s[74], s[76], -1)) + k.label('ShadowInitStart') + k.emit(s_mov_b64(s[12:13], s[24:25])) + k.emit(s_mov_b32(s[14], 2147483648)) + k.emit(s_mov_b32(s[15], 131072)) + k.emit(s_mov_b64(s[16:17], s[24:25])) + k.emit(s_mov_b32(s[18], 2147483648)) + k.emit(s_mov_b32(s[19], 131072)) + k.emit(s_mov_b32(s[87], 1)) + k.emit(s_mov_b32(s[88], 1)) + k.emit(s_mul_i32(s[92], 256, s[3])) + k.emit(s_mul_hi_u32(s[91], s[92], s[38])) + k.emit(s_mul_i32(s[90], s[92], s[38])) + k.emit(s_lshl_b64(s[90:91], s[90:91], s[87])) + k.emit(s_add_u32(s[16], s[26], s[90])) + k.emit(s_addc_u32(s[17], s[27], s[91])) + k.emit(s_mul_hi_u32(s[91], s[92], s[36])) + k.emit(s_mul_i32(s[90], s[92], s[36])) + k.emit(s_lshl_b64(s[90:91], s[90:91], s[88])) + k.emit(s_add_u32(s[12], s[24], s[90])) + k.emit(s_addc_u32(s[13], s[25], s[91])) + k.emit(s_mul_hi_u32(s[91], s[4], s[39])) + k.emit(s_mul_i32(s[90], s[4], s[39])) + k.emit(s_lshl_b64(s[90:91], s[90:91], s[87])) + k.emit(s_add_u32(s[16], s[16], s[90])) + k.emit(s_addc_u32(s[17], s[17], s[91])) + k.emit(s_mul_hi_u32(s[91], s[4], s[37])) + k.emit(s_mul_i32(s[90], s[4], s[37])) + k.emit(s_lshl_b64(s[90:91], s[90:91], s[88])) + k.emit(s_add_u32(s[12], s[12], s[90])) + k.emit(s_addc_u32(s[13], s[13], s[91])) + k.emit(v_mov_b64_e32(v[182:183], 0)) + k.emit(v_accvgpr_write(v[0], 0)) + k.emit(v_accvgpr_write(v[1], 0)) + k.emit(v_accvgpr_write(v[2], 0)) + k.emit(v_accvgpr_write(v[3], 0)) + k.emit(v_accvgpr_write(v[4], 0)) + k.emit(v_accvgpr_write(v[5], 0)) + k.emit(v_accvgpr_write(v[6], 0)) + k.emit(v_accvgpr_write(v[7], 0)) + k.emit(v_accvgpr_write(v[8], 0)) + k.emit(v_accvgpr_write(v[9], 0)) + k.emit(v_accvgpr_write(v[10], 0)) + k.emit(v_accvgpr_write(v[11], 0)) + k.emit(v_accvgpr_write(v[12], 0)) + k.emit(v_accvgpr_write(v[13], 0)) + k.emit(v_accvgpr_write(v[14], 0)) + k.emit(v_accvgpr_write(v[15], 0)) + k.emit(v_mfma_i32_32x32x16_i8(v[16:31], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[32:47], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[48:63], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[64:79], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[80:95], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[96:111], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[112:127], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[128:143], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[144:159], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[160:175], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[176:191], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[192:207], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[208:223], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[224:239], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_i32_32x32x16_i8(v[240:255], v[182:183], v[182:183], v[0:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[8], 0)) + k.emit(s_cbranch_scc1(), target='toPGR1end_OrdNLL') + k.waitcnt(vm=0) + k.emit(s_barrier()) + k.emit(s_xor_b32(s[53], s[55], s[53])) + k.emit(s_xor_b32(s[54], s[56], s[54])) + k.emit(s_cmp_eq_u32(s[8], 1)) + k.emit(s_cbranch_scc1(), target='skipPGR2') + k.emit(s_mov_b32(M0, s[53])) + k.waitcnt(lgkm=0) + k.emit(s_barrier()) + k.emit(buffer_load_dwordx4(v[0:3], v[0], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[1], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[2], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[3], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[4], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[5], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[6], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[7], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(s_mov_b32(M0, 133120)) + k.emit(s_mov_b32(M0, s[54])) + k.waitcnt(lgkm=0) + k.emit(s_barrier()) + k.emit(buffer_load_dwordx4(v[0:3], v[8], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[9], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[10], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[11], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[12], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[13], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[14], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[15], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(s_mov_b32(M0, 133120)) + k.emit(s_xor_b32(s[53], s[55], s[53])) + k.emit(s_xor_b32(s[54], s[56], s[54])) + k.label('skipPGR2') + k.emit(s_barrier()) + k.emit(ds_read_b128(v[82:85], v[16])) + k.emit(ds_read_b128(v[86:89], v[16], v[0], v[0], 0, 0, 2)) + k.emit(ds_read_b128(v[90:93], v[16], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[94:97], v[16], v[0], v[0], 0, 0, 6)) + k.emit(ds_read_b128(v[98:101], v[16], v[0], v[0], 0, 0, 8)) + k.emit(ds_read_b128(v[102:105], v[16], v[0], v[0], 0, 0, 10)) + k.emit(ds_read_b128(v[106:109], v[16], v[0], v[0], 0, 0, 12)) + k.emit(ds_read_b128(v[110:113], v[16], v[0], v[0], 0, 0, 14)) + k.emit(ds_read_b128(v[114:117], v[17])) + k.emit(ds_read_b128(v[118:121], v[17], v[0], v[0], 0, 128)) + k.emit(ds_read_b128(v[122:125], v[17], v[0], v[0], 0, 0, 1)) + k.emit(ds_read_b128(v[126:129], v[17], v[0], v[0], 0, 128, 1)) + k.emit(ds_read_b128(v[130:133], v[17], v[0], v[0], 0, 0, 2)) + k.emit(ds_read_b128(v[134:137], v[17], v[0], v[0], 0, 128, 2)) + k.emit(ds_read_b128(v[138:141], v[17], v[0], v[0], 0, 0, 3)) + k.emit(ds_read_b128(v[142:145], v[17], v[0], v[0], 0, 128, 3)) + k.waitcnt(lgkm=0) + k.emit(v_perm_b32_e64(v[18], v[86], v[82], s[85])) + k.emit(v_perm_b32_e64(v[19], v[94], v[90], s[85])) + k.emit(v_perm_b32_e64(v[20], v[102], v[98], s[85])) + k.emit(v_perm_b32_e64(v[21], v[110], v[106], s[85])) + k.emit(v_perm_b32_e64(v[22], v[86], v[82], s[86])) + k.emit(v_perm_b32_e64(v[23], v[94], v[90], s[86])) + k.emit(v_perm_b32_e64(v[24], v[102], v[98], s[86])) + k.emit(v_perm_b32_e64(v[25], v[110], v[106], s[86])) + k.emit(v_perm_b32_e64(v[26], v[87], v[83], s[85])) + k.emit(v_perm_b32_e64(v[27], v[95], v[91], s[85])) + k.emit(v_perm_b32_e64(v[28], v[103], v[99], s[85])) + k.emit(v_perm_b32_e64(v[29], v[111], v[107], s[85])) + k.emit(v_perm_b32_e64(v[30], v[87], v[83], s[86])) + k.emit(v_perm_b32_e64(v[31], v[95], v[91], s[86])) + k.emit(v_perm_b32_e64(v[32], v[103], v[99], s[86])) + k.emit(v_perm_b32_e64(v[33], v[111], v[107], s[86])) + k.emit(v_perm_b32_e64(v[34], v[88], v[84], s[85])) + k.emit(v_perm_b32_e64(v[35], v[96], v[92], s[85])) + k.emit(v_perm_b32_e64(v[36], v[104], v[100], s[85])) + k.emit(v_perm_b32_e64(v[37], v[112], v[108], s[85])) + k.emit(v_perm_b32_e64(v[38], v[88], v[84], s[86])) + k.emit(v_perm_b32_e64(v[39], v[96], v[92], s[86])) + k.emit(v_perm_b32_e64(v[40], v[104], v[100], s[86])) + k.emit(v_perm_b32_e64(v[41], v[112], v[108], s[86])) + k.emit(v_perm_b32_e64(v[42], v[89], v[85], s[85])) + k.emit(v_perm_b32_e64(v[43], v[97], v[93], s[85])) + k.emit(v_perm_b32_e64(v[44], v[105], v[101], s[85])) + k.emit(v_perm_b32_e64(v[45], v[113], v[109], s[85])) + k.emit(v_perm_b32_e64(v[46], v[89], v[85], s[86])) + k.emit(v_perm_b32_e64(v[47], v[97], v[93], s[86])) + k.emit(v_perm_b32_e64(v[48], v[105], v[101], s[86])) + k.emit(v_perm_b32_e64(v[49], v[113], v[109], s[86])) + k.label('openLoopL') + k.emit(s_cmp_eq_u32(s[8], 1)) + k.emit(s_cbranch_scc1(), target='toPGR1') + k.emit(s_cmp_le_u32(s[8], 2)) + k.emit(s_cbranch_scc1(), target='LoopEndL') + k.label('LoopBeginL') + k.emit(s_getreg_b32(s[87], 260)) + k.waitcnt(lgkm=0) + k.emit(s_cmp_eq_u32(s[87], 0)) + k.emit(s_cbranch_scc1(), target='LoopBeginL_0') + k.emit(s_cmp_eq_u32(s[87], 1)) + k.emit(s_cbranch_scc1(), target='LoopBeginL_1') + k.label('LoopBeginL_0') + k.emit(v_mfma_16x16x32(v[0:3], v[114:117], v[18:21], v[0:3], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[8], s[78])) + k.emit(ds_read_b128(v[82:85], v[16], v[0], v[0], 0, 0, 64)) + k.emit(ds_read_b128(v[86:89], v[16], v[0], v[0], 0, 0, 66)) + k.emit(v_mfma_16x16x32(v[4:7], v[114:117], v[22:25], v[4:7], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cselect_b32(s[88], s[79], s[83])) + k.emit(v_mfma_16x16x32(v[8:11], v[114:117], v[26:29], v[8:11], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cselect_b32(s[89], s[80], 0)) + k.emit(ds_read_b128(v[90:93], v[16], v[0], v[0], 0, 0, 68)) + k.emit(ds_read_b128(v[94:97], v[16], v[0], v[0], 0, 0, 70)) + k.emit(v_mfma_16x16x32(v[12:15], v[114:117], v[30:33], v[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(s[68], s[68], s[88])) + k.emit(v_mfma_16x16x32(v[16:19], v[114:117], v[34:37], v[16:19], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_addc_u32(s[69], s[69], s[89])) + k.emit(ds_read_b128(v[98:101], v[16], v[0], v[0], 0, 0, 72)) + k.emit(ds_read_b128(v[102:105], v[16], v[0], v[0], 0, 0, 74)) + k.emit(v_mfma_16x16x32(v[20:23], v[114:117], v[38:41], v[20:23], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_sub_u32(s[62], s[62], s[88])) + k.emit(v_mfma_16x16x32(v[24:27], v[114:117], v[42:45], v[24:27], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_subb_u32(s[63], s[63], s[89])) + k.emit(ds_read_b128(v[106:109], v[16], v[0], v[0], 0, 0, 76)) + k.emit(ds_read_b128(v[110:113], v[16], v[0], v[0], 0, 0, 78)) + k.emit(v_mfma_16x16x32(v[28:31], v[114:117], v[46:49], v[28:31], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[63], 0)) + k.emit(v_mfma_16x16x32(v[32:35], v[118:121], v[18:21], v[32:35], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=4) + k.emit(s_cselect_b32(s[70], s[62], -1)) + k.emit(v_perm_b32_e64(v[50], v[86], v[82], s[85])) + k.emit(v_perm_b32_e64(v[51], v[94], v[90], s[85])) + k.emit(v_mfma_16x16x32(v[36:39], v[118:121], v[22:25], v[36:39], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[146:149], v[17], v[0], v[0], 0, 64)) + k.emit(v_mfma_16x16x32(v[40:43], v[118:121], v[26:29], v[40:43], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[44:47], v[118:121], v[30:33], v[44:47], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[150:153], v[17], v[0], v[0], 0, 192)) + k.emit(v_mfma_16x16x32(v[48:51], v[118:121], v[34:37], v[48:51], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=1) + k.emit(v_mfma_16x16x32(v[52:55], v[118:121], v[38:41], v[52:55], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[56:59], v[118:121], v[42:45], v[56:59], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_mov_b32(M0, s[53])) + k.emit(buffer_load_dwordx4(v[0:3], v[0], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[60:63], v[118:121], v[46:49], v[60:63], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[154:157], v[17], v[0], v[0], 0, 64, 1)) + k.emit(v_mfma_16x16x32(v[64:67], v[122:125], v[18:21], v[64:67], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[52], v[102], v[98], s[85])) + k.emit(v_perm_b32_e64(v[53], v[110], v[106], s[85])) + k.emit(v_mfma_16x16x32(v[68:71], v[122:125], v[22:25], v[68:71], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[1], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[72:75], v[122:125], v[26:29], v[72:75], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[158:161], v[17], v[0], v[0], 0, 192, 1)) + k.emit(v_mfma_16x16x32(v[76:79], v[122:125], v[30:33], v[76:79], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[54], v[86], v[82], s[86])) + k.emit(v_perm_b32_e64(v[55], v[94], v[90], s[86])) + k.emit(v_mfma_16x16x32(v[80:83], v[122:125], v[34:37], v[80:83], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[2], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[84:87], v[122:125], v[38:41], v[84:87], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[162:165], v[17], v[0], v[0], 0, 64, 2)) + k.emit(v_mfma_16x16x32(v[88:91], v[122:125], v[42:45], v[88:91], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[56], v[102], v[98], s[86])) + k.emit(v_perm_b32_e64(v[57], v[110], v[106], s[86])) + k.emit(v_mfma_16x16x32(v[92:95], v[122:125], v[46:49], v[92:95], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[3], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[96:99], v[126:129], v[18:21], v[96:99], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[166:169], v[17], v[0], v[0], 0, 192, 2)) + k.emit(v_mfma_16x16x32(v[100:103], v[126:129], v[22:25], v[100:103], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[58], v[87], v[83], s[85])) + k.emit(v_perm_b32_e64(v[59], v[95], v[91], s[85])) + k.emit(v_mfma_16x16x32(v[104:107], v[126:129], v[26:29], v[104:107], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[4], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[108:111], v[126:129], v[30:33], v[108:111], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[170:173], v[17], v[0], v[0], 0, 64, 3)) + k.emit(v_mfma_16x16x32(v[112:115], v[126:129], v[34:37], v[112:115], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[8], s[78])) + k.emit(v_perm_b32_e64(v[60], v[103], v[99], s[85])) + k.emit(v_perm_b32_e64(v[61], v[111], v[107], s[85])) + k.emit(v_mfma_16x16x32(v[116:119], v[126:129], v[38:41], v[116:119], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cselect_b32(s[88], s[81], s[84])) + k.emit(v_perm_b32_e64(v[62], v[87], v[83], s[86])) + k.emit(v_perm_b32_e64(v[63], v[95], v[91], s[86])) + k.emit(v_mfma_16x16x32(v[120:123], v[126:129], v[42:45], v[120:123], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cselect_b32(s[89], s[82], 0)) + k.emit(ds_read_b128(v[174:177], v[17], v[0], v[0], 0, 192, 3)) + k.emit(v_mfma_16x16x32(v[124:127], v[126:129], v[46:49], v[124:127], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(s[72], s[72], s[88])) + k.emit(v_perm_b32_e64(v[64], v[103], v[99], s[86])) + k.emit(v_perm_b32_e64(v[65], v[111], v[107], s[86])) + k.emit(v_mfma_16x16x32(v[128:131], v[130:133], v[18:21], v[128:131], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_addc_u32(s[73], s[73], s[89])) + k.emit(v_perm_b32_e64(v[66], v[88], v[84], s[85])) + k.emit(v_perm_b32_e64(v[67], v[96], v[92], s[85])) + k.emit(v_mfma_16x16x32(v[132:135], v[130:133], v[22:25], v[132:135], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_sub_u32(s[76], s[76], s[88])) + k.emit(v_perm_b32_e64(v[68], v[104], v[100], s[85])) + k.emit(v_perm_b32_e64(v[69], v[112], v[108], s[85])) + k.emit(v_mfma_16x16x32(v[136:139], v[130:133], v[26:29], v[136:139], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_subb_u32(s[77], s[77], s[89])) + k.emit(v_perm_b32_e64(v[70], v[88], v[84], s[86])) + k.emit(v_perm_b32_e64(v[71], v[96], v[92], s[86])) + k.emit(v_mfma_16x16x32(v[140:143], v[130:133], v[30:33], v[140:143], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[77], 0)) + k.emit(v_perm_b32_e64(v[72], v[104], v[100], s[86])) + k.emit(v_perm_b32_e64(v[73], v[112], v[108], s[86])) + k.emit(v_mfma_16x16x32(v[144:147], v[130:133], v[34:37], v[144:147], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=0) + k.emit(s_cselect_b32(s[74], s[76], -1)) + k.emit(v_perm_b32_e64(v[74], v[89], v[85], s[85])) + k.emit(v_perm_b32_e64(v[75], v[97], v[93], s[85])) + k.emit(v_mfma_16x16x32(v[148:151], v[130:133], v[38:41], v[148:151], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[76], v[105], v[101], s[85])) + k.emit(v_perm_b32_e64(v[77], v[113], v[109], s[85])) + k.emit(v_mfma_16x16x32(v[152:155], v[130:133], v[42:45], v[152:155], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[78], v[89], v[85], s[86])) + k.emit(v_perm_b32_e64(v[79], v[97], v[93], s[86])) + k.emit(v_mfma_16x16x32(v[156:159], v[130:133], v[46:49], v[156:159], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[80], v[105], v[101], s[86])) + k.emit(v_perm_b32_e64(v[81], v[113], v[109], s[86])) + k.emit(v_mfma_16x16x32(v[160:163], v[134:137], v[18:21], v[160:163], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[164:167], v[134:137], v[22:25], v[164:167], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[168:171], v[134:137], v[26:29], v[168:171], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[172:175], v[134:137], v[30:33], v[172:175], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[176:179], v[134:137], v[34:37], v[176:179], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[180:183], v[134:137], v[38:41], v[180:183], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[5], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[184:187], v[134:137], v[42:45], v[184:187], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[188:191], v[134:137], v[46:49], v[188:191], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[192:195], v[138:141], v[18:21], v[192:195], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[6], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[196:199], v[138:141], v[22:25], v[196:199], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[200:203], v[138:141], v[26:29], v[200:203], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[204:207], v[138:141], v[30:33], v[204:207], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[7], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[208:211], v[138:141], v[34:37], v[208:211], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[212:215], v[138:141], v[38:41], v[212:215], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[216:219], v[138:141], v[42:45], v[216:219], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_mov_b32(M0, s[54])) + k.emit(buffer_load_dwordx4(v[0:3], v[8], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[220:223], v[138:141], v[46:49], v[220:223], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[224:227], v[142:145], v[18:21], v[224:227], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(vm=17) + k.emit(v_mfma_16x16x32(v[228:231], v[142:145], v[22:25], v[228:231], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[9], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[232:235], v[142:145], v[26:29], v[232:235], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[236:239], v[142:145], v[30:33], v[236:239], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_xor_b32_e32(v[16], v[178], v[16])) + k.emit(v_xor_b32_e32(v[17], v[179], v[17])) + k.emit(v_mfma_16x16x32(v[240:243], v[142:145], v[34:37], v[240:243], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[82:85], v[16])) + k.emit(ds_read_b128(v[86:89], v[16], v[0], v[0], 0, 0, 2)) + k.emit(v_mfma_16x16x32(v[244:247], v[142:145], v[38:41], v[244:247], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[248:251], v[142:145], v[42:45], v[248:251], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[90:93], v[16], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[94:97], v[16], v[0], v[0], 0, 0, 6)) + k.emit(v_mfma_16x16x32(v[252:255], v[142:145], v[46:49], v[252:255], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[0:3], v[146:149], v[50:53], v[0:3], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[98:101], v[16], v[0], v[0], 0, 0, 8)) + k.emit(ds_read_b128(v[102:105], v[16], v[0], v[0], 0, 0, 10)) + k.emit(v_mfma_16x16x32(v[4:7], v[146:149], v[54:57], v[4:7], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[8:11], v[146:149], v[58:61], v[8:11], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(vm=9) + k.emit(ds_read_b128(v[106:109], v[16], v[0], v[0], 0, 0, 12)) + k.emit(ds_read_b128(v[110:113], v[16], v[0], v[0], 0, 0, 14)) + k.emit(v_mfma_16x16x32(v[12:15], v[146:149], v[62:65], v[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[16:19], v[146:149], v[66:69], v[16:19], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(ds_read_b128(v[114:117], v[17])) + k.emit(v_mfma_16x16x32(v[20:23], v[146:149], v[70:73], v[20:23], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[24:27], v[146:149], v[74:77], v[24:27], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[118:121], v[17], v[0], v[0], 0, 128)) + k.emit(v_mfma_16x16x32(v[28:31], v[146:149], v[78:81], v[28:31], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[32:35], v[150:153], v[50:53], v[32:35], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[122:125], v[17], v[0], v[0], 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[36:39], v[150:153], v[54:57], v[36:39], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=4) + k.emit(v_mfma_16x16x32(v[40:43], v[150:153], v[58:61], v[40:43], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[126:129], v[17], v[0], v[0], 0, 128, 1)) + k.emit(v_mfma_16x16x32(v[44:47], v[150:153], v[62:65], v[44:47], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[18], v[86], v[82], s[85])) + k.emit(v_perm_b32_e64(v[19], v[94], v[90], s[85])) + k.emit(v_mfma_16x16x32(v[48:51], v[150:153], v[66:69], v[48:51], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[130:133], v[17], v[0], v[0], 0, 0, 2)) + k.emit(v_mfma_16x16x32(v[52:55], v[150:153], v[70:73], v[52:55], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[20], v[102], v[98], s[85])) + k.emit(v_perm_b32_e64(v[21], v[110], v[106], s[85])) + k.emit(v_mfma_16x16x32(v[56:59], v[150:153], v[74:77], v[56:59], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[134:137], v[17], v[0], v[0], 0, 128, 2)) + k.emit(v_mfma_16x16x32(v[60:63], v[150:153], v[78:81], v[60:63], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[22], v[86], v[82], s[86])) + k.emit(v_perm_b32_e64(v[23], v[94], v[90], s[86])) + k.emit(v_mfma_16x16x32(v[64:67], v[154:157], v[50:53], v[64:67], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[138:141], v[17], v[0], v[0], 0, 0, 3)) + k.emit(v_mfma_16x16x32(v[68:71], v[154:157], v[54:57], v[68:71], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[24], v[102], v[98], s[86])) + k.emit(v_perm_b32_e64(v[25], v[110], v[106], s[86])) + k.emit(v_mfma_16x16x32(v[72:75], v[154:157], v[58:61], v[72:75], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[142:145], v[17], v[0], v[0], 0, 128, 3)) + k.emit(v_mfma_16x16x32(v[76:79], v[154:157], v[62:65], v[76:79], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[26], v[87], v[83], s[85])) + k.emit(v_perm_b32_e64(v[27], v[95], v[91], s[85])) + k.emit(v_mfma_16x16x32(v[80:83], v[154:157], v[66:69], v[80:83], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[28], v[103], v[99], s[85])) + k.emit(v_perm_b32_e64(v[29], v[111], v[107], s[85])) + k.emit(v_mfma_16x16x32(v[84:87], v[154:157], v[70:73], v[84:87], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[30], v[87], v[83], s[86])) + k.emit(v_perm_b32_e64(v[31], v[95], v[91], s[86])) + k.emit(v_mfma_16x16x32(v[88:91], v[154:157], v[74:77], v[88:91], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[32], v[103], v[99], s[86])) + k.emit(v_perm_b32_e64(v[33], v[111], v[107], s[86])) + k.emit(v_mfma_16x16x32(v[92:95], v[154:157], v[78:81], v[92:95], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[10], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[96:99], v[158:161], v[50:53], v[96:99], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[34], v[88], v[84], s[85])) + k.emit(v_perm_b32_e64(v[35], v[96], v[92], s[85])) + k.emit(v_mfma_16x16x32(v[100:103], v[158:161], v[54:57], v[100:103], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[36], v[104], v[100], s[85])) + k.emit(v_perm_b32_e64(v[37], v[112], v[108], s[85])) + k.emit(v_mfma_16x16x32(v[104:107], v[158:161], v[58:61], v[104:107], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[11], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[108:111], v[158:161], v[62:65], v[108:111], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[38], v[88], v[84], s[86])) + k.emit(v_perm_b32_e64(v[39], v[96], v[92], s[86])) + k.emit(v_mfma_16x16x32(v[112:115], v[158:161], v[66:69], v[112:115], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[40], v[104], v[100], s[86])) + k.emit(v_perm_b32_e64(v[41], v[112], v[108], s[86])) + k.emit(v_mfma_16x16x32(v[116:119], v[158:161], v[70:73], v[116:119], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[12], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[120:123], v[158:161], v[74:77], v[120:123], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[42], v[89], v[85], s[85])) + k.emit(v_perm_b32_e64(v[43], v[97], v[93], s[85])) + k.emit(v_mfma_16x16x32(v[124:127], v[158:161], v[78:81], v[124:127], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[44], v[105], v[101], s[85])) + k.emit(v_perm_b32_e64(v[45], v[113], v[109], s[85])) + k.emit(v_mfma_16x16x32(v[128:131], v[162:165], v[50:53], v[128:131], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[13], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[132:135], v[162:165], v[54:57], v[132:135], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[46], v[89], v[85], s[86])) + k.emit(v_perm_b32_e64(v[47], v[97], v[93], s[86])) + k.emit(v_mfma_16x16x32(v[136:139], v[162:165], v[58:61], v[136:139], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[48], v[105], v[101], s[86])) + k.emit(v_perm_b32_e64(v[49], v[113], v[109], s[86])) + k.emit(v_mfma_16x16x32(v[140:143], v[162:165], v[62:65], v[140:143], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[14], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[144:147], v[162:165], v[66:69], v[144:147], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[148:151], v[162:165], v[70:73], v[148:151], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[152:155], v[162:165], v[74:77], v[152:155], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[156:159], v[162:165], v[78:81], v[156:159], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[160:163], v[166:169], v[50:53], v[160:163], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[164:167], v[166:169], v[54:57], v[164:167], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[168:171], v[166:169], v[58:61], v[168:171], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[172:175], v[166:169], v[62:65], v[172:175], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[176:179], v[166:169], v[66:69], v[176:179], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[180:183], v[166:169], v[70:73], v[180:183], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[184:187], v[166:169], v[74:77], v[184:187], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[188:191], v[166:169], v[78:81], v[188:191], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[192:195], v[170:173], v[50:53], v[192:195], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[196:199], v[170:173], v[54:57], v[196:199], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[200:203], v[170:173], v[58:61], v[200:203], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[204:207], v[170:173], v[62:65], v[204:207], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[208:211], v[170:173], v[66:69], v[208:211], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[212:215], v[170:173], v[70:73], v[212:215], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[216:219], v[170:173], v[74:77], v[216:219], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[220:223], v[170:173], v[78:81], v[220:223], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[224:227], v[174:177], v[50:53], v[224:227], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[228:231], v[174:177], v[54:57], v[228:231], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[232:235], v[174:177], v[58:61], v[232:235], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[236:239], v[174:177], v[62:65], v[236:239], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[15], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[240:243], v[174:177], v[66:69], v[240:243], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[244:247], v[174:177], v[70:73], v[244:247], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_xor_b32(s[53], s[55], s[53])) + k.emit(s_xor_b32(s[54], s[56], s[54])) + k.emit(v_mfma_16x16x32(v[248:251], v[174:177], v[74:77], v[248:251], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_sub_u32(s[8], s[8], 1)) + k.emit(s_cmp_eq_i32(s[8], 2)) + k.emit(v_mfma_16x16x32(v[252:255], v[174:177], v[78:81], v[252:255], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cbranch_scc0(), target='LoopBeginL_0') + k.emit(s_branch(), target='LoopEndL') + k.label('LoopBeginL_1') + k.emit(v_mfma_16x16x32(v[0:3], v[114:117], v[18:21], v[0:3], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[8], s[78])) + k.emit(v_mfma_16x16x32(v[4:7], v[114:117], v[22:25], v[4:7], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cselect_b32(s[88], s[79], s[83])) + k.emit(ds_read_b128(v[82:85], v[16], v[0], v[0], 0, 0, 64)) + k.emit(ds_read_b128(v[86:89], v[16], v[0], v[0], 0, 0, 66)) + k.emit(v_mfma_16x16x32(v[8:11], v[114:117], v[26:29], v[8:11], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cselect_b32(s[89], s[80], 0)) + k.emit(v_mfma_16x16x32(v[12:15], v[114:117], v[30:33], v[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(s[68], s[68], s[88])) + k.emit(ds_read_b128(v[90:93], v[16], v[0], v[0], 0, 0, 68)) + k.emit(ds_read_b128(v[94:97], v[16], v[0], v[0], 0, 0, 70)) + k.emit(v_mfma_16x16x32(v[16:19], v[114:117], v[34:37], v[16:19], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_addc_u32(s[69], s[69], s[89])) + k.emit(v_mfma_16x16x32(v[20:23], v[114:117], v[38:41], v[20:23], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_sub_u32(s[62], s[62], s[88])) + k.emit(ds_read_b128(v[98:101], v[16], v[0], v[0], 0, 0, 72)) + k.emit(ds_read_b128(v[102:105], v[16], v[0], v[0], 0, 0, 74)) + k.emit(v_mfma_16x16x32(v[24:27], v[114:117], v[42:45], v[24:27], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_subb_u32(s[63], s[63], s[89])) + k.emit(v_mfma_16x16x32(v[28:31], v[114:117], v[46:49], v[28:31], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[63], 0)) + k.emit(ds_read_b128(v[106:109], v[16], v[0], v[0], 0, 0, 76)) + k.emit(ds_read_b128(v[110:113], v[16], v[0], v[0], 0, 0, 78)) + k.emit(v_mfma_16x16x32(v[32:35], v[118:121], v[18:21], v[32:35], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=4) + k.emit(s_cselect_b32(s[70], s[62], -1)) + k.emit(v_perm_b32_e64(v[50], v[86], v[82], s[85])) + k.emit(v_perm_b32_e64(v[51], v[94], v[90], s[85])) + k.emit(v_mfma_16x16x32(v[36:39], v[118:121], v[22:25], v[36:39], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[40:43], v[118:121], v[26:29], v[40:43], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[146:149], v[17], v[0], v[0], 0, 64)) + k.emit(v_mfma_16x16x32(v[44:47], v[118:121], v[30:33], v[44:47], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[48:51], v[118:121], v[34:37], v[48:51], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=1) + k.emit(ds_read_b128(v[150:153], v[17], v[0], v[0], 0, 192)) + k.emit(v_mfma_16x16x32(v[52:55], v[118:121], v[38:41], v[52:55], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[56:59], v[118:121], v[42:45], v[56:59], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[154:157], v[17], v[0], v[0], 0, 64, 1)) + k.emit(v_mfma_16x16x32(v[60:63], v[118:121], v[46:49], v[60:63], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_mov_b32(M0, s[53])) + k.emit(buffer_load_dwordx4(v[0:3], v[0], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[64:67], v[122:125], v[18:21], v[64:67], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[52], v[102], v[98], s[85])) + k.emit(v_perm_b32_e64(v[53], v[110], v[106], s[85])) + k.emit(v_mfma_16x16x32(v[68:71], v[122:125], v[22:25], v[68:71], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[158:161], v[17], v[0], v[0], 0, 192, 1)) + k.emit(v_mfma_16x16x32(v[72:75], v[122:125], v[26:29], v[72:75], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[1], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[76:79], v[122:125], v[30:33], v[76:79], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[54], v[86], v[82], s[86])) + k.emit(v_perm_b32_e64(v[55], v[94], v[90], s[86])) + k.emit(v_mfma_16x16x32(v[80:83], v[122:125], v[34:37], v[80:83], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[162:165], v[17], v[0], v[0], 0, 64, 2)) + k.emit(v_mfma_16x16x32(v[84:87], v[122:125], v[38:41], v[84:87], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[2], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[88:91], v[122:125], v[42:45], v[88:91], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[56], v[102], v[98], s[86])) + k.emit(v_perm_b32_e64(v[57], v[110], v[106], s[86])) + k.emit(v_mfma_16x16x32(v[92:95], v[122:125], v[46:49], v[92:95], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[166:169], v[17], v[0], v[0], 0, 192, 2)) + k.emit(v_mfma_16x16x32(v[96:99], v[126:129], v[18:21], v[96:99], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[3], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[100:103], v[126:129], v[22:25], v[100:103], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[58], v[87], v[83], s[85])) + k.emit(v_perm_b32_e64(v[59], v[95], v[91], s[85])) + k.emit(v_mfma_16x16x32(v[104:107], v[126:129], v[26:29], v[104:107], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[170:173], v[17], v[0], v[0], 0, 64, 3)) + k.emit(v_mfma_16x16x32(v[108:111], v[126:129], v[30:33], v[108:111], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[4], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[112:115], v[126:129], v[34:37], v[112:115], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[8], s[78])) + k.emit(v_perm_b32_e64(v[60], v[103], v[99], s[85])) + k.emit(v_perm_b32_e64(v[61], v[111], v[107], s[85])) + k.emit(v_mfma_16x16x32(v[116:119], v[126:129], v[38:41], v[116:119], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cselect_b32(s[88], s[81], s[84])) + k.emit(v_perm_b32_e64(v[62], v[87], v[83], s[86])) + k.emit(v_perm_b32_e64(v[63], v[95], v[91], s[86])) + k.emit(ds_read_b128(v[174:177], v[17], v[0], v[0], 0, 192, 3)) + k.emit(v_mfma_16x16x32(v[120:123], v[126:129], v[42:45], v[120:123], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cselect_b32(s[89], s[82], 0)) + k.emit(v_mfma_16x16x32(v[124:127], v[126:129], v[46:49], v[124:127], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(s[72], s[72], s[88])) + k.emit(v_perm_b32_e64(v[64], v[103], v[99], s[86])) + k.emit(v_perm_b32_e64(v[65], v[111], v[107], s[86])) + k.emit(v_mfma_16x16x32(v[128:131], v[130:133], v[18:21], v[128:131], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_addc_u32(s[73], s[73], s[89])) + k.emit(v_perm_b32_e64(v[66], v[88], v[84], s[85])) + k.emit(v_perm_b32_e64(v[67], v[96], v[92], s[85])) + k.emit(v_mfma_16x16x32(v[132:135], v[130:133], v[22:25], v[132:135], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_sub_u32(s[76], s[76], s[88])) + k.emit(v_perm_b32_e64(v[68], v[104], v[100], s[85])) + k.emit(v_perm_b32_e64(v[69], v[112], v[108], s[85])) + k.emit(v_mfma_16x16x32(v[136:139], v[130:133], v[26:29], v[136:139], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_subb_u32(s[77], s[77], s[89])) + k.emit(v_perm_b32_e64(v[70], v[88], v[84], s[86])) + k.emit(v_perm_b32_e64(v[71], v[96], v[92], s[86])) + k.emit(v_mfma_16x16x32(v[140:143], v[130:133], v[30:33], v[140:143], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[77], 0)) + k.emit(v_perm_b32_e64(v[72], v[104], v[100], s[86])) + k.emit(v_perm_b32_e64(v[73], v[112], v[108], s[86])) + k.emit(v_mfma_16x16x32(v[144:147], v[130:133], v[34:37], v[144:147], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=0) + k.emit(s_cselect_b32(s[74], s[76], -1)) + k.emit(v_perm_b32_e64(v[74], v[89], v[85], s[85])) + k.emit(v_perm_b32_e64(v[75], v[97], v[93], s[85])) + k.emit(v_mfma_16x16x32(v[148:151], v[130:133], v[38:41], v[148:151], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[76], v[105], v[101], s[85])) + k.emit(v_perm_b32_e64(v[77], v[113], v[109], s[85])) + k.emit(v_mfma_16x16x32(v[152:155], v[130:133], v[42:45], v[152:155], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[78], v[89], v[85], s[86])) + k.emit(v_perm_b32_e64(v[79], v[97], v[93], s[86])) + k.emit(v_mfma_16x16x32(v[156:159], v[130:133], v[46:49], v[156:159], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[80], v[105], v[101], s[86])) + k.emit(v_perm_b32_e64(v[81], v[113], v[109], s[86])) + k.emit(v_mfma_16x16x32(v[160:163], v[134:137], v[18:21], v[160:163], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[164:167], v[134:137], v[22:25], v[164:167], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[168:171], v[134:137], v[26:29], v[168:171], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[172:175], v[134:137], v[30:33], v[172:175], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[176:179], v[134:137], v[34:37], v[176:179], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[180:183], v[134:137], v[38:41], v[180:183], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[184:187], v[134:137], v[42:45], v[184:187], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[5], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[188:191], v[134:137], v[46:49], v[188:191], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[192:195], v[138:141], v[18:21], v[192:195], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[196:199], v[138:141], v[22:25], v[196:199], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[6], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[200:203], v[138:141], v[26:29], v[200:203], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[204:207], v[138:141], v[30:33], v[204:207], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[208:211], v[138:141], v[34:37], v[208:211], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4096)) + k.emit(buffer_load_dwordx4(v[0:3], v[7], s[68:71], 0, 0, 1, 0, 0, 1, 0, 1)) + k.emit(v_mfma_16x16x32(v[212:215], v[138:141], v[38:41], v[212:215], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[216:219], v[138:141], v[42:45], v[216:219], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[220:223], v[138:141], v[46:49], v[220:223], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_mov_b32(M0, s[54])) + k.emit(buffer_load_dwordx4(v[0:3], v[8], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[224:227], v[142:145], v[18:21], v[224:227], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(vm=17) + k.emit(v_mfma_16x16x32(v[228:231], v[142:145], v[22:25], v[228:231], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[232:235], v[142:145], v[26:29], v[232:235], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[9], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[236:239], v[142:145], v[30:33], v[236:239], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_xor_b32_e32(v[16], v[178], v[16])) + k.emit(v_xor_b32_e32(v[17], v[179], v[17])) + k.emit(v_mfma_16x16x32(v[240:243], v[142:145], v[34:37], v[240:243], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[244:247], v[142:145], v[38:41], v[244:247], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[82:85], v[16])) + k.emit(ds_read_b128(v[86:89], v[16], v[0], v[0], 0, 0, 2)) + k.emit(v_mfma_16x16x32(v[248:251], v[142:145], v[42:45], v[248:251], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[252:255], v[142:145], v[46:49], v[252:255], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[90:93], v[16], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[94:97], v[16], v[0], v[0], 0, 0, 6)) + k.emit(v_mfma_16x16x32(v[0:3], v[146:149], v[50:53], v[0:3], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[4:7], v[146:149], v[54:57], v[4:7], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[98:101], v[16], v[0], v[0], 0, 0, 8)) + k.emit(ds_read_b128(v[102:105], v[16], v[0], v[0], 0, 0, 10)) + k.emit(v_mfma_16x16x32(v[8:11], v[146:149], v[58:61], v[8:11], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(vm=9) + k.emit(v_mfma_16x16x32(v[12:15], v[146:149], v[62:65], v[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[106:109], v[16], v[0], v[0], 0, 0, 12)) + k.emit(ds_read_b128(v[110:113], v[16], v[0], v[0], 0, 0, 14)) + k.emit(v_mfma_16x16x32(v[16:19], v[146:149], v[66:69], v[16:19], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[20:23], v[146:149], v[70:73], v[20:23], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[114:117], v[17])) + k.emit(v_mfma_16x16x32(v[24:27], v[146:149], v[74:77], v[24:27], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[28:31], v[146:149], v[78:81], v[28:31], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[118:121], v[17], v[0], v[0], 0, 128)) + k.emit(v_mfma_16x16x32(v[32:35], v[150:153], v[50:53], v[32:35], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[36:39], v[150:153], v[54:57], v[36:39], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=4) + k.emit(ds_read_b128(v[122:125], v[17], v[0], v[0], 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[40:43], v[150:153], v[58:61], v[40:43], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[18], v[86], v[82], s[85])) + k.emit(v_perm_b32_e64(v[19], v[94], v[90], s[85])) + k.emit(v_mfma_16x16x32(v[44:47], v[150:153], v[62:65], v[44:47], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[126:129], v[17], v[0], v[0], 0, 128, 1)) + k.emit(v_mfma_16x16x32(v[48:51], v[150:153], v[66:69], v[48:51], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[20], v[102], v[98], s[85])) + k.emit(v_perm_b32_e64(v[21], v[110], v[106], s[85])) + k.emit(v_mfma_16x16x32(v[52:55], v[150:153], v[70:73], v[52:55], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[130:133], v[17], v[0], v[0], 0, 0, 2)) + k.emit(v_mfma_16x16x32(v[56:59], v[150:153], v[74:77], v[56:59], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[22], v[86], v[82], s[86])) + k.emit(v_perm_b32_e64(v[23], v[94], v[90], s[86])) + k.emit(v_mfma_16x16x32(v[60:63], v[150:153], v[78:81], v[60:63], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[134:137], v[17], v[0], v[0], 0, 128, 2)) + k.emit(v_mfma_16x16x32(v[64:67], v[154:157], v[50:53], v[64:67], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[24], v[102], v[98], s[86])) + k.emit(v_perm_b32_e64(v[25], v[110], v[106], s[86])) + k.emit(v_mfma_16x16x32(v[68:71], v[154:157], v[54:57], v[68:71], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[138:141], v[17], v[0], v[0], 0, 0, 3)) + k.emit(v_mfma_16x16x32(v[72:75], v[154:157], v[58:61], v[72:75], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[26], v[87], v[83], s[85])) + k.emit(v_perm_b32_e64(v[27], v[95], v[91], s[85])) + k.emit(v_mfma_16x16x32(v[76:79], v[154:157], v[62:65], v[76:79], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[142:145], v[17], v[0], v[0], 0, 128, 3)) + k.emit(v_mfma_16x16x32(v[80:83], v[154:157], v[66:69], v[80:83], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[28], v[103], v[99], s[85])) + k.emit(v_perm_b32_e64(v[29], v[111], v[107], s[85])) + k.emit(v_mfma_16x16x32(v[84:87], v[154:157], v[70:73], v[84:87], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[30], v[87], v[83], s[86])) + k.emit(v_perm_b32_e64(v[31], v[95], v[91], s[86])) + k.emit(v_mfma_16x16x32(v[88:91], v[154:157], v[74:77], v[88:91], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[32], v[103], v[99], s[86])) + k.emit(v_perm_b32_e64(v[33], v[111], v[107], s[86])) + k.emit(v_mfma_16x16x32(v[92:95], v[154:157], v[78:81], v[92:95], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[34], v[88], v[84], s[85])) + k.emit(v_perm_b32_e64(v[35], v[96], v[92], s[85])) + k.emit(v_mfma_16x16x32(v[96:99], v[158:161], v[50:53], v[96:99], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[10], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[100:103], v[158:161], v[54:57], v[100:103], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[36], v[104], v[100], s[85])) + k.emit(v_perm_b32_e64(v[37], v[112], v[108], s[85])) + k.emit(v_mfma_16x16x32(v[104:107], v[158:161], v[58:61], v[104:107], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[38], v[88], v[84], s[86])) + k.emit(v_perm_b32_e64(v[39], v[96], v[92], s[86])) + k.emit(v_mfma_16x16x32(v[108:111], v[158:161], v[62:65], v[108:111], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[11], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[112:115], v[158:161], v[66:69], v[112:115], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[40], v[104], v[100], s[86])) + k.emit(v_perm_b32_e64(v[41], v[112], v[108], s[86])) + k.emit(v_mfma_16x16x32(v[116:119], v[158:161], v[70:73], v[116:119], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[42], v[89], v[85], s[85])) + k.emit(v_perm_b32_e64(v[43], v[97], v[93], s[85])) + k.emit(v_mfma_16x16x32(v[120:123], v[158:161], v[74:77], v[120:123], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[12], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[124:127], v[158:161], v[78:81], v[124:127], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[44], v[105], v[101], s[85])) + k.emit(v_perm_b32_e64(v[45], v[113], v[109], s[85])) + k.emit(v_mfma_16x16x32(v[128:131], v[162:165], v[50:53], v[128:131], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[46], v[89], v[85], s[86])) + k.emit(v_perm_b32_e64(v[47], v[97], v[93], s[86])) + k.emit(v_mfma_16x16x32(v[132:135], v[162:165], v[54:57], v[132:135], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[13], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[136:139], v[162:165], v[58:61], v[136:139], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[48], v[105], v[101], s[86])) + k.emit(v_perm_b32_e64(v[49], v[113], v[109], s[86])) + k.emit(v_mfma_16x16x32(v[140:143], v[162:165], v[62:65], v[140:143], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[144:147], v[162:165], v[66:69], v[144:147], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[14], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[148:151], v[162:165], v[70:73], v[148:151], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[152:155], v[162:165], v[74:77], v[152:155], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[156:159], v[162:165], v[78:81], v[156:159], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[160:163], v[166:169], v[50:53], v[160:163], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[164:167], v[166:169], v[54:57], v[164:167], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[168:171], v[166:169], v[58:61], v[168:171], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[172:175], v[166:169], v[62:65], v[172:175], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[176:179], v[166:169], v[66:69], v[176:179], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[180:183], v[166:169], v[70:73], v[180:183], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[184:187], v[166:169], v[74:77], v[184:187], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[188:191], v[166:169], v[78:81], v[188:191], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[192:195], v[170:173], v[50:53], v[192:195], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[196:199], v[170:173], v[54:57], v[196:199], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[200:203], v[170:173], v[58:61], v[200:203], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[204:207], v[170:173], v[62:65], v[204:207], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[208:211], v[170:173], v[66:69], v[208:211], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[212:215], v[170:173], v[70:73], v[212:215], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[216:219], v[170:173], v[74:77], v[216:219], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[220:223], v[170:173], v[78:81], v[220:223], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[224:227], v[174:177], v[50:53], v[224:227], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[228:231], v[174:177], v[54:57], v[228:231], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[232:235], v[174:177], v[58:61], v[232:235], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[236:239], v[174:177], v[62:65], v[236:239], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[240:243], v[174:177], v[66:69], v[240:243], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(M0, M0, 4224)) + k.emit(buffer_load_dwordx4(v[0:3], v[15], s[72:75], 0, 0, 1, 0, 0, 0, 1, 1, 1)) + k.emit(v_mfma_16x16x32(v[244:247], v[174:177], v[70:73], v[244:247], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_xor_b32(s[53], s[55], s[53])) + k.emit(s_xor_b32(s[54], s[56], s[54])) + k.emit(v_mfma_16x16x32(v[248:251], v[174:177], v[74:77], v[248:251], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_sub_u32(s[8], s[8], 1)) + k.emit(s_cmp_eq_i32(s[8], 2)) + k.emit(v_mfma_16x16x32(v[252:255], v[174:177], v[78:81], v[252:255], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cbranch_scc0(), target='LoopBeginL_1') + k.emit(s_branch(), target='LoopEndL') + k.label('LoopEndL') + k.emit(s_waitcnt()) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[0:3], v[114:117], v[18:21], v[0:3], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[8], s[78])) + k.emit(ds_read_b128(v[82:85], v[16], v[0], v[0], 0, 0, 64)) + k.emit(ds_read_b128(v[86:89], v[16], v[0], v[0], 0, 0, 66)) + k.emit(v_mfma_16x16x32(v[4:7], v[114:117], v[22:25], v[4:7], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cselect_b32(s[88], s[79], s[83])) + k.emit(v_mfma_16x16x32(v[8:11], v[114:117], v[26:29], v[8:11], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cselect_b32(s[89], s[80], 0)) + k.emit(ds_read_b128(v[90:93], v[16], v[0], v[0], 0, 0, 68)) + k.emit(ds_read_b128(v[94:97], v[16], v[0], v[0], 0, 0, 70)) + k.emit(v_mfma_16x16x32(v[12:15], v[114:117], v[30:33], v[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(s[68], s[68], s[88])) + k.emit(v_mfma_16x16x32(v[16:19], v[114:117], v[34:37], v[16:19], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_addc_u32(s[69], s[69], s[89])) + k.emit(ds_read_b128(v[98:101], v[16], v[0], v[0], 0, 0, 72)) + k.emit(ds_read_b128(v[102:105], v[16], v[0], v[0], 0, 0, 74)) + k.emit(v_mfma_16x16x32(v[20:23], v[114:117], v[38:41], v[20:23], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_sub_u32(s[62], s[62], s[88])) + k.emit(v_mfma_16x16x32(v[24:27], v[114:117], v[42:45], v[24:27], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_subb_u32(s[63], s[63], s[89])) + k.emit(ds_read_b128(v[106:109], v[16], v[0], v[0], 0, 0, 76)) + k.emit(ds_read_b128(v[110:113], v[16], v[0], v[0], 0, 0, 78)) + k.emit(v_mfma_16x16x32(v[28:31], v[114:117], v[46:49], v[28:31], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[63], 0)) + k.emit(v_mfma_16x16x32(v[32:35], v[118:121], v[18:21], v[32:35], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=4) + k.emit(s_cselect_b32(s[70], s[62], -1)) + k.emit(v_perm_b32_e64(v[50], v[86], v[82], s[85])) + k.emit(v_perm_b32_e64(v[51], v[94], v[90], s[85])) + k.emit(v_mfma_16x16x32(v[36:39], v[118:121], v[22:25], v[36:39], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[146:149], v[17], v[0], v[0], 0, 64)) + k.emit(v_mfma_16x16x32(v[40:43], v[118:121], v[26:29], v[40:43], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[44:47], v[118:121], v[30:33], v[44:47], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[150:153], v[17], v[0], v[0], 0, 192)) + k.emit(v_mfma_16x16x32(v[48:51], v[118:121], v[34:37], v[48:51], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=1) + k.emit(v_mfma_16x16x32(v[52:55], v[118:121], v[38:41], v[52:55], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[56:59], v[118:121], v[42:45], v[56:59], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[60:63], v[118:121], v[46:49], v[60:63], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[154:157], v[17], v[0], v[0], 0, 64, 1)) + k.emit(v_mfma_16x16x32(v[64:67], v[122:125], v[18:21], v[64:67], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[52], v[102], v[98], s[85])) + k.emit(v_perm_b32_e64(v[53], v[110], v[106], s[85])) + k.emit(v_mfma_16x16x32(v[68:71], v[122:125], v[22:25], v[68:71], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[72:75], v[122:125], v[26:29], v[72:75], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[158:161], v[17], v[0], v[0], 0, 192, 1)) + k.emit(v_mfma_16x16x32(v[76:79], v[122:125], v[30:33], v[76:79], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[54], v[86], v[82], s[86])) + k.emit(v_perm_b32_e64(v[55], v[94], v[90], s[86])) + k.emit(v_mfma_16x16x32(v[80:83], v[122:125], v[34:37], v[80:83], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[84:87], v[122:125], v[38:41], v[84:87], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[162:165], v[17], v[0], v[0], 0, 64, 2)) + k.emit(v_mfma_16x16x32(v[88:91], v[122:125], v[42:45], v[88:91], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[56], v[102], v[98], s[86])) + k.emit(v_perm_b32_e64(v[57], v[110], v[106], s[86])) + k.emit(v_mfma_16x16x32(v[92:95], v[122:125], v[46:49], v[92:95], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[96:99], v[126:129], v[18:21], v[96:99], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[166:169], v[17], v[0], v[0], 0, 192, 2)) + k.emit(v_mfma_16x16x32(v[100:103], v[126:129], v[22:25], v[100:103], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[58], v[87], v[83], s[85])) + k.emit(v_perm_b32_e64(v[59], v[95], v[91], s[85])) + k.emit(v_mfma_16x16x32(v[104:107], v[126:129], v[26:29], v[104:107], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[108:111], v[126:129], v[30:33], v[108:111], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[170:173], v[17], v[0], v[0], 0, 64, 3)) + k.emit(v_mfma_16x16x32(v[112:115], v[126:129], v[34:37], v[112:115], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[8], s[78])) + k.emit(v_perm_b32_e64(v[60], v[103], v[99], s[85])) + k.emit(v_perm_b32_e64(v[61], v[111], v[107], s[85])) + k.emit(v_mfma_16x16x32(v[116:119], v[126:129], v[38:41], v[116:119], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cselect_b32(s[88], s[81], s[84])) + k.emit(v_perm_b32_e64(v[62], v[87], v[83], s[86])) + k.emit(v_perm_b32_e64(v[63], v[95], v[91], s[86])) + k.emit(v_mfma_16x16x32(v[120:123], v[126:129], v[42:45], v[120:123], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cselect_b32(s[89], s[82], 0)) + k.emit(ds_read_b128(v[174:177], v[17], v[0], v[0], 0, 192, 3)) + k.emit(v_mfma_16x16x32(v[124:127], v[126:129], v[46:49], v[124:127], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_add_u32(s[72], s[72], s[88])) + k.emit(v_perm_b32_e64(v[64], v[103], v[99], s[86])) + k.emit(v_perm_b32_e64(v[65], v[111], v[107], s[86])) + k.emit(v_mfma_16x16x32(v[128:131], v[130:133], v[18:21], v[128:131], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_addc_u32(s[73], s[73], s[89])) + k.emit(v_perm_b32_e64(v[66], v[88], v[84], s[85])) + k.emit(v_perm_b32_e64(v[67], v[96], v[92], s[85])) + k.emit(v_mfma_16x16x32(v[132:135], v[130:133], v[22:25], v[132:135], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_sub_u32(s[76], s[76], s[88])) + k.emit(v_perm_b32_e64(v[68], v[104], v[100], s[85])) + k.emit(v_perm_b32_e64(v[69], v[112], v[108], s[85])) + k.emit(v_mfma_16x16x32(v[136:139], v[130:133], v[26:29], v[136:139], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_subb_u32(s[77], s[77], s[89])) + k.emit(v_perm_b32_e64(v[70], v[88], v[84], s[86])) + k.emit(v_perm_b32_e64(v[71], v[96], v[92], s[86])) + k.emit(v_mfma_16x16x32(v[140:143], v[130:133], v[30:33], v[140:143], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_cmp_eq_u32(s[77], 0)) + k.emit(v_perm_b32_e64(v[72], v[104], v[100], s[86])) + k.emit(v_perm_b32_e64(v[73], v[112], v[108], s[86])) + k.emit(v_mfma_16x16x32(v[144:147], v[130:133], v[34:37], v[144:147], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=0) + k.emit(s_cselect_b32(s[74], s[76], -1)) + k.emit(v_perm_b32_e64(v[74], v[89], v[85], s[85])) + k.emit(v_perm_b32_e64(v[75], v[97], v[93], s[85])) + k.emit(v_mfma_16x16x32(v[148:151], v[130:133], v[38:41], v[148:151], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[76], v[105], v[101], s[85])) + k.emit(v_perm_b32_e64(v[77], v[113], v[109], s[85])) + k.emit(v_mfma_16x16x32(v[152:155], v[130:133], v[42:45], v[152:155], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[78], v[89], v[85], s[86])) + k.emit(v_perm_b32_e64(v[79], v[97], v[93], s[86])) + k.emit(v_mfma_16x16x32(v[156:159], v[130:133], v[46:49], v[156:159], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[80], v[105], v[101], s[86])) + k.emit(v_perm_b32_e64(v[81], v[113], v[109], s[86])) + k.emit(v_mfma_16x16x32(v[160:163], v[134:137], v[18:21], v[160:163], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[164:167], v[134:137], v[22:25], v[164:167], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[168:171], v[134:137], v[26:29], v[168:171], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[172:175], v[134:137], v[30:33], v[172:175], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[176:179], v[134:137], v[34:37], v[176:179], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[180:183], v[134:137], v[38:41], v[180:183], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[184:187], v[134:137], v[42:45], v[184:187], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[188:191], v[134:137], v[46:49], v[188:191], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[192:195], v[138:141], v[18:21], v[192:195], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[196:199], v[138:141], v[22:25], v[196:199], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[200:203], v[138:141], v[26:29], v[200:203], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[204:207], v[138:141], v[30:33], v[204:207], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[208:211], v[138:141], v[34:37], v[208:211], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[212:215], v[138:141], v[38:41], v[212:215], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[216:219], v[138:141], v[42:45], v[216:219], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[220:223], v[138:141], v[46:49], v[220:223], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[224:227], v[142:145], v[18:21], v[224:227], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(vm=17) + k.emit(v_mfma_16x16x32(v[228:231], v[142:145], v[22:25], v[228:231], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[232:235], v[142:145], v[26:29], v[232:235], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[236:239], v[142:145], v[30:33], v[236:239], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_xor_b32_e32(v[16], v[178], v[16])) + k.emit(v_xor_b32_e32(v[17], v[179], v[17])) + k.emit(v_mfma_16x16x32(v[240:243], v[142:145], v[34:37], v[240:243], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[82:85], v[16])) + k.emit(ds_read_b128(v[86:89], v[16], v[0], v[0], 0, 0, 2)) + k.emit(v_mfma_16x16x32(v[244:247], v[142:145], v[38:41], v[244:247], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[248:251], v[142:145], v[42:45], v[248:251], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[90:93], v[16], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[94:97], v[16], v[0], v[0], 0, 0, 6)) + k.emit(v_mfma_16x16x32(v[252:255], v[142:145], v[46:49], v[252:255], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[0:3], v[146:149], v[50:53], v[0:3], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[98:101], v[16], v[0], v[0], 0, 0, 8)) + k.emit(ds_read_b128(v[102:105], v[16], v[0], v[0], 0, 0, 10)) + k.emit(v_mfma_16x16x32(v[4:7], v[146:149], v[54:57], v[4:7], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[8:11], v[146:149], v[58:61], v[8:11], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(vm=9) + k.emit(ds_read_b128(v[106:109], v[16], v[0], v[0], 0, 0, 12)) + k.emit(ds_read_b128(v[110:113], v[16], v[0], v[0], 0, 0, 14)) + k.emit(v_mfma_16x16x32(v[12:15], v[146:149], v[62:65], v[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[16:19], v[146:149], v[66:69], v[16:19], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(ds_read_b128(v[114:117], v[17])) + k.emit(v_mfma_16x16x32(v[20:23], v[146:149], v[70:73], v[20:23], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[24:27], v[146:149], v[74:77], v[24:27], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[118:121], v[17], v[0], v[0], 0, 128)) + k.emit(v_mfma_16x16x32(v[28:31], v[146:149], v[78:81], v[28:31], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[32:35], v[150:153], v[50:53], v[32:35], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[122:125], v[17], v[0], v[0], 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[36:39], v[150:153], v[54:57], v[36:39], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=4) + k.emit(v_mfma_16x16x32(v[40:43], v[150:153], v[58:61], v[40:43], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[126:129], v[17], v[0], v[0], 0, 128, 1)) + k.emit(v_mfma_16x16x32(v[44:47], v[150:153], v[62:65], v[44:47], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[18], v[86], v[82], s[85])) + k.emit(v_perm_b32_e64(v[19], v[94], v[90], s[85])) + k.emit(v_mfma_16x16x32(v[48:51], v[150:153], v[66:69], v[48:51], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[130:133], v[17], v[0], v[0], 0, 0, 2)) + k.emit(v_mfma_16x16x32(v[52:55], v[150:153], v[70:73], v[52:55], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[20], v[102], v[98], s[85])) + k.emit(v_perm_b32_e64(v[21], v[110], v[106], s[85])) + k.emit(v_mfma_16x16x32(v[56:59], v[150:153], v[74:77], v[56:59], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[134:137], v[17], v[0], v[0], 0, 128, 2)) + k.emit(v_mfma_16x16x32(v[60:63], v[150:153], v[78:81], v[60:63], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[22], v[86], v[82], s[86])) + k.emit(v_perm_b32_e64(v[23], v[94], v[90], s[86])) + k.emit(v_mfma_16x16x32(v[64:67], v[154:157], v[50:53], v[64:67], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[138:141], v[17], v[0], v[0], 0, 0, 3)) + k.emit(v_mfma_16x16x32(v[68:71], v[154:157], v[54:57], v[68:71], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[24], v[102], v[98], s[86])) + k.emit(v_perm_b32_e64(v[25], v[110], v[106], s[86])) + k.emit(v_mfma_16x16x32(v[72:75], v[154:157], v[58:61], v[72:75], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[142:145], v[17], v[0], v[0], 0, 128, 3)) + k.emit(v_mfma_16x16x32(v[76:79], v[154:157], v[62:65], v[76:79], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[26], v[87], v[83], s[85])) + k.emit(v_perm_b32_e64(v[27], v[95], v[91], s[85])) + k.emit(v_mfma_16x16x32(v[80:83], v[154:157], v[66:69], v[80:83], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[28], v[103], v[99], s[85])) + k.emit(v_perm_b32_e64(v[29], v[111], v[107], s[85])) + k.emit(v_mfma_16x16x32(v[84:87], v[154:157], v[70:73], v[84:87], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[30], v[87], v[83], s[86])) + k.emit(v_perm_b32_e64(v[31], v[95], v[91], s[86])) + k.emit(v_mfma_16x16x32(v[88:91], v[154:157], v[74:77], v[88:91], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[32], v[103], v[99], s[86])) + k.emit(v_perm_b32_e64(v[33], v[111], v[107], s[86])) + k.emit(v_mfma_16x16x32(v[92:95], v[154:157], v[78:81], v[92:95], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[96:99], v[158:161], v[50:53], v[96:99], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[34], v[88], v[84], s[85])) + k.emit(v_perm_b32_e64(v[35], v[96], v[92], s[85])) + k.emit(v_mfma_16x16x32(v[100:103], v[158:161], v[54:57], v[100:103], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[36], v[104], v[100], s[85])) + k.emit(v_perm_b32_e64(v[37], v[112], v[108], s[85])) + k.emit(v_mfma_16x16x32(v[104:107], v[158:161], v[58:61], v[104:107], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[108:111], v[158:161], v[62:65], v[108:111], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[38], v[88], v[84], s[86])) + k.emit(v_perm_b32_e64(v[39], v[96], v[92], s[86])) + k.emit(v_mfma_16x16x32(v[112:115], v[158:161], v[66:69], v[112:115], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[40], v[104], v[100], s[86])) + k.emit(v_perm_b32_e64(v[41], v[112], v[108], s[86])) + k.emit(v_mfma_16x16x32(v[116:119], v[158:161], v[70:73], v[116:119], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[120:123], v[158:161], v[74:77], v[120:123], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[42], v[89], v[85], s[85])) + k.emit(v_perm_b32_e64(v[43], v[97], v[93], s[85])) + k.emit(v_mfma_16x16x32(v[124:127], v[158:161], v[78:81], v[124:127], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[44], v[105], v[101], s[85])) + k.emit(v_perm_b32_e64(v[45], v[113], v[109], s[85])) + k.emit(v_mfma_16x16x32(v[128:131], v[162:165], v[50:53], v[128:131], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[132:135], v[162:165], v[54:57], v[132:135], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[46], v[89], v[85], s[86])) + k.emit(v_perm_b32_e64(v[47], v[97], v[93], s[86])) + k.emit(v_mfma_16x16x32(v[136:139], v[162:165], v[58:61], v[136:139], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[48], v[105], v[101], s[86])) + k.emit(v_perm_b32_e64(v[49], v[113], v[109], s[86])) + k.emit(v_mfma_16x16x32(v[140:143], v[162:165], v[62:65], v[140:143], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[144:147], v[162:165], v[66:69], v[144:147], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[148:151], v[162:165], v[70:73], v[148:151], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[152:155], v[162:165], v[74:77], v[152:155], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[156:159], v[162:165], v[78:81], v[156:159], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[160:163], v[166:169], v[50:53], v[160:163], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[164:167], v[166:169], v[54:57], v[164:167], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[168:171], v[166:169], v[58:61], v[168:171], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[172:175], v[166:169], v[62:65], v[172:175], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[176:179], v[166:169], v[66:69], v[176:179], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[180:183], v[166:169], v[70:73], v[180:183], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[184:187], v[166:169], v[74:77], v[184:187], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[188:191], v[166:169], v[78:81], v[188:191], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[192:195], v[170:173], v[50:53], v[192:195], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[196:199], v[170:173], v[54:57], v[196:199], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[200:203], v[170:173], v[58:61], v[200:203], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[204:207], v[170:173], v[62:65], v[204:207], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[208:211], v[170:173], v[66:69], v[208:211], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[212:215], v[170:173], v[70:73], v[212:215], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[216:219], v[170:173], v[74:77], v[216:219], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[220:223], v[170:173], v[78:81], v[220:223], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[224:227], v[174:177], v[50:53], v[224:227], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[228:231], v[174:177], v[54:57], v[228:231], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[232:235], v[174:177], v[58:61], v[232:235], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[236:239], v[174:177], v[62:65], v[236:239], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[240:243], v[174:177], v[66:69], v[240:243], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[244:247], v[174:177], v[70:73], v[244:247], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[248:251], v[174:177], v[74:77], v[248:251], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[252:255], v[174:177], v[78:81], v[252:255], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.label('toPGR1') + k.emit(s_waitcnt()) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[0:3], v[114:117], v[18:21], v[0:3], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[82:85], v[16], v[0], v[0], 0, 0, 64)) + k.emit(ds_read_b128(v[86:89], v[16], v[0], v[0], 0, 0, 66)) + k.emit(v_mfma_16x16x32(v[4:7], v[114:117], v[22:25], v[4:7], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[8:11], v[114:117], v[26:29], v[8:11], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[90:93], v[16], v[0], v[0], 0, 0, 68)) + k.emit(ds_read_b128(v[94:97], v[16], v[0], v[0], 0, 0, 70)) + k.emit(v_mfma_16x16x32(v[12:15], v[114:117], v[30:33], v[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[16:19], v[114:117], v[34:37], v[16:19], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[98:101], v[16], v[0], v[0], 0, 0, 72)) + k.emit(ds_read_b128(v[102:105], v[16], v[0], v[0], 0, 0, 74)) + k.emit(v_mfma_16x16x32(v[20:23], v[114:117], v[38:41], v[20:23], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[24:27], v[114:117], v[42:45], v[24:27], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[106:109], v[16], v[0], v[0], 0, 0, 76)) + k.emit(ds_read_b128(v[110:113], v[16], v[0], v[0], 0, 0, 78)) + k.emit(v_mfma_16x16x32(v[28:31], v[114:117], v[46:49], v[28:31], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[32:35], v[118:121], v[18:21], v[32:35], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=4) + k.emit(v_perm_b32_e64(v[50], v[86], v[82], s[85])) + k.emit(v_perm_b32_e64(v[51], v[94], v[90], s[85])) + k.emit(v_mfma_16x16x32(v[36:39], v[118:121], v[22:25], v[36:39], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[146:149], v[17], v[0], v[0], 0, 64)) + k.emit(v_mfma_16x16x32(v[40:43], v[118:121], v[26:29], v[40:43], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[44:47], v[118:121], v[30:33], v[44:47], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[150:153], v[17], v[0], v[0], 0, 192)) + k.emit(v_mfma_16x16x32(v[48:51], v[118:121], v[34:37], v[48:51], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=1) + k.emit(v_mfma_16x16x32(v[52:55], v[118:121], v[38:41], v[52:55], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[56:59], v[118:121], v[42:45], v[56:59], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[60:63], v[118:121], v[46:49], v[60:63], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[154:157], v[17], v[0], v[0], 0, 64, 1)) + k.emit(v_mfma_16x16x32(v[64:67], v[122:125], v[18:21], v[64:67], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[52], v[102], v[98], s[85])) + k.emit(v_perm_b32_e64(v[53], v[110], v[106], s[85])) + k.emit(v_mfma_16x16x32(v[68:71], v[122:125], v[22:25], v[68:71], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[72:75], v[122:125], v[26:29], v[72:75], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[158:161], v[17], v[0], v[0], 0, 192, 1)) + k.emit(v_mfma_16x16x32(v[76:79], v[122:125], v[30:33], v[76:79], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[54], v[86], v[82], s[86])) + k.emit(v_perm_b32_e64(v[55], v[94], v[90], s[86])) + k.emit(v_mfma_16x16x32(v[80:83], v[122:125], v[34:37], v[80:83], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[84:87], v[122:125], v[38:41], v[84:87], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[162:165], v[17], v[0], v[0], 0, 64, 2)) + k.emit(v_mfma_16x16x32(v[88:91], v[122:125], v[42:45], v[88:91], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[56], v[102], v[98], s[86])) + k.emit(v_perm_b32_e64(v[57], v[110], v[106], s[86])) + k.emit(v_mfma_16x16x32(v[92:95], v[122:125], v[46:49], v[92:95], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[96:99], v[126:129], v[18:21], v[96:99], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[166:169], v[17], v[0], v[0], 0, 192, 2)) + k.emit(v_mfma_16x16x32(v[100:103], v[126:129], v[22:25], v[100:103], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[58], v[87], v[83], s[85])) + k.emit(v_perm_b32_e64(v[59], v[95], v[91], s[85])) + k.emit(v_mfma_16x16x32(v[104:107], v[126:129], v[26:29], v[104:107], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[108:111], v[126:129], v[30:33], v[108:111], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[170:173], v[17], v[0], v[0], 0, 64, 3)) + k.emit(v_mfma_16x16x32(v[112:115], v[126:129], v[34:37], v[112:115], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[60], v[103], v[99], s[85])) + k.emit(v_perm_b32_e64(v[61], v[111], v[107], s[85])) + k.emit(v_mfma_16x16x32(v[116:119], v[126:129], v[38:41], v[116:119], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[62], v[87], v[83], s[86])) + k.emit(v_perm_b32_e64(v[63], v[95], v[91], s[86])) + k.emit(v_mfma_16x16x32(v[120:123], v[126:129], v[42:45], v[120:123], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(ds_read_b128(v[174:177], v[17], v[0], v[0], 0, 192, 3)) + k.emit(v_mfma_16x16x32(v[124:127], v[126:129], v[46:49], v[124:127], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[64], v[103], v[99], s[86])) + k.emit(v_perm_b32_e64(v[65], v[111], v[107], s[86])) + k.emit(v_mfma_16x16x32(v[128:131], v[130:133], v[18:21], v[128:131], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[66], v[88], v[84], s[85])) + k.emit(v_perm_b32_e64(v[67], v[96], v[92], s[85])) + k.emit(v_mfma_16x16x32(v[132:135], v[130:133], v[22:25], v[132:135], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[68], v[104], v[100], s[85])) + k.emit(v_perm_b32_e64(v[69], v[112], v[108], s[85])) + k.emit(v_mfma_16x16x32(v[136:139], v[130:133], v[26:29], v[136:139], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[70], v[88], v[84], s[86])) + k.emit(v_perm_b32_e64(v[71], v[96], v[92], s[86])) + k.emit(v_mfma_16x16x32(v[140:143], v[130:133], v[30:33], v[140:143], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[72], v[104], v[100], s[86])) + k.emit(v_perm_b32_e64(v[73], v[112], v[108], s[86])) + k.emit(v_mfma_16x16x32(v[144:147], v[130:133], v[34:37], v[144:147], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=0) + k.emit(v_perm_b32_e64(v[74], v[89], v[85], s[85])) + k.emit(v_perm_b32_e64(v[75], v[97], v[93], s[85])) + k.emit(v_mfma_16x16x32(v[148:151], v[130:133], v[38:41], v[148:151], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[76], v[105], v[101], s[85])) + k.emit(v_perm_b32_e64(v[77], v[113], v[109], s[85])) + k.emit(v_mfma_16x16x32(v[152:155], v[130:133], v[42:45], v[152:155], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[78], v[89], v[85], s[86])) + k.emit(v_perm_b32_e64(v[79], v[97], v[93], s[86])) + k.emit(v_mfma_16x16x32(v[156:159], v[130:133], v[46:49], v[156:159], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[80], v[105], v[101], s[86])) + k.emit(v_perm_b32_e64(v[81], v[113], v[109], s[86])) + k.emit(v_mfma_16x16x32(v[160:163], v[134:137], v[18:21], v[160:163], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[164:167], v[134:137], v[22:25], v[164:167], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[168:171], v[134:137], v[26:29], v[168:171], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[172:175], v[134:137], v[30:33], v[172:175], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[176:179], v[134:137], v[34:37], v[176:179], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[180:183], v[134:137], v[38:41], v[180:183], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[184:187], v[134:137], v[42:45], v[184:187], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[188:191], v[134:137], v[46:49], v[188:191], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[192:195], v[138:141], v[18:21], v[192:195], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[196:199], v[138:141], v[22:25], v[196:199], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[200:203], v[138:141], v[26:29], v[200:203], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[204:207], v[138:141], v[30:33], v[204:207], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[208:211], v[138:141], v[34:37], v[208:211], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[212:215], v[138:141], v[38:41], v[212:215], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[216:219], v[138:141], v[42:45], v[216:219], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[220:223], v[138:141], v[46:49], v[220:223], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[224:227], v[142:145], v[18:21], v[224:227], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(vm=17) + k.emit(v_mfma_16x16x32(v[228:231], v[142:145], v[22:25], v[228:231], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[232:235], v[142:145], v[26:29], v[232:235], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[236:239], v[142:145], v[30:33], v[236:239], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[240:243], v[142:145], v[34:37], v[240:243], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[244:247], v[142:145], v[38:41], v[244:247], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[248:251], v[142:145], v[42:45], v[248:251], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[252:255], v[142:145], v[46:49], v[252:255], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[0:3], v[146:149], v[50:53], v[0:3], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[4:7], v[146:149], v[54:57], v[4:7], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[8:11], v[146:149], v[58:61], v[8:11], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(vm=9) + k.emit(v_mfma_16x16x32(v[12:15], v[146:149], v[62:65], v[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[16:19], v[146:149], v[66:69], v[16:19], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_barrier()) + k.emit(v_mfma_16x16x32(v[20:23], v[146:149], v[70:73], v[20:23], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[24:27], v[146:149], v[74:77], v[24:27], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[28:31], v[146:149], v[78:81], v[28:31], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[32:35], v[150:153], v[50:53], v[32:35], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[36:39], v[150:153], v[54:57], v[36:39], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.waitcnt(lgkm=4) + k.emit(v_mfma_16x16x32(v[40:43], v[150:153], v[58:61], v[40:43], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[44:47], v[150:153], v[62:65], v[44:47], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[18], v[86], v[82], s[85])) + k.emit(v_perm_b32_e64(v[19], v[94], v[90], s[85])) + k.emit(v_mfma_16x16x32(v[48:51], v[150:153], v[66:69], v[48:51], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[52:55], v[150:153], v[70:73], v[52:55], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[20], v[102], v[98], s[85])) + k.emit(v_perm_b32_e64(v[21], v[110], v[106], s[85])) + k.emit(v_mfma_16x16x32(v[56:59], v[150:153], v[74:77], v[56:59], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[60:63], v[150:153], v[78:81], v[60:63], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[22], v[86], v[82], s[86])) + k.emit(v_perm_b32_e64(v[23], v[94], v[90], s[86])) + k.emit(v_mfma_16x16x32(v[64:67], v[154:157], v[50:53], v[64:67], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[68:71], v[154:157], v[54:57], v[68:71], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[24], v[102], v[98], s[86])) + k.emit(v_perm_b32_e64(v[25], v[110], v[106], s[86])) + k.emit(v_mfma_16x16x32(v[72:75], v[154:157], v[58:61], v[72:75], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[76:79], v[154:157], v[62:65], v[76:79], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[26], v[87], v[83], s[85])) + k.emit(v_perm_b32_e64(v[27], v[95], v[91], s[85])) + k.emit(v_mfma_16x16x32(v[80:83], v[154:157], v[66:69], v[80:83], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[28], v[103], v[99], s[85])) + k.emit(v_perm_b32_e64(v[29], v[111], v[107], s[85])) + k.emit(v_mfma_16x16x32(v[84:87], v[154:157], v[70:73], v[84:87], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[30], v[87], v[83], s[86])) + k.emit(v_perm_b32_e64(v[31], v[95], v[91], s[86])) + k.emit(v_mfma_16x16x32(v[88:91], v[154:157], v[74:77], v[88:91], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[32], v[103], v[99], s[86])) + k.emit(v_perm_b32_e64(v[33], v[111], v[107], s[86])) + k.emit(v_mfma_16x16x32(v[92:95], v[154:157], v[78:81], v[92:95], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[96:99], v[158:161], v[50:53], v[96:99], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[34], v[88], v[84], s[85])) + k.emit(v_perm_b32_e64(v[35], v[96], v[92], s[85])) + k.emit(v_mfma_16x16x32(v[100:103], v[158:161], v[54:57], v[100:103], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[36], v[104], v[100], s[85])) + k.emit(v_perm_b32_e64(v[37], v[112], v[108], s[85])) + k.emit(v_mfma_16x16x32(v[104:107], v[158:161], v[58:61], v[104:107], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[108:111], v[158:161], v[62:65], v[108:111], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[38], v[88], v[84], s[86])) + k.emit(v_perm_b32_e64(v[39], v[96], v[92], s[86])) + k.emit(v_mfma_16x16x32(v[112:115], v[158:161], v[66:69], v[112:115], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[40], v[104], v[100], s[86])) + k.emit(v_perm_b32_e64(v[41], v[112], v[108], s[86])) + k.emit(v_mfma_16x16x32(v[116:119], v[158:161], v[70:73], v[116:119], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[120:123], v[158:161], v[74:77], v[120:123], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[42], v[89], v[85], s[85])) + k.emit(v_perm_b32_e64(v[43], v[97], v[93], s[85])) + k.emit(v_mfma_16x16x32(v[124:127], v[158:161], v[78:81], v[124:127], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[44], v[105], v[101], s[85])) + k.emit(v_perm_b32_e64(v[45], v[113], v[109], s[85])) + k.emit(v_mfma_16x16x32(v[128:131], v[162:165], v[50:53], v[128:131], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[132:135], v[162:165], v[54:57], v[132:135], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[46], v[89], v[85], s[86])) + k.emit(v_perm_b32_e64(v[47], v[97], v[93], s[86])) + k.emit(v_mfma_16x16x32(v[136:139], v[162:165], v[58:61], v[136:139], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_perm_b32_e64(v[48], v[105], v[101], s[86])) + k.emit(v_perm_b32_e64(v[49], v[113], v[109], s[86])) + k.emit(v_mfma_16x16x32(v[140:143], v[162:165], v[62:65], v[140:143], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[144:147], v[162:165], v[66:69], v[144:147], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[148:151], v[162:165], v[70:73], v[148:151], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[152:155], v[162:165], v[74:77], v[152:155], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[156:159], v[162:165], v[78:81], v[156:159], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[160:163], v[166:169], v[50:53], v[160:163], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[164:167], v[166:169], v[54:57], v[164:167], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[168:171], v[166:169], v[58:61], v[168:171], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[172:175], v[166:169], v[62:65], v[172:175], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[176:179], v[166:169], v[66:69], v[176:179], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[180:183], v[166:169], v[70:73], v[180:183], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[184:187], v[166:169], v[74:77], v[184:187], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[188:191], v[166:169], v[78:81], v[188:191], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[192:195], v[170:173], v[50:53], v[192:195], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[196:199], v[170:173], v[54:57], v[196:199], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[200:203], v[170:173], v[58:61], v[200:203], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[204:207], v[170:173], v[62:65], v[204:207], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[208:211], v[170:173], v[66:69], v[208:211], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[212:215], v[170:173], v[70:73], v[212:215], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[216:219], v[170:173], v[74:77], v[216:219], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[220:223], v[170:173], v[78:81], v[220:223], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[224:227], v[174:177], v[50:53], v[224:227], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[228:231], v[174:177], v[54:57], v[228:231], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[232:235], v[174:177], v[58:61], v[232:235], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[236:239], v[174:177], v[62:65], v[236:239], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[240:243], v[174:177], v[66:69], v[240:243], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[244:247], v[174:177], v[70:73], v[244:247], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[248:251], v[174:177], v[74:77], v[248:251], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[252:255], v[174:177], v[78:81], v[252:255], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.label('toPGR1end_OrdNLL') + k.emit(s_xor_b32(s[87], s[55], s[53])) + k.emit(s_min_u32(s[53], s[53], s[87])) + k.emit(s_xor_b32(s[87], s[56], s[54])) + k.emit(s_min_u32(s[54], s[54], s[87])) + k.emit(s_and_b32(s[8], 63, s[23])) + k.emit(s_cmp_lt_u32(s[61], s[46])) + k.emit(s_cmov_b32(s[8], 0)) + k.emit(s_cmp_eq_u32(s[8], 0)) + k.emit(s_mov_b32(s[9], 0)) + k.emit(s_cbranch_scc1(), target='SkipTailLoopL') + k.emit(s_sub_i32(s[88], 3, s[78])) + k.emit(s_cmp_ge_i32(s[88], 0)) + k.emit(s_cbranch_scc0(), target='Negative_LHNOKZ26V2FLOONQ') + k.emit(s_mul_hi_u32(s[89], s[88], s[83])) + k.emit(s_mul_i32(s[88], s[88], s[83])) + k.emit(s_branch(), target='MultiplyDone_L9DK3KJL31S8WWGN') + k.label('Negative_LHNOKZ26V2FLOONQ') + k.emit(s_abs_i32(s[88], s[88])) + k.emit(s_mul_hi_u32(s[89], s[88], s[83])) + k.emit(s_mul_i32(s[88], s[88], s[83])) + k.emit(s_xor_b32(s[88], s[88], -1)) + k.emit(s_xor_b32(s[89], s[89], -1)) + k.emit(s_add_u32(s[88], s[88], 1)) + k.emit(s_addc_u32(s[89], s[89], 0)) + k.label('MultiplyDone_L9DK3KJL31S8WWGN') + k.emit(s_sub_u32(s[88], s[88], s[79])) + k.emit(s_subb_u32(s[89], s[89], s[80])) + k.emit(s_add_u32(s[68], s[68], s[88])) + k.emit(s_addc_u32(s[69], s[69], s[89])) + k.emit(s_sub_u32(s[62], s[62], s[88])) + k.emit(s_subb_u32(s[63], s[63], s[89])) + k.emit(s_cmp_eq_u32(s[63], 0)) + k.emit(s_cselect_b32(s[70], s[62], -1)) + k.emit(s_sub_i32(s[88], 3, s[78])) + k.emit(s_cmp_ge_i32(s[88], 0)) + k.emit(s_cbranch_scc0(), target='Negative_3U2TZUPK3AVX5ODG') + k.emit(s_mul_hi_u32(s[89], s[88], s[84])) + k.emit(s_mul_i32(s[88], s[88], s[84])) + k.emit(s_branch(), target='MultiplyDone_NW6XNGOG77EAT0NM') + k.label('Negative_3U2TZUPK3AVX5ODG') + k.emit(s_abs_i32(s[88], s[88])) + k.emit(s_mul_hi_u32(s[89], s[88], s[84])) + k.emit(s_mul_i32(s[88], s[88], s[84])) + k.emit(s_xor_b32(s[88], s[88], -1)) + k.emit(s_xor_b32(s[89], s[89], -1)) + k.emit(s_add_u32(s[88], s[88], 1)) + k.emit(s_addc_u32(s[89], s[89], 0)) + k.label('MultiplyDone_NW6XNGOG77EAT0NM') + k.emit(s_sub_u32(s[88], s[88], s[81])) + k.emit(s_subb_u32(s[89], s[89], s[82])) + k.emit(s_add_u32(s[72], s[72], s[88])) + k.emit(s_addc_u32(s[73], s[73], s[89])) + k.emit(s_sub_u32(s[76], s[76], s[88])) + k.emit(s_subb_u32(s[77], s[77], s[89])) + k.emit(s_cmp_eq_u32(s[77], 0)) + k.emit(s_cselect_b32(s[74], s[76], -1)) + k.emit(s_mov_b32(M0, s[53])) + k.waitcnt(lgkm=0) + k.emit(s_barrier()) + k.emit(buffer_load_short_d16(v[18], v[0], s[68:71], 0, 0, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[84], v[0], s[68:71], 0, 2, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[19], v[0], s[68:71], 0, 4, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[85], v[0], s[68:71], 0, 6, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[20], v[0], s[68:71], 0, 8, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[86], v[0], s[68:71], 0, 10, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[21], v[0], s[68:71], 0, 12, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[87], v[0], s[68:71], 0, 14, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[22], v[1], s[68:71], 0, 0, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[88], v[1], s[68:71], 0, 2, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[23], v[1], s[68:71], 0, 4, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[89], v[1], s[68:71], 0, 6, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[24], v[1], s[68:71], 0, 8, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[90], v[1], s[68:71], 0, 10, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[25], v[1], s[68:71], 0, 12, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[91], v[1], s[68:71], 0, 14, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[26], v[2], s[68:71], 0, 0, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[92], v[2], s[68:71], 0, 2, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[27], v[2], s[68:71], 0, 4, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[93], v[2], s[68:71], 0, 6, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[28], v[2], s[68:71], 0, 8, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[94], v[2], s[68:71], 0, 10, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[29], v[2], s[68:71], 0, 12, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[95], v[2], s[68:71], 0, 14, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[30], v[3], s[68:71], 0, 0, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[96], v[3], s[68:71], 0, 2, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[31], v[3], s[68:71], 0, 4, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[97], v[3], s[68:71], 0, 6, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[32], v[3], s[68:71], 0, 8, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[98], v[3], s[68:71], 0, 10, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[33], v[3], s[68:71], 0, 12, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[99], v[3], s[68:71], 0, 14, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[34], v[4], s[68:71], 0, 0, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[100], v[4], s[68:71], 0, 2, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[35], v[4], s[68:71], 0, 4, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[101], v[4], s[68:71], 0, 6, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[36], v[4], s[68:71], 0, 8, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[102], v[4], s[68:71], 0, 10, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[37], v[4], s[68:71], 0, 12, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[103], v[4], s[68:71], 0, 14, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[38], v[5], s[68:71], 0, 0, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[104], v[5], s[68:71], 0, 2, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[39], v[5], s[68:71], 0, 4, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[105], v[5], s[68:71], 0, 6, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[40], v[5], s[68:71], 0, 8, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[106], v[5], s[68:71], 0, 10, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[41], v[5], s[68:71], 0, 12, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[107], v[5], s[68:71], 0, 14, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[42], v[6], s[68:71], 0, 0, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[108], v[6], s[68:71], 0, 2, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[43], v[6], s[68:71], 0, 4, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[109], v[6], s[68:71], 0, 6, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[44], v[6], s[68:71], 0, 8, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[110], v[6], s[68:71], 0, 10, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[45], v[6], s[68:71], 0, 12, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[111], v[6], s[68:71], 0, 14, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[46], v[7], s[68:71], 0, 0, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[112], v[7], s[68:71], 0, 2, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[47], v[7], s[68:71], 0, 4, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[113], v[7], s[68:71], 0, 6, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[48], v[7], s[68:71], 0, 8, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[114], v[7], s[68:71], 0, 10, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16(v[49], v[7], s[68:71], 0, 12, 1, 0, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[115], v[7], s[68:71], 0, 14, 1, 0, 0, 1)) + k.waitcnt(vm=0) + k.emit(v_or_b32_e32(v[18], v[18], v[84])) + k.emit(v_or_b32_e32(v[19], v[19], v[85])) + k.emit(v_or_b32_e32(v[20], v[20], v[86])) + k.emit(v_or_b32_e32(v[21], v[21], v[87])) + k.emit(v_or_b32_e32(v[22], v[22], v[88])) + k.emit(v_or_b32_e32(v[23], v[23], v[89])) + k.emit(v_or_b32_e32(v[24], v[24], v[90])) + k.emit(v_or_b32_e32(v[25], v[25], v[91])) + k.emit(v_or_b32_e32(v[26], v[26], v[92])) + k.emit(v_or_b32_e32(v[27], v[27], v[93])) + k.emit(v_or_b32_e32(v[28], v[28], v[94])) + k.emit(v_or_b32_e32(v[29], v[29], v[95])) + k.emit(v_or_b32_e32(v[30], v[30], v[96])) + k.emit(v_or_b32_e32(v[31], v[31], v[97])) + k.emit(v_or_b32_e32(v[32], v[32], v[98])) + k.emit(v_or_b32_e32(v[33], v[33], v[99])) + k.emit(v_or_b32_e32(v[34], v[34], v[100])) + k.emit(v_or_b32_e32(v[35], v[35], v[101])) + k.emit(v_or_b32_e32(v[36], v[36], v[102])) + k.emit(v_or_b32_e32(v[37], v[37], v[103])) + k.emit(v_or_b32_e32(v[38], v[38], v[104])) + k.emit(v_or_b32_e32(v[39], v[39], v[105])) + k.emit(v_or_b32_e32(v[40], v[40], v[106])) + k.emit(v_or_b32_e32(v[41], v[41], v[107])) + k.emit(v_or_b32_e32(v[42], v[42], v[108])) + k.emit(v_or_b32_e32(v[43], v[43], v[109])) + k.emit(v_or_b32_e32(v[44], v[44], v[110])) + k.emit(v_or_b32_e32(v[45], v[45], v[111])) + k.emit(v_or_b32_e32(v[46], v[46], v[112])) + k.emit(v_or_b32_e32(v[47], v[47], v[113])) + k.emit(v_or_b32_e32(v[48], v[48], v[114])) + k.emit(v_or_b32_e32(v[49], v[49], v[115])) + k.emit(s_mov_b32(M0, 133120)) + k.emit(s_mov_b32(M0, s[54])) + k.emit(buffer_load_short_d16(v[50], v[8], s[72:75], 0, 0, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[84], v[8], s[72:75], 0, 2, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[51], v[8], s[72:75], 0, 4, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[85], v[8], s[72:75], 0, 6, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[52], v[8], s[72:75], 0, 8, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[86], v[8], s[72:75], 0, 10, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[53], v[8], s[72:75], 0, 12, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[87], v[8], s[72:75], 0, 14, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[54], v[9], s[72:75], 0, 0, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[88], v[9], s[72:75], 0, 2, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[55], v[9], s[72:75], 0, 4, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[89], v[9], s[72:75], 0, 6, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[56], v[9], s[72:75], 0, 8, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[90], v[9], s[72:75], 0, 10, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[57], v[9], s[72:75], 0, 12, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[91], v[9], s[72:75], 0, 14, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[58], v[10], s[72:75], 0, 0, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[92], v[10], s[72:75], 0, 2, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[59], v[10], s[72:75], 0, 4, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[93], v[10], s[72:75], 0, 6, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[60], v[10], s[72:75], 0, 8, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[94], v[10], s[72:75], 0, 10, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[61], v[10], s[72:75], 0, 12, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[95], v[10], s[72:75], 0, 14, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[62], v[11], s[72:75], 0, 0, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[96], v[11], s[72:75], 0, 2, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[63], v[11], s[72:75], 0, 4, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[97], v[11], s[72:75], 0, 6, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[64], v[11], s[72:75], 0, 8, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[98], v[11], s[72:75], 0, 10, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[65], v[11], s[72:75], 0, 12, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[99], v[11], s[72:75], 0, 14, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[66], v[12], s[72:75], 0, 0, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[100], v[12], s[72:75], 0, 2, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[67], v[12], s[72:75], 0, 4, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[101], v[12], s[72:75], 0, 6, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[68], v[12], s[72:75], 0, 8, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[102], v[12], s[72:75], 0, 10, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[69], v[12], s[72:75], 0, 12, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[103], v[12], s[72:75], 0, 14, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[70], v[13], s[72:75], 0, 0, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[104], v[13], s[72:75], 0, 2, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[71], v[13], s[72:75], 0, 4, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[105], v[13], s[72:75], 0, 6, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[72], v[13], s[72:75], 0, 8, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[106], v[13], s[72:75], 0, 10, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[73], v[13], s[72:75], 0, 12, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[107], v[13], s[72:75], 0, 14, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[74], v[14], s[72:75], 0, 0, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[108], v[14], s[72:75], 0, 2, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[75], v[14], s[72:75], 0, 4, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[109], v[14], s[72:75], 0, 6, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[76], v[14], s[72:75], 0, 8, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[110], v[14], s[72:75], 0, 10, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[77], v[14], s[72:75], 0, 12, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[111], v[14], s[72:75], 0, 14, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[78], v[15], s[72:75], 0, 0, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[112], v[15], s[72:75], 0, 2, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[79], v[15], s[72:75], 0, 4, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[113], v[15], s[72:75], 0, 6, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[80], v[15], s[72:75], 0, 8, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[114], v[15], s[72:75], 0, 10, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16(v[81], v[15], s[72:75], 0, 12, 1, 0, 0, 0, 1, 0, 1)) + k.emit(buffer_load_short_d16_hi(v[115], v[15], s[72:75], 0, 14, 1, 0, 0, 0, 1, 0, 1)) + k.waitcnt(vm=0) + k.emit(v_or_b32_e32(v[50], v[50], v[84])) + k.emit(v_or_b32_e32(v[51], v[51], v[85])) + k.emit(v_or_b32_e32(v[52], v[52], v[86])) + k.emit(v_or_b32_e32(v[53], v[53], v[87])) + k.emit(v_or_b32_e32(v[54], v[54], v[88])) + k.emit(v_or_b32_e32(v[55], v[55], v[89])) + k.emit(v_or_b32_e32(v[56], v[56], v[90])) + k.emit(v_or_b32_e32(v[57], v[57], v[91])) + k.emit(v_or_b32_e32(v[58], v[58], v[92])) + k.emit(v_or_b32_e32(v[59], v[59], v[93])) + k.emit(v_or_b32_e32(v[60], v[60], v[94])) + k.emit(v_or_b32_e32(v[61], v[61], v[95])) + k.emit(v_or_b32_e32(v[62], v[62], v[96])) + k.emit(v_or_b32_e32(v[63], v[63], v[97])) + k.emit(v_or_b32_e32(v[64], v[64], v[98])) + k.emit(v_or_b32_e32(v[65], v[65], v[99])) + k.emit(v_or_b32_e32(v[66], v[66], v[100])) + k.emit(v_or_b32_e32(v[67], v[67], v[101])) + k.emit(v_or_b32_e32(v[68], v[68], v[102])) + k.emit(v_or_b32_e32(v[69], v[69], v[103])) + k.emit(v_or_b32_e32(v[70], v[70], v[104])) + k.emit(v_or_b32_e32(v[71], v[71], v[105])) + k.emit(v_or_b32_e32(v[72], v[72], v[106])) + k.emit(v_or_b32_e32(v[73], v[73], v[107])) + k.emit(v_or_b32_e32(v[74], v[74], v[108])) + k.emit(v_or_b32_e32(v[75], v[75], v[109])) + k.emit(v_or_b32_e32(v[76], v[76], v[110])) + k.emit(v_or_b32_e32(v[77], v[77], v[111])) + k.emit(v_or_b32_e32(v[78], v[78], v[112])) + k.emit(v_or_b32_e32(v[79], v[79], v[113])) + k.emit(v_or_b32_e32(v[80], v[80], v[114])) + k.emit(v_or_b32_e32(v[81], v[81], v[115])) + k.emit(s_mov_b32(M0, 133120)) + k.waitcnt(vm=0) + k.emit(s_barrier()) + k.emit(v_and_b32_e32(v[82], 63, v[180])) + k.emit(v_lshlrev_b32_e32(v[82], 4, v[82])) + k.emit(v_add_u32_e32(v[82], s[53], v[82])) + k.emit(v_and_b32_e32(v[83], 63, v[180])) + k.emit(v_lshlrev_b32_e32(v[83], 4, v[83])) + k.emit(v_add_u32_e32(v[83], s[54], v[83])) + k.emit(ds_write_b128(v[0], v[82], v[18:21])) + k.emit(ds_write_b128(v[0], v[82], v[22:25], v[0], 0, 0, 16)) + k.emit(ds_write_b128(v[0], v[82], v[26:29], v[0], 0, 0, 32)) + k.emit(ds_write_b128(v[0], v[82], v[30:33], v[0], 0, 0, 48)) + k.emit(ds_write_b128(v[0], v[82], v[34:37], v[0], 0, 0, 64)) + k.emit(ds_write_b128(v[0], v[82], v[38:41], v[0], 0, 0, 80)) + k.emit(ds_write_b128(v[0], v[82], v[42:45], v[0], 0, 0, 96)) + k.emit(ds_write_b128(v[0], v[82], v[46:49], v[0], 0, 0, 112)) + k.emit(ds_write_b128(v[0], v[83], v[50:53])) + k.emit(ds_write_b128(v[0], v[83], v[54:57], v[0], 0, 128, 16)) + k.emit(ds_write_b128(v[0], v[83], v[58:61], v[0], 0, 0, 33)) + k.emit(ds_write_b128(v[0], v[83], v[62:65], v[0], 0, 128, 49)) + k.emit(ds_write_b128(v[0], v[83], v[66:69], v[0], 0, 0, 66)) + k.emit(ds_write_b128(v[0], v[83], v[70:73], v[0], 0, 128, 82)) + k.emit(ds_write_b128(v[0], v[83], v[74:77], v[0], 0, 0, 99)) + k.emit(ds_write_b128(v[0], v[83], v[78:81], v[0], 0, 128, 115)) + k.waitcnt(lgkm=0) + k.emit(s_barrier()) + k.emit(v_xor_b32_e32(v[181], v[178], v[16])) + k.emit(v_min_i32_e32(v[16], v[16], v[181])) + k.emit(v_xor_b32_e32(v[181], v[179], v[17])) + k.emit(v_min_i32_e32(v[17], v[17], v[181])) + k.label('TailLoopBeginL') + k.emit(ds_read_b128(v[82:85], v[16])) + k.emit(ds_read_b128(v[86:89], v[16], v[0], v[0], 0, 0, 2)) + k.emit(ds_read_b128(v[90:93], v[16], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[94:97], v[16], v[0], v[0], 0, 0, 6)) + k.emit(ds_read_b128(v[98:101], v[16], v[0], v[0], 0, 0, 8)) + k.emit(ds_read_b128(v[102:105], v[16], v[0], v[0], 0, 0, 10)) + k.emit(ds_read_b128(v[106:109], v[16], v[0], v[0], 0, 0, 12)) + k.emit(ds_read_b128(v[110:113], v[16], v[0], v[0], 0, 0, 14)) + k.emit(ds_read_b128(v[114:117], v[17])) + k.emit(ds_read_b128(v[118:121], v[17], v[0], v[0], 0, 128)) + k.emit(ds_read_b128(v[122:125], v[17], v[0], v[0], 0, 0, 1)) + k.emit(ds_read_b128(v[126:129], v[17], v[0], v[0], 0, 128, 1)) + k.emit(ds_read_b128(v[130:133], v[17], v[0], v[0], 0, 0, 2)) + k.emit(ds_read_b128(v[134:137], v[17], v[0], v[0], 0, 128, 2)) + k.emit(ds_read_b128(v[138:141], v[17], v[0], v[0], 0, 0, 3)) + k.emit(ds_read_b128(v[142:145], v[17], v[0], v[0], 0, 128, 3)) + k.emit(s_mov_b32(s[87], 16384)) + k.emit(v_add_co_u32_e32(v[16], s[87], v[16])) + k.emit(s_mov_b32(s[87], 64)) + k.emit(v_add_co_u32_e32(v[17], s[87], v[17])) + k.waitcnt(lgkm=0) + k.emit(v_perm_b32_e64(v[18], v[86], v[82], s[85])) + k.emit(v_perm_b32_e64(v[19], v[94], v[90], s[85])) + k.emit(v_perm_b32_e64(v[20], v[102], v[98], s[85])) + k.emit(v_perm_b32_e64(v[21], v[110], v[106], s[85])) + k.emit(v_perm_b32_e64(v[22], v[86], v[82], s[86])) + k.emit(v_perm_b32_e64(v[23], v[94], v[90], s[86])) + k.emit(v_perm_b32_e64(v[24], v[102], v[98], s[86])) + k.emit(v_perm_b32_e64(v[25], v[110], v[106], s[86])) + k.emit(v_perm_b32_e64(v[26], v[87], v[83], s[85])) + k.emit(v_perm_b32_e64(v[27], v[95], v[91], s[85])) + k.emit(v_perm_b32_e64(v[28], v[103], v[99], s[85])) + k.emit(v_perm_b32_e64(v[29], v[111], v[107], s[85])) + k.emit(v_perm_b32_e64(v[30], v[87], v[83], s[86])) + k.emit(v_perm_b32_e64(v[31], v[95], v[91], s[86])) + k.emit(v_perm_b32_e64(v[32], v[103], v[99], s[86])) + k.emit(v_perm_b32_e64(v[33], v[111], v[107], s[86])) + k.emit(v_perm_b32_e64(v[34], v[88], v[84], s[85])) + k.emit(v_perm_b32_e64(v[35], v[96], v[92], s[85])) + k.emit(v_perm_b32_e64(v[36], v[104], v[100], s[85])) + k.emit(v_perm_b32_e64(v[37], v[112], v[108], s[85])) + k.emit(v_perm_b32_e64(v[38], v[88], v[84], s[86])) + k.emit(v_perm_b32_e64(v[39], v[96], v[92], s[86])) + k.emit(v_perm_b32_e64(v[40], v[104], v[100], s[86])) + k.emit(v_perm_b32_e64(v[41], v[112], v[108], s[86])) + k.emit(v_perm_b32_e64(v[42], v[89], v[85], s[85])) + k.emit(v_perm_b32_e64(v[43], v[97], v[93], s[85])) + k.emit(v_perm_b32_e64(v[44], v[105], v[101], s[85])) + k.emit(v_perm_b32_e64(v[45], v[113], v[109], s[85])) + k.emit(v_perm_b32_e64(v[46], v[89], v[85], s[86])) + k.emit(v_perm_b32_e64(v[47], v[97], v[93], s[86])) + k.emit(v_perm_b32_e64(v[48], v[105], v[101], s[86])) + k.emit(v_perm_b32_e64(v[49], v[113], v[109], s[86])) + k.emit(v_and_b32_e32(v[181], 63, v[180])) + k.emit(v_lshrrev_b32_e32(v[181], 4, v[181])) + k.emit(v_lshlrev_b32_e32(v[181], 3, v[181])) + k.emit(v_add_u32_e64(v[182], v[181], 0)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[18], v[18], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[22], v[22], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[26], v[26], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[30], v[30], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[34], v[34], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[38], v[38], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[42], v[42], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[46], v[46], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[19], v[19], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[23], v[23], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[27], v[27], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[31], v[31], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[35], v[35], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[39], v[39], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[43], v[43], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[47], v[47], 0, s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[20], v[20], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[24], v[24], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[28], v[28], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[32], v[32], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[36], v[36], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[40], v[40], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[44], v[44], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[48], v[48], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[21], v[21], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[25], v[25], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[29], v[29], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[33], v[33], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[37], v[37], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[41], v[41], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[45], v[45], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[49], v[49], 0, s[88:89])) + k.emit(v_and_b32_e32(v[181], 63, v[180])) + k.emit(v_lshrrev_b32_e32(v[181], 4, v[181])) + k.emit(v_lshlrev_b32_e32(v[181], 3, v[181])) + k.emit(v_add_u32_e64(v[182], v[181], 0)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[114], v[114], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[118], v[118], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[122], v[122], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[126], v[126], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[130], v[130], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[134], v[134], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[138], v[138], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[142], v[142], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[115], v[115], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[119], v[119], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[123], v[123], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[127], v[127], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[131], v[131], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[135], v[135], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[139], v[139], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[143], v[143], 0, s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[116], v[116], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[120], v[120], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[124], v[124], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[128], v[128], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[132], v[132], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[136], v[136], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[140], v[140], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[144], v[144], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[117], v[117], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[121], v[121], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[125], v[125], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[129], v[129], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[133], v[133], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[137], v[137], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[141], v[141], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[145], v[145], 0, s[88:89])) + k.emit(s_and_b32(s[87], s[23], 7)) + k.emit(s_cmp_eq_u32(s[87], 0)) + k.emit(s_cbranch_scc1(), target='TailLoop_SkipZeroOutMask_0FMPG10PI1CDGWZ9') + k.emit(s_and_b32(s[87], s[8], 7)) + k.emit(s_sub_u32(s[87], 8, s[87])) + k.emit(s_lshl_b32(s[87], s[87], 4)) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[18:19])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[20:21])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[18], v[18], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[19], v[19], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[20], v[20], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[21], v[21], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[22:23])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[24:25])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[22], v[22], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[23], v[23], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[24], v[24], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[25], v[25], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[26:27])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[28:29])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[26], v[26], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[27], v[27], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[28], v[28], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[29], v[29], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[30:31])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[32:33])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[30], v[30], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[31], v[31], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[32], v[32], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[33], v[33], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[34:35])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[36:37])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[34], v[34], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[35], v[35], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[36], v[36], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[37], v[37], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[38:39])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[40:41])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[38], v[38], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[39], v[39], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[40], v[40], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[41], v[41], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[42:43])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[44:45])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[42], v[42], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[43], v[43], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[44], v[44], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[45], v[45], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[46:47])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[48:49])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[46], v[46], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[47], v[47], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[48], v[48], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[49], v[49], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[114:115])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[116:117])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[114], v[114], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[115], v[115], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[116], v[116], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[117], v[117], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[118:119])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[120:121])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[118], v[118], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[119], v[119], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[120], v[120], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[121], v[121], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[122:123])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[124:125])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[122], v[122], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[123], v[123], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[124], v[124], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[125], v[125], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[126:127])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[128:129])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[126], v[126], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[127], v[127], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[128], v[128], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[129], v[129], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[130:131])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[132:133])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[130], v[130], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[131], v[131], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[132], v[132], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[133], v[133], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[134:135])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[136:137])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[134], v[134], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[135], v[135], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[136], v[136], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[137], v[137], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[138:139])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[140:141])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[138], v[138], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[139], v[139], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[140], v[140], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[141], v[141], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[142:143])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[144:145])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[142], v[142], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[143], v[143], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[144], v[144], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[145], v[145], v[187], s[88:89])) + k.label('TailLoop_SkipZeroOutMask_0FMPG10PI1CDGWZ9') + k.emit(s_nop(1)) + k.emit(v_mfma_16x16x32(v[0:3], v[114:117], v[18:21], v[0:3], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[4:7], v[114:117], v[22:25], v[4:7], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[8:11], v[114:117], v[26:29], v[8:11], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[12:15], v[114:117], v[30:33], v[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[16:19], v[114:117], v[34:37], v[16:19], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[20:23], v[114:117], v[38:41], v[20:23], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[24:27], v[114:117], v[42:45], v[24:27], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[28:31], v[114:117], v[46:49], v[28:31], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[32:35], v[118:121], v[18:21], v[32:35], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[36:39], v[118:121], v[22:25], v[36:39], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[40:43], v[118:121], v[26:29], v[40:43], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[44:47], v[118:121], v[30:33], v[44:47], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[48:51], v[118:121], v[34:37], v[48:51], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[52:55], v[118:121], v[38:41], v[52:55], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[56:59], v[118:121], v[42:45], v[56:59], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[60:63], v[118:121], v[46:49], v[60:63], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[64:67], v[122:125], v[18:21], v[64:67], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[68:71], v[122:125], v[22:25], v[68:71], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[72:75], v[122:125], v[26:29], v[72:75], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[76:79], v[122:125], v[30:33], v[76:79], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[80:83], v[122:125], v[34:37], v[80:83], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[84:87], v[122:125], v[38:41], v[84:87], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[88:91], v[122:125], v[42:45], v[88:91], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[92:95], v[122:125], v[46:49], v[92:95], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[96:99], v[126:129], v[18:21], v[96:99], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[100:103], v[126:129], v[22:25], v[100:103], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[104:107], v[126:129], v[26:29], v[104:107], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[108:111], v[126:129], v[30:33], v[108:111], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[112:115], v[126:129], v[34:37], v[112:115], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[116:119], v[126:129], v[38:41], v[116:119], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[120:123], v[126:129], v[42:45], v[120:123], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[124:127], v[126:129], v[46:49], v[124:127], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[128:131], v[130:133], v[18:21], v[128:131], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[132:135], v[130:133], v[22:25], v[132:135], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[136:139], v[130:133], v[26:29], v[136:139], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[140:143], v[130:133], v[30:33], v[140:143], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[144:147], v[130:133], v[34:37], v[144:147], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[148:151], v[130:133], v[38:41], v[148:151], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[152:155], v[130:133], v[42:45], v[152:155], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[156:159], v[130:133], v[46:49], v[156:159], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[160:163], v[134:137], v[18:21], v[160:163], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[164:167], v[134:137], v[22:25], v[164:167], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[168:171], v[134:137], v[26:29], v[168:171], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[172:175], v[134:137], v[30:33], v[172:175], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[176:179], v[134:137], v[34:37], v[176:179], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[180:183], v[134:137], v[38:41], v[180:183], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[184:187], v[134:137], v[42:45], v[184:187], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[188:191], v[134:137], v[46:49], v[188:191], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[192:195], v[138:141], v[18:21], v[192:195], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[196:199], v[138:141], v[22:25], v[196:199], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[200:203], v[138:141], v[26:29], v[200:203], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[204:207], v[138:141], v[30:33], v[204:207], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[208:211], v[138:141], v[34:37], v[208:211], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[212:215], v[138:141], v[38:41], v[212:215], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[216:219], v[138:141], v[42:45], v[216:219], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[220:223], v[138:141], v[46:49], v[220:223], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[224:227], v[142:145], v[18:21], v[224:227], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[228:231], v[142:145], v[22:25], v[228:231], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[232:235], v[142:145], v[26:29], v[232:235], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[236:239], v[142:145], v[30:33], v[236:239], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[240:243], v[142:145], v[34:37], v[240:243], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[244:247], v[142:145], v[38:41], v[244:247], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[248:251], v[142:145], v[42:45], v[248:251], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[252:255], v[142:145], v[46:49], v[252:255], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_sub_i32(s[8], s[8], 32)) + k.emit(s_add_u32(s[9], s[9], 32)) + k.emit(s_cmp_le_i32(s[8], 0)) + k.emit(s_cbranch_scc1(), target='TailLoopEndL') + k.emit(ds_read_b128(v[82:85], v[16])) + k.emit(ds_read_b128(v[86:89], v[16], v[0], v[0], 0, 0, 2)) + k.emit(ds_read_b128(v[90:93], v[16], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[94:97], v[16], v[0], v[0], 0, 0, 6)) + k.emit(ds_read_b128(v[98:101], v[16], v[0], v[0], 0, 0, 8)) + k.emit(ds_read_b128(v[102:105], v[16], v[0], v[0], 0, 0, 10)) + k.emit(ds_read_b128(v[106:109], v[16], v[0], v[0], 0, 0, 12)) + k.emit(ds_read_b128(v[110:113], v[16], v[0], v[0], 0, 0, 14)) + k.emit(ds_read_b128(v[146:149], v[17])) + k.emit(ds_read_b128(v[150:153], v[17], v[0], v[0], 0, 128)) + k.emit(ds_read_b128(v[154:157], v[17], v[0], v[0], 0, 0, 1)) + k.emit(ds_read_b128(v[158:161], v[17], v[0], v[0], 0, 128, 1)) + k.emit(ds_read_b128(v[162:165], v[17], v[0], v[0], 0, 0, 2)) + k.emit(ds_read_b128(v[166:169], v[17], v[0], v[0], 0, 128, 2)) + k.emit(ds_read_b128(v[170:173], v[17], v[0], v[0], 0, 0, 3)) + k.emit(ds_read_b128(v[174:177], v[17], v[0], v[0], 0, 128, 3)) + k.emit(s_mov_b32(s[87], 16384)) + k.emit(v_add_co_u32_e32(v[16], s[87], v[16])) + k.emit(s_mov_b32(s[87], 64)) + k.emit(v_add_co_u32_e32(v[17], s[87], v[17])) + k.waitcnt(lgkm=0) + k.emit(v_perm_b32_e64(v[50], v[86], v[82], s[85])) + k.emit(v_perm_b32_e64(v[51], v[94], v[90], s[85])) + k.emit(v_perm_b32_e64(v[52], v[102], v[98], s[85])) + k.emit(v_perm_b32_e64(v[53], v[110], v[106], s[85])) + k.emit(v_perm_b32_e64(v[54], v[86], v[82], s[86])) + k.emit(v_perm_b32_e64(v[55], v[94], v[90], s[86])) + k.emit(v_perm_b32_e64(v[56], v[102], v[98], s[86])) + k.emit(v_perm_b32_e64(v[57], v[110], v[106], s[86])) + k.emit(v_perm_b32_e64(v[58], v[87], v[83], s[85])) + k.emit(v_perm_b32_e64(v[59], v[95], v[91], s[85])) + k.emit(v_perm_b32_e64(v[60], v[103], v[99], s[85])) + k.emit(v_perm_b32_e64(v[61], v[111], v[107], s[85])) + k.emit(v_perm_b32_e64(v[62], v[87], v[83], s[86])) + k.emit(v_perm_b32_e64(v[63], v[95], v[91], s[86])) + k.emit(v_perm_b32_e64(v[64], v[103], v[99], s[86])) + k.emit(v_perm_b32_e64(v[65], v[111], v[107], s[86])) + k.emit(v_perm_b32_e64(v[66], v[88], v[84], s[85])) + k.emit(v_perm_b32_e64(v[67], v[96], v[92], s[85])) + k.emit(v_perm_b32_e64(v[68], v[104], v[100], s[85])) + k.emit(v_perm_b32_e64(v[69], v[112], v[108], s[85])) + k.emit(v_perm_b32_e64(v[70], v[88], v[84], s[86])) + k.emit(v_perm_b32_e64(v[71], v[96], v[92], s[86])) + k.emit(v_perm_b32_e64(v[72], v[104], v[100], s[86])) + k.emit(v_perm_b32_e64(v[73], v[112], v[108], s[86])) + k.emit(v_perm_b32_e64(v[74], v[89], v[85], s[85])) + k.emit(v_perm_b32_e64(v[75], v[97], v[93], s[85])) + k.emit(v_perm_b32_e64(v[76], v[105], v[101], s[85])) + k.emit(v_perm_b32_e64(v[77], v[113], v[109], s[85])) + k.emit(v_perm_b32_e64(v[78], v[89], v[85], s[86])) + k.emit(v_perm_b32_e64(v[79], v[97], v[93], s[86])) + k.emit(v_perm_b32_e64(v[80], v[105], v[101], s[86])) + k.emit(v_perm_b32_e64(v[81], v[113], v[109], s[86])) + k.emit(v_and_b32_e32(v[181], 63, v[180])) + k.emit(v_lshrrev_b32_e32(v[181], 4, v[181])) + k.emit(v_lshlrev_b32_e32(v[181], 3, v[181])) + k.emit(v_add_u32_e64(v[182], v[181], 0)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[50], v[50], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[54], v[54], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[58], v[58], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[62], v[62], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[66], v[66], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[70], v[70], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[74], v[74], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[78], v[78], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[51], v[51], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[55], v[55], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[59], v[59], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[63], v[63], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[67], v[67], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[71], v[71], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[75], v[75], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[79], v[79], 0, s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[52], v[52], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[56], v[56], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[60], v[60], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[64], v[64], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[68], v[68], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[72], v[72], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[76], v[76], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[80], v[80], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[53], v[53], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[57], v[57], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[61], v[61], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[65], v[65], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[69], v[69], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[73], v[73], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[77], v[77], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[81], v[81], 0, s[88:89])) + k.emit(v_and_b32_e32(v[181], 63, v[180])) + k.emit(v_lshrrev_b32_e32(v[181], 4, v[181])) + k.emit(v_lshlrev_b32_e32(v[181], 3, v[181])) + k.emit(v_add_u32_e64(v[182], v[181], 0)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[146], v[146], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[150], v[150], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[154], v[154], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[158], v[158], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[162], v[162], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[166], v[166], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[170], v[170], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[174], v[174], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[147], v[147], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[151], v[151], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[155], v[155], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[159], v[159], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[163], v[163], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[167], v[167], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[171], v[171], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[175], v[175], 0, s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[148], v[148], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[152], v[152], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[156], v[156], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[160], v[160], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[164], v[164], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[168], v[168], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[172], v[172], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[176], v[176], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[149], v[149], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[153], v[153], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[157], v[157], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[161], v[161], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[165], v[165], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[169], v[169], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[173], v[173], 0, s[88:89])) + k.emit(v_cndmask_b32_e64(v[177], v[177], 0, s[88:89])) + k.emit(s_and_b32(s[87], s[23], 7)) + k.emit(s_cmp_eq_u32(s[87], 0)) + k.emit(s_cbranch_scc1(), target='TailLoop_SkipZeroOutMask_YVWB1RHZO1Z7SCZY') + k.emit(s_and_b32(s[87], s[8], 7)) + k.emit(s_sub_u32(s[87], 8, s[87])) + k.emit(s_lshl_b32(s[87], s[87], 4)) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[50:51])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[52:53])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[50], v[50], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[51], v[51], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[52], v[52], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[53], v[53], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[54:55])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[56:57])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[54], v[54], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[55], v[55], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[56], v[56], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[57], v[57], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[58:59])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[60:61])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[58], v[58], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[59], v[59], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[60], v[60], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[61], v[61], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[62:63])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[64:65])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[62], v[62], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[63], v[63], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[64], v[64], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[65], v[65], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[66:67])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[68:69])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[66], v[66], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[67], v[67], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[68], v[68], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[69], v[69], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[70:71])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[72:73])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[70], v[70], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[71], v[71], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[72], v[72], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[73], v[73], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[74:75])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[76:77])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[74], v[74], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[75], v[75], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[76], v[76], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[77], v[77], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[78:79])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[80:81])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[78], v[78], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[79], v[79], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[80], v[80], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[81], v[81], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[146:147])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[148:149])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[146], v[146], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[147], v[147], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[148], v[148], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[149], v[149], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[150:151])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[152:153])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[150], v[150], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[151], v[151], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[152], v[152], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[153], v[153], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[154:155])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[156:157])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[154], v[154], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[155], v[155], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[156], v[156], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[157], v[157], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[158:159])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[160:161])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[158], v[158], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[159], v[159], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[160], v[160], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[161], v[161], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[162:163])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[164:165])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[162], v[162], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[163], v[163], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[164], v[164], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[165], v[165], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[166:167])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[168:169])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[166], v[166], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[167], v[167], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[168], v[168], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[169], v[169], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[170:171])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[172:173])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[170], v[170], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[171], v[171], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[172], v[172], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[173], v[173], v[187], s[88:89])) + k.emit(v_lshlrev_b64(v[184:185], s[87], v[174:175])) + k.emit(v_lshlrev_b64(v[186:187], s[87], v[176:177])) + k.emit(v_add_u32_e64(v[182], v[181], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[174], v[174], v[184], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[175], v[175], v[185], s[88:89])) + k.emit(v_add_u32_e64(v[182], v[182], 4)) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[176], v[176], v[186], s[88:89])) + k.emit(v_cmp_ge_i32_e64(s[88:89], v[182], s[8])) + k.emit(v_cndmask_b32_e64(v[177], v[177], v[187], s[88:89])) + k.label('TailLoop_SkipZeroOutMask_YVWB1RHZO1Z7SCZY') + k.emit(s_nop(1)) + k.emit(v_mfma_16x16x32(v[0:3], v[146:149], v[50:53], v[0:3], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[4:7], v[146:149], v[54:57], v[4:7], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[8:11], v[146:149], v[58:61], v[8:11], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[12:15], v[146:149], v[62:65], v[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[16:19], v[146:149], v[66:69], v[16:19], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[20:23], v[146:149], v[70:73], v[20:23], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[24:27], v[146:149], v[74:77], v[24:27], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[28:31], v[146:149], v[78:81], v[28:31], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[32:35], v[150:153], v[50:53], v[32:35], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[36:39], v[150:153], v[54:57], v[36:39], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[40:43], v[150:153], v[58:61], v[40:43], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[44:47], v[150:153], v[62:65], v[44:47], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[48:51], v[150:153], v[66:69], v[48:51], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[52:55], v[150:153], v[70:73], v[52:55], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[56:59], v[150:153], v[74:77], v[56:59], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[60:63], v[150:153], v[78:81], v[60:63], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[64:67], v[154:157], v[50:53], v[64:67], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[68:71], v[154:157], v[54:57], v[68:71], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[72:75], v[154:157], v[58:61], v[72:75], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[76:79], v[154:157], v[62:65], v[76:79], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[80:83], v[154:157], v[66:69], v[80:83], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[84:87], v[154:157], v[70:73], v[84:87], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[88:91], v[154:157], v[74:77], v[88:91], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[92:95], v[154:157], v[78:81], v[92:95], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[96:99], v[158:161], v[50:53], v[96:99], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[100:103], v[158:161], v[54:57], v[100:103], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[104:107], v[158:161], v[58:61], v[104:107], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[108:111], v[158:161], v[62:65], v[108:111], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[112:115], v[158:161], v[66:69], v[112:115], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[116:119], v[158:161], v[70:73], v[116:119], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[120:123], v[158:161], v[74:77], v[120:123], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[124:127], v[158:161], v[78:81], v[124:127], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[128:131], v[162:165], v[50:53], v[128:131], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[132:135], v[162:165], v[54:57], v[132:135], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[136:139], v[162:165], v[58:61], v[136:139], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[140:143], v[162:165], v[62:65], v[140:143], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[144:147], v[162:165], v[66:69], v[144:147], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[148:151], v[162:165], v[70:73], v[148:151], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[152:155], v[162:165], v[74:77], v[152:155], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[156:159], v[162:165], v[78:81], v[156:159], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[160:163], v[166:169], v[50:53], v[160:163], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[164:167], v[166:169], v[54:57], v[164:167], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[168:171], v[166:169], v[58:61], v[168:171], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[172:175], v[166:169], v[62:65], v[172:175], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[176:179], v[166:169], v[66:69], v[176:179], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[180:183], v[166:169], v[70:73], v[180:183], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[184:187], v[166:169], v[74:77], v[184:187], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[188:191], v[166:169], v[78:81], v[188:191], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[192:195], v[170:173], v[50:53], v[192:195], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[196:199], v[170:173], v[54:57], v[196:199], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[200:203], v[170:173], v[58:61], v[200:203], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[204:207], v[170:173], v[62:65], v[204:207], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[208:211], v[170:173], v[66:69], v[208:211], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[212:215], v[170:173], v[70:73], v[212:215], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[216:219], v[170:173], v[74:77], v[216:219], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[220:223], v[170:173], v[78:81], v[220:223], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[224:227], v[174:177], v[50:53], v[224:227], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[228:231], v[174:177], v[54:57], v[228:231], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[232:235], v[174:177], v[58:61], v[232:235], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[236:239], v[174:177], v[62:65], v[236:239], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[240:243], v[174:177], v[66:69], v[240:243], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[244:247], v[174:177], v[70:73], v[244:247], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[248:251], v[174:177], v[74:77], v[248:251], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mfma_16x16x32(v[252:255], v[174:177], v[78:81], v[252:255], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_sub_i32(s[8], s[8], 32)) + k.emit(s_add_u32(s[9], s[9], 32)) + k.emit(s_cmp_le_i32(s[8], 0)) + k.emit(s_cbranch_scc0(), target='TailLoopBeginL') + k.label('TailLoopEndL') + k.emit(s_mov_b32(s[87], 512)) + k.emit(s_mul_i32(s[87], s[9], s[87])) + k.emit(v_sub_u32_e64(v[16], v[16], s[87])) + k.emit(s_mov_b32(s[87], 2)) + k.emit(s_mul_i32(s[87], s[9], s[87])) + k.emit(v_sub_u32_e64(v[17], v[17], s[87])) + k.label('SkipTailLoopL') + k.emit(s_setprio()) + k.emit(s_mov_b64(s[68:69], 0)) + k.emit(s_mov_b32(s[72], 0)) + k.emit(v_mov_b32_e32(v[21], s[2])) + k.emit(v_mul_i32_i24_e32(v[21], 4294967040, v[21])) + k.emit(v_add_co_u32_e32(v[21], s[20], v[21])) + k.emit(v_mov_b32_e32(v[22], 256)) + k.emit(v_cmp_lt_u32_e64(s[8:9], v[21], v[22])) + k.emit(v_cndmask_b32_e64(v[21], v[22], v[21], s[8:9])) + k.emit(v_lshrrev_b32_e32(v[23], 6, v[180])) + k.emit(v_and_b32_e32(v[23], 1, v[23])) + k.emit(v_lshrrev_b32_e32(v[24], 7, v[21])) + k.emit(v_and_b32_e32(v[24], 1, v[24])) + k.emit(v_cmp_eq_u32_e64(s[8:9], v[24], v[23])) + k.emit(v_cndmask_b32_e64(v[21], v[22], v[21], s[8:9])) + k.emit(v_lshrrev_b32_e32(v[22], 7, v[21])) + k.emit(v_lshlrev_b32_e32(v[24], 0, v[23])) + k.emit(v_sub_u32_e32(v[22], v[22], v[24])) + k.emit(v_lshrrev_b32_e32(v[24], 3, v[21])) + k.emit(v_lshrrev_b32_e32(v[25], 0, v[180])) + k.emit(v_and_b32_e32(v[25], 15, v[25])) + k.emit(v_lshlrev_b32_e32(v[25], 3, v[25])) + k.emit(v_lshrrev_b32_e32(v[25], 3, v[25])) + k.emit(v_lshlrev_b32_e32(v[23], 4, v[23])) + k.emit(v_add_co_u32_e32(v[25], v[23], v[25])) + k.emit(v_sub_u32_e32(v[24], v[24], v[25])) + k.emit(v_and_b32_e32(v[23], 7, v[21])) + k.emit(v_lshrrev_b32_e32(v[23], 3, v[23])) + k.emit(v_and_b32_e32(v[25], 7, v[21])) + k.emit(v_cmp_eq_u32_e64(VCC, v[25], 1)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW1') + k.emit(v_cmp_eq_u32_e64(VCC, v[25], 2)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW2') + k.emit(v_cmp_eq_u32_e64(VCC, v[25], 3)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW3') + k.emit(v_cmp_eq_u32_e64(VCC, v[25], 4)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW4') + k.emit(v_cmp_eq_u32_e64(VCC, v[25], 5)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW5') + k.emit(v_cmp_eq_u32_e64(VCC, v[25], 6)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW6') + k.emit(v_cmp_eq_u32_e64(VCC, v[25], 7)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW7') + k.emit(s_branch(), target='ShiftVectorComponents0_GLVW0') + k.label('ShiftVectorComponents0_GLVW1') + k.emit(v_cmp_eq_u32_e64(VCC, v[22], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW1_BM0') + k.label('ShiftVectorComponents0_GLVW2') + k.emit(v_cmp_eq_u32_e64(VCC, v[22], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW2_BM0') + k.label('ShiftVectorComponents0_GLVW3') + k.emit(v_cmp_eq_u32_e64(VCC, v[22], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW3_BM0') + k.label('ShiftVectorComponents0_GLVW4') + k.emit(v_cmp_eq_u32_e64(VCC, v[22], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW4_BM0') + k.label('ShiftVectorComponents0_GLVW5') + k.emit(v_cmp_eq_u32_e64(VCC, v[22], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW5_BM0') + k.label('ShiftVectorComponents0_GLVW6') + k.emit(v_cmp_eq_u32_e64(VCC, v[22], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW6_BM0') + k.label('ShiftVectorComponents0_GLVW7') + k.emit(v_cmp_eq_u32_e64(VCC, v[22], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW7_BM0') + k.label('ShiftVectorComponents0_GLVW1_BM0') + k.emit(v_cmp_eq_u32_e64(VCC, v[23], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW1_BM0_VW0') + k.label('ShiftVectorComponents0_GLVW2_BM0') + k.emit(v_cmp_eq_u32_e64(VCC, v[23], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW2_BM0_VW0') + k.label('ShiftVectorComponents0_GLVW3_BM0') + k.emit(v_cmp_eq_u32_e64(VCC, v[23], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW3_BM0_VW0') + k.label('ShiftVectorComponents0_GLVW4_BM0') + k.emit(v_cmp_eq_u32_e64(VCC, v[23], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW4_BM0_VW0') + k.label('ShiftVectorComponents0_GLVW5_BM0') + k.emit(v_cmp_eq_u32_e64(VCC, v[23], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW5_BM0_VW0') + k.label('ShiftVectorComponents0_GLVW6_BM0') + k.emit(v_cmp_eq_u32_e64(VCC, v[23], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW6_BM0_VW0') + k.label('ShiftVectorComponents0_GLVW7_BM0') + k.emit(v_cmp_eq_u32_e64(VCC, v[23], 0)) + k.emit(s_cbranch_vccnz(), target='ShiftVectorComponents0_GLVW7_BM0_VW0') + k.label('ShiftVectorComponents0_GLVW1_BM0_VW0') + k.emit(s_mov_b32(s[8], 0)) + k.emit(v_cmpx_eq_u32_e64(s[8:9], v[24], s[8])) + k.emit(v_and_b32_e32(v[18], 63, v[180])) + k.emit(v_lshlrev_b32_e32(v[18], 2, v[18])) + k.emit(v_accvgpr_read(v[25], v[28])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[0], v[25])) + k.emit(v_accvgpr_read(v[25], v[60])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[32], v[25])) + k.emit(v_accvgpr_read(v[25], v[92])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[64], v[25])) + k.emit(v_accvgpr_read(v[25], v[124])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[96], v[25])) + k.emit(v_accvgpr_read(v[25], v[156])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[128], v[25])) + k.emit(v_accvgpr_read(v[25], v[188])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[160], v[25])) + k.emit(v_accvgpr_read(v[25], v[220])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[192], v[25])) + k.emit(v_accvgpr_read(v[25], v[252])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[224], v[25])) + k.emit(v_accvgpr_read(v[25], v[29])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[1], v[25])) + k.emit(v_accvgpr_read(v[25], v[61])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[33], v[25])) + k.emit(v_accvgpr_read(v[25], v[93])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[65], v[25])) + k.emit(v_accvgpr_read(v[25], v[125])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[97], v[25])) + k.emit(v_accvgpr_read(v[25], v[157])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[129], v[25])) + k.emit(v_accvgpr_read(v[25], v[189])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[161], v[25])) + k.emit(v_accvgpr_read(v[25], v[221])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[193], v[25])) + k.emit(v_accvgpr_read(v[25], v[253])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[225], v[25])) + k.emit(v_accvgpr_read(v[25], v[30])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[2], v[25])) + k.emit(v_accvgpr_read(v[25], v[62])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[34], v[25])) + k.emit(v_accvgpr_read(v[25], v[94])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[66], v[25])) + k.emit(v_accvgpr_read(v[25], v[126])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[98], v[25])) + k.emit(v_accvgpr_read(v[25], v[158])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[130], v[25])) + k.emit(v_accvgpr_read(v[25], v[190])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[162], v[25])) + k.emit(v_accvgpr_read(v[25], v[222])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[194], v[25])) + k.emit(v_accvgpr_read(v[25], v[254])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[226], v[25])) + k.emit(v_accvgpr_read(v[25], v[31])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[3], v[25])) + k.emit(v_accvgpr_read(v[25], v[63])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[35], v[25])) + k.emit(v_accvgpr_read(v[25], v[95])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[67], v[25])) + k.emit(v_accvgpr_read(v[25], v[127])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[99], v[25])) + k.emit(v_accvgpr_read(v[25], v[159])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[131], v[25])) + k.emit(v_accvgpr_read(v[25], v[191])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[163], v[25])) + k.emit(v_accvgpr_read(v[25], v[223])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[195], v[25])) + k.emit(v_accvgpr_read(v[25], v[255])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[227], v[25])) + k.emit(s_mov_b64(s[8:9], -1)) + k.emit(s_or_saveexec_b64(VCC, s[8:9])) + k.emit(s_branch(), target='ShiftVectorComponents0_GLVW0') + k.label('ShiftVectorComponents0_GLVW2_BM0_VW0') + k.emit(s_mov_b32(s[8], 0)) + k.emit(v_cmpx_eq_u32_e64(s[8:9], v[24], s[8])) + k.emit(v_and_b32_e32(v[18], 63, v[180])) + k.emit(v_lshlrev_b32_e32(v[18], 2, v[18])) + k.emit(v_accvgpr_read(v[25], v[24])) + k.emit(v_accvgpr_read(v[26], v[28])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[0], v[25])) + k.emit(v_accvgpr_write(v[4], v[26])) + k.emit(v_accvgpr_read(v[25], v[56])) + k.emit(v_accvgpr_read(v[26], v[60])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[32], v[25])) + k.emit(v_accvgpr_write(v[36], v[26])) + k.emit(v_accvgpr_read(v[25], v[88])) + k.emit(v_accvgpr_read(v[26], v[92])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[64], v[25])) + k.emit(v_accvgpr_write(v[68], v[26])) + k.emit(v_accvgpr_read(v[25], v[120])) + k.emit(v_accvgpr_read(v[26], v[124])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[96], v[25])) + k.emit(v_accvgpr_write(v[100], v[26])) + k.emit(v_accvgpr_read(v[25], v[152])) + k.emit(v_accvgpr_read(v[26], v[156])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[128], v[25])) + k.emit(v_accvgpr_write(v[132], v[26])) + k.emit(v_accvgpr_read(v[25], v[184])) + k.emit(v_accvgpr_read(v[26], v[188])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[160], v[25])) + k.emit(v_accvgpr_write(v[164], v[26])) + k.emit(v_accvgpr_read(v[25], v[216])) + k.emit(v_accvgpr_read(v[26], v[220])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[192], v[25])) + k.emit(v_accvgpr_write(v[196], v[26])) + k.emit(v_accvgpr_read(v[25], v[248])) + k.emit(v_accvgpr_read(v[26], v[252])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[224], v[25])) + k.emit(v_accvgpr_write(v[228], v[26])) + k.emit(v_accvgpr_read(v[25], v[25])) + k.emit(v_accvgpr_read(v[26], v[29])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[1], v[25])) + k.emit(v_accvgpr_write(v[5], v[26])) + k.emit(v_accvgpr_read(v[25], v[57])) + k.emit(v_accvgpr_read(v[26], v[61])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[33], v[25])) + k.emit(v_accvgpr_write(v[37], v[26])) + k.emit(v_accvgpr_read(v[25], v[89])) + k.emit(v_accvgpr_read(v[26], v[93])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[65], v[25])) + k.emit(v_accvgpr_write(v[69], v[26])) + k.emit(v_accvgpr_read(v[25], v[121])) + k.emit(v_accvgpr_read(v[26], v[125])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[97], v[25])) + k.emit(v_accvgpr_write(v[101], v[26])) + k.emit(v_accvgpr_read(v[25], v[153])) + k.emit(v_accvgpr_read(v[26], v[157])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[129], v[25])) + k.emit(v_accvgpr_write(v[133], v[26])) + k.emit(v_accvgpr_read(v[25], v[185])) + k.emit(v_accvgpr_read(v[26], v[189])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[161], v[25])) + k.emit(v_accvgpr_write(v[165], v[26])) + k.emit(v_accvgpr_read(v[25], v[217])) + k.emit(v_accvgpr_read(v[26], v[221])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[193], v[25])) + k.emit(v_accvgpr_write(v[197], v[26])) + k.emit(v_accvgpr_read(v[25], v[249])) + k.emit(v_accvgpr_read(v[26], v[253])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[225], v[25])) + k.emit(v_accvgpr_write(v[229], v[26])) + k.emit(v_accvgpr_read(v[25], v[26])) + k.emit(v_accvgpr_read(v[26], v[30])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[2], v[25])) + k.emit(v_accvgpr_write(v[6], v[26])) + k.emit(v_accvgpr_read(v[25], v[58])) + k.emit(v_accvgpr_read(v[26], v[62])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[34], v[25])) + k.emit(v_accvgpr_write(v[38], v[26])) + k.emit(v_accvgpr_read(v[25], v[90])) + k.emit(v_accvgpr_read(v[26], v[94])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[66], v[25])) + k.emit(v_accvgpr_write(v[70], v[26])) + k.emit(v_accvgpr_read(v[25], v[122])) + k.emit(v_accvgpr_read(v[26], v[126])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[98], v[25])) + k.emit(v_accvgpr_write(v[102], v[26])) + k.emit(v_accvgpr_read(v[25], v[154])) + k.emit(v_accvgpr_read(v[26], v[158])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[130], v[25])) + k.emit(v_accvgpr_write(v[134], v[26])) + k.emit(v_accvgpr_read(v[25], v[186])) + k.emit(v_accvgpr_read(v[26], v[190])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[162], v[25])) + k.emit(v_accvgpr_write(v[166], v[26])) + k.emit(v_accvgpr_read(v[25], v[218])) + k.emit(v_accvgpr_read(v[26], v[222])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[194], v[25])) + k.emit(v_accvgpr_write(v[198], v[26])) + k.emit(v_accvgpr_read(v[25], v[250])) + k.emit(v_accvgpr_read(v[26], v[254])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[226], v[25])) + k.emit(v_accvgpr_write(v[230], v[26])) + k.emit(v_accvgpr_read(v[25], v[27])) + k.emit(v_accvgpr_read(v[26], v[31])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[3], v[25])) + k.emit(v_accvgpr_write(v[7], v[26])) + k.emit(v_accvgpr_read(v[25], v[59])) + k.emit(v_accvgpr_read(v[26], v[63])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[35], v[25])) + k.emit(v_accvgpr_write(v[39], v[26])) + k.emit(v_accvgpr_read(v[25], v[91])) + k.emit(v_accvgpr_read(v[26], v[95])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[67], v[25])) + k.emit(v_accvgpr_write(v[71], v[26])) + k.emit(v_accvgpr_read(v[25], v[123])) + k.emit(v_accvgpr_read(v[26], v[127])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[99], v[25])) + k.emit(v_accvgpr_write(v[103], v[26])) + k.emit(v_accvgpr_read(v[25], v[155])) + k.emit(v_accvgpr_read(v[26], v[159])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[131], v[25])) + k.emit(v_accvgpr_write(v[135], v[26])) + k.emit(v_accvgpr_read(v[25], v[187])) + k.emit(v_accvgpr_read(v[26], v[191])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[163], v[25])) + k.emit(v_accvgpr_write(v[167], v[26])) + k.emit(v_accvgpr_read(v[25], v[219])) + k.emit(v_accvgpr_read(v[26], v[223])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[195], v[25])) + k.emit(v_accvgpr_write(v[199], v[26])) + k.emit(v_accvgpr_read(v[25], v[251])) + k.emit(v_accvgpr_read(v[26], v[255])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[227], v[25])) + k.emit(v_accvgpr_write(v[231], v[26])) + k.emit(s_mov_b64(s[8:9], -1)) + k.emit(s_or_saveexec_b64(VCC, s[8:9])) + k.emit(s_branch(), target='ShiftVectorComponents0_GLVW0') + k.label('ShiftVectorComponents0_GLVW3_BM0_VW0') + k.emit(s_mov_b32(s[8], 0)) + k.emit(v_cmpx_eq_u32_e64(s[8:9], v[24], s[8])) + k.emit(v_and_b32_e32(v[18], 63, v[180])) + k.emit(v_lshlrev_b32_e32(v[18], 2, v[18])) + k.emit(v_accvgpr_read(v[25], v[20])) + k.emit(v_accvgpr_read(v[26], v[24])) + k.emit(v_accvgpr_read(v[27], v[28])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[0], v[25])) + k.emit(v_accvgpr_write(v[4], v[26])) + k.emit(v_accvgpr_write(v[8], v[27])) + k.emit(v_accvgpr_read(v[25], v[52])) + k.emit(v_accvgpr_read(v[26], v[56])) + k.emit(v_accvgpr_read(v[27], v[60])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[32], v[25])) + k.emit(v_accvgpr_write(v[36], v[26])) + k.emit(v_accvgpr_write(v[40], v[27])) + k.emit(v_accvgpr_read(v[25], v[84])) + k.emit(v_accvgpr_read(v[26], v[88])) + k.emit(v_accvgpr_read(v[27], v[92])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[64], v[25])) + k.emit(v_accvgpr_write(v[68], v[26])) + k.emit(v_accvgpr_write(v[72], v[27])) + k.emit(v_accvgpr_read(v[25], v[116])) + k.emit(v_accvgpr_read(v[26], v[120])) + k.emit(v_accvgpr_read(v[27], v[124])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[96], v[25])) + k.emit(v_accvgpr_write(v[100], v[26])) + k.emit(v_accvgpr_write(v[104], v[27])) + k.emit(v_accvgpr_read(v[25], v[148])) + k.emit(v_accvgpr_read(v[26], v[152])) + k.emit(v_accvgpr_read(v[27], v[156])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[128], v[25])) + k.emit(v_accvgpr_write(v[132], v[26])) + k.emit(v_accvgpr_write(v[136], v[27])) + k.emit(v_accvgpr_read(v[25], v[180])) + k.emit(v_accvgpr_read(v[26], v[184])) + k.emit(v_accvgpr_read(v[27], v[188])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[160], v[25])) + k.emit(v_accvgpr_write(v[164], v[26])) + k.emit(v_accvgpr_write(v[168], v[27])) + k.emit(v_accvgpr_read(v[25], v[212])) + k.emit(v_accvgpr_read(v[26], v[216])) + k.emit(v_accvgpr_read(v[27], v[220])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[192], v[25])) + k.emit(v_accvgpr_write(v[196], v[26])) + k.emit(v_accvgpr_write(v[200], v[27])) + k.emit(v_accvgpr_read(v[25], v[244])) + k.emit(v_accvgpr_read(v[26], v[248])) + k.emit(v_accvgpr_read(v[27], v[252])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[224], v[25])) + k.emit(v_accvgpr_write(v[228], v[26])) + k.emit(v_accvgpr_write(v[232], v[27])) + k.emit(v_accvgpr_read(v[25], v[21])) + k.emit(v_accvgpr_read(v[26], v[25])) + k.emit(v_accvgpr_read(v[27], v[29])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[1], v[25])) + k.emit(v_accvgpr_write(v[5], v[26])) + k.emit(v_accvgpr_write(v[9], v[27])) + k.emit(v_accvgpr_read(v[25], v[53])) + k.emit(v_accvgpr_read(v[26], v[57])) + k.emit(v_accvgpr_read(v[27], v[61])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[33], v[25])) + k.emit(v_accvgpr_write(v[37], v[26])) + k.emit(v_accvgpr_write(v[41], v[27])) + k.emit(v_accvgpr_read(v[25], v[85])) + k.emit(v_accvgpr_read(v[26], v[89])) + k.emit(v_accvgpr_read(v[27], v[93])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[65], v[25])) + k.emit(v_accvgpr_write(v[69], v[26])) + k.emit(v_accvgpr_write(v[73], v[27])) + k.emit(v_accvgpr_read(v[25], v[117])) + k.emit(v_accvgpr_read(v[26], v[121])) + k.emit(v_accvgpr_read(v[27], v[125])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[97], v[25])) + k.emit(v_accvgpr_write(v[101], v[26])) + k.emit(v_accvgpr_write(v[105], v[27])) + k.emit(v_accvgpr_read(v[25], v[149])) + k.emit(v_accvgpr_read(v[26], v[153])) + k.emit(v_accvgpr_read(v[27], v[157])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[129], v[25])) + k.emit(v_accvgpr_write(v[133], v[26])) + k.emit(v_accvgpr_write(v[137], v[27])) + k.emit(v_accvgpr_read(v[25], v[181])) + k.emit(v_accvgpr_read(v[26], v[185])) + k.emit(v_accvgpr_read(v[27], v[189])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[161], v[25])) + k.emit(v_accvgpr_write(v[165], v[26])) + k.emit(v_accvgpr_write(v[169], v[27])) + k.emit(v_accvgpr_read(v[25], v[213])) + k.emit(v_accvgpr_read(v[26], v[217])) + k.emit(v_accvgpr_read(v[27], v[221])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[193], v[25])) + k.emit(v_accvgpr_write(v[197], v[26])) + k.emit(v_accvgpr_write(v[201], v[27])) + k.emit(v_accvgpr_read(v[25], v[245])) + k.emit(v_accvgpr_read(v[26], v[249])) + k.emit(v_accvgpr_read(v[27], v[253])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[225], v[25])) + k.emit(v_accvgpr_write(v[229], v[26])) + k.emit(v_accvgpr_write(v[233], v[27])) + k.emit(v_accvgpr_read(v[25], v[22])) + k.emit(v_accvgpr_read(v[26], v[26])) + k.emit(v_accvgpr_read(v[27], v[30])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[2], v[25])) + k.emit(v_accvgpr_write(v[6], v[26])) + k.emit(v_accvgpr_write(v[10], v[27])) + k.emit(v_accvgpr_read(v[25], v[54])) + k.emit(v_accvgpr_read(v[26], v[58])) + k.emit(v_accvgpr_read(v[27], v[62])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[34], v[25])) + k.emit(v_accvgpr_write(v[38], v[26])) + k.emit(v_accvgpr_write(v[42], v[27])) + k.emit(v_accvgpr_read(v[25], v[86])) + k.emit(v_accvgpr_read(v[26], v[90])) + k.emit(v_accvgpr_read(v[27], v[94])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[66], v[25])) + k.emit(v_accvgpr_write(v[70], v[26])) + k.emit(v_accvgpr_write(v[74], v[27])) + k.emit(v_accvgpr_read(v[25], v[118])) + k.emit(v_accvgpr_read(v[26], v[122])) + k.emit(v_accvgpr_read(v[27], v[126])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[98], v[25])) + k.emit(v_accvgpr_write(v[102], v[26])) + k.emit(v_accvgpr_write(v[106], v[27])) + k.emit(v_accvgpr_read(v[25], v[150])) + k.emit(v_accvgpr_read(v[26], v[154])) + k.emit(v_accvgpr_read(v[27], v[158])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[130], v[25])) + k.emit(v_accvgpr_write(v[134], v[26])) + k.emit(v_accvgpr_write(v[138], v[27])) + k.emit(v_accvgpr_read(v[25], v[182])) + k.emit(v_accvgpr_read(v[26], v[186])) + k.emit(v_accvgpr_read(v[27], v[190])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[162], v[25])) + k.emit(v_accvgpr_write(v[166], v[26])) + k.emit(v_accvgpr_write(v[170], v[27])) + k.emit(v_accvgpr_read(v[25], v[214])) + k.emit(v_accvgpr_read(v[26], v[218])) + k.emit(v_accvgpr_read(v[27], v[222])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[194], v[25])) + k.emit(v_accvgpr_write(v[198], v[26])) + k.emit(v_accvgpr_write(v[202], v[27])) + k.emit(v_accvgpr_read(v[25], v[246])) + k.emit(v_accvgpr_read(v[26], v[250])) + k.emit(v_accvgpr_read(v[27], v[254])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[226], v[25])) + k.emit(v_accvgpr_write(v[230], v[26])) + k.emit(v_accvgpr_write(v[234], v[27])) + k.emit(v_accvgpr_read(v[25], v[23])) + k.emit(v_accvgpr_read(v[26], v[27])) + k.emit(v_accvgpr_read(v[27], v[31])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[3], v[25])) + k.emit(v_accvgpr_write(v[7], v[26])) + k.emit(v_accvgpr_write(v[11], v[27])) + k.emit(v_accvgpr_read(v[25], v[55])) + k.emit(v_accvgpr_read(v[26], v[59])) + k.emit(v_accvgpr_read(v[27], v[63])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[35], v[25])) + k.emit(v_accvgpr_write(v[39], v[26])) + k.emit(v_accvgpr_write(v[43], v[27])) + k.emit(v_accvgpr_read(v[25], v[87])) + k.emit(v_accvgpr_read(v[26], v[91])) + k.emit(v_accvgpr_read(v[27], v[95])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[67], v[25])) + k.emit(v_accvgpr_write(v[71], v[26])) + k.emit(v_accvgpr_write(v[75], v[27])) + k.emit(v_accvgpr_read(v[25], v[119])) + k.emit(v_accvgpr_read(v[26], v[123])) + k.emit(v_accvgpr_read(v[27], v[127])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[99], v[25])) + k.emit(v_accvgpr_write(v[103], v[26])) + k.emit(v_accvgpr_write(v[107], v[27])) + k.emit(v_accvgpr_read(v[25], v[151])) + k.emit(v_accvgpr_read(v[26], v[155])) + k.emit(v_accvgpr_read(v[27], v[159])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[131], v[25])) + k.emit(v_accvgpr_write(v[135], v[26])) + k.emit(v_accvgpr_write(v[139], v[27])) + k.emit(v_accvgpr_read(v[25], v[183])) + k.emit(v_accvgpr_read(v[26], v[187])) + k.emit(v_accvgpr_read(v[27], v[191])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[163], v[25])) + k.emit(v_accvgpr_write(v[167], v[26])) + k.emit(v_accvgpr_write(v[171], v[27])) + k.emit(v_accvgpr_read(v[25], v[215])) + k.emit(v_accvgpr_read(v[26], v[219])) + k.emit(v_accvgpr_read(v[27], v[223])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[195], v[25])) + k.emit(v_accvgpr_write(v[199], v[26])) + k.emit(v_accvgpr_write(v[203], v[27])) + k.emit(v_accvgpr_read(v[25], v[247])) + k.emit(v_accvgpr_read(v[26], v[251])) + k.emit(v_accvgpr_read(v[27], v[255])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[227], v[25])) + k.emit(v_accvgpr_write(v[231], v[26])) + k.emit(v_accvgpr_write(v[235], v[27])) + k.emit(s_mov_b64(s[8:9], -1)) + k.emit(s_or_saveexec_b64(VCC, s[8:9])) + k.emit(s_branch(), target='ShiftVectorComponents0_GLVW0') + k.label('ShiftVectorComponents0_GLVW4_BM0_VW0') + k.emit(s_mov_b32(s[8], 0)) + k.emit(v_cmpx_eq_u32_e64(s[8:9], v[24], s[8])) + k.emit(v_and_b32_e32(v[18], 63, v[180])) + k.emit(v_lshlrev_b32_e32(v[18], 2, v[18])) + k.emit(v_accvgpr_read(v[25], v[16])) + k.emit(v_accvgpr_read(v[26], v[20])) + k.emit(v_accvgpr_read(v[27], v[24])) + k.emit(v_accvgpr_read(v[28], v[28])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[0], v[25])) + k.emit(v_accvgpr_write(v[4], v[26])) + k.emit(v_accvgpr_write(v[8], v[27])) + k.emit(v_accvgpr_write(v[12], v[28])) + k.emit(v_accvgpr_read(v[25], v[48])) + k.emit(v_accvgpr_read(v[26], v[52])) + k.emit(v_accvgpr_read(v[27], v[56])) + k.emit(v_accvgpr_read(v[28], v[60])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[32], v[25])) + k.emit(v_accvgpr_write(v[36], v[26])) + k.emit(v_accvgpr_write(v[40], v[27])) + k.emit(v_accvgpr_write(v[44], v[28])) + k.emit(v_accvgpr_read(v[25], v[80])) + k.emit(v_accvgpr_read(v[26], v[84])) + k.emit(v_accvgpr_read(v[27], v[88])) + k.emit(v_accvgpr_read(v[28], v[92])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[64], v[25])) + k.emit(v_accvgpr_write(v[68], v[26])) + k.emit(v_accvgpr_write(v[72], v[27])) + k.emit(v_accvgpr_write(v[76], v[28])) + k.emit(v_accvgpr_read(v[25], v[112])) + k.emit(v_accvgpr_read(v[26], v[116])) + k.emit(v_accvgpr_read(v[27], v[120])) + k.emit(v_accvgpr_read(v[28], v[124])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[96], v[25])) + k.emit(v_accvgpr_write(v[100], v[26])) + k.emit(v_accvgpr_write(v[104], v[27])) + k.emit(v_accvgpr_write(v[108], v[28])) + k.emit(v_accvgpr_read(v[25], v[144])) + k.emit(v_accvgpr_read(v[26], v[148])) + k.emit(v_accvgpr_read(v[27], v[152])) + k.emit(v_accvgpr_read(v[28], v[156])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[128], v[25])) + k.emit(v_accvgpr_write(v[132], v[26])) + k.emit(v_accvgpr_write(v[136], v[27])) + k.emit(v_accvgpr_write(v[140], v[28])) + k.emit(v_accvgpr_read(v[25], v[176])) + k.emit(v_accvgpr_read(v[26], v[180])) + k.emit(v_accvgpr_read(v[27], v[184])) + k.emit(v_accvgpr_read(v[28], v[188])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[160], v[25])) + k.emit(v_accvgpr_write(v[164], v[26])) + k.emit(v_accvgpr_write(v[168], v[27])) + k.emit(v_accvgpr_write(v[172], v[28])) + k.emit(v_accvgpr_read(v[25], v[208])) + k.emit(v_accvgpr_read(v[26], v[212])) + k.emit(v_accvgpr_read(v[27], v[216])) + k.emit(v_accvgpr_read(v[28], v[220])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[192], v[25])) + k.emit(v_accvgpr_write(v[196], v[26])) + k.emit(v_accvgpr_write(v[200], v[27])) + k.emit(v_accvgpr_write(v[204], v[28])) + k.emit(v_accvgpr_read(v[25], v[240])) + k.emit(v_accvgpr_read(v[26], v[244])) + k.emit(v_accvgpr_read(v[27], v[248])) + k.emit(v_accvgpr_read(v[28], v[252])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[224], v[25])) + k.emit(v_accvgpr_write(v[228], v[26])) + k.emit(v_accvgpr_write(v[232], v[27])) + k.emit(v_accvgpr_write(v[236], v[28])) + k.emit(v_accvgpr_read(v[25], v[17])) + k.emit(v_accvgpr_read(v[26], v[21])) + k.emit(v_accvgpr_read(v[27], v[25])) + k.emit(v_accvgpr_read(v[28], v[29])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[1], v[25])) + k.emit(v_accvgpr_write(v[5], v[26])) + k.emit(v_accvgpr_write(v[9], v[27])) + k.emit(v_accvgpr_write(v[13], v[28])) + k.emit(v_accvgpr_read(v[25], v[49])) + k.emit(v_accvgpr_read(v[26], v[53])) + k.emit(v_accvgpr_read(v[27], v[57])) + k.emit(v_accvgpr_read(v[28], v[61])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[33], v[25])) + k.emit(v_accvgpr_write(v[37], v[26])) + k.emit(v_accvgpr_write(v[41], v[27])) + k.emit(v_accvgpr_write(v[45], v[28])) + k.emit(v_accvgpr_read(v[25], v[81])) + k.emit(v_accvgpr_read(v[26], v[85])) + k.emit(v_accvgpr_read(v[27], v[89])) + k.emit(v_accvgpr_read(v[28], v[93])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[65], v[25])) + k.emit(v_accvgpr_write(v[69], v[26])) + k.emit(v_accvgpr_write(v[73], v[27])) + k.emit(v_accvgpr_write(v[77], v[28])) + k.emit(v_accvgpr_read(v[25], v[113])) + k.emit(v_accvgpr_read(v[26], v[117])) + k.emit(v_accvgpr_read(v[27], v[121])) + k.emit(v_accvgpr_read(v[28], v[125])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[97], v[25])) + k.emit(v_accvgpr_write(v[101], v[26])) + k.emit(v_accvgpr_write(v[105], v[27])) + k.emit(v_accvgpr_write(v[109], v[28])) + k.emit(v_accvgpr_read(v[25], v[145])) + k.emit(v_accvgpr_read(v[26], v[149])) + k.emit(v_accvgpr_read(v[27], v[153])) + k.emit(v_accvgpr_read(v[28], v[157])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[129], v[25])) + k.emit(v_accvgpr_write(v[133], v[26])) + k.emit(v_accvgpr_write(v[137], v[27])) + k.emit(v_accvgpr_write(v[141], v[28])) + k.emit(v_accvgpr_read(v[25], v[177])) + k.emit(v_accvgpr_read(v[26], v[181])) + k.emit(v_accvgpr_read(v[27], v[185])) + k.emit(v_accvgpr_read(v[28], v[189])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[161], v[25])) + k.emit(v_accvgpr_write(v[165], v[26])) + k.emit(v_accvgpr_write(v[169], v[27])) + k.emit(v_accvgpr_write(v[173], v[28])) + k.emit(v_accvgpr_read(v[25], v[209])) + k.emit(v_accvgpr_read(v[26], v[213])) + k.emit(v_accvgpr_read(v[27], v[217])) + k.emit(v_accvgpr_read(v[28], v[221])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[193], v[25])) + k.emit(v_accvgpr_write(v[197], v[26])) + k.emit(v_accvgpr_write(v[201], v[27])) + k.emit(v_accvgpr_write(v[205], v[28])) + k.emit(v_accvgpr_read(v[25], v[241])) + k.emit(v_accvgpr_read(v[26], v[245])) + k.emit(v_accvgpr_read(v[27], v[249])) + k.emit(v_accvgpr_read(v[28], v[253])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[225], v[25])) + k.emit(v_accvgpr_write(v[229], v[26])) + k.emit(v_accvgpr_write(v[233], v[27])) + k.emit(v_accvgpr_write(v[237], v[28])) + k.emit(v_accvgpr_read(v[25], v[18])) + k.emit(v_accvgpr_read(v[26], v[22])) + k.emit(v_accvgpr_read(v[27], v[26])) + k.emit(v_accvgpr_read(v[28], v[30])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[2], v[25])) + k.emit(v_accvgpr_write(v[6], v[26])) + k.emit(v_accvgpr_write(v[10], v[27])) + k.emit(v_accvgpr_write(v[14], v[28])) + k.emit(v_accvgpr_read(v[25], v[50])) + k.emit(v_accvgpr_read(v[26], v[54])) + k.emit(v_accvgpr_read(v[27], v[58])) + k.emit(v_accvgpr_read(v[28], v[62])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[34], v[25])) + k.emit(v_accvgpr_write(v[38], v[26])) + k.emit(v_accvgpr_write(v[42], v[27])) + k.emit(v_accvgpr_write(v[46], v[28])) + k.emit(v_accvgpr_read(v[25], v[82])) + k.emit(v_accvgpr_read(v[26], v[86])) + k.emit(v_accvgpr_read(v[27], v[90])) + k.emit(v_accvgpr_read(v[28], v[94])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[66], v[25])) + k.emit(v_accvgpr_write(v[70], v[26])) + k.emit(v_accvgpr_write(v[74], v[27])) + k.emit(v_accvgpr_write(v[78], v[28])) + k.emit(v_accvgpr_read(v[25], v[114])) + k.emit(v_accvgpr_read(v[26], v[118])) + k.emit(v_accvgpr_read(v[27], v[122])) + k.emit(v_accvgpr_read(v[28], v[126])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[98], v[25])) + k.emit(v_accvgpr_write(v[102], v[26])) + k.emit(v_accvgpr_write(v[106], v[27])) + k.emit(v_accvgpr_write(v[110], v[28])) + k.emit(v_accvgpr_read(v[25], v[146])) + k.emit(v_accvgpr_read(v[26], v[150])) + k.emit(v_accvgpr_read(v[27], v[154])) + k.emit(v_accvgpr_read(v[28], v[158])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[130], v[25])) + k.emit(v_accvgpr_write(v[134], v[26])) + k.emit(v_accvgpr_write(v[138], v[27])) + k.emit(v_accvgpr_write(v[142], v[28])) + k.emit(v_accvgpr_read(v[25], v[178])) + k.emit(v_accvgpr_read(v[26], v[182])) + k.emit(v_accvgpr_read(v[27], v[186])) + k.emit(v_accvgpr_read(v[28], v[190])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[162], v[25])) + k.emit(v_accvgpr_write(v[166], v[26])) + k.emit(v_accvgpr_write(v[170], v[27])) + k.emit(v_accvgpr_write(v[174], v[28])) + k.emit(v_accvgpr_read(v[25], v[210])) + k.emit(v_accvgpr_read(v[26], v[214])) + k.emit(v_accvgpr_read(v[27], v[218])) + k.emit(v_accvgpr_read(v[28], v[222])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[194], v[25])) + k.emit(v_accvgpr_write(v[198], v[26])) + k.emit(v_accvgpr_write(v[202], v[27])) + k.emit(v_accvgpr_write(v[206], v[28])) + k.emit(v_accvgpr_read(v[25], v[242])) + k.emit(v_accvgpr_read(v[26], v[246])) + k.emit(v_accvgpr_read(v[27], v[250])) + k.emit(v_accvgpr_read(v[28], v[254])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[226], v[25])) + k.emit(v_accvgpr_write(v[230], v[26])) + k.emit(v_accvgpr_write(v[234], v[27])) + k.emit(v_accvgpr_write(v[238], v[28])) + k.emit(v_accvgpr_read(v[25], v[19])) + k.emit(v_accvgpr_read(v[26], v[23])) + k.emit(v_accvgpr_read(v[27], v[27])) + k.emit(v_accvgpr_read(v[28], v[31])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[3], v[25])) + k.emit(v_accvgpr_write(v[7], v[26])) + k.emit(v_accvgpr_write(v[11], v[27])) + k.emit(v_accvgpr_write(v[15], v[28])) + k.emit(v_accvgpr_read(v[25], v[51])) + k.emit(v_accvgpr_read(v[26], v[55])) + k.emit(v_accvgpr_read(v[27], v[59])) + k.emit(v_accvgpr_read(v[28], v[63])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[35], v[25])) + k.emit(v_accvgpr_write(v[39], v[26])) + k.emit(v_accvgpr_write(v[43], v[27])) + k.emit(v_accvgpr_write(v[47], v[28])) + k.emit(v_accvgpr_read(v[25], v[83])) + k.emit(v_accvgpr_read(v[26], v[87])) + k.emit(v_accvgpr_read(v[27], v[91])) + k.emit(v_accvgpr_read(v[28], v[95])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[67], v[25])) + k.emit(v_accvgpr_write(v[71], v[26])) + k.emit(v_accvgpr_write(v[75], v[27])) + k.emit(v_accvgpr_write(v[79], v[28])) + k.emit(v_accvgpr_read(v[25], v[115])) + k.emit(v_accvgpr_read(v[26], v[119])) + k.emit(v_accvgpr_read(v[27], v[123])) + k.emit(v_accvgpr_read(v[28], v[127])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[99], v[25])) + k.emit(v_accvgpr_write(v[103], v[26])) + k.emit(v_accvgpr_write(v[107], v[27])) + k.emit(v_accvgpr_write(v[111], v[28])) + k.emit(v_accvgpr_read(v[25], v[147])) + k.emit(v_accvgpr_read(v[26], v[151])) + k.emit(v_accvgpr_read(v[27], v[155])) + k.emit(v_accvgpr_read(v[28], v[159])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[131], v[25])) + k.emit(v_accvgpr_write(v[135], v[26])) + k.emit(v_accvgpr_write(v[139], v[27])) + k.emit(v_accvgpr_write(v[143], v[28])) + k.emit(v_accvgpr_read(v[25], v[179])) + k.emit(v_accvgpr_read(v[26], v[183])) + k.emit(v_accvgpr_read(v[27], v[187])) + k.emit(v_accvgpr_read(v[28], v[191])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[163], v[25])) + k.emit(v_accvgpr_write(v[167], v[26])) + k.emit(v_accvgpr_write(v[171], v[27])) + k.emit(v_accvgpr_write(v[175], v[28])) + k.emit(v_accvgpr_read(v[25], v[211])) + k.emit(v_accvgpr_read(v[26], v[215])) + k.emit(v_accvgpr_read(v[27], v[219])) + k.emit(v_accvgpr_read(v[28], v[223])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[195], v[25])) + k.emit(v_accvgpr_write(v[199], v[26])) + k.emit(v_accvgpr_write(v[203], v[27])) + k.emit(v_accvgpr_write(v[207], v[28])) + k.emit(v_accvgpr_read(v[25], v[243])) + k.emit(v_accvgpr_read(v[26], v[247])) + k.emit(v_accvgpr_read(v[27], v[251])) + k.emit(v_accvgpr_read(v[28], v[255])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[227], v[25])) + k.emit(v_accvgpr_write(v[231], v[26])) + k.emit(v_accvgpr_write(v[235], v[27])) + k.emit(v_accvgpr_write(v[239], v[28])) + k.emit(s_mov_b64(s[8:9], -1)) + k.emit(s_or_saveexec_b64(VCC, s[8:9])) + k.emit(s_branch(), target='ShiftVectorComponents0_GLVW0') + k.label('ShiftVectorComponents0_GLVW5_BM0_VW0') + k.emit(s_mov_b32(s[8], 0)) + k.emit(v_cmpx_eq_u32_e64(s[8:9], v[24], s[8])) + k.emit(v_and_b32_e32(v[18], 63, v[180])) + k.emit(v_lshlrev_b32_e32(v[18], 2, v[18])) + k.emit(v_accvgpr_read(v[25], v[12])) + k.emit(v_accvgpr_read(v[26], v[16])) + k.emit(v_accvgpr_read(v[27], v[20])) + k.emit(v_accvgpr_read(v[28], v[24])) + k.emit(v_accvgpr_read(v[29], v[28])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[0], v[25])) + k.emit(v_accvgpr_write(v[4], v[26])) + k.emit(v_accvgpr_write(v[8], v[27])) + k.emit(v_accvgpr_write(v[12], v[28])) + k.emit(v_accvgpr_write(v[16], v[29])) + k.emit(v_accvgpr_read(v[25], v[44])) + k.emit(v_accvgpr_read(v[26], v[48])) + k.emit(v_accvgpr_read(v[27], v[52])) + k.emit(v_accvgpr_read(v[28], v[56])) + k.emit(v_accvgpr_read(v[29], v[60])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[32], v[25])) + k.emit(v_accvgpr_write(v[36], v[26])) + k.emit(v_accvgpr_write(v[40], v[27])) + k.emit(v_accvgpr_write(v[44], v[28])) + k.emit(v_accvgpr_write(v[48], v[29])) + k.emit(v_accvgpr_read(v[25], v[76])) + k.emit(v_accvgpr_read(v[26], v[80])) + k.emit(v_accvgpr_read(v[27], v[84])) + k.emit(v_accvgpr_read(v[28], v[88])) + k.emit(v_accvgpr_read(v[29], v[92])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[64], v[25])) + k.emit(v_accvgpr_write(v[68], v[26])) + k.emit(v_accvgpr_write(v[72], v[27])) + k.emit(v_accvgpr_write(v[76], v[28])) + k.emit(v_accvgpr_write(v[80], v[29])) + k.emit(v_accvgpr_read(v[25], v[108])) + k.emit(v_accvgpr_read(v[26], v[112])) + k.emit(v_accvgpr_read(v[27], v[116])) + k.emit(v_accvgpr_read(v[28], v[120])) + k.emit(v_accvgpr_read(v[29], v[124])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[96], v[25])) + k.emit(v_accvgpr_write(v[100], v[26])) + k.emit(v_accvgpr_write(v[104], v[27])) + k.emit(v_accvgpr_write(v[108], v[28])) + k.emit(v_accvgpr_write(v[112], v[29])) + k.emit(v_accvgpr_read(v[25], v[140])) + k.emit(v_accvgpr_read(v[26], v[144])) + k.emit(v_accvgpr_read(v[27], v[148])) + k.emit(v_accvgpr_read(v[28], v[152])) + k.emit(v_accvgpr_read(v[29], v[156])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[128], v[25])) + k.emit(v_accvgpr_write(v[132], v[26])) + k.emit(v_accvgpr_write(v[136], v[27])) + k.emit(v_accvgpr_write(v[140], v[28])) + k.emit(v_accvgpr_write(v[144], v[29])) + k.emit(v_accvgpr_read(v[25], v[172])) + k.emit(v_accvgpr_read(v[26], v[176])) + k.emit(v_accvgpr_read(v[27], v[180])) + k.emit(v_accvgpr_read(v[28], v[184])) + k.emit(v_accvgpr_read(v[29], v[188])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[160], v[25])) + k.emit(v_accvgpr_write(v[164], v[26])) + k.emit(v_accvgpr_write(v[168], v[27])) + k.emit(v_accvgpr_write(v[172], v[28])) + k.emit(v_accvgpr_write(v[176], v[29])) + k.emit(v_accvgpr_read(v[25], v[204])) + k.emit(v_accvgpr_read(v[26], v[208])) + k.emit(v_accvgpr_read(v[27], v[212])) + k.emit(v_accvgpr_read(v[28], v[216])) + k.emit(v_accvgpr_read(v[29], v[220])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[192], v[25])) + k.emit(v_accvgpr_write(v[196], v[26])) + k.emit(v_accvgpr_write(v[200], v[27])) + k.emit(v_accvgpr_write(v[204], v[28])) + k.emit(v_accvgpr_write(v[208], v[29])) + k.emit(v_accvgpr_read(v[25], v[236])) + k.emit(v_accvgpr_read(v[26], v[240])) + k.emit(v_accvgpr_read(v[27], v[244])) + k.emit(v_accvgpr_read(v[28], v[248])) + k.emit(v_accvgpr_read(v[29], v[252])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[224], v[25])) + k.emit(v_accvgpr_write(v[228], v[26])) + k.emit(v_accvgpr_write(v[232], v[27])) + k.emit(v_accvgpr_write(v[236], v[28])) + k.emit(v_accvgpr_write(v[240], v[29])) + k.emit(v_accvgpr_read(v[25], v[13])) + k.emit(v_accvgpr_read(v[26], v[17])) + k.emit(v_accvgpr_read(v[27], v[21])) + k.emit(v_accvgpr_read(v[28], v[25])) + k.emit(v_accvgpr_read(v[29], v[29])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[1], v[25])) + k.emit(v_accvgpr_write(v[5], v[26])) + k.emit(v_accvgpr_write(v[9], v[27])) + k.emit(v_accvgpr_write(v[13], v[28])) + k.emit(v_accvgpr_write(v[17], v[29])) + k.emit(v_accvgpr_read(v[25], v[45])) + k.emit(v_accvgpr_read(v[26], v[49])) + k.emit(v_accvgpr_read(v[27], v[53])) + k.emit(v_accvgpr_read(v[28], v[57])) + k.emit(v_accvgpr_read(v[29], v[61])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[33], v[25])) + k.emit(v_accvgpr_write(v[37], v[26])) + k.emit(v_accvgpr_write(v[41], v[27])) + k.emit(v_accvgpr_write(v[45], v[28])) + k.emit(v_accvgpr_write(v[49], v[29])) + k.emit(v_accvgpr_read(v[25], v[77])) + k.emit(v_accvgpr_read(v[26], v[81])) + k.emit(v_accvgpr_read(v[27], v[85])) + k.emit(v_accvgpr_read(v[28], v[89])) + k.emit(v_accvgpr_read(v[29], v[93])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[65], v[25])) + k.emit(v_accvgpr_write(v[69], v[26])) + k.emit(v_accvgpr_write(v[73], v[27])) + k.emit(v_accvgpr_write(v[77], v[28])) + k.emit(v_accvgpr_write(v[81], v[29])) + k.emit(v_accvgpr_read(v[25], v[109])) + k.emit(v_accvgpr_read(v[26], v[113])) + k.emit(v_accvgpr_read(v[27], v[117])) + k.emit(v_accvgpr_read(v[28], v[121])) + k.emit(v_accvgpr_read(v[29], v[125])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[97], v[25])) + k.emit(v_accvgpr_write(v[101], v[26])) + k.emit(v_accvgpr_write(v[105], v[27])) + k.emit(v_accvgpr_write(v[109], v[28])) + k.emit(v_accvgpr_write(v[113], v[29])) + k.emit(v_accvgpr_read(v[25], v[141])) + k.emit(v_accvgpr_read(v[26], v[145])) + k.emit(v_accvgpr_read(v[27], v[149])) + k.emit(v_accvgpr_read(v[28], v[153])) + k.emit(v_accvgpr_read(v[29], v[157])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[129], v[25])) + k.emit(v_accvgpr_write(v[133], v[26])) + k.emit(v_accvgpr_write(v[137], v[27])) + k.emit(v_accvgpr_write(v[141], v[28])) + k.emit(v_accvgpr_write(v[145], v[29])) + k.emit(v_accvgpr_read(v[25], v[173])) + k.emit(v_accvgpr_read(v[26], v[177])) + k.emit(v_accvgpr_read(v[27], v[181])) + k.emit(v_accvgpr_read(v[28], v[185])) + k.emit(v_accvgpr_read(v[29], v[189])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[161], v[25])) + k.emit(v_accvgpr_write(v[165], v[26])) + k.emit(v_accvgpr_write(v[169], v[27])) + k.emit(v_accvgpr_write(v[173], v[28])) + k.emit(v_accvgpr_write(v[177], v[29])) + k.emit(v_accvgpr_read(v[25], v[205])) + k.emit(v_accvgpr_read(v[26], v[209])) + k.emit(v_accvgpr_read(v[27], v[213])) + k.emit(v_accvgpr_read(v[28], v[217])) + k.emit(v_accvgpr_read(v[29], v[221])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[193], v[25])) + k.emit(v_accvgpr_write(v[197], v[26])) + k.emit(v_accvgpr_write(v[201], v[27])) + k.emit(v_accvgpr_write(v[205], v[28])) + k.emit(v_accvgpr_write(v[209], v[29])) + k.emit(v_accvgpr_read(v[25], v[237])) + k.emit(v_accvgpr_read(v[26], v[241])) + k.emit(v_accvgpr_read(v[27], v[245])) + k.emit(v_accvgpr_read(v[28], v[249])) + k.emit(v_accvgpr_read(v[29], v[253])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[225], v[25])) + k.emit(v_accvgpr_write(v[229], v[26])) + k.emit(v_accvgpr_write(v[233], v[27])) + k.emit(v_accvgpr_write(v[237], v[28])) + k.emit(v_accvgpr_write(v[241], v[29])) + k.emit(v_accvgpr_read(v[25], v[14])) + k.emit(v_accvgpr_read(v[26], v[18])) + k.emit(v_accvgpr_read(v[27], v[22])) + k.emit(v_accvgpr_read(v[28], v[26])) + k.emit(v_accvgpr_read(v[29], v[30])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[2], v[25])) + k.emit(v_accvgpr_write(v[6], v[26])) + k.emit(v_accvgpr_write(v[10], v[27])) + k.emit(v_accvgpr_write(v[14], v[28])) + k.emit(v_accvgpr_write(v[18], v[29])) + k.emit(v_accvgpr_read(v[25], v[46])) + k.emit(v_accvgpr_read(v[26], v[50])) + k.emit(v_accvgpr_read(v[27], v[54])) + k.emit(v_accvgpr_read(v[28], v[58])) + k.emit(v_accvgpr_read(v[29], v[62])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[34], v[25])) + k.emit(v_accvgpr_write(v[38], v[26])) + k.emit(v_accvgpr_write(v[42], v[27])) + k.emit(v_accvgpr_write(v[46], v[28])) + k.emit(v_accvgpr_write(v[50], v[29])) + k.emit(v_accvgpr_read(v[25], v[78])) + k.emit(v_accvgpr_read(v[26], v[82])) + k.emit(v_accvgpr_read(v[27], v[86])) + k.emit(v_accvgpr_read(v[28], v[90])) + k.emit(v_accvgpr_read(v[29], v[94])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[66], v[25])) + k.emit(v_accvgpr_write(v[70], v[26])) + k.emit(v_accvgpr_write(v[74], v[27])) + k.emit(v_accvgpr_write(v[78], v[28])) + k.emit(v_accvgpr_write(v[82], v[29])) + k.emit(v_accvgpr_read(v[25], v[110])) + k.emit(v_accvgpr_read(v[26], v[114])) + k.emit(v_accvgpr_read(v[27], v[118])) + k.emit(v_accvgpr_read(v[28], v[122])) + k.emit(v_accvgpr_read(v[29], v[126])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[98], v[25])) + k.emit(v_accvgpr_write(v[102], v[26])) + k.emit(v_accvgpr_write(v[106], v[27])) + k.emit(v_accvgpr_write(v[110], v[28])) + k.emit(v_accvgpr_write(v[114], v[29])) + k.emit(v_accvgpr_read(v[25], v[142])) + k.emit(v_accvgpr_read(v[26], v[146])) + k.emit(v_accvgpr_read(v[27], v[150])) + k.emit(v_accvgpr_read(v[28], v[154])) + k.emit(v_accvgpr_read(v[29], v[158])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[130], v[25])) + k.emit(v_accvgpr_write(v[134], v[26])) + k.emit(v_accvgpr_write(v[138], v[27])) + k.emit(v_accvgpr_write(v[142], v[28])) + k.emit(v_accvgpr_write(v[146], v[29])) + k.emit(v_accvgpr_read(v[25], v[174])) + k.emit(v_accvgpr_read(v[26], v[178])) + k.emit(v_accvgpr_read(v[27], v[182])) + k.emit(v_accvgpr_read(v[28], v[186])) + k.emit(v_accvgpr_read(v[29], v[190])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[162], v[25])) + k.emit(v_accvgpr_write(v[166], v[26])) + k.emit(v_accvgpr_write(v[170], v[27])) + k.emit(v_accvgpr_write(v[174], v[28])) + k.emit(v_accvgpr_write(v[178], v[29])) + k.emit(v_accvgpr_read(v[25], v[206])) + k.emit(v_accvgpr_read(v[26], v[210])) + k.emit(v_accvgpr_read(v[27], v[214])) + k.emit(v_accvgpr_read(v[28], v[218])) + k.emit(v_accvgpr_read(v[29], v[222])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[194], v[25])) + k.emit(v_accvgpr_write(v[198], v[26])) + k.emit(v_accvgpr_write(v[202], v[27])) + k.emit(v_accvgpr_write(v[206], v[28])) + k.emit(v_accvgpr_write(v[210], v[29])) + k.emit(v_accvgpr_read(v[25], v[238])) + k.emit(v_accvgpr_read(v[26], v[242])) + k.emit(v_accvgpr_read(v[27], v[246])) + k.emit(v_accvgpr_read(v[28], v[250])) + k.emit(v_accvgpr_read(v[29], v[254])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[226], v[25])) + k.emit(v_accvgpr_write(v[230], v[26])) + k.emit(v_accvgpr_write(v[234], v[27])) + k.emit(v_accvgpr_write(v[238], v[28])) + k.emit(v_accvgpr_write(v[242], v[29])) + k.emit(v_accvgpr_read(v[25], v[15])) + k.emit(v_accvgpr_read(v[26], v[19])) + k.emit(v_accvgpr_read(v[27], v[23])) + k.emit(v_accvgpr_read(v[28], v[27])) + k.emit(v_accvgpr_read(v[29], v[31])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[3], v[25])) + k.emit(v_accvgpr_write(v[7], v[26])) + k.emit(v_accvgpr_write(v[11], v[27])) + k.emit(v_accvgpr_write(v[15], v[28])) + k.emit(v_accvgpr_write(v[19], v[29])) + k.emit(v_accvgpr_read(v[25], v[47])) + k.emit(v_accvgpr_read(v[26], v[51])) + k.emit(v_accvgpr_read(v[27], v[55])) + k.emit(v_accvgpr_read(v[28], v[59])) + k.emit(v_accvgpr_read(v[29], v[63])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[35], v[25])) + k.emit(v_accvgpr_write(v[39], v[26])) + k.emit(v_accvgpr_write(v[43], v[27])) + k.emit(v_accvgpr_write(v[47], v[28])) + k.emit(v_accvgpr_write(v[51], v[29])) + k.emit(v_accvgpr_read(v[25], v[79])) + k.emit(v_accvgpr_read(v[26], v[83])) + k.emit(v_accvgpr_read(v[27], v[87])) + k.emit(v_accvgpr_read(v[28], v[91])) + k.emit(v_accvgpr_read(v[29], v[95])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[67], v[25])) + k.emit(v_accvgpr_write(v[71], v[26])) + k.emit(v_accvgpr_write(v[75], v[27])) + k.emit(v_accvgpr_write(v[79], v[28])) + k.emit(v_accvgpr_write(v[83], v[29])) + k.emit(v_accvgpr_read(v[25], v[111])) + k.emit(v_accvgpr_read(v[26], v[115])) + k.emit(v_accvgpr_read(v[27], v[119])) + k.emit(v_accvgpr_read(v[28], v[123])) + k.emit(v_accvgpr_read(v[29], v[127])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[99], v[25])) + k.emit(v_accvgpr_write(v[103], v[26])) + k.emit(v_accvgpr_write(v[107], v[27])) + k.emit(v_accvgpr_write(v[111], v[28])) + k.emit(v_accvgpr_write(v[115], v[29])) + k.emit(v_accvgpr_read(v[25], v[143])) + k.emit(v_accvgpr_read(v[26], v[147])) + k.emit(v_accvgpr_read(v[27], v[151])) + k.emit(v_accvgpr_read(v[28], v[155])) + k.emit(v_accvgpr_read(v[29], v[159])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[131], v[25])) + k.emit(v_accvgpr_write(v[135], v[26])) + k.emit(v_accvgpr_write(v[139], v[27])) + k.emit(v_accvgpr_write(v[143], v[28])) + k.emit(v_accvgpr_write(v[147], v[29])) + k.emit(v_accvgpr_read(v[25], v[175])) + k.emit(v_accvgpr_read(v[26], v[179])) + k.emit(v_accvgpr_read(v[27], v[183])) + k.emit(v_accvgpr_read(v[28], v[187])) + k.emit(v_accvgpr_read(v[29], v[191])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[163], v[25])) + k.emit(v_accvgpr_write(v[167], v[26])) + k.emit(v_accvgpr_write(v[171], v[27])) + k.emit(v_accvgpr_write(v[175], v[28])) + k.emit(v_accvgpr_write(v[179], v[29])) + k.emit(v_accvgpr_read(v[25], v[207])) + k.emit(v_accvgpr_read(v[26], v[211])) + k.emit(v_accvgpr_read(v[27], v[215])) + k.emit(v_accvgpr_read(v[28], v[219])) + k.emit(v_accvgpr_read(v[29], v[223])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[195], v[25])) + k.emit(v_accvgpr_write(v[199], v[26])) + k.emit(v_accvgpr_write(v[203], v[27])) + k.emit(v_accvgpr_write(v[207], v[28])) + k.emit(v_accvgpr_write(v[211], v[29])) + k.emit(v_accvgpr_read(v[25], v[239])) + k.emit(v_accvgpr_read(v[26], v[243])) + k.emit(v_accvgpr_read(v[27], v[247])) + k.emit(v_accvgpr_read(v[28], v[251])) + k.emit(v_accvgpr_read(v[29], v[255])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[227], v[25])) + k.emit(v_accvgpr_write(v[231], v[26])) + k.emit(v_accvgpr_write(v[235], v[27])) + k.emit(v_accvgpr_write(v[239], v[28])) + k.emit(v_accvgpr_write(v[243], v[29])) + k.emit(s_mov_b64(s[8:9], -1)) + k.emit(s_or_saveexec_b64(VCC, s[8:9])) + k.emit(s_branch(), target='ShiftVectorComponents0_GLVW0') + k.label('ShiftVectorComponents0_GLVW6_BM0_VW0') + k.emit(s_mov_b32(s[8], 0)) + k.emit(v_cmpx_eq_u32_e64(s[8:9], v[24], s[8])) + k.emit(v_and_b32_e32(v[18], 63, v[180])) + k.emit(v_lshlrev_b32_e32(v[18], 2, v[18])) + k.emit(v_accvgpr_read(v[25], v[8])) + k.emit(v_accvgpr_read(v[26], v[12])) + k.emit(v_accvgpr_read(v[27], v[16])) + k.emit(v_accvgpr_read(v[28], v[20])) + k.emit(v_accvgpr_read(v[29], v[24])) + k.emit(v_accvgpr_read(v[30], v[28])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[0], v[25])) + k.emit(v_accvgpr_write(v[4], v[26])) + k.emit(v_accvgpr_write(v[8], v[27])) + k.emit(v_accvgpr_write(v[12], v[28])) + k.emit(v_accvgpr_write(v[16], v[29])) + k.emit(v_accvgpr_write(v[20], v[30])) + k.emit(v_accvgpr_read(v[25], v[40])) + k.emit(v_accvgpr_read(v[26], v[44])) + k.emit(v_accvgpr_read(v[27], v[48])) + k.emit(v_accvgpr_read(v[28], v[52])) + k.emit(v_accvgpr_read(v[29], v[56])) + k.emit(v_accvgpr_read(v[30], v[60])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[32], v[25])) + k.emit(v_accvgpr_write(v[36], v[26])) + k.emit(v_accvgpr_write(v[40], v[27])) + k.emit(v_accvgpr_write(v[44], v[28])) + k.emit(v_accvgpr_write(v[48], v[29])) + k.emit(v_accvgpr_write(v[52], v[30])) + k.emit(v_accvgpr_read(v[25], v[72])) + k.emit(v_accvgpr_read(v[26], v[76])) + k.emit(v_accvgpr_read(v[27], v[80])) + k.emit(v_accvgpr_read(v[28], v[84])) + k.emit(v_accvgpr_read(v[29], v[88])) + k.emit(v_accvgpr_read(v[30], v[92])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[64], v[25])) + k.emit(v_accvgpr_write(v[68], v[26])) + k.emit(v_accvgpr_write(v[72], v[27])) + k.emit(v_accvgpr_write(v[76], v[28])) + k.emit(v_accvgpr_write(v[80], v[29])) + k.emit(v_accvgpr_write(v[84], v[30])) + k.emit(v_accvgpr_read(v[25], v[104])) + k.emit(v_accvgpr_read(v[26], v[108])) + k.emit(v_accvgpr_read(v[27], v[112])) + k.emit(v_accvgpr_read(v[28], v[116])) + k.emit(v_accvgpr_read(v[29], v[120])) + k.emit(v_accvgpr_read(v[30], v[124])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[96], v[25])) + k.emit(v_accvgpr_write(v[100], v[26])) + k.emit(v_accvgpr_write(v[104], v[27])) + k.emit(v_accvgpr_write(v[108], v[28])) + k.emit(v_accvgpr_write(v[112], v[29])) + k.emit(v_accvgpr_write(v[116], v[30])) + k.emit(v_accvgpr_read(v[25], v[136])) + k.emit(v_accvgpr_read(v[26], v[140])) + k.emit(v_accvgpr_read(v[27], v[144])) + k.emit(v_accvgpr_read(v[28], v[148])) + k.emit(v_accvgpr_read(v[29], v[152])) + k.emit(v_accvgpr_read(v[30], v[156])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[128], v[25])) + k.emit(v_accvgpr_write(v[132], v[26])) + k.emit(v_accvgpr_write(v[136], v[27])) + k.emit(v_accvgpr_write(v[140], v[28])) + k.emit(v_accvgpr_write(v[144], v[29])) + k.emit(v_accvgpr_write(v[148], v[30])) + k.emit(v_accvgpr_read(v[25], v[168])) + k.emit(v_accvgpr_read(v[26], v[172])) + k.emit(v_accvgpr_read(v[27], v[176])) + k.emit(v_accvgpr_read(v[28], v[180])) + k.emit(v_accvgpr_read(v[29], v[184])) + k.emit(v_accvgpr_read(v[30], v[188])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[160], v[25])) + k.emit(v_accvgpr_write(v[164], v[26])) + k.emit(v_accvgpr_write(v[168], v[27])) + k.emit(v_accvgpr_write(v[172], v[28])) + k.emit(v_accvgpr_write(v[176], v[29])) + k.emit(v_accvgpr_write(v[180], v[30])) + k.emit(v_accvgpr_read(v[25], v[200])) + k.emit(v_accvgpr_read(v[26], v[204])) + k.emit(v_accvgpr_read(v[27], v[208])) + k.emit(v_accvgpr_read(v[28], v[212])) + k.emit(v_accvgpr_read(v[29], v[216])) + k.emit(v_accvgpr_read(v[30], v[220])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[192], v[25])) + k.emit(v_accvgpr_write(v[196], v[26])) + k.emit(v_accvgpr_write(v[200], v[27])) + k.emit(v_accvgpr_write(v[204], v[28])) + k.emit(v_accvgpr_write(v[208], v[29])) + k.emit(v_accvgpr_write(v[212], v[30])) + k.emit(v_accvgpr_read(v[25], v[232])) + k.emit(v_accvgpr_read(v[26], v[236])) + k.emit(v_accvgpr_read(v[27], v[240])) + k.emit(v_accvgpr_read(v[28], v[244])) + k.emit(v_accvgpr_read(v[29], v[248])) + k.emit(v_accvgpr_read(v[30], v[252])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[224], v[25])) + k.emit(v_accvgpr_write(v[228], v[26])) + k.emit(v_accvgpr_write(v[232], v[27])) + k.emit(v_accvgpr_write(v[236], v[28])) + k.emit(v_accvgpr_write(v[240], v[29])) + k.emit(v_accvgpr_write(v[244], v[30])) + k.emit(v_accvgpr_read(v[25], v[9])) + k.emit(v_accvgpr_read(v[26], v[13])) + k.emit(v_accvgpr_read(v[27], v[17])) + k.emit(v_accvgpr_read(v[28], v[21])) + k.emit(v_accvgpr_read(v[29], v[25])) + k.emit(v_accvgpr_read(v[30], v[29])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[1], v[25])) + k.emit(v_accvgpr_write(v[5], v[26])) + k.emit(v_accvgpr_write(v[9], v[27])) + k.emit(v_accvgpr_write(v[13], v[28])) + k.emit(v_accvgpr_write(v[17], v[29])) + k.emit(v_accvgpr_write(v[21], v[30])) + k.emit(v_accvgpr_read(v[25], v[41])) + k.emit(v_accvgpr_read(v[26], v[45])) + k.emit(v_accvgpr_read(v[27], v[49])) + k.emit(v_accvgpr_read(v[28], v[53])) + k.emit(v_accvgpr_read(v[29], v[57])) + k.emit(v_accvgpr_read(v[30], v[61])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[33], v[25])) + k.emit(v_accvgpr_write(v[37], v[26])) + k.emit(v_accvgpr_write(v[41], v[27])) + k.emit(v_accvgpr_write(v[45], v[28])) + k.emit(v_accvgpr_write(v[49], v[29])) + k.emit(v_accvgpr_write(v[53], v[30])) + k.emit(v_accvgpr_read(v[25], v[73])) + k.emit(v_accvgpr_read(v[26], v[77])) + k.emit(v_accvgpr_read(v[27], v[81])) + k.emit(v_accvgpr_read(v[28], v[85])) + k.emit(v_accvgpr_read(v[29], v[89])) + k.emit(v_accvgpr_read(v[30], v[93])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[65], v[25])) + k.emit(v_accvgpr_write(v[69], v[26])) + k.emit(v_accvgpr_write(v[73], v[27])) + k.emit(v_accvgpr_write(v[77], v[28])) + k.emit(v_accvgpr_write(v[81], v[29])) + k.emit(v_accvgpr_write(v[85], v[30])) + k.emit(v_accvgpr_read(v[25], v[105])) + k.emit(v_accvgpr_read(v[26], v[109])) + k.emit(v_accvgpr_read(v[27], v[113])) + k.emit(v_accvgpr_read(v[28], v[117])) + k.emit(v_accvgpr_read(v[29], v[121])) + k.emit(v_accvgpr_read(v[30], v[125])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[97], v[25])) + k.emit(v_accvgpr_write(v[101], v[26])) + k.emit(v_accvgpr_write(v[105], v[27])) + k.emit(v_accvgpr_write(v[109], v[28])) + k.emit(v_accvgpr_write(v[113], v[29])) + k.emit(v_accvgpr_write(v[117], v[30])) + k.emit(v_accvgpr_read(v[25], v[137])) + k.emit(v_accvgpr_read(v[26], v[141])) + k.emit(v_accvgpr_read(v[27], v[145])) + k.emit(v_accvgpr_read(v[28], v[149])) + k.emit(v_accvgpr_read(v[29], v[153])) + k.emit(v_accvgpr_read(v[30], v[157])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[129], v[25])) + k.emit(v_accvgpr_write(v[133], v[26])) + k.emit(v_accvgpr_write(v[137], v[27])) + k.emit(v_accvgpr_write(v[141], v[28])) + k.emit(v_accvgpr_write(v[145], v[29])) + k.emit(v_accvgpr_write(v[149], v[30])) + k.emit(v_accvgpr_read(v[25], v[169])) + k.emit(v_accvgpr_read(v[26], v[173])) + k.emit(v_accvgpr_read(v[27], v[177])) + k.emit(v_accvgpr_read(v[28], v[181])) + k.emit(v_accvgpr_read(v[29], v[185])) + k.emit(v_accvgpr_read(v[30], v[189])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[161], v[25])) + k.emit(v_accvgpr_write(v[165], v[26])) + k.emit(v_accvgpr_write(v[169], v[27])) + k.emit(v_accvgpr_write(v[173], v[28])) + k.emit(v_accvgpr_write(v[177], v[29])) + k.emit(v_accvgpr_write(v[181], v[30])) + k.emit(v_accvgpr_read(v[25], v[201])) + k.emit(v_accvgpr_read(v[26], v[205])) + k.emit(v_accvgpr_read(v[27], v[209])) + k.emit(v_accvgpr_read(v[28], v[213])) + k.emit(v_accvgpr_read(v[29], v[217])) + k.emit(v_accvgpr_read(v[30], v[221])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[193], v[25])) + k.emit(v_accvgpr_write(v[197], v[26])) + k.emit(v_accvgpr_write(v[201], v[27])) + k.emit(v_accvgpr_write(v[205], v[28])) + k.emit(v_accvgpr_write(v[209], v[29])) + k.emit(v_accvgpr_write(v[213], v[30])) + k.emit(v_accvgpr_read(v[25], v[233])) + k.emit(v_accvgpr_read(v[26], v[237])) + k.emit(v_accvgpr_read(v[27], v[241])) + k.emit(v_accvgpr_read(v[28], v[245])) + k.emit(v_accvgpr_read(v[29], v[249])) + k.emit(v_accvgpr_read(v[30], v[253])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[225], v[25])) + k.emit(v_accvgpr_write(v[229], v[26])) + k.emit(v_accvgpr_write(v[233], v[27])) + k.emit(v_accvgpr_write(v[237], v[28])) + k.emit(v_accvgpr_write(v[241], v[29])) + k.emit(v_accvgpr_write(v[245], v[30])) + k.emit(v_accvgpr_read(v[25], v[10])) + k.emit(v_accvgpr_read(v[26], v[14])) + k.emit(v_accvgpr_read(v[27], v[18])) + k.emit(v_accvgpr_read(v[28], v[22])) + k.emit(v_accvgpr_read(v[29], v[26])) + k.emit(v_accvgpr_read(v[30], v[30])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[2], v[25])) + k.emit(v_accvgpr_write(v[6], v[26])) + k.emit(v_accvgpr_write(v[10], v[27])) + k.emit(v_accvgpr_write(v[14], v[28])) + k.emit(v_accvgpr_write(v[18], v[29])) + k.emit(v_accvgpr_write(v[22], v[30])) + k.emit(v_accvgpr_read(v[25], v[42])) + k.emit(v_accvgpr_read(v[26], v[46])) + k.emit(v_accvgpr_read(v[27], v[50])) + k.emit(v_accvgpr_read(v[28], v[54])) + k.emit(v_accvgpr_read(v[29], v[58])) + k.emit(v_accvgpr_read(v[30], v[62])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[34], v[25])) + k.emit(v_accvgpr_write(v[38], v[26])) + k.emit(v_accvgpr_write(v[42], v[27])) + k.emit(v_accvgpr_write(v[46], v[28])) + k.emit(v_accvgpr_write(v[50], v[29])) + k.emit(v_accvgpr_write(v[54], v[30])) + k.emit(v_accvgpr_read(v[25], v[74])) + k.emit(v_accvgpr_read(v[26], v[78])) + k.emit(v_accvgpr_read(v[27], v[82])) + k.emit(v_accvgpr_read(v[28], v[86])) + k.emit(v_accvgpr_read(v[29], v[90])) + k.emit(v_accvgpr_read(v[30], v[94])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[66], v[25])) + k.emit(v_accvgpr_write(v[70], v[26])) + k.emit(v_accvgpr_write(v[74], v[27])) + k.emit(v_accvgpr_write(v[78], v[28])) + k.emit(v_accvgpr_write(v[82], v[29])) + k.emit(v_accvgpr_write(v[86], v[30])) + k.emit(v_accvgpr_read(v[25], v[106])) + k.emit(v_accvgpr_read(v[26], v[110])) + k.emit(v_accvgpr_read(v[27], v[114])) + k.emit(v_accvgpr_read(v[28], v[118])) + k.emit(v_accvgpr_read(v[29], v[122])) + k.emit(v_accvgpr_read(v[30], v[126])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[98], v[25])) + k.emit(v_accvgpr_write(v[102], v[26])) + k.emit(v_accvgpr_write(v[106], v[27])) + k.emit(v_accvgpr_write(v[110], v[28])) + k.emit(v_accvgpr_write(v[114], v[29])) + k.emit(v_accvgpr_write(v[118], v[30])) + k.emit(v_accvgpr_read(v[25], v[138])) + k.emit(v_accvgpr_read(v[26], v[142])) + k.emit(v_accvgpr_read(v[27], v[146])) + k.emit(v_accvgpr_read(v[28], v[150])) + k.emit(v_accvgpr_read(v[29], v[154])) + k.emit(v_accvgpr_read(v[30], v[158])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[130], v[25])) + k.emit(v_accvgpr_write(v[134], v[26])) + k.emit(v_accvgpr_write(v[138], v[27])) + k.emit(v_accvgpr_write(v[142], v[28])) + k.emit(v_accvgpr_write(v[146], v[29])) + k.emit(v_accvgpr_write(v[150], v[30])) + k.emit(v_accvgpr_read(v[25], v[170])) + k.emit(v_accvgpr_read(v[26], v[174])) + k.emit(v_accvgpr_read(v[27], v[178])) + k.emit(v_accvgpr_read(v[28], v[182])) + k.emit(v_accvgpr_read(v[29], v[186])) + k.emit(v_accvgpr_read(v[30], v[190])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[162], v[25])) + k.emit(v_accvgpr_write(v[166], v[26])) + k.emit(v_accvgpr_write(v[170], v[27])) + k.emit(v_accvgpr_write(v[174], v[28])) + k.emit(v_accvgpr_write(v[178], v[29])) + k.emit(v_accvgpr_write(v[182], v[30])) + k.emit(v_accvgpr_read(v[25], v[202])) + k.emit(v_accvgpr_read(v[26], v[206])) + k.emit(v_accvgpr_read(v[27], v[210])) + k.emit(v_accvgpr_read(v[28], v[214])) + k.emit(v_accvgpr_read(v[29], v[218])) + k.emit(v_accvgpr_read(v[30], v[222])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[194], v[25])) + k.emit(v_accvgpr_write(v[198], v[26])) + k.emit(v_accvgpr_write(v[202], v[27])) + k.emit(v_accvgpr_write(v[206], v[28])) + k.emit(v_accvgpr_write(v[210], v[29])) + k.emit(v_accvgpr_write(v[214], v[30])) + k.emit(v_accvgpr_read(v[25], v[234])) + k.emit(v_accvgpr_read(v[26], v[238])) + k.emit(v_accvgpr_read(v[27], v[242])) + k.emit(v_accvgpr_read(v[28], v[246])) + k.emit(v_accvgpr_read(v[29], v[250])) + k.emit(v_accvgpr_read(v[30], v[254])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[226], v[25])) + k.emit(v_accvgpr_write(v[230], v[26])) + k.emit(v_accvgpr_write(v[234], v[27])) + k.emit(v_accvgpr_write(v[238], v[28])) + k.emit(v_accvgpr_write(v[242], v[29])) + k.emit(v_accvgpr_write(v[246], v[30])) + k.emit(v_accvgpr_read(v[25], v[11])) + k.emit(v_accvgpr_read(v[26], v[15])) + k.emit(v_accvgpr_read(v[27], v[19])) + k.emit(v_accvgpr_read(v[28], v[23])) + k.emit(v_accvgpr_read(v[29], v[27])) + k.emit(v_accvgpr_read(v[30], v[31])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[3], v[25])) + k.emit(v_accvgpr_write(v[7], v[26])) + k.emit(v_accvgpr_write(v[11], v[27])) + k.emit(v_accvgpr_write(v[15], v[28])) + k.emit(v_accvgpr_write(v[19], v[29])) + k.emit(v_accvgpr_write(v[23], v[30])) + k.emit(v_accvgpr_read(v[25], v[43])) + k.emit(v_accvgpr_read(v[26], v[47])) + k.emit(v_accvgpr_read(v[27], v[51])) + k.emit(v_accvgpr_read(v[28], v[55])) + k.emit(v_accvgpr_read(v[29], v[59])) + k.emit(v_accvgpr_read(v[30], v[63])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[35], v[25])) + k.emit(v_accvgpr_write(v[39], v[26])) + k.emit(v_accvgpr_write(v[43], v[27])) + k.emit(v_accvgpr_write(v[47], v[28])) + k.emit(v_accvgpr_write(v[51], v[29])) + k.emit(v_accvgpr_write(v[55], v[30])) + k.emit(v_accvgpr_read(v[25], v[75])) + k.emit(v_accvgpr_read(v[26], v[79])) + k.emit(v_accvgpr_read(v[27], v[83])) + k.emit(v_accvgpr_read(v[28], v[87])) + k.emit(v_accvgpr_read(v[29], v[91])) + k.emit(v_accvgpr_read(v[30], v[95])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[67], v[25])) + k.emit(v_accvgpr_write(v[71], v[26])) + k.emit(v_accvgpr_write(v[75], v[27])) + k.emit(v_accvgpr_write(v[79], v[28])) + k.emit(v_accvgpr_write(v[83], v[29])) + k.emit(v_accvgpr_write(v[87], v[30])) + k.emit(v_accvgpr_read(v[25], v[107])) + k.emit(v_accvgpr_read(v[26], v[111])) + k.emit(v_accvgpr_read(v[27], v[115])) + k.emit(v_accvgpr_read(v[28], v[119])) + k.emit(v_accvgpr_read(v[29], v[123])) + k.emit(v_accvgpr_read(v[30], v[127])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[99], v[25])) + k.emit(v_accvgpr_write(v[103], v[26])) + k.emit(v_accvgpr_write(v[107], v[27])) + k.emit(v_accvgpr_write(v[111], v[28])) + k.emit(v_accvgpr_write(v[115], v[29])) + k.emit(v_accvgpr_write(v[119], v[30])) + k.emit(v_accvgpr_read(v[25], v[139])) + k.emit(v_accvgpr_read(v[26], v[143])) + k.emit(v_accvgpr_read(v[27], v[147])) + k.emit(v_accvgpr_read(v[28], v[151])) + k.emit(v_accvgpr_read(v[29], v[155])) + k.emit(v_accvgpr_read(v[30], v[159])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[131], v[25])) + k.emit(v_accvgpr_write(v[135], v[26])) + k.emit(v_accvgpr_write(v[139], v[27])) + k.emit(v_accvgpr_write(v[143], v[28])) + k.emit(v_accvgpr_write(v[147], v[29])) + k.emit(v_accvgpr_write(v[151], v[30])) + k.emit(v_accvgpr_read(v[25], v[171])) + k.emit(v_accvgpr_read(v[26], v[175])) + k.emit(v_accvgpr_read(v[27], v[179])) + k.emit(v_accvgpr_read(v[28], v[183])) + k.emit(v_accvgpr_read(v[29], v[187])) + k.emit(v_accvgpr_read(v[30], v[191])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[163], v[25])) + k.emit(v_accvgpr_write(v[167], v[26])) + k.emit(v_accvgpr_write(v[171], v[27])) + k.emit(v_accvgpr_write(v[175], v[28])) + k.emit(v_accvgpr_write(v[179], v[29])) + k.emit(v_accvgpr_write(v[183], v[30])) + k.emit(v_accvgpr_read(v[25], v[203])) + k.emit(v_accvgpr_read(v[26], v[207])) + k.emit(v_accvgpr_read(v[27], v[211])) + k.emit(v_accvgpr_read(v[28], v[215])) + k.emit(v_accvgpr_read(v[29], v[219])) + k.emit(v_accvgpr_read(v[30], v[223])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[195], v[25])) + k.emit(v_accvgpr_write(v[199], v[26])) + k.emit(v_accvgpr_write(v[203], v[27])) + k.emit(v_accvgpr_write(v[207], v[28])) + k.emit(v_accvgpr_write(v[211], v[29])) + k.emit(v_accvgpr_write(v[215], v[30])) + k.emit(v_accvgpr_read(v[25], v[235])) + k.emit(v_accvgpr_read(v[26], v[239])) + k.emit(v_accvgpr_read(v[27], v[243])) + k.emit(v_accvgpr_read(v[28], v[247])) + k.emit(v_accvgpr_read(v[29], v[251])) + k.emit(v_accvgpr_read(v[30], v[255])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[227], v[25])) + k.emit(v_accvgpr_write(v[231], v[26])) + k.emit(v_accvgpr_write(v[235], v[27])) + k.emit(v_accvgpr_write(v[239], v[28])) + k.emit(v_accvgpr_write(v[243], v[29])) + k.emit(v_accvgpr_write(v[247], v[30])) + k.emit(s_mov_b64(s[8:9], -1)) + k.emit(s_or_saveexec_b64(VCC, s[8:9])) + k.emit(s_branch(), target='ShiftVectorComponents0_GLVW0') + k.label('ShiftVectorComponents0_GLVW7_BM0_VW0') + k.emit(s_mov_b32(s[8], 0)) + k.emit(v_cmpx_eq_u32_e64(s[8:9], v[24], s[8])) + k.emit(v_and_b32_e32(v[18], 63, v[180])) + k.emit(v_lshlrev_b32_e32(v[18], 2, v[18])) + k.emit(v_accvgpr_read(v[25], v[4])) + k.emit(v_accvgpr_read(v[26], v[8])) + k.emit(v_accvgpr_read(v[27], v[12])) + k.emit(v_accvgpr_read(v[28], v[16])) + k.emit(v_accvgpr_read(v[29], v[20])) + k.emit(v_accvgpr_read(v[30], v[24])) + k.emit(v_accvgpr_read(v[31], v[28])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[0], v[25])) + k.emit(v_accvgpr_write(v[4], v[26])) + k.emit(v_accvgpr_write(v[8], v[27])) + k.emit(v_accvgpr_write(v[12], v[28])) + k.emit(v_accvgpr_write(v[16], v[29])) + k.emit(v_accvgpr_write(v[20], v[30])) + k.emit(v_accvgpr_write(v[24], v[31])) + k.emit(v_accvgpr_read(v[25], v[36])) + k.emit(v_accvgpr_read(v[26], v[40])) + k.emit(v_accvgpr_read(v[27], v[44])) + k.emit(v_accvgpr_read(v[28], v[48])) + k.emit(v_accvgpr_read(v[29], v[52])) + k.emit(v_accvgpr_read(v[30], v[56])) + k.emit(v_accvgpr_read(v[31], v[60])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[32], v[25])) + k.emit(v_accvgpr_write(v[36], v[26])) + k.emit(v_accvgpr_write(v[40], v[27])) + k.emit(v_accvgpr_write(v[44], v[28])) + k.emit(v_accvgpr_write(v[48], v[29])) + k.emit(v_accvgpr_write(v[52], v[30])) + k.emit(v_accvgpr_write(v[56], v[31])) + k.emit(v_accvgpr_read(v[25], v[68])) + k.emit(v_accvgpr_read(v[26], v[72])) + k.emit(v_accvgpr_read(v[27], v[76])) + k.emit(v_accvgpr_read(v[28], v[80])) + k.emit(v_accvgpr_read(v[29], v[84])) + k.emit(v_accvgpr_read(v[30], v[88])) + k.emit(v_accvgpr_read(v[31], v[92])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[64], v[25])) + k.emit(v_accvgpr_write(v[68], v[26])) + k.emit(v_accvgpr_write(v[72], v[27])) + k.emit(v_accvgpr_write(v[76], v[28])) + k.emit(v_accvgpr_write(v[80], v[29])) + k.emit(v_accvgpr_write(v[84], v[30])) + k.emit(v_accvgpr_write(v[88], v[31])) + k.emit(v_accvgpr_read(v[25], v[100])) + k.emit(v_accvgpr_read(v[26], v[104])) + k.emit(v_accvgpr_read(v[27], v[108])) + k.emit(v_accvgpr_read(v[28], v[112])) + k.emit(v_accvgpr_read(v[29], v[116])) + k.emit(v_accvgpr_read(v[30], v[120])) + k.emit(v_accvgpr_read(v[31], v[124])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[96], v[25])) + k.emit(v_accvgpr_write(v[100], v[26])) + k.emit(v_accvgpr_write(v[104], v[27])) + k.emit(v_accvgpr_write(v[108], v[28])) + k.emit(v_accvgpr_write(v[112], v[29])) + k.emit(v_accvgpr_write(v[116], v[30])) + k.emit(v_accvgpr_write(v[120], v[31])) + k.emit(v_accvgpr_read(v[25], v[132])) + k.emit(v_accvgpr_read(v[26], v[136])) + k.emit(v_accvgpr_read(v[27], v[140])) + k.emit(v_accvgpr_read(v[28], v[144])) + k.emit(v_accvgpr_read(v[29], v[148])) + k.emit(v_accvgpr_read(v[30], v[152])) + k.emit(v_accvgpr_read(v[31], v[156])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[128], v[25])) + k.emit(v_accvgpr_write(v[132], v[26])) + k.emit(v_accvgpr_write(v[136], v[27])) + k.emit(v_accvgpr_write(v[140], v[28])) + k.emit(v_accvgpr_write(v[144], v[29])) + k.emit(v_accvgpr_write(v[148], v[30])) + k.emit(v_accvgpr_write(v[152], v[31])) + k.emit(v_accvgpr_read(v[25], v[164])) + k.emit(v_accvgpr_read(v[26], v[168])) + k.emit(v_accvgpr_read(v[27], v[172])) + k.emit(v_accvgpr_read(v[28], v[176])) + k.emit(v_accvgpr_read(v[29], v[180])) + k.emit(v_accvgpr_read(v[30], v[184])) + k.emit(v_accvgpr_read(v[31], v[188])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[160], v[25])) + k.emit(v_accvgpr_write(v[164], v[26])) + k.emit(v_accvgpr_write(v[168], v[27])) + k.emit(v_accvgpr_write(v[172], v[28])) + k.emit(v_accvgpr_write(v[176], v[29])) + k.emit(v_accvgpr_write(v[180], v[30])) + k.emit(v_accvgpr_write(v[184], v[31])) + k.emit(v_accvgpr_read(v[25], v[196])) + k.emit(v_accvgpr_read(v[26], v[200])) + k.emit(v_accvgpr_read(v[27], v[204])) + k.emit(v_accvgpr_read(v[28], v[208])) + k.emit(v_accvgpr_read(v[29], v[212])) + k.emit(v_accvgpr_read(v[30], v[216])) + k.emit(v_accvgpr_read(v[31], v[220])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[192], v[25])) + k.emit(v_accvgpr_write(v[196], v[26])) + k.emit(v_accvgpr_write(v[200], v[27])) + k.emit(v_accvgpr_write(v[204], v[28])) + k.emit(v_accvgpr_write(v[208], v[29])) + k.emit(v_accvgpr_write(v[212], v[30])) + k.emit(v_accvgpr_write(v[216], v[31])) + k.emit(v_accvgpr_read(v[25], v[228])) + k.emit(v_accvgpr_read(v[26], v[232])) + k.emit(v_accvgpr_read(v[27], v[236])) + k.emit(v_accvgpr_read(v[28], v[240])) + k.emit(v_accvgpr_read(v[29], v[244])) + k.emit(v_accvgpr_read(v[30], v[248])) + k.emit(v_accvgpr_read(v[31], v[252])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[224], v[25])) + k.emit(v_accvgpr_write(v[228], v[26])) + k.emit(v_accvgpr_write(v[232], v[27])) + k.emit(v_accvgpr_write(v[236], v[28])) + k.emit(v_accvgpr_write(v[240], v[29])) + k.emit(v_accvgpr_write(v[244], v[30])) + k.emit(v_accvgpr_write(v[248], v[31])) + k.emit(v_accvgpr_read(v[25], v[5])) + k.emit(v_accvgpr_read(v[26], v[9])) + k.emit(v_accvgpr_read(v[27], v[13])) + k.emit(v_accvgpr_read(v[28], v[17])) + k.emit(v_accvgpr_read(v[29], v[21])) + k.emit(v_accvgpr_read(v[30], v[25])) + k.emit(v_accvgpr_read(v[31], v[29])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[1], v[25])) + k.emit(v_accvgpr_write(v[5], v[26])) + k.emit(v_accvgpr_write(v[9], v[27])) + k.emit(v_accvgpr_write(v[13], v[28])) + k.emit(v_accvgpr_write(v[17], v[29])) + k.emit(v_accvgpr_write(v[21], v[30])) + k.emit(v_accvgpr_write(v[25], v[31])) + k.emit(v_accvgpr_read(v[25], v[37])) + k.emit(v_accvgpr_read(v[26], v[41])) + k.emit(v_accvgpr_read(v[27], v[45])) + k.emit(v_accvgpr_read(v[28], v[49])) + k.emit(v_accvgpr_read(v[29], v[53])) + k.emit(v_accvgpr_read(v[30], v[57])) + k.emit(v_accvgpr_read(v[31], v[61])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[33], v[25])) + k.emit(v_accvgpr_write(v[37], v[26])) + k.emit(v_accvgpr_write(v[41], v[27])) + k.emit(v_accvgpr_write(v[45], v[28])) + k.emit(v_accvgpr_write(v[49], v[29])) + k.emit(v_accvgpr_write(v[53], v[30])) + k.emit(v_accvgpr_write(v[57], v[31])) + k.emit(v_accvgpr_read(v[25], v[69])) + k.emit(v_accvgpr_read(v[26], v[73])) + k.emit(v_accvgpr_read(v[27], v[77])) + k.emit(v_accvgpr_read(v[28], v[81])) + k.emit(v_accvgpr_read(v[29], v[85])) + k.emit(v_accvgpr_read(v[30], v[89])) + k.emit(v_accvgpr_read(v[31], v[93])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[65], v[25])) + k.emit(v_accvgpr_write(v[69], v[26])) + k.emit(v_accvgpr_write(v[73], v[27])) + k.emit(v_accvgpr_write(v[77], v[28])) + k.emit(v_accvgpr_write(v[81], v[29])) + k.emit(v_accvgpr_write(v[85], v[30])) + k.emit(v_accvgpr_write(v[89], v[31])) + k.emit(v_accvgpr_read(v[25], v[101])) + k.emit(v_accvgpr_read(v[26], v[105])) + k.emit(v_accvgpr_read(v[27], v[109])) + k.emit(v_accvgpr_read(v[28], v[113])) + k.emit(v_accvgpr_read(v[29], v[117])) + k.emit(v_accvgpr_read(v[30], v[121])) + k.emit(v_accvgpr_read(v[31], v[125])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[97], v[25])) + k.emit(v_accvgpr_write(v[101], v[26])) + k.emit(v_accvgpr_write(v[105], v[27])) + k.emit(v_accvgpr_write(v[109], v[28])) + k.emit(v_accvgpr_write(v[113], v[29])) + k.emit(v_accvgpr_write(v[117], v[30])) + k.emit(v_accvgpr_write(v[121], v[31])) + k.emit(v_accvgpr_read(v[25], v[133])) + k.emit(v_accvgpr_read(v[26], v[137])) + k.emit(v_accvgpr_read(v[27], v[141])) + k.emit(v_accvgpr_read(v[28], v[145])) + k.emit(v_accvgpr_read(v[29], v[149])) + k.emit(v_accvgpr_read(v[30], v[153])) + k.emit(v_accvgpr_read(v[31], v[157])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[129], v[25])) + k.emit(v_accvgpr_write(v[133], v[26])) + k.emit(v_accvgpr_write(v[137], v[27])) + k.emit(v_accvgpr_write(v[141], v[28])) + k.emit(v_accvgpr_write(v[145], v[29])) + k.emit(v_accvgpr_write(v[149], v[30])) + k.emit(v_accvgpr_write(v[153], v[31])) + k.emit(v_accvgpr_read(v[25], v[165])) + k.emit(v_accvgpr_read(v[26], v[169])) + k.emit(v_accvgpr_read(v[27], v[173])) + k.emit(v_accvgpr_read(v[28], v[177])) + k.emit(v_accvgpr_read(v[29], v[181])) + k.emit(v_accvgpr_read(v[30], v[185])) + k.emit(v_accvgpr_read(v[31], v[189])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[161], v[25])) + k.emit(v_accvgpr_write(v[165], v[26])) + k.emit(v_accvgpr_write(v[169], v[27])) + k.emit(v_accvgpr_write(v[173], v[28])) + k.emit(v_accvgpr_write(v[177], v[29])) + k.emit(v_accvgpr_write(v[181], v[30])) + k.emit(v_accvgpr_write(v[185], v[31])) + k.emit(v_accvgpr_read(v[25], v[197])) + k.emit(v_accvgpr_read(v[26], v[201])) + k.emit(v_accvgpr_read(v[27], v[205])) + k.emit(v_accvgpr_read(v[28], v[209])) + k.emit(v_accvgpr_read(v[29], v[213])) + k.emit(v_accvgpr_read(v[30], v[217])) + k.emit(v_accvgpr_read(v[31], v[221])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[193], v[25])) + k.emit(v_accvgpr_write(v[197], v[26])) + k.emit(v_accvgpr_write(v[201], v[27])) + k.emit(v_accvgpr_write(v[205], v[28])) + k.emit(v_accvgpr_write(v[209], v[29])) + k.emit(v_accvgpr_write(v[213], v[30])) + k.emit(v_accvgpr_write(v[217], v[31])) + k.emit(v_accvgpr_read(v[25], v[229])) + k.emit(v_accvgpr_read(v[26], v[233])) + k.emit(v_accvgpr_read(v[27], v[237])) + k.emit(v_accvgpr_read(v[28], v[241])) + k.emit(v_accvgpr_read(v[29], v[245])) + k.emit(v_accvgpr_read(v[30], v[249])) + k.emit(v_accvgpr_read(v[31], v[253])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[225], v[25])) + k.emit(v_accvgpr_write(v[229], v[26])) + k.emit(v_accvgpr_write(v[233], v[27])) + k.emit(v_accvgpr_write(v[237], v[28])) + k.emit(v_accvgpr_write(v[241], v[29])) + k.emit(v_accvgpr_write(v[245], v[30])) + k.emit(v_accvgpr_write(v[249], v[31])) + k.emit(v_accvgpr_read(v[25], v[6])) + k.emit(v_accvgpr_read(v[26], v[10])) + k.emit(v_accvgpr_read(v[27], v[14])) + k.emit(v_accvgpr_read(v[28], v[18])) + k.emit(v_accvgpr_read(v[29], v[22])) + k.emit(v_accvgpr_read(v[30], v[26])) + k.emit(v_accvgpr_read(v[31], v[30])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[2], v[25])) + k.emit(v_accvgpr_write(v[6], v[26])) + k.emit(v_accvgpr_write(v[10], v[27])) + k.emit(v_accvgpr_write(v[14], v[28])) + k.emit(v_accvgpr_write(v[18], v[29])) + k.emit(v_accvgpr_write(v[22], v[30])) + k.emit(v_accvgpr_write(v[26], v[31])) + k.emit(v_accvgpr_read(v[25], v[38])) + k.emit(v_accvgpr_read(v[26], v[42])) + k.emit(v_accvgpr_read(v[27], v[46])) + k.emit(v_accvgpr_read(v[28], v[50])) + k.emit(v_accvgpr_read(v[29], v[54])) + k.emit(v_accvgpr_read(v[30], v[58])) + k.emit(v_accvgpr_read(v[31], v[62])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[34], v[25])) + k.emit(v_accvgpr_write(v[38], v[26])) + k.emit(v_accvgpr_write(v[42], v[27])) + k.emit(v_accvgpr_write(v[46], v[28])) + k.emit(v_accvgpr_write(v[50], v[29])) + k.emit(v_accvgpr_write(v[54], v[30])) + k.emit(v_accvgpr_write(v[58], v[31])) + k.emit(v_accvgpr_read(v[25], v[70])) + k.emit(v_accvgpr_read(v[26], v[74])) + k.emit(v_accvgpr_read(v[27], v[78])) + k.emit(v_accvgpr_read(v[28], v[82])) + k.emit(v_accvgpr_read(v[29], v[86])) + k.emit(v_accvgpr_read(v[30], v[90])) + k.emit(v_accvgpr_read(v[31], v[94])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[66], v[25])) + k.emit(v_accvgpr_write(v[70], v[26])) + k.emit(v_accvgpr_write(v[74], v[27])) + k.emit(v_accvgpr_write(v[78], v[28])) + k.emit(v_accvgpr_write(v[82], v[29])) + k.emit(v_accvgpr_write(v[86], v[30])) + k.emit(v_accvgpr_write(v[90], v[31])) + k.emit(v_accvgpr_read(v[25], v[102])) + k.emit(v_accvgpr_read(v[26], v[106])) + k.emit(v_accvgpr_read(v[27], v[110])) + k.emit(v_accvgpr_read(v[28], v[114])) + k.emit(v_accvgpr_read(v[29], v[118])) + k.emit(v_accvgpr_read(v[30], v[122])) + k.emit(v_accvgpr_read(v[31], v[126])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[98], v[25])) + k.emit(v_accvgpr_write(v[102], v[26])) + k.emit(v_accvgpr_write(v[106], v[27])) + k.emit(v_accvgpr_write(v[110], v[28])) + k.emit(v_accvgpr_write(v[114], v[29])) + k.emit(v_accvgpr_write(v[118], v[30])) + k.emit(v_accvgpr_write(v[122], v[31])) + k.emit(v_accvgpr_read(v[25], v[134])) + k.emit(v_accvgpr_read(v[26], v[138])) + k.emit(v_accvgpr_read(v[27], v[142])) + k.emit(v_accvgpr_read(v[28], v[146])) + k.emit(v_accvgpr_read(v[29], v[150])) + k.emit(v_accvgpr_read(v[30], v[154])) + k.emit(v_accvgpr_read(v[31], v[158])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[130], v[25])) + k.emit(v_accvgpr_write(v[134], v[26])) + k.emit(v_accvgpr_write(v[138], v[27])) + k.emit(v_accvgpr_write(v[142], v[28])) + k.emit(v_accvgpr_write(v[146], v[29])) + k.emit(v_accvgpr_write(v[150], v[30])) + k.emit(v_accvgpr_write(v[154], v[31])) + k.emit(v_accvgpr_read(v[25], v[166])) + k.emit(v_accvgpr_read(v[26], v[170])) + k.emit(v_accvgpr_read(v[27], v[174])) + k.emit(v_accvgpr_read(v[28], v[178])) + k.emit(v_accvgpr_read(v[29], v[182])) + k.emit(v_accvgpr_read(v[30], v[186])) + k.emit(v_accvgpr_read(v[31], v[190])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[162], v[25])) + k.emit(v_accvgpr_write(v[166], v[26])) + k.emit(v_accvgpr_write(v[170], v[27])) + k.emit(v_accvgpr_write(v[174], v[28])) + k.emit(v_accvgpr_write(v[178], v[29])) + k.emit(v_accvgpr_write(v[182], v[30])) + k.emit(v_accvgpr_write(v[186], v[31])) + k.emit(v_accvgpr_read(v[25], v[198])) + k.emit(v_accvgpr_read(v[26], v[202])) + k.emit(v_accvgpr_read(v[27], v[206])) + k.emit(v_accvgpr_read(v[28], v[210])) + k.emit(v_accvgpr_read(v[29], v[214])) + k.emit(v_accvgpr_read(v[30], v[218])) + k.emit(v_accvgpr_read(v[31], v[222])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[194], v[25])) + k.emit(v_accvgpr_write(v[198], v[26])) + k.emit(v_accvgpr_write(v[202], v[27])) + k.emit(v_accvgpr_write(v[206], v[28])) + k.emit(v_accvgpr_write(v[210], v[29])) + k.emit(v_accvgpr_write(v[214], v[30])) + k.emit(v_accvgpr_write(v[218], v[31])) + k.emit(v_accvgpr_read(v[25], v[230])) + k.emit(v_accvgpr_read(v[26], v[234])) + k.emit(v_accvgpr_read(v[27], v[238])) + k.emit(v_accvgpr_read(v[28], v[242])) + k.emit(v_accvgpr_read(v[29], v[246])) + k.emit(v_accvgpr_read(v[30], v[250])) + k.emit(v_accvgpr_read(v[31], v[254])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[226], v[25])) + k.emit(v_accvgpr_write(v[230], v[26])) + k.emit(v_accvgpr_write(v[234], v[27])) + k.emit(v_accvgpr_write(v[238], v[28])) + k.emit(v_accvgpr_write(v[242], v[29])) + k.emit(v_accvgpr_write(v[246], v[30])) + k.emit(v_accvgpr_write(v[250], v[31])) + k.emit(v_accvgpr_read(v[25], v[7])) + k.emit(v_accvgpr_read(v[26], v[11])) + k.emit(v_accvgpr_read(v[27], v[15])) + k.emit(v_accvgpr_read(v[28], v[19])) + k.emit(v_accvgpr_read(v[29], v[23])) + k.emit(v_accvgpr_read(v[30], v[27])) + k.emit(v_accvgpr_read(v[31], v[31])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[3], v[25])) + k.emit(v_accvgpr_write(v[7], v[26])) + k.emit(v_accvgpr_write(v[11], v[27])) + k.emit(v_accvgpr_write(v[15], v[28])) + k.emit(v_accvgpr_write(v[19], v[29])) + k.emit(v_accvgpr_write(v[23], v[30])) + k.emit(v_accvgpr_write(v[27], v[31])) + k.emit(v_accvgpr_read(v[25], v[39])) + k.emit(v_accvgpr_read(v[26], v[43])) + k.emit(v_accvgpr_read(v[27], v[47])) + k.emit(v_accvgpr_read(v[28], v[51])) + k.emit(v_accvgpr_read(v[29], v[55])) + k.emit(v_accvgpr_read(v[30], v[59])) + k.emit(v_accvgpr_read(v[31], v[63])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[35], v[25])) + k.emit(v_accvgpr_write(v[39], v[26])) + k.emit(v_accvgpr_write(v[43], v[27])) + k.emit(v_accvgpr_write(v[47], v[28])) + k.emit(v_accvgpr_write(v[51], v[29])) + k.emit(v_accvgpr_write(v[55], v[30])) + k.emit(v_accvgpr_write(v[59], v[31])) + k.emit(v_accvgpr_read(v[25], v[71])) + k.emit(v_accvgpr_read(v[26], v[75])) + k.emit(v_accvgpr_read(v[27], v[79])) + k.emit(v_accvgpr_read(v[28], v[83])) + k.emit(v_accvgpr_read(v[29], v[87])) + k.emit(v_accvgpr_read(v[30], v[91])) + k.emit(v_accvgpr_read(v[31], v[95])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[67], v[25])) + k.emit(v_accvgpr_write(v[71], v[26])) + k.emit(v_accvgpr_write(v[75], v[27])) + k.emit(v_accvgpr_write(v[79], v[28])) + k.emit(v_accvgpr_write(v[83], v[29])) + k.emit(v_accvgpr_write(v[87], v[30])) + k.emit(v_accvgpr_write(v[91], v[31])) + k.emit(v_accvgpr_read(v[25], v[103])) + k.emit(v_accvgpr_read(v[26], v[107])) + k.emit(v_accvgpr_read(v[27], v[111])) + k.emit(v_accvgpr_read(v[28], v[115])) + k.emit(v_accvgpr_read(v[29], v[119])) + k.emit(v_accvgpr_read(v[30], v[123])) + k.emit(v_accvgpr_read(v[31], v[127])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[99], v[25])) + k.emit(v_accvgpr_write(v[103], v[26])) + k.emit(v_accvgpr_write(v[107], v[27])) + k.emit(v_accvgpr_write(v[111], v[28])) + k.emit(v_accvgpr_write(v[115], v[29])) + k.emit(v_accvgpr_write(v[119], v[30])) + k.emit(v_accvgpr_write(v[123], v[31])) + k.emit(v_accvgpr_read(v[25], v[135])) + k.emit(v_accvgpr_read(v[26], v[139])) + k.emit(v_accvgpr_read(v[27], v[143])) + k.emit(v_accvgpr_read(v[28], v[147])) + k.emit(v_accvgpr_read(v[29], v[151])) + k.emit(v_accvgpr_read(v[30], v[155])) + k.emit(v_accvgpr_read(v[31], v[159])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[131], v[25])) + k.emit(v_accvgpr_write(v[135], v[26])) + k.emit(v_accvgpr_write(v[139], v[27])) + k.emit(v_accvgpr_write(v[143], v[28])) + k.emit(v_accvgpr_write(v[147], v[29])) + k.emit(v_accvgpr_write(v[151], v[30])) + k.emit(v_accvgpr_write(v[155], v[31])) + k.emit(v_accvgpr_read(v[25], v[167])) + k.emit(v_accvgpr_read(v[26], v[171])) + k.emit(v_accvgpr_read(v[27], v[175])) + k.emit(v_accvgpr_read(v[28], v[179])) + k.emit(v_accvgpr_read(v[29], v[183])) + k.emit(v_accvgpr_read(v[30], v[187])) + k.emit(v_accvgpr_read(v[31], v[191])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[163], v[25])) + k.emit(v_accvgpr_write(v[167], v[26])) + k.emit(v_accvgpr_write(v[171], v[27])) + k.emit(v_accvgpr_write(v[175], v[28])) + k.emit(v_accvgpr_write(v[179], v[29])) + k.emit(v_accvgpr_write(v[183], v[30])) + k.emit(v_accvgpr_write(v[187], v[31])) + k.emit(v_accvgpr_read(v[25], v[199])) + k.emit(v_accvgpr_read(v[26], v[203])) + k.emit(v_accvgpr_read(v[27], v[207])) + k.emit(v_accvgpr_read(v[28], v[211])) + k.emit(v_accvgpr_read(v[29], v[215])) + k.emit(v_accvgpr_read(v[30], v[219])) + k.emit(v_accvgpr_read(v[31], v[223])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[195], v[25])) + k.emit(v_accvgpr_write(v[199], v[26])) + k.emit(v_accvgpr_write(v[203], v[27])) + k.emit(v_accvgpr_write(v[207], v[28])) + k.emit(v_accvgpr_write(v[211], v[29])) + k.emit(v_accvgpr_write(v[215], v[30])) + k.emit(v_accvgpr_write(v[219], v[31])) + k.emit(v_accvgpr_read(v[25], v[231])) + k.emit(v_accvgpr_read(v[26], v[235])) + k.emit(v_accvgpr_read(v[27], v[239])) + k.emit(v_accvgpr_read(v[28], v[243])) + k.emit(v_accvgpr_read(v[29], v[247])) + k.emit(v_accvgpr_read(v[30], v[251])) + k.emit(v_accvgpr_read(v[31], v[255])) + k.emit(s_nop(1)) + k.emit(v_accvgpr_write(v[227], v[25])) + k.emit(v_accvgpr_write(v[231], v[26])) + k.emit(v_accvgpr_write(v[235], v[27])) + k.emit(v_accvgpr_write(v[239], v[28])) + k.emit(v_accvgpr_write(v[243], v[29])) + k.emit(v_accvgpr_write(v[247], v[30])) + k.emit(v_accvgpr_write(v[251], v[31])) + k.emit(s_mov_b64(s[8:9], -1)) + k.emit(s_or_saveexec_b64(VCC, s[8:9])) + k.label('ShiftVectorComponents0_GLVW0') + k.emit(v_lshrrev_b32_e32(v[22], 6, v[180])) + k.emit(v_lshrrev_b32_e32(v[23], 1, v[22])) + k.emit(v_mul_lo_u32(v[23], 16, v[23])) + k.emit(v_and_b32_e32(v[19], 63, v[180])) + k.emit(v_lshrrev_b32_e32(v[19], 4, v[19])) + k.emit(v_lshlrev_b32_e32(v[19], 2, v[19])) + k.emit(v_add_lshl_u32_e64(v[19], v[23], v[19], 3)) + k.emit(v_mul_lo_u32(v[20], v[19], s[38])) + k.emit(v_mul_lo_u32(v[21], v[19], s[36])) + k.emit(v_and_b32_e32(v[18], 1, v[22])) + k.emit(v_mul_lo_u32(v[18], 16, v[18])) + k.emit(v_and_b32_e32(v[23], 15, v[180])) + k.emit(v_add_lshl_u32_e64(v[18], v[23], v[18], 3)) + k.emit(s_mul_i32(s[8], 256, s[2])) + k.emit(v_add_u32_e32(v[18], s[8], v[18])) + k.emit(s_mul_i32(s[8], 256, s[3])) + k.emit(v_add_u32_e32(v[19], s[8], v[19])) + k.waitcnt(lgkm=0) + k.emit(s_add_u32(s[8], s[4], 1)) + k.emit(s_mul_i32(s[8], s[73], s[8])) + k.emit(s_cmp_eq_u32(s[8], 0)) + k.emit(s_cselect_b32(s[8], s[20], s[8])) + k.emit(s_mov_b32(s[91], 131072)) + k.emit(s_mov_b32(s[90], 0)) + k.emit(s_mul_i32(s[8], 256, s[2])) + k.emit(v_add_u32_e32(v[26], s[8], v[180])) + k.emit(s_mul_i32(s[90], 4, s[90])) + k.emit(s_mul_i32(s[8], s[73], s[4])) + k.emit(v_add_u32_e32(v[24], s[8], v[26])) + k.emit(v_lshlrev_b32_e32(v[24], 2, v[24])) + k.emit(s_mul_i32(s[8], 256, s[3])) + k.emit(v_add_u32_e32(v[26], s[8], v[180])) + k.emit(buffer_load_dword(v[22], v[24], s[88:91], 0, 0, 1)) + k.emit(v_lshlrev_b32_e32(v[26], 2, v[180])) + k.emit(s_barrier()) + k.waitcnt(vm=0) + k.emit(ds_write_b32(v[0], v[26], v[22])) + k.emit(v_mov_b32_e32(v[23], 1.0)) + k.emit(ds_write_b32(v[0], v[26], v[23], v[0], 0, 0, 4)) + k.emit(s_mul_i32(s[8], 256, s[2])) + k.emit(v_add_u32_e32(v[26], s[8], v[180])) + k.emit(s_mul_i32(s[90], 2, s[90])) + k.emit(s_mul_i32(s[8], s[73], s[4])) + k.emit(v_add_u32_e32(v[24], s[8], v[26])) + k.emit(v_lshlrev_b32_e32(v[24], 1, v[24])) + k.emit(s_mul_i32(s[8], 256, s[3])) + k.emit(v_add_u32_e32(v[26], s[8], v[180])) + k.emit(buffer_load_short_d16(v[22], v[24], s[88:91], 0, 0, 1)) + k.emit(v_lshlrev_b32_e32(v[26], 2, v[180])) + k.emit(s_barrier()) + k.waitcnt(vm=0) + k.emit(v_cvt(v[22], SDWA, v[22], 0, 0, 0, 0, 0, 0, 6, 2, 4)) + k.emit(ds_write_b32(v[0], v[26], v[22])) + k.emit(v_mov_b32_e32(v[23], 1.0)) + k.emit(ds_write_b32(v[0], v[26], v[23], v[0], 0, 0, 4)) + k.emit(s_and_b32(s[78], 255, s[20])) + k.emit(s_add_u32(s[79], -1, s[10])) + k.emit(s_cmp_ge_u32(s[2], s[79])) + k.emit(s_cselect_b32(s[78], s[78], 0)) + k.emit(s_cmpk_gt_u32(s[78])) + k.emit(s_cbranch_scc1(), target='GW_B0_E1_M_1') + k.emit(s_and_b32(s[78], 255, s[21])) + k.emit(s_add_u32(s[79], -1, s[11])) + k.emit(s_cmp_ge_u32(s[3], s[79])) + k.emit(s_cselect_b32(s[78], s[78], 0)) + k.emit(s_cmpk_gt_u32(s[78])) + k.emit(s_cbranch_scc0(), target='GW_B0_E0_1') + k.emit(s_cbranch_scc1(), target='GW_B0_E1_N_1') + k.label('GW_B0_E0_1') + k.emit(s_mul_i32(s[68], 256, s[2])) + k.emit(v_sub_u32_e64(v[37], v[18], s[68])) + k.emit(v_lshlrev_b32_e32(v[37], 2, v[37])) + k.waitcnt(lgkm=0) + k.emit(s_barrier()) + k.emit(ds_read_b128(v[88:91], v[37])) + k.emit(ds_read_b128(v[92:95], v[37], v[0], v[0], 0, 16)) + k.emit(ds_read_b128(v[96:99], v[37], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[100:103], v[37], v[0], v[0], 0, 16, 4)) + k.emit(v_add_lshl_u32_e64(v[35], v[21], v[18], 1)) + k.emit(v_accvgpr_read(v[40], v[0])) + k.emit(v_accvgpr_read(v[41], v[4])) + k.emit(v_accvgpr_read(v[42], v[8])) + k.emit(v_accvgpr_read(v[43], v[12])) + k.emit(v_accvgpr_read(v[44], v[16])) + k.emit(v_accvgpr_read(v[45], v[20])) + k.emit(v_accvgpr_read(v[46], v[24])) + k.emit(v_accvgpr_read(v[47], v[28])) + k.emit(v_accvgpr_read(v[48], v[32])) + k.emit(v_accvgpr_read(v[49], v[36])) + k.emit(v_accvgpr_read(v[50], v[40])) + k.emit(v_accvgpr_read(v[51], v[44])) + k.emit(v_accvgpr_read(v[52], v[48])) + k.emit(v_accvgpr_read(v[53], v[52])) + k.emit(v_accvgpr_read(v[54], v[56])) + k.emit(v_accvgpr_read(v[55], v[60])) + k.emit(v_accvgpr_read(v[56], v[64])) + k.emit(v_accvgpr_read(v[57], v[68])) + k.emit(v_accvgpr_read(v[58], v[72])) + k.emit(v_accvgpr_read(v[59], v[76])) + k.emit(v_accvgpr_read(v[60], v[80])) + k.emit(v_accvgpr_read(v[61], v[84])) + k.emit(v_accvgpr_read(v[62], v[88])) + k.emit(v_accvgpr_read(v[63], v[92])) + k.emit(v_accvgpr_read(v[64], v[96])) + k.emit(v_accvgpr_read(v[65], v[100])) + k.emit(v_accvgpr_read(v[66], v[104])) + k.emit(v_accvgpr_read(v[67], v[108])) + k.emit(v_accvgpr_read(v[68], v[112])) + k.emit(v_accvgpr_read(v[69], v[116])) + k.emit(v_accvgpr_read(v[70], v[120])) + k.emit(v_accvgpr_read(v[71], v[124])) + k.emit(v_accvgpr_read(v[72], v[128])) + k.emit(v_accvgpr_read(v[73], v[132])) + k.emit(v_accvgpr_read(v[74], v[136])) + k.emit(v_accvgpr_read(v[75], v[140])) + k.emit(v_accvgpr_read(v[76], v[144])) + k.emit(v_accvgpr_read(v[77], v[148])) + k.emit(v_accvgpr_read(v[78], v[152])) + k.emit(v_accvgpr_read(v[79], v[156])) + k.emit(v_accvgpr_read(v[80], v[160])) + k.emit(v_accvgpr_read(v[81], v[164])) + k.emit(v_accvgpr_read(v[82], v[168])) + k.emit(v_accvgpr_read(v[83], v[172])) + k.emit(v_accvgpr_read(v[84], v[176])) + k.emit(v_accvgpr_read(v[85], v[180])) + k.emit(v_accvgpr_read(v[86], v[184])) + k.emit(v_accvgpr_read(v[87], v[188])) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.waitcnt(lgkm=0) + k.emit(v_pk_mul_f32(v[40:41], v[96:97], v[40:41])) + k.emit(v_pk_mul_f32(v[42:43], v[98:99], v[42:43])) + k.emit(v_pk_mul_f32(v[44:45], v[100:101], v[44:45])) + k.emit(v_pk_mul_f32(v[46:47], v[102:103], v[46:47])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[40:41])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[42:43])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[44:45])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[46:47])) + k.emit(v_mov_b64_e32(v[40:41], v[22:23])) + k.emit(v_mov_b64_e32(v[42:43], v[24:25])) + k.emit(v_mov_b64_e32(v[44:45], v[26:27])) + k.emit(v_mov_b64_e32(v[46:47], v[28:29])) + k.emit(v_cvt_pk(v[40], v[40], v[41])) + k.emit(v_cvt_pk(v[41], v[42], v[43])) + k.emit(v_cvt_pk(v[42], v[44], v[45])) + k.emit(v_cvt_pk(v[43], v[46], v[47])) + k.emit(buffer_store_dwordx4(v[40:43], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[48:49], v[96:97], v[48:49])) + k.emit(v_pk_mul_f32(v[50:51], v[98:99], v[50:51])) + k.emit(v_pk_mul_f32(v[52:53], v[100:101], v[52:53])) + k.emit(v_pk_mul_f32(v[54:55], v[102:103], v[54:55])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[48:49])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[50:51])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[52:53])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[54:55])) + k.emit(v_mov_b64_e32(v[48:49], v[22:23])) + k.emit(v_mov_b64_e32(v[50:51], v[24:25])) + k.emit(v_mov_b64_e32(v[52:53], v[26:27])) + k.emit(v_mov_b64_e32(v[54:55], v[28:29])) + k.emit(v_cvt_pk(v[48], v[48], v[49])) + k.emit(v_cvt_pk(v[49], v[50], v[51])) + k.emit(v_cvt_pk(v[50], v[52], v[53])) + k.emit(v_cvt_pk(v[51], v[54], v[55])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[48:51], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[56:57], v[96:97], v[56:57])) + k.emit(v_pk_mul_f32(v[58:59], v[98:99], v[58:59])) + k.emit(v_pk_mul_f32(v[60:61], v[100:101], v[60:61])) + k.emit(v_pk_mul_f32(v[62:63], v[102:103], v[62:63])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[56:57])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[58:59])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[60:61])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[62:63])) + k.emit(v_mov_b64_e32(v[56:57], v[22:23])) + k.emit(v_mov_b64_e32(v[58:59], v[24:25])) + k.emit(v_mov_b64_e32(v[60:61], v[26:27])) + k.emit(v_mov_b64_e32(v[62:63], v[28:29])) + k.emit(v_cvt_pk(v[56], v[56], v[57])) + k.emit(v_cvt_pk(v[57], v[58], v[59])) + k.emit(v_cvt_pk(v[58], v[60], v[61])) + k.emit(v_cvt_pk(v[59], v[62], v[63])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[56:59], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[64:65], v[96:97], v[64:65])) + k.emit(v_pk_mul_f32(v[66:67], v[98:99], v[66:67])) + k.emit(v_pk_mul_f32(v[68:69], v[100:101], v[68:69])) + k.emit(v_pk_mul_f32(v[70:71], v[102:103], v[70:71])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[64:65])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[66:67])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[68:69])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[70:71])) + k.emit(v_mov_b64_e32(v[64:65], v[22:23])) + k.emit(v_mov_b64_e32(v[66:67], v[24:25])) + k.emit(v_mov_b64_e32(v[68:69], v[26:27])) + k.emit(v_mov_b64_e32(v[70:71], v[28:29])) + k.emit(v_cvt_pk(v[64], v[64], v[65])) + k.emit(v_cvt_pk(v[65], v[66], v[67])) + k.emit(v_cvt_pk(v[66], v[68], v[69])) + k.emit(v_cvt_pk(v[67], v[70], v[71])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[64:67], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[72:73], v[96:97], v[72:73])) + k.emit(v_pk_mul_f32(v[74:75], v[98:99], v[74:75])) + k.emit(v_pk_mul_f32(v[76:77], v[100:101], v[76:77])) + k.emit(v_pk_mul_f32(v[78:79], v[102:103], v[78:79])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[72:73])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[74:75])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[76:77])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[78:79])) + k.emit(v_mov_b64_e32(v[72:73], v[22:23])) + k.emit(v_mov_b64_e32(v[74:75], v[24:25])) + k.emit(v_mov_b64_e32(v[76:77], v[26:27])) + k.emit(v_mov_b64_e32(v[78:79], v[28:29])) + k.emit(v_cvt_pk(v[72], v[72], v[73])) + k.emit(v_cvt_pk(v[73], v[74], v[75])) + k.emit(v_cvt_pk(v[74], v[76], v[77])) + k.emit(v_cvt_pk(v[75], v[78], v[79])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[72:75], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[80:81], v[96:97], v[80:81])) + k.emit(v_pk_mul_f32(v[82:83], v[98:99], v[82:83])) + k.emit(v_pk_mul_f32(v[84:85], v[100:101], v[84:85])) + k.emit(v_pk_mul_f32(v[86:87], v[102:103], v[86:87])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[80:81])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[82:83])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[84:85])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[86:87])) + k.emit(v_mov_b64_e32(v[80:81], v[22:23])) + k.emit(v_mov_b64_e32(v[82:83], v[24:25])) + k.emit(v_mov_b64_e32(v[84:85], v[26:27])) + k.emit(v_mov_b64_e32(v[86:87], v[28:29])) + k.emit(v_cvt_pk(v[80], v[80], v[81])) + k.emit(v_cvt_pk(v[81], v[82], v[83])) + k.emit(v_cvt_pk(v[82], v[84], v[85])) + k.emit(v_cvt_pk(v[83], v[86], v[87])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[80:83], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(ds_read_b128(v[88:91], v[37])) + k.emit(ds_read_b128(v[92:95], v[37], v[0], v[0], 0, 16)) + k.emit(ds_read_b128(v[96:99], v[37], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[100:103], v[37], v[0], v[0], 0, 16, 4)) + k.emit(v_accvgpr_read(v[40], v[192])) + k.emit(v_accvgpr_read(v[41], v[196])) + k.emit(v_accvgpr_read(v[42], v[200])) + k.emit(v_accvgpr_read(v[43], v[204])) + k.emit(v_accvgpr_read(v[44], v[208])) + k.emit(v_accvgpr_read(v[45], v[212])) + k.emit(v_accvgpr_read(v[46], v[216])) + k.emit(v_accvgpr_read(v[47], v[220])) + k.emit(v_accvgpr_read(v[48], v[224])) + k.emit(v_accvgpr_read(v[49], v[228])) + k.emit(v_accvgpr_read(v[50], v[232])) + k.emit(v_accvgpr_read(v[51], v[236])) + k.emit(v_accvgpr_read(v[52], v[240])) + k.emit(v_accvgpr_read(v[53], v[244])) + k.emit(v_accvgpr_read(v[54], v[248])) + k.emit(v_accvgpr_read(v[55], v[252])) + k.emit(v_accvgpr_read(v[56], v[1])) + k.emit(v_accvgpr_read(v[57], v[5])) + k.emit(v_accvgpr_read(v[58], v[9])) + k.emit(v_accvgpr_read(v[59], v[13])) + k.emit(v_accvgpr_read(v[60], v[17])) + k.emit(v_accvgpr_read(v[61], v[21])) + k.emit(v_accvgpr_read(v[62], v[25])) + k.emit(v_accvgpr_read(v[63], v[29])) + k.emit(v_accvgpr_read(v[64], v[33])) + k.emit(v_accvgpr_read(v[65], v[37])) + k.emit(v_accvgpr_read(v[66], v[41])) + k.emit(v_accvgpr_read(v[67], v[45])) + k.emit(v_accvgpr_read(v[68], v[49])) + k.emit(v_accvgpr_read(v[69], v[53])) + k.emit(v_accvgpr_read(v[70], v[57])) + k.emit(v_accvgpr_read(v[71], v[61])) + k.emit(v_accvgpr_read(v[72], v[65])) + k.emit(v_accvgpr_read(v[73], v[69])) + k.emit(v_accvgpr_read(v[74], v[73])) + k.emit(v_accvgpr_read(v[75], v[77])) + k.emit(v_accvgpr_read(v[76], v[81])) + k.emit(v_accvgpr_read(v[77], v[85])) + k.emit(v_accvgpr_read(v[78], v[89])) + k.emit(v_accvgpr_read(v[79], v[93])) + k.emit(v_accvgpr_read(v[80], v[97])) + k.emit(v_accvgpr_read(v[81], v[101])) + k.emit(v_accvgpr_read(v[82], v[105])) + k.emit(v_accvgpr_read(v[83], v[109])) + k.emit(v_accvgpr_read(v[84], v[113])) + k.emit(v_accvgpr_read(v[85], v[117])) + k.emit(v_accvgpr_read(v[86], v[121])) + k.emit(v_accvgpr_read(v[87], v[125])) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.waitcnt(lgkm=0) + k.emit(v_pk_mul_f32(v[40:41], v[96:97], v[40:41])) + k.emit(v_pk_mul_f32(v[42:43], v[98:99], v[42:43])) + k.emit(v_pk_mul_f32(v[44:45], v[100:101], v[44:45])) + k.emit(v_pk_mul_f32(v[46:47], v[102:103], v[46:47])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[40:41])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[42:43])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[44:45])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[46:47])) + k.emit(v_mov_b64_e32(v[40:41], v[22:23])) + k.emit(v_mov_b64_e32(v[42:43], v[24:25])) + k.emit(v_mov_b64_e32(v[44:45], v[26:27])) + k.emit(v_mov_b64_e32(v[46:47], v[28:29])) + k.emit(v_cvt_pk(v[40], v[40], v[41])) + k.emit(v_cvt_pk(v[41], v[42], v[43])) + k.emit(v_cvt_pk(v[42], v[44], v[45])) + k.emit(v_cvt_pk(v[43], v[46], v[47])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[40:43], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[48:49], v[96:97], v[48:49])) + k.emit(v_pk_mul_f32(v[50:51], v[98:99], v[50:51])) + k.emit(v_pk_mul_f32(v[52:53], v[100:101], v[52:53])) + k.emit(v_pk_mul_f32(v[54:55], v[102:103], v[54:55])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[48:49])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[50:51])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[52:53])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[54:55])) + k.emit(v_mov_b64_e32(v[48:49], v[22:23])) + k.emit(v_mov_b64_e32(v[50:51], v[24:25])) + k.emit(v_mov_b64_e32(v[52:53], v[26:27])) + k.emit(v_mov_b64_e32(v[54:55], v[28:29])) + k.emit(v_cvt_pk(v[48], v[48], v[49])) + k.emit(v_cvt_pk(v[49], v[50], v[51])) + k.emit(v_cvt_pk(v[50], v[52], v[53])) + k.emit(v_cvt_pk(v[51], v[54], v[55])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[48:51], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[56:57], v[96:97], v[56:57])) + k.emit(v_pk_mul_f32(v[58:59], v[98:99], v[58:59])) + k.emit(v_pk_mul_f32(v[60:61], v[100:101], v[60:61])) + k.emit(v_pk_mul_f32(v[62:63], v[102:103], v[62:63])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[56:57])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[58:59])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[60:61])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[62:63])) + k.emit(v_mov_b64_e32(v[56:57], v[22:23])) + k.emit(v_mov_b64_e32(v[58:59], v[24:25])) + k.emit(v_mov_b64_e32(v[60:61], v[26:27])) + k.emit(v_mov_b64_e32(v[62:63], v[28:29])) + k.emit(v_cvt_pk(v[56], v[56], v[57])) + k.emit(v_cvt_pk(v[57], v[58], v[59])) + k.emit(v_cvt_pk(v[58], v[60], v[61])) + k.emit(v_cvt_pk(v[59], v[62], v[63])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[56:59], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[64:65], v[96:97], v[64:65])) + k.emit(v_pk_mul_f32(v[66:67], v[98:99], v[66:67])) + k.emit(v_pk_mul_f32(v[68:69], v[100:101], v[68:69])) + k.emit(v_pk_mul_f32(v[70:71], v[102:103], v[70:71])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[64:65])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[66:67])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[68:69])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[70:71])) + k.emit(v_mov_b64_e32(v[64:65], v[22:23])) + k.emit(v_mov_b64_e32(v[66:67], v[24:25])) + k.emit(v_mov_b64_e32(v[68:69], v[26:27])) + k.emit(v_mov_b64_e32(v[70:71], v[28:29])) + k.emit(v_cvt_pk(v[64], v[64], v[65])) + k.emit(v_cvt_pk(v[65], v[66], v[67])) + k.emit(v_cvt_pk(v[66], v[68], v[69])) + k.emit(v_cvt_pk(v[67], v[70], v[71])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[64:67], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[72:73], v[96:97], v[72:73])) + k.emit(v_pk_mul_f32(v[74:75], v[98:99], v[74:75])) + k.emit(v_pk_mul_f32(v[76:77], v[100:101], v[76:77])) + k.emit(v_pk_mul_f32(v[78:79], v[102:103], v[78:79])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[72:73])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[74:75])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[76:77])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[78:79])) + k.emit(v_mov_b64_e32(v[72:73], v[22:23])) + k.emit(v_mov_b64_e32(v[74:75], v[24:25])) + k.emit(v_mov_b64_e32(v[76:77], v[26:27])) + k.emit(v_mov_b64_e32(v[78:79], v[28:29])) + k.emit(v_cvt_pk(v[72], v[72], v[73])) + k.emit(v_cvt_pk(v[73], v[74], v[75])) + k.emit(v_cvt_pk(v[74], v[76], v[77])) + k.emit(v_cvt_pk(v[75], v[78], v[79])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[72:75], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[80:81], v[96:97], v[80:81])) + k.emit(v_pk_mul_f32(v[82:83], v[98:99], v[82:83])) + k.emit(v_pk_mul_f32(v[84:85], v[100:101], v[84:85])) + k.emit(v_pk_mul_f32(v[86:87], v[102:103], v[86:87])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[80:81])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[82:83])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[84:85])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[86:87])) + k.emit(v_mov_b64_e32(v[80:81], v[22:23])) + k.emit(v_mov_b64_e32(v[82:83], v[24:25])) + k.emit(v_mov_b64_e32(v[84:85], v[26:27])) + k.emit(v_mov_b64_e32(v[86:87], v[28:29])) + k.emit(v_cvt_pk(v[80], v[80], v[81])) + k.emit(v_cvt_pk(v[81], v[82], v[83])) + k.emit(v_cvt_pk(v[82], v[84], v[85])) + k.emit(v_cvt_pk(v[83], v[86], v[87])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[80:83], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(ds_read_b128(v[88:91], v[37])) + k.emit(ds_read_b128(v[92:95], v[37], v[0], v[0], 0, 16)) + k.emit(ds_read_b128(v[96:99], v[37], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[100:103], v[37], v[0], v[0], 0, 16, 4)) + k.emit(v_accvgpr_read(v[40], v[129])) + k.emit(v_accvgpr_read(v[41], v[133])) + k.emit(v_accvgpr_read(v[42], v[137])) + k.emit(v_accvgpr_read(v[43], v[141])) + k.emit(v_accvgpr_read(v[44], v[145])) + k.emit(v_accvgpr_read(v[45], v[149])) + k.emit(v_accvgpr_read(v[46], v[153])) + k.emit(v_accvgpr_read(v[47], v[157])) + k.emit(v_accvgpr_read(v[48], v[161])) + k.emit(v_accvgpr_read(v[49], v[165])) + k.emit(v_accvgpr_read(v[50], v[169])) + k.emit(v_accvgpr_read(v[51], v[173])) + k.emit(v_accvgpr_read(v[52], v[177])) + k.emit(v_accvgpr_read(v[53], v[181])) + k.emit(v_accvgpr_read(v[54], v[185])) + k.emit(v_accvgpr_read(v[55], v[189])) + k.emit(v_accvgpr_read(v[56], v[193])) + k.emit(v_accvgpr_read(v[57], v[197])) + k.emit(v_accvgpr_read(v[58], v[201])) + k.emit(v_accvgpr_read(v[59], v[205])) + k.emit(v_accvgpr_read(v[60], v[209])) + k.emit(v_accvgpr_read(v[61], v[213])) + k.emit(v_accvgpr_read(v[62], v[217])) + k.emit(v_accvgpr_read(v[63], v[221])) + k.emit(v_accvgpr_read(v[64], v[225])) + k.emit(v_accvgpr_read(v[65], v[229])) + k.emit(v_accvgpr_read(v[66], v[233])) + k.emit(v_accvgpr_read(v[67], v[237])) + k.emit(v_accvgpr_read(v[68], v[241])) + k.emit(v_accvgpr_read(v[69], v[245])) + k.emit(v_accvgpr_read(v[70], v[249])) + k.emit(v_accvgpr_read(v[71], v[253])) + k.emit(v_accvgpr_read(v[72], v[2])) + k.emit(v_accvgpr_read(v[73], v[6])) + k.emit(v_accvgpr_read(v[74], v[10])) + k.emit(v_accvgpr_read(v[75], v[14])) + k.emit(v_accvgpr_read(v[76], v[18])) + k.emit(v_accvgpr_read(v[77], v[22])) + k.emit(v_accvgpr_read(v[78], v[26])) + k.emit(v_accvgpr_read(v[79], v[30])) + k.emit(v_accvgpr_read(v[80], v[34])) + k.emit(v_accvgpr_read(v[81], v[38])) + k.emit(v_accvgpr_read(v[82], v[42])) + k.emit(v_accvgpr_read(v[83], v[46])) + k.emit(v_accvgpr_read(v[84], v[50])) + k.emit(v_accvgpr_read(v[85], v[54])) + k.emit(v_accvgpr_read(v[86], v[58])) + k.emit(v_accvgpr_read(v[87], v[62])) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.waitcnt(lgkm=0) + k.emit(v_pk_mul_f32(v[40:41], v[96:97], v[40:41])) + k.emit(v_pk_mul_f32(v[42:43], v[98:99], v[42:43])) + k.emit(v_pk_mul_f32(v[44:45], v[100:101], v[44:45])) + k.emit(v_pk_mul_f32(v[46:47], v[102:103], v[46:47])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[40:41])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[42:43])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[44:45])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[46:47])) + k.emit(v_mov_b64_e32(v[40:41], v[22:23])) + k.emit(v_mov_b64_e32(v[42:43], v[24:25])) + k.emit(v_mov_b64_e32(v[44:45], v[26:27])) + k.emit(v_mov_b64_e32(v[46:47], v[28:29])) + k.emit(v_cvt_pk(v[40], v[40], v[41])) + k.emit(v_cvt_pk(v[41], v[42], v[43])) + k.emit(v_cvt_pk(v[42], v[44], v[45])) + k.emit(v_cvt_pk(v[43], v[46], v[47])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[40:43], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[48:49], v[96:97], v[48:49])) + k.emit(v_pk_mul_f32(v[50:51], v[98:99], v[50:51])) + k.emit(v_pk_mul_f32(v[52:53], v[100:101], v[52:53])) + k.emit(v_pk_mul_f32(v[54:55], v[102:103], v[54:55])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[48:49])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[50:51])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[52:53])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[54:55])) + k.emit(v_mov_b64_e32(v[48:49], v[22:23])) + k.emit(v_mov_b64_e32(v[50:51], v[24:25])) + k.emit(v_mov_b64_e32(v[52:53], v[26:27])) + k.emit(v_mov_b64_e32(v[54:55], v[28:29])) + k.emit(v_cvt_pk(v[48], v[48], v[49])) + k.emit(v_cvt_pk(v[49], v[50], v[51])) + k.emit(v_cvt_pk(v[50], v[52], v[53])) + k.emit(v_cvt_pk(v[51], v[54], v[55])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[48:51], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[56:57], v[96:97], v[56:57])) + k.emit(v_pk_mul_f32(v[58:59], v[98:99], v[58:59])) + k.emit(v_pk_mul_f32(v[60:61], v[100:101], v[60:61])) + k.emit(v_pk_mul_f32(v[62:63], v[102:103], v[62:63])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[56:57])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[58:59])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[60:61])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[62:63])) + k.emit(v_mov_b64_e32(v[56:57], v[22:23])) + k.emit(v_mov_b64_e32(v[58:59], v[24:25])) + k.emit(v_mov_b64_e32(v[60:61], v[26:27])) + k.emit(v_mov_b64_e32(v[62:63], v[28:29])) + k.emit(v_cvt_pk(v[56], v[56], v[57])) + k.emit(v_cvt_pk(v[57], v[58], v[59])) + k.emit(v_cvt_pk(v[58], v[60], v[61])) + k.emit(v_cvt_pk(v[59], v[62], v[63])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[56:59], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[64:65], v[96:97], v[64:65])) + k.emit(v_pk_mul_f32(v[66:67], v[98:99], v[66:67])) + k.emit(v_pk_mul_f32(v[68:69], v[100:101], v[68:69])) + k.emit(v_pk_mul_f32(v[70:71], v[102:103], v[70:71])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[64:65])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[66:67])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[68:69])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[70:71])) + k.emit(v_mov_b64_e32(v[64:65], v[22:23])) + k.emit(v_mov_b64_e32(v[66:67], v[24:25])) + k.emit(v_mov_b64_e32(v[68:69], v[26:27])) + k.emit(v_mov_b64_e32(v[70:71], v[28:29])) + k.emit(v_cvt_pk(v[64], v[64], v[65])) + k.emit(v_cvt_pk(v[65], v[66], v[67])) + k.emit(v_cvt_pk(v[66], v[68], v[69])) + k.emit(v_cvt_pk(v[67], v[70], v[71])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[64:67], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[72:73], v[96:97], v[72:73])) + k.emit(v_pk_mul_f32(v[74:75], v[98:99], v[74:75])) + k.emit(v_pk_mul_f32(v[76:77], v[100:101], v[76:77])) + k.emit(v_pk_mul_f32(v[78:79], v[102:103], v[78:79])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[72:73])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[74:75])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[76:77])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[78:79])) + k.emit(v_mov_b64_e32(v[72:73], v[22:23])) + k.emit(v_mov_b64_e32(v[74:75], v[24:25])) + k.emit(v_mov_b64_e32(v[76:77], v[26:27])) + k.emit(v_mov_b64_e32(v[78:79], v[28:29])) + k.emit(v_cvt_pk(v[72], v[72], v[73])) + k.emit(v_cvt_pk(v[73], v[74], v[75])) + k.emit(v_cvt_pk(v[74], v[76], v[77])) + k.emit(v_cvt_pk(v[75], v[78], v[79])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[72:75], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[80:81], v[96:97], v[80:81])) + k.emit(v_pk_mul_f32(v[82:83], v[98:99], v[82:83])) + k.emit(v_pk_mul_f32(v[84:85], v[100:101], v[84:85])) + k.emit(v_pk_mul_f32(v[86:87], v[102:103], v[86:87])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[80:81])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[82:83])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[84:85])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[86:87])) + k.emit(v_mov_b64_e32(v[80:81], v[22:23])) + k.emit(v_mov_b64_e32(v[82:83], v[24:25])) + k.emit(v_mov_b64_e32(v[84:85], v[26:27])) + k.emit(v_mov_b64_e32(v[86:87], v[28:29])) + k.emit(v_cvt_pk(v[80], v[80], v[81])) + k.emit(v_cvt_pk(v[81], v[82], v[83])) + k.emit(v_cvt_pk(v[82], v[84], v[85])) + k.emit(v_cvt_pk(v[83], v[86], v[87])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[80:83], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(ds_read_b128(v[88:91], v[37])) + k.emit(ds_read_b128(v[92:95], v[37], v[0], v[0], 0, 16)) + k.emit(ds_read_b128(v[96:99], v[37], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[100:103], v[37], v[0], v[0], 0, 16, 4)) + k.emit(v_accvgpr_read(v[40], v[66])) + k.emit(v_accvgpr_read(v[41], v[70])) + k.emit(v_accvgpr_read(v[42], v[74])) + k.emit(v_accvgpr_read(v[43], v[78])) + k.emit(v_accvgpr_read(v[44], v[82])) + k.emit(v_accvgpr_read(v[45], v[86])) + k.emit(v_accvgpr_read(v[46], v[90])) + k.emit(v_accvgpr_read(v[47], v[94])) + k.emit(v_accvgpr_read(v[48], v[98])) + k.emit(v_accvgpr_read(v[49], v[102])) + k.emit(v_accvgpr_read(v[50], v[106])) + k.emit(v_accvgpr_read(v[51], v[110])) + k.emit(v_accvgpr_read(v[52], v[114])) + k.emit(v_accvgpr_read(v[53], v[118])) + k.emit(v_accvgpr_read(v[54], v[122])) + k.emit(v_accvgpr_read(v[55], v[126])) + k.emit(v_accvgpr_read(v[56], v[130])) + k.emit(v_accvgpr_read(v[57], v[134])) + k.emit(v_accvgpr_read(v[58], v[138])) + k.emit(v_accvgpr_read(v[59], v[142])) + k.emit(v_accvgpr_read(v[60], v[146])) + k.emit(v_accvgpr_read(v[61], v[150])) + k.emit(v_accvgpr_read(v[62], v[154])) + k.emit(v_accvgpr_read(v[63], v[158])) + k.emit(v_accvgpr_read(v[64], v[162])) + k.emit(v_accvgpr_read(v[65], v[166])) + k.emit(v_accvgpr_read(v[66], v[170])) + k.emit(v_accvgpr_read(v[67], v[174])) + k.emit(v_accvgpr_read(v[68], v[178])) + k.emit(v_accvgpr_read(v[69], v[182])) + k.emit(v_accvgpr_read(v[70], v[186])) + k.emit(v_accvgpr_read(v[71], v[190])) + k.emit(v_accvgpr_read(v[72], v[194])) + k.emit(v_accvgpr_read(v[73], v[198])) + k.emit(v_accvgpr_read(v[74], v[202])) + k.emit(v_accvgpr_read(v[75], v[206])) + k.emit(v_accvgpr_read(v[76], v[210])) + k.emit(v_accvgpr_read(v[77], v[214])) + k.emit(v_accvgpr_read(v[78], v[218])) + k.emit(v_accvgpr_read(v[79], v[222])) + k.emit(v_accvgpr_read(v[80], v[226])) + k.emit(v_accvgpr_read(v[81], v[230])) + k.emit(v_accvgpr_read(v[82], v[234])) + k.emit(v_accvgpr_read(v[83], v[238])) + k.emit(v_accvgpr_read(v[84], v[242])) + k.emit(v_accvgpr_read(v[85], v[246])) + k.emit(v_accvgpr_read(v[86], v[250])) + k.emit(v_accvgpr_read(v[87], v[254])) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.waitcnt(lgkm=0) + k.emit(v_pk_mul_f32(v[40:41], v[96:97], v[40:41])) + k.emit(v_pk_mul_f32(v[42:43], v[98:99], v[42:43])) + k.emit(v_pk_mul_f32(v[44:45], v[100:101], v[44:45])) + k.emit(v_pk_mul_f32(v[46:47], v[102:103], v[46:47])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[40:41])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[42:43])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[44:45])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[46:47])) + k.emit(v_mov_b64_e32(v[40:41], v[22:23])) + k.emit(v_mov_b64_e32(v[42:43], v[24:25])) + k.emit(v_mov_b64_e32(v[44:45], v[26:27])) + k.emit(v_mov_b64_e32(v[46:47], v[28:29])) + k.emit(v_cvt_pk(v[40], v[40], v[41])) + k.emit(v_cvt_pk(v[41], v[42], v[43])) + k.emit(v_cvt_pk(v[42], v[44], v[45])) + k.emit(v_cvt_pk(v[43], v[46], v[47])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[40:43], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[48:49], v[96:97], v[48:49])) + k.emit(v_pk_mul_f32(v[50:51], v[98:99], v[50:51])) + k.emit(v_pk_mul_f32(v[52:53], v[100:101], v[52:53])) + k.emit(v_pk_mul_f32(v[54:55], v[102:103], v[54:55])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[48:49])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[50:51])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[52:53])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[54:55])) + k.emit(v_mov_b64_e32(v[48:49], v[22:23])) + k.emit(v_mov_b64_e32(v[50:51], v[24:25])) + k.emit(v_mov_b64_e32(v[52:53], v[26:27])) + k.emit(v_mov_b64_e32(v[54:55], v[28:29])) + k.emit(v_cvt_pk(v[48], v[48], v[49])) + k.emit(v_cvt_pk(v[49], v[50], v[51])) + k.emit(v_cvt_pk(v[50], v[52], v[53])) + k.emit(v_cvt_pk(v[51], v[54], v[55])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[48:51], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[56:57], v[96:97], v[56:57])) + k.emit(v_pk_mul_f32(v[58:59], v[98:99], v[58:59])) + k.emit(v_pk_mul_f32(v[60:61], v[100:101], v[60:61])) + k.emit(v_pk_mul_f32(v[62:63], v[102:103], v[62:63])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[56:57])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[58:59])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[60:61])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[62:63])) + k.emit(v_mov_b64_e32(v[56:57], v[22:23])) + k.emit(v_mov_b64_e32(v[58:59], v[24:25])) + k.emit(v_mov_b64_e32(v[60:61], v[26:27])) + k.emit(v_mov_b64_e32(v[62:63], v[28:29])) + k.emit(v_cvt_pk(v[56], v[56], v[57])) + k.emit(v_cvt_pk(v[57], v[58], v[59])) + k.emit(v_cvt_pk(v[58], v[60], v[61])) + k.emit(v_cvt_pk(v[59], v[62], v[63])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[56:59], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[64:65], v[96:97], v[64:65])) + k.emit(v_pk_mul_f32(v[66:67], v[98:99], v[66:67])) + k.emit(v_pk_mul_f32(v[68:69], v[100:101], v[68:69])) + k.emit(v_pk_mul_f32(v[70:71], v[102:103], v[70:71])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[64:65])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[66:67])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[68:69])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[70:71])) + k.emit(v_mov_b64_e32(v[64:65], v[22:23])) + k.emit(v_mov_b64_e32(v[66:67], v[24:25])) + k.emit(v_mov_b64_e32(v[68:69], v[26:27])) + k.emit(v_mov_b64_e32(v[70:71], v[28:29])) + k.emit(v_cvt_pk(v[64], v[64], v[65])) + k.emit(v_cvt_pk(v[65], v[66], v[67])) + k.emit(v_cvt_pk(v[66], v[68], v[69])) + k.emit(v_cvt_pk(v[67], v[70], v[71])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[64:67], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[72:73], v[96:97], v[72:73])) + k.emit(v_pk_mul_f32(v[74:75], v[98:99], v[74:75])) + k.emit(v_pk_mul_f32(v[76:77], v[100:101], v[76:77])) + k.emit(v_pk_mul_f32(v[78:79], v[102:103], v[78:79])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[72:73])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[74:75])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[76:77])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[78:79])) + k.emit(v_mov_b64_e32(v[72:73], v[22:23])) + k.emit(v_mov_b64_e32(v[74:75], v[24:25])) + k.emit(v_mov_b64_e32(v[76:77], v[26:27])) + k.emit(v_mov_b64_e32(v[78:79], v[28:29])) + k.emit(v_cvt_pk(v[72], v[72], v[73])) + k.emit(v_cvt_pk(v[73], v[74], v[75])) + k.emit(v_cvt_pk(v[74], v[76], v[77])) + k.emit(v_cvt_pk(v[75], v[78], v[79])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[72:75], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[80:81], v[96:97], v[80:81])) + k.emit(v_pk_mul_f32(v[82:83], v[98:99], v[82:83])) + k.emit(v_pk_mul_f32(v[84:85], v[100:101], v[84:85])) + k.emit(v_pk_mul_f32(v[86:87], v[102:103], v[86:87])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[80:81])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[82:83])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[84:85])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[86:87])) + k.emit(v_mov_b64_e32(v[80:81], v[22:23])) + k.emit(v_mov_b64_e32(v[82:83], v[24:25])) + k.emit(v_mov_b64_e32(v[84:85], v[26:27])) + k.emit(v_mov_b64_e32(v[86:87], v[28:29])) + k.emit(v_cvt_pk(v[80], v[80], v[81])) + k.emit(v_cvt_pk(v[81], v[82], v[83])) + k.emit(v_cvt_pk(v[82], v[84], v[85])) + k.emit(v_cvt_pk(v[83], v[86], v[87])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[80:83], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(ds_read_b128(v[88:91], v[37])) + k.emit(ds_read_b128(v[92:95], v[37], v[0], v[0], 0, 16)) + k.emit(ds_read_b128(v[96:99], v[37], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[100:103], v[37], v[0], v[0], 0, 16, 4)) + k.emit(v_accvgpr_read(v[40], v[3])) + k.emit(v_accvgpr_read(v[41], v[7])) + k.emit(v_accvgpr_read(v[42], v[11])) + k.emit(v_accvgpr_read(v[43], v[15])) + k.emit(v_accvgpr_read(v[44], v[19])) + k.emit(v_accvgpr_read(v[45], v[23])) + k.emit(v_accvgpr_read(v[46], v[27])) + k.emit(v_accvgpr_read(v[47], v[31])) + k.emit(v_accvgpr_read(v[48], v[35])) + k.emit(v_accvgpr_read(v[49], v[39])) + k.emit(v_accvgpr_read(v[50], v[43])) + k.emit(v_accvgpr_read(v[51], v[47])) + k.emit(v_accvgpr_read(v[52], v[51])) + k.emit(v_accvgpr_read(v[53], v[55])) + k.emit(v_accvgpr_read(v[54], v[59])) + k.emit(v_accvgpr_read(v[55], v[63])) + k.emit(v_accvgpr_read(v[56], v[67])) + k.emit(v_accvgpr_read(v[57], v[71])) + k.emit(v_accvgpr_read(v[58], v[75])) + k.emit(v_accvgpr_read(v[59], v[79])) + k.emit(v_accvgpr_read(v[60], v[83])) + k.emit(v_accvgpr_read(v[61], v[87])) + k.emit(v_accvgpr_read(v[62], v[91])) + k.emit(v_accvgpr_read(v[63], v[95])) + k.emit(v_accvgpr_read(v[64], v[99])) + k.emit(v_accvgpr_read(v[65], v[103])) + k.emit(v_accvgpr_read(v[66], v[107])) + k.emit(v_accvgpr_read(v[67], v[111])) + k.emit(v_accvgpr_read(v[68], v[115])) + k.emit(v_accvgpr_read(v[69], v[119])) + k.emit(v_accvgpr_read(v[70], v[123])) + k.emit(v_accvgpr_read(v[71], v[127])) + k.emit(v_accvgpr_read(v[72], v[131])) + k.emit(v_accvgpr_read(v[73], v[135])) + k.emit(v_accvgpr_read(v[74], v[139])) + k.emit(v_accvgpr_read(v[75], v[143])) + k.emit(v_accvgpr_read(v[76], v[147])) + k.emit(v_accvgpr_read(v[77], v[151])) + k.emit(v_accvgpr_read(v[78], v[155])) + k.emit(v_accvgpr_read(v[79], v[159])) + k.emit(v_accvgpr_read(v[80], v[163])) + k.emit(v_accvgpr_read(v[81], v[167])) + k.emit(v_accvgpr_read(v[82], v[171])) + k.emit(v_accvgpr_read(v[83], v[175])) + k.emit(v_accvgpr_read(v[84], v[179])) + k.emit(v_accvgpr_read(v[85], v[183])) + k.emit(v_accvgpr_read(v[86], v[187])) + k.emit(v_accvgpr_read(v[87], v[191])) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.waitcnt(lgkm=0) + k.emit(v_pk_mul_f32(v[40:41], v[96:97], v[40:41])) + k.emit(v_pk_mul_f32(v[42:43], v[98:99], v[42:43])) + k.emit(v_pk_mul_f32(v[44:45], v[100:101], v[44:45])) + k.emit(v_pk_mul_f32(v[46:47], v[102:103], v[46:47])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[40:41])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[42:43])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[44:45])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[46:47])) + k.emit(v_mov_b64_e32(v[40:41], v[22:23])) + k.emit(v_mov_b64_e32(v[42:43], v[24:25])) + k.emit(v_mov_b64_e32(v[44:45], v[26:27])) + k.emit(v_mov_b64_e32(v[46:47], v[28:29])) + k.emit(v_cvt_pk(v[40], v[40], v[41])) + k.emit(v_cvt_pk(v[41], v[42], v[43])) + k.emit(v_cvt_pk(v[42], v[44], v[45])) + k.emit(v_cvt_pk(v[43], v[46], v[47])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[40:43], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[48:49], v[96:97], v[48:49])) + k.emit(v_pk_mul_f32(v[50:51], v[98:99], v[50:51])) + k.emit(v_pk_mul_f32(v[52:53], v[100:101], v[52:53])) + k.emit(v_pk_mul_f32(v[54:55], v[102:103], v[54:55])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[48:49])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[50:51])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[52:53])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[54:55])) + k.emit(v_mov_b64_e32(v[48:49], v[22:23])) + k.emit(v_mov_b64_e32(v[50:51], v[24:25])) + k.emit(v_mov_b64_e32(v[52:53], v[26:27])) + k.emit(v_mov_b64_e32(v[54:55], v[28:29])) + k.emit(v_cvt_pk(v[48], v[48], v[49])) + k.emit(v_cvt_pk(v[49], v[50], v[51])) + k.emit(v_cvt_pk(v[50], v[52], v[53])) + k.emit(v_cvt_pk(v[51], v[54], v[55])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[48:51], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[56:57], v[96:97], v[56:57])) + k.emit(v_pk_mul_f32(v[58:59], v[98:99], v[58:59])) + k.emit(v_pk_mul_f32(v[60:61], v[100:101], v[60:61])) + k.emit(v_pk_mul_f32(v[62:63], v[102:103], v[62:63])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[56:57])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[58:59])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[60:61])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[62:63])) + k.emit(v_mov_b64_e32(v[56:57], v[22:23])) + k.emit(v_mov_b64_e32(v[58:59], v[24:25])) + k.emit(v_mov_b64_e32(v[60:61], v[26:27])) + k.emit(v_mov_b64_e32(v[62:63], v[28:29])) + k.emit(v_cvt_pk(v[56], v[56], v[57])) + k.emit(v_cvt_pk(v[57], v[58], v[59])) + k.emit(v_cvt_pk(v[58], v[60], v[61])) + k.emit(v_cvt_pk(v[59], v[62], v[63])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[56:59], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[64:65], v[96:97], v[64:65])) + k.emit(v_pk_mul_f32(v[66:67], v[98:99], v[66:67])) + k.emit(v_pk_mul_f32(v[68:69], v[100:101], v[68:69])) + k.emit(v_pk_mul_f32(v[70:71], v[102:103], v[70:71])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[64:65])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[66:67])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[68:69])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[70:71])) + k.emit(v_mov_b64_e32(v[64:65], v[22:23])) + k.emit(v_mov_b64_e32(v[66:67], v[24:25])) + k.emit(v_mov_b64_e32(v[68:69], v[26:27])) + k.emit(v_mov_b64_e32(v[70:71], v[28:29])) + k.emit(v_cvt_pk(v[64], v[64], v[65])) + k.emit(v_cvt_pk(v[65], v[66], v[67])) + k.emit(v_cvt_pk(v[66], v[68], v[69])) + k.emit(v_cvt_pk(v[67], v[70], v[71])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[64:67], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[72:73], v[96:97], v[72:73])) + k.emit(v_pk_mul_f32(v[74:75], v[98:99], v[74:75])) + k.emit(v_pk_mul_f32(v[76:77], v[100:101], v[76:77])) + k.emit(v_pk_mul_f32(v[78:79], v[102:103], v[78:79])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[72:73])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[74:75])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[76:77])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[78:79])) + k.emit(v_mov_b64_e32(v[72:73], v[22:23])) + k.emit(v_mov_b64_e32(v[74:75], v[24:25])) + k.emit(v_mov_b64_e32(v[76:77], v[26:27])) + k.emit(v_mov_b64_e32(v[78:79], v[28:29])) + k.emit(v_cvt_pk(v[72], v[72], v[73])) + k.emit(v_cvt_pk(v[73], v[74], v[75])) + k.emit(v_cvt_pk(v[74], v[76], v[77])) + k.emit(v_cvt_pk(v[75], v[78], v[79])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[72:75], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[80:81], v[96:97], v[80:81])) + k.emit(v_pk_mul_f32(v[82:83], v[98:99], v[82:83])) + k.emit(v_pk_mul_f32(v[84:85], v[100:101], v[84:85])) + k.emit(v_pk_mul_f32(v[86:87], v[102:103], v[86:87])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[80:81])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[82:83])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[84:85])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[86:87])) + k.emit(v_mov_b64_e32(v[80:81], v[22:23])) + k.emit(v_mov_b64_e32(v[82:83], v[24:25])) + k.emit(v_mov_b64_e32(v[84:85], v[26:27])) + k.emit(v_mov_b64_e32(v[86:87], v[28:29])) + k.emit(v_cvt_pk(v[80], v[80], v[81])) + k.emit(v_cvt_pk(v[81], v[82], v[83])) + k.emit(v_cvt_pk(v[82], v[84], v[85])) + k.emit(v_cvt_pk(v[83], v[86], v[87])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[80:83], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(ds_read_b128(v[56:59], v[37])) + k.emit(ds_read_b128(v[60:63], v[37], v[0], v[0], 0, 16)) + k.emit(ds_read_b128(v[64:67], v[37], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[68:71], v[37], v[0], v[0], 0, 16, 4)) + k.emit(v_accvgpr_read(v[40], v[195])) + k.emit(v_accvgpr_read(v[41], v[199])) + k.emit(v_accvgpr_read(v[42], v[203])) + k.emit(v_accvgpr_read(v[43], v[207])) + k.emit(v_accvgpr_read(v[44], v[211])) + k.emit(v_accvgpr_read(v[45], v[215])) + k.emit(v_accvgpr_read(v[46], v[219])) + k.emit(v_accvgpr_read(v[47], v[223])) + k.emit(v_accvgpr_read(v[48], v[227])) + k.emit(v_accvgpr_read(v[49], v[231])) + k.emit(v_accvgpr_read(v[50], v[235])) + k.emit(v_accvgpr_read(v[51], v[239])) + k.emit(v_accvgpr_read(v[52], v[243])) + k.emit(v_accvgpr_read(v[53], v[247])) + k.emit(v_accvgpr_read(v[54], v[251])) + k.emit(v_accvgpr_read(v[55], v[255])) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.waitcnt(lgkm=0) + k.emit(v_pk_mul_f32(v[40:41], v[64:65], v[40:41])) + k.emit(v_pk_mul_f32(v[42:43], v[66:67], v[42:43])) + k.emit(v_pk_mul_f32(v[44:45], v[68:69], v[44:45])) + k.emit(v_pk_mul_f32(v[46:47], v[70:71], v[46:47])) + k.emit(v_pk_add_f32(v[22:23], v[56:57], v[40:41])) + k.emit(v_pk_add_f32(v[24:25], v[58:59], v[42:43])) + k.emit(v_pk_add_f32(v[26:27], v[60:61], v[44:45])) + k.emit(v_pk_add_f32(v[28:29], v[62:63], v[46:47])) + k.emit(v_mov_b64_e32(v[40:41], v[22:23])) + k.emit(v_mov_b64_e32(v[42:43], v[24:25])) + k.emit(v_mov_b64_e32(v[44:45], v[26:27])) + k.emit(v_mov_b64_e32(v[46:47], v[28:29])) + k.emit(v_cvt_pk(v[40], v[40], v[41])) + k.emit(v_cvt_pk(v[41], v[42], v[43])) + k.emit(v_cvt_pk(v[42], v[44], v[45])) + k.emit(v_cvt_pk(v[43], v[46], v[47])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[40:43], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[48:49], v[64:65], v[48:49])) + k.emit(v_pk_mul_f32(v[50:51], v[66:67], v[50:51])) + k.emit(v_pk_mul_f32(v[52:53], v[68:69], v[52:53])) + k.emit(v_pk_mul_f32(v[54:55], v[70:71], v[54:55])) + k.emit(v_pk_add_f32(v[22:23], v[56:57], v[48:49])) + k.emit(v_pk_add_f32(v[24:25], v[58:59], v[50:51])) + k.emit(v_pk_add_f32(v[26:27], v[60:61], v[52:53])) + k.emit(v_pk_add_f32(v[28:29], v[62:63], v[54:55])) + k.emit(v_mov_b64_e32(v[48:49], v[22:23])) + k.emit(v_mov_b64_e32(v[50:51], v[24:25])) + k.emit(v_mov_b64_e32(v[52:53], v[26:27])) + k.emit(v_mov_b64_e32(v[54:55], v[28:29])) + k.emit(v_cvt_pk(v[48], v[48], v[49])) + k.emit(v_cvt_pk(v[49], v[50], v[51])) + k.emit(v_cvt_pk(v[50], v[52], v[53])) + k.emit(v_cvt_pk(v[51], v[54], v[55])) + k.emit(s_lshl_b32(s[68], s[36], 1)) + k.emit(s_add_u32(s[12], s[12], s[68])) + k.emit(s_addc_u32(s[13], s[13], 0)) + k.emit(buffer_store_dwordx4(v[48:51], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(s_branch(), target='GW_End_1') + k.label('GW_B0_E1_N_1') + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[36], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[36], 2, v[36])) + k.waitcnt(lgkm=0) + k.emit(s_barrier()) + k.emit(ds_read_b128(v[88:91], v[36])) + k.emit(ds_read_b128(v[92:95], v[36], v[0], v[0], 0, 16)) + k.emit(ds_read_b128(v[96:99], v[36], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[100:103], v[36], v[0], v[0], 0, 16, 4)) + k.emit(v_add_lshl_u32_e64(v[35], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[35], v[30], v[35], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[38], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[38], 2, v[38])) + k.emit(v_add_lshl_u32_e64(v[37], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[37], v[30], v[37], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[104], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[104], 2, v[104])) + k.emit(v_add_lshl_u32_e64(v[39], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[39], v[30], v[39], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[106], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[106], 2, v[106])) + k.emit(v_add_lshl_u32_e64(v[105], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[105], v[30], v[105], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[108], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[108], 2, v[108])) + k.emit(v_add_lshl_u32_e64(v[107], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[107], v[30], v[107], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[110], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[110], 2, v[110])) + k.emit(v_add_lshl_u32_e64(v[109], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[109], v[30], v[109], s[82:83])) + k.emit(v_accvgpr_read(v[40], v[0])) + k.emit(v_accvgpr_read(v[41], v[4])) + k.emit(v_accvgpr_read(v[42], v[8])) + k.emit(v_accvgpr_read(v[43], v[12])) + k.emit(v_accvgpr_read(v[44], v[16])) + k.emit(v_accvgpr_read(v[45], v[20])) + k.emit(v_accvgpr_read(v[46], v[24])) + k.emit(v_accvgpr_read(v[47], v[28])) + k.emit(v_accvgpr_read(v[48], v[32])) + k.emit(v_accvgpr_read(v[49], v[36])) + k.emit(v_accvgpr_read(v[50], v[40])) + k.emit(v_accvgpr_read(v[51], v[44])) + k.emit(v_accvgpr_read(v[52], v[48])) + k.emit(v_accvgpr_read(v[53], v[52])) + k.emit(v_accvgpr_read(v[54], v[56])) + k.emit(v_accvgpr_read(v[55], v[60])) + k.emit(v_accvgpr_read(v[56], v[64])) + k.emit(v_accvgpr_read(v[57], v[68])) + k.emit(v_accvgpr_read(v[58], v[72])) + k.emit(v_accvgpr_read(v[59], v[76])) + k.emit(v_accvgpr_read(v[60], v[80])) + k.emit(v_accvgpr_read(v[61], v[84])) + k.emit(v_accvgpr_read(v[62], v[88])) + k.emit(v_accvgpr_read(v[63], v[92])) + k.emit(v_accvgpr_read(v[64], v[96])) + k.emit(v_accvgpr_read(v[65], v[100])) + k.emit(v_accvgpr_read(v[66], v[104])) + k.emit(v_accvgpr_read(v[67], v[108])) + k.emit(v_accvgpr_read(v[68], v[112])) + k.emit(v_accvgpr_read(v[69], v[116])) + k.emit(v_accvgpr_read(v[70], v[120])) + k.emit(v_accvgpr_read(v[71], v[124])) + k.emit(v_accvgpr_read(v[72], v[128])) + k.emit(v_accvgpr_read(v[73], v[132])) + k.emit(v_accvgpr_read(v[74], v[136])) + k.emit(v_accvgpr_read(v[75], v[140])) + k.emit(v_accvgpr_read(v[76], v[144])) + k.emit(v_accvgpr_read(v[77], v[148])) + k.emit(v_accvgpr_read(v[78], v[152])) + k.emit(v_accvgpr_read(v[79], v[156])) + k.emit(v_accvgpr_read(v[80], v[160])) + k.emit(v_accvgpr_read(v[81], v[164])) + k.emit(v_accvgpr_read(v[82], v[168])) + k.emit(v_accvgpr_read(v[83], v[172])) + k.emit(v_accvgpr_read(v[84], v[176])) + k.emit(v_accvgpr_read(v[85], v[180])) + k.emit(v_accvgpr_read(v[86], v[184])) + k.emit(v_accvgpr_read(v[87], v[188])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_pk_mul_f32(v[40:41], v[96:97], v[40:41])) + k.emit(v_pk_mul_f32(v[42:43], v[98:99], v[42:43])) + k.emit(v_pk_mul_f32(v[44:45], v[100:101], v[44:45])) + k.emit(v_pk_mul_f32(v[46:47], v[102:103], v[46:47])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[40:41])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[42:43])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[44:45])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[46:47])) + k.emit(v_mov_b64_e32(v[40:41], v[22:23])) + k.emit(v_mov_b64_e32(v[42:43], v[24:25])) + k.emit(v_mov_b64_e32(v[44:45], v[26:27])) + k.emit(v_mov_b64_e32(v[46:47], v[28:29])) + k.emit(v_cvt_pk(v[40], v[40], v[41])) + k.emit(v_cvt_pk(v[41], v[42], v[43])) + k.emit(v_cvt_pk(v[42], v[44], v[45])) + k.emit(v_cvt_pk(v[43], v[46], v[47])) + k.emit(buffer_store_dwordx4(v[40:43], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[48:49], v[96:97], v[48:49])) + k.emit(v_pk_mul_f32(v[50:51], v[98:99], v[50:51])) + k.emit(v_pk_mul_f32(v[52:53], v[100:101], v[52:53])) + k.emit(v_pk_mul_f32(v[54:55], v[102:103], v[54:55])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[48:49])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[50:51])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[52:53])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[54:55])) + k.emit(v_mov_b64_e32(v[48:49], v[22:23])) + k.emit(v_mov_b64_e32(v[50:51], v[24:25])) + k.emit(v_mov_b64_e32(v[52:53], v[26:27])) + k.emit(v_mov_b64_e32(v[54:55], v[28:29])) + k.emit(v_cvt_pk(v[48], v[48], v[49])) + k.emit(v_cvt_pk(v[49], v[50], v[51])) + k.emit(v_cvt_pk(v[50], v[52], v[53])) + k.emit(v_cvt_pk(v[51], v[54], v[55])) + k.emit(buffer_store_dwordx4(v[48:51], v[37], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[56:57], v[96:97], v[56:57])) + k.emit(v_pk_mul_f32(v[58:59], v[98:99], v[58:59])) + k.emit(v_pk_mul_f32(v[60:61], v[100:101], v[60:61])) + k.emit(v_pk_mul_f32(v[62:63], v[102:103], v[62:63])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[56:57])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[58:59])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[60:61])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[62:63])) + k.emit(v_mov_b64_e32(v[56:57], v[22:23])) + k.emit(v_mov_b64_e32(v[58:59], v[24:25])) + k.emit(v_mov_b64_e32(v[60:61], v[26:27])) + k.emit(v_mov_b64_e32(v[62:63], v[28:29])) + k.emit(v_cvt_pk(v[56], v[56], v[57])) + k.emit(v_cvt_pk(v[57], v[58], v[59])) + k.emit(v_cvt_pk(v[58], v[60], v[61])) + k.emit(v_cvt_pk(v[59], v[62], v[63])) + k.emit(buffer_store_dwordx4(v[56:59], v[39], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[64:65], v[96:97], v[64:65])) + k.emit(v_pk_mul_f32(v[66:67], v[98:99], v[66:67])) + k.emit(v_pk_mul_f32(v[68:69], v[100:101], v[68:69])) + k.emit(v_pk_mul_f32(v[70:71], v[102:103], v[70:71])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[64:65])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[66:67])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[68:69])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[70:71])) + k.emit(v_mov_b64_e32(v[64:65], v[22:23])) + k.emit(v_mov_b64_e32(v[66:67], v[24:25])) + k.emit(v_mov_b64_e32(v[68:69], v[26:27])) + k.emit(v_mov_b64_e32(v[70:71], v[28:29])) + k.emit(v_cvt_pk(v[64], v[64], v[65])) + k.emit(v_cvt_pk(v[65], v[66], v[67])) + k.emit(v_cvt_pk(v[66], v[68], v[69])) + k.emit(v_cvt_pk(v[67], v[70], v[71])) + k.emit(buffer_store_dwordx4(v[64:67], v[105], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[72:73], v[96:97], v[72:73])) + k.emit(v_pk_mul_f32(v[74:75], v[98:99], v[74:75])) + k.emit(v_pk_mul_f32(v[76:77], v[100:101], v[76:77])) + k.emit(v_pk_mul_f32(v[78:79], v[102:103], v[78:79])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[72:73])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[74:75])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[76:77])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[78:79])) + k.emit(v_mov_b64_e32(v[72:73], v[22:23])) + k.emit(v_mov_b64_e32(v[74:75], v[24:25])) + k.emit(v_mov_b64_e32(v[76:77], v[26:27])) + k.emit(v_mov_b64_e32(v[78:79], v[28:29])) + k.emit(v_cvt_pk(v[72], v[72], v[73])) + k.emit(v_cvt_pk(v[73], v[74], v[75])) + k.emit(v_cvt_pk(v[74], v[76], v[77])) + k.emit(v_cvt_pk(v[75], v[78], v[79])) + k.emit(buffer_store_dwordx4(v[72:75], v[107], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[80:81], v[96:97], v[80:81])) + k.emit(v_pk_mul_f32(v[82:83], v[98:99], v[82:83])) + k.emit(v_pk_mul_f32(v[84:85], v[100:101], v[84:85])) + k.emit(v_pk_mul_f32(v[86:87], v[102:103], v[86:87])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[80:81])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[82:83])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[84:85])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[86:87])) + k.emit(v_mov_b64_e32(v[80:81], v[22:23])) + k.emit(v_mov_b64_e32(v[82:83], v[24:25])) + k.emit(v_mov_b64_e32(v[84:85], v[26:27])) + k.emit(v_mov_b64_e32(v[86:87], v[28:29])) + k.emit(v_cvt_pk(v[80], v[80], v[81])) + k.emit(v_cvt_pk(v[81], v[82], v[83])) + k.emit(v_cvt_pk(v[82], v[84], v[85])) + k.emit(v_cvt_pk(v[83], v[86], v[87])) + k.emit(buffer_store_dwordx4(v[80:83], v[109], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[36], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[36], 2, v[36])) + k.emit(ds_read_b128(v[88:91], v[36])) + k.emit(ds_read_b128(v[92:95], v[36], v[0], v[0], 0, 16)) + k.emit(ds_read_b128(v[96:99], v[36], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[100:103], v[36], v[0], v[0], 0, 16, 4)) + k.emit(v_add_lshl_u32_e64(v[35], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[35], v[30], v[35], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[38], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[38], 2, v[38])) + k.emit(v_add_lshl_u32_e64(v[37], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[37], v[30], v[37], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[104], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[104], 2, v[104])) + k.emit(v_add_lshl_u32_e64(v[39], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[39], v[30], v[39], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[106], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[106], 2, v[106])) + k.emit(v_add_lshl_u32_e64(v[105], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[105], v[30], v[105], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[108], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[108], 2, v[108])) + k.emit(v_add_lshl_u32_e64(v[107], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[107], v[30], v[107], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[110], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[110], 2, v[110])) + k.emit(v_add_lshl_u32_e64(v[109], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[109], v[30], v[109], s[82:83])) + k.emit(v_accvgpr_read(v[40], v[192])) + k.emit(v_accvgpr_read(v[41], v[196])) + k.emit(v_accvgpr_read(v[42], v[200])) + k.emit(v_accvgpr_read(v[43], v[204])) + k.emit(v_accvgpr_read(v[44], v[208])) + k.emit(v_accvgpr_read(v[45], v[212])) + k.emit(v_accvgpr_read(v[46], v[216])) + k.emit(v_accvgpr_read(v[47], v[220])) + k.emit(v_accvgpr_read(v[48], v[224])) + k.emit(v_accvgpr_read(v[49], v[228])) + k.emit(v_accvgpr_read(v[50], v[232])) + k.emit(v_accvgpr_read(v[51], v[236])) + k.emit(v_accvgpr_read(v[52], v[240])) + k.emit(v_accvgpr_read(v[53], v[244])) + k.emit(v_accvgpr_read(v[54], v[248])) + k.emit(v_accvgpr_read(v[55], v[252])) + k.emit(v_accvgpr_read(v[56], v[1])) + k.emit(v_accvgpr_read(v[57], v[5])) + k.emit(v_accvgpr_read(v[58], v[9])) + k.emit(v_accvgpr_read(v[59], v[13])) + k.emit(v_accvgpr_read(v[60], v[17])) + k.emit(v_accvgpr_read(v[61], v[21])) + k.emit(v_accvgpr_read(v[62], v[25])) + k.emit(v_accvgpr_read(v[63], v[29])) + k.emit(v_accvgpr_read(v[64], v[33])) + k.emit(v_accvgpr_read(v[65], v[37])) + k.emit(v_accvgpr_read(v[66], v[41])) + k.emit(v_accvgpr_read(v[67], v[45])) + k.emit(v_accvgpr_read(v[68], v[49])) + k.emit(v_accvgpr_read(v[69], v[53])) + k.emit(v_accvgpr_read(v[70], v[57])) + k.emit(v_accvgpr_read(v[71], v[61])) + k.emit(v_accvgpr_read(v[72], v[65])) + k.emit(v_accvgpr_read(v[73], v[69])) + k.emit(v_accvgpr_read(v[74], v[73])) + k.emit(v_accvgpr_read(v[75], v[77])) + k.emit(v_accvgpr_read(v[76], v[81])) + k.emit(v_accvgpr_read(v[77], v[85])) + k.emit(v_accvgpr_read(v[78], v[89])) + k.emit(v_accvgpr_read(v[79], v[93])) + k.emit(v_accvgpr_read(v[80], v[97])) + k.emit(v_accvgpr_read(v[81], v[101])) + k.emit(v_accvgpr_read(v[82], v[105])) + k.emit(v_accvgpr_read(v[83], v[109])) + k.emit(v_accvgpr_read(v[84], v[113])) + k.emit(v_accvgpr_read(v[85], v[117])) + k.emit(v_accvgpr_read(v[86], v[121])) + k.emit(v_accvgpr_read(v[87], v[125])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_pk_mul_f32(v[40:41], v[96:97], v[40:41])) + k.emit(v_pk_mul_f32(v[42:43], v[98:99], v[42:43])) + k.emit(v_pk_mul_f32(v[44:45], v[100:101], v[44:45])) + k.emit(v_pk_mul_f32(v[46:47], v[102:103], v[46:47])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[40:41])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[42:43])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[44:45])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[46:47])) + k.emit(v_mov_b64_e32(v[40:41], v[22:23])) + k.emit(v_mov_b64_e32(v[42:43], v[24:25])) + k.emit(v_mov_b64_e32(v[44:45], v[26:27])) + k.emit(v_mov_b64_e32(v[46:47], v[28:29])) + k.emit(v_cvt_pk(v[40], v[40], v[41])) + k.emit(v_cvt_pk(v[41], v[42], v[43])) + k.emit(v_cvt_pk(v[42], v[44], v[45])) + k.emit(v_cvt_pk(v[43], v[46], v[47])) + k.emit(buffer_store_dwordx4(v[40:43], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[48:49], v[96:97], v[48:49])) + k.emit(v_pk_mul_f32(v[50:51], v[98:99], v[50:51])) + k.emit(v_pk_mul_f32(v[52:53], v[100:101], v[52:53])) + k.emit(v_pk_mul_f32(v[54:55], v[102:103], v[54:55])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[48:49])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[50:51])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[52:53])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[54:55])) + k.emit(v_mov_b64_e32(v[48:49], v[22:23])) + k.emit(v_mov_b64_e32(v[50:51], v[24:25])) + k.emit(v_mov_b64_e32(v[52:53], v[26:27])) + k.emit(v_mov_b64_e32(v[54:55], v[28:29])) + k.emit(v_cvt_pk(v[48], v[48], v[49])) + k.emit(v_cvt_pk(v[49], v[50], v[51])) + k.emit(v_cvt_pk(v[50], v[52], v[53])) + k.emit(v_cvt_pk(v[51], v[54], v[55])) + k.emit(buffer_store_dwordx4(v[48:51], v[37], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[56:57], v[96:97], v[56:57])) + k.emit(v_pk_mul_f32(v[58:59], v[98:99], v[58:59])) + k.emit(v_pk_mul_f32(v[60:61], v[100:101], v[60:61])) + k.emit(v_pk_mul_f32(v[62:63], v[102:103], v[62:63])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[56:57])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[58:59])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[60:61])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[62:63])) + k.emit(v_mov_b64_e32(v[56:57], v[22:23])) + k.emit(v_mov_b64_e32(v[58:59], v[24:25])) + k.emit(v_mov_b64_e32(v[60:61], v[26:27])) + k.emit(v_mov_b64_e32(v[62:63], v[28:29])) + k.emit(v_cvt_pk(v[56], v[56], v[57])) + k.emit(v_cvt_pk(v[57], v[58], v[59])) + k.emit(v_cvt_pk(v[58], v[60], v[61])) + k.emit(v_cvt_pk(v[59], v[62], v[63])) + k.emit(buffer_store_dwordx4(v[56:59], v[39], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[64:65], v[96:97], v[64:65])) + k.emit(v_pk_mul_f32(v[66:67], v[98:99], v[66:67])) + k.emit(v_pk_mul_f32(v[68:69], v[100:101], v[68:69])) + k.emit(v_pk_mul_f32(v[70:71], v[102:103], v[70:71])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[64:65])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[66:67])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[68:69])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[70:71])) + k.emit(v_mov_b64_e32(v[64:65], v[22:23])) + k.emit(v_mov_b64_e32(v[66:67], v[24:25])) + k.emit(v_mov_b64_e32(v[68:69], v[26:27])) + k.emit(v_mov_b64_e32(v[70:71], v[28:29])) + k.emit(v_cvt_pk(v[64], v[64], v[65])) + k.emit(v_cvt_pk(v[65], v[66], v[67])) + k.emit(v_cvt_pk(v[66], v[68], v[69])) + k.emit(v_cvt_pk(v[67], v[70], v[71])) + k.emit(buffer_store_dwordx4(v[64:67], v[105], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[72:73], v[96:97], v[72:73])) + k.emit(v_pk_mul_f32(v[74:75], v[98:99], v[74:75])) + k.emit(v_pk_mul_f32(v[76:77], v[100:101], v[76:77])) + k.emit(v_pk_mul_f32(v[78:79], v[102:103], v[78:79])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[72:73])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[74:75])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[76:77])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[78:79])) + k.emit(v_mov_b64_e32(v[72:73], v[22:23])) + k.emit(v_mov_b64_e32(v[74:75], v[24:25])) + k.emit(v_mov_b64_e32(v[76:77], v[26:27])) + k.emit(v_mov_b64_e32(v[78:79], v[28:29])) + k.emit(v_cvt_pk(v[72], v[72], v[73])) + k.emit(v_cvt_pk(v[73], v[74], v[75])) + k.emit(v_cvt_pk(v[74], v[76], v[77])) + k.emit(v_cvt_pk(v[75], v[78], v[79])) + k.emit(buffer_store_dwordx4(v[72:75], v[107], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[80:81], v[96:97], v[80:81])) + k.emit(v_pk_mul_f32(v[82:83], v[98:99], v[82:83])) + k.emit(v_pk_mul_f32(v[84:85], v[100:101], v[84:85])) + k.emit(v_pk_mul_f32(v[86:87], v[102:103], v[86:87])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[80:81])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[82:83])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[84:85])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[86:87])) + k.emit(v_mov_b64_e32(v[80:81], v[22:23])) + k.emit(v_mov_b64_e32(v[82:83], v[24:25])) + k.emit(v_mov_b64_e32(v[84:85], v[26:27])) + k.emit(v_mov_b64_e32(v[86:87], v[28:29])) + k.emit(v_cvt_pk(v[80], v[80], v[81])) + k.emit(v_cvt_pk(v[81], v[82], v[83])) + k.emit(v_cvt_pk(v[82], v[84], v[85])) + k.emit(v_cvt_pk(v[83], v[86], v[87])) + k.emit(buffer_store_dwordx4(v[80:83], v[109], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[36], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[36], 2, v[36])) + k.emit(ds_read_b128(v[88:91], v[36])) + k.emit(ds_read_b128(v[92:95], v[36], v[0], v[0], 0, 16)) + k.emit(ds_read_b128(v[96:99], v[36], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[100:103], v[36], v[0], v[0], 0, 16, 4)) + k.emit(v_add_lshl_u32_e64(v[35], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[35], v[30], v[35], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[38], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[38], 2, v[38])) + k.emit(v_add_lshl_u32_e64(v[37], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[37], v[30], v[37], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[104], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[104], 2, v[104])) + k.emit(v_add_lshl_u32_e64(v[39], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[39], v[30], v[39], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[106], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[106], 2, v[106])) + k.emit(v_add_lshl_u32_e64(v[105], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[105], v[30], v[105], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[108], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[108], 2, v[108])) + k.emit(v_add_lshl_u32_e64(v[107], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[107], v[30], v[107], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[110], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[110], 2, v[110])) + k.emit(v_add_lshl_u32_e64(v[109], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[109], v[30], v[109], s[82:83])) + k.emit(v_accvgpr_read(v[40], v[129])) + k.emit(v_accvgpr_read(v[41], v[133])) + k.emit(v_accvgpr_read(v[42], v[137])) + k.emit(v_accvgpr_read(v[43], v[141])) + k.emit(v_accvgpr_read(v[44], v[145])) + k.emit(v_accvgpr_read(v[45], v[149])) + k.emit(v_accvgpr_read(v[46], v[153])) + k.emit(v_accvgpr_read(v[47], v[157])) + k.emit(v_accvgpr_read(v[48], v[161])) + k.emit(v_accvgpr_read(v[49], v[165])) + k.emit(v_accvgpr_read(v[50], v[169])) + k.emit(v_accvgpr_read(v[51], v[173])) + k.emit(v_accvgpr_read(v[52], v[177])) + k.emit(v_accvgpr_read(v[53], v[181])) + k.emit(v_accvgpr_read(v[54], v[185])) + k.emit(v_accvgpr_read(v[55], v[189])) + k.emit(v_accvgpr_read(v[56], v[193])) + k.emit(v_accvgpr_read(v[57], v[197])) + k.emit(v_accvgpr_read(v[58], v[201])) + k.emit(v_accvgpr_read(v[59], v[205])) + k.emit(v_accvgpr_read(v[60], v[209])) + k.emit(v_accvgpr_read(v[61], v[213])) + k.emit(v_accvgpr_read(v[62], v[217])) + k.emit(v_accvgpr_read(v[63], v[221])) + k.emit(v_accvgpr_read(v[64], v[225])) + k.emit(v_accvgpr_read(v[65], v[229])) + k.emit(v_accvgpr_read(v[66], v[233])) + k.emit(v_accvgpr_read(v[67], v[237])) + k.emit(v_accvgpr_read(v[68], v[241])) + k.emit(v_accvgpr_read(v[69], v[245])) + k.emit(v_accvgpr_read(v[70], v[249])) + k.emit(v_accvgpr_read(v[71], v[253])) + k.emit(v_accvgpr_read(v[72], v[2])) + k.emit(v_accvgpr_read(v[73], v[6])) + k.emit(v_accvgpr_read(v[74], v[10])) + k.emit(v_accvgpr_read(v[75], v[14])) + k.emit(v_accvgpr_read(v[76], v[18])) + k.emit(v_accvgpr_read(v[77], v[22])) + k.emit(v_accvgpr_read(v[78], v[26])) + k.emit(v_accvgpr_read(v[79], v[30])) + k.emit(v_accvgpr_read(v[80], v[34])) + k.emit(v_accvgpr_read(v[81], v[38])) + k.emit(v_accvgpr_read(v[82], v[42])) + k.emit(v_accvgpr_read(v[83], v[46])) + k.emit(v_accvgpr_read(v[84], v[50])) + k.emit(v_accvgpr_read(v[85], v[54])) + k.emit(v_accvgpr_read(v[86], v[58])) + k.emit(v_accvgpr_read(v[87], v[62])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_pk_mul_f32(v[40:41], v[96:97], v[40:41])) + k.emit(v_pk_mul_f32(v[42:43], v[98:99], v[42:43])) + k.emit(v_pk_mul_f32(v[44:45], v[100:101], v[44:45])) + k.emit(v_pk_mul_f32(v[46:47], v[102:103], v[46:47])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[40:41])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[42:43])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[44:45])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[46:47])) + k.emit(v_mov_b64_e32(v[40:41], v[22:23])) + k.emit(v_mov_b64_e32(v[42:43], v[24:25])) + k.emit(v_mov_b64_e32(v[44:45], v[26:27])) + k.emit(v_mov_b64_e32(v[46:47], v[28:29])) + k.emit(v_cvt_pk(v[40], v[40], v[41])) + k.emit(v_cvt_pk(v[41], v[42], v[43])) + k.emit(v_cvt_pk(v[42], v[44], v[45])) + k.emit(v_cvt_pk(v[43], v[46], v[47])) + k.emit(buffer_store_dwordx4(v[40:43], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[48:49], v[96:97], v[48:49])) + k.emit(v_pk_mul_f32(v[50:51], v[98:99], v[50:51])) + k.emit(v_pk_mul_f32(v[52:53], v[100:101], v[52:53])) + k.emit(v_pk_mul_f32(v[54:55], v[102:103], v[54:55])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[48:49])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[50:51])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[52:53])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[54:55])) + k.emit(v_mov_b64_e32(v[48:49], v[22:23])) + k.emit(v_mov_b64_e32(v[50:51], v[24:25])) + k.emit(v_mov_b64_e32(v[52:53], v[26:27])) + k.emit(v_mov_b64_e32(v[54:55], v[28:29])) + k.emit(v_cvt_pk(v[48], v[48], v[49])) + k.emit(v_cvt_pk(v[49], v[50], v[51])) + k.emit(v_cvt_pk(v[50], v[52], v[53])) + k.emit(v_cvt_pk(v[51], v[54], v[55])) + k.emit(buffer_store_dwordx4(v[48:51], v[37], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[56:57], v[96:97], v[56:57])) + k.emit(v_pk_mul_f32(v[58:59], v[98:99], v[58:59])) + k.emit(v_pk_mul_f32(v[60:61], v[100:101], v[60:61])) + k.emit(v_pk_mul_f32(v[62:63], v[102:103], v[62:63])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[56:57])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[58:59])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[60:61])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[62:63])) + k.emit(v_mov_b64_e32(v[56:57], v[22:23])) + k.emit(v_mov_b64_e32(v[58:59], v[24:25])) + k.emit(v_mov_b64_e32(v[60:61], v[26:27])) + k.emit(v_mov_b64_e32(v[62:63], v[28:29])) + k.emit(v_cvt_pk(v[56], v[56], v[57])) + k.emit(v_cvt_pk(v[57], v[58], v[59])) + k.emit(v_cvt_pk(v[58], v[60], v[61])) + k.emit(v_cvt_pk(v[59], v[62], v[63])) + k.emit(buffer_store_dwordx4(v[56:59], v[39], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[64:65], v[96:97], v[64:65])) + k.emit(v_pk_mul_f32(v[66:67], v[98:99], v[66:67])) + k.emit(v_pk_mul_f32(v[68:69], v[100:101], v[68:69])) + k.emit(v_pk_mul_f32(v[70:71], v[102:103], v[70:71])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[64:65])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[66:67])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[68:69])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[70:71])) + k.emit(v_mov_b64_e32(v[64:65], v[22:23])) + k.emit(v_mov_b64_e32(v[66:67], v[24:25])) + k.emit(v_mov_b64_e32(v[68:69], v[26:27])) + k.emit(v_mov_b64_e32(v[70:71], v[28:29])) + k.emit(v_cvt_pk(v[64], v[64], v[65])) + k.emit(v_cvt_pk(v[65], v[66], v[67])) + k.emit(v_cvt_pk(v[66], v[68], v[69])) + k.emit(v_cvt_pk(v[67], v[70], v[71])) + k.emit(buffer_store_dwordx4(v[64:67], v[105], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[72:73], v[96:97], v[72:73])) + k.emit(v_pk_mul_f32(v[74:75], v[98:99], v[74:75])) + k.emit(v_pk_mul_f32(v[76:77], v[100:101], v[76:77])) + k.emit(v_pk_mul_f32(v[78:79], v[102:103], v[78:79])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[72:73])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[74:75])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[76:77])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[78:79])) + k.emit(v_mov_b64_e32(v[72:73], v[22:23])) + k.emit(v_mov_b64_e32(v[74:75], v[24:25])) + k.emit(v_mov_b64_e32(v[76:77], v[26:27])) + k.emit(v_mov_b64_e32(v[78:79], v[28:29])) + k.emit(v_cvt_pk(v[72], v[72], v[73])) + k.emit(v_cvt_pk(v[73], v[74], v[75])) + k.emit(v_cvt_pk(v[74], v[76], v[77])) + k.emit(v_cvt_pk(v[75], v[78], v[79])) + k.emit(buffer_store_dwordx4(v[72:75], v[107], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[80:81], v[96:97], v[80:81])) + k.emit(v_pk_mul_f32(v[82:83], v[98:99], v[82:83])) + k.emit(v_pk_mul_f32(v[84:85], v[100:101], v[84:85])) + k.emit(v_pk_mul_f32(v[86:87], v[102:103], v[86:87])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[80:81])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[82:83])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[84:85])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[86:87])) + k.emit(v_mov_b64_e32(v[80:81], v[22:23])) + k.emit(v_mov_b64_e32(v[82:83], v[24:25])) + k.emit(v_mov_b64_e32(v[84:85], v[26:27])) + k.emit(v_mov_b64_e32(v[86:87], v[28:29])) + k.emit(v_cvt_pk(v[80], v[80], v[81])) + k.emit(v_cvt_pk(v[81], v[82], v[83])) + k.emit(v_cvt_pk(v[82], v[84], v[85])) + k.emit(v_cvt_pk(v[83], v[86], v[87])) + k.emit(buffer_store_dwordx4(v[80:83], v[109], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[36], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[36], 2, v[36])) + k.emit(ds_read_b128(v[88:91], v[36])) + k.emit(ds_read_b128(v[92:95], v[36], v[0], v[0], 0, 16)) + k.emit(ds_read_b128(v[96:99], v[36], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[100:103], v[36], v[0], v[0], 0, 16, 4)) + k.emit(v_add_lshl_u32_e64(v[35], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[35], v[30], v[35], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[38], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[38], 2, v[38])) + k.emit(v_add_lshl_u32_e64(v[37], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[37], v[30], v[37], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[104], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[104], 2, v[104])) + k.emit(v_add_lshl_u32_e64(v[39], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[39], v[30], v[39], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[106], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[106], 2, v[106])) + k.emit(v_add_lshl_u32_e64(v[105], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[105], v[30], v[105], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[108], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[108], 2, v[108])) + k.emit(v_add_lshl_u32_e64(v[107], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[107], v[30], v[107], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[110], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[110], 2, v[110])) + k.emit(v_add_lshl_u32_e64(v[109], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[109], v[30], v[109], s[82:83])) + k.emit(v_accvgpr_read(v[40], v[66])) + k.emit(v_accvgpr_read(v[41], v[70])) + k.emit(v_accvgpr_read(v[42], v[74])) + k.emit(v_accvgpr_read(v[43], v[78])) + k.emit(v_accvgpr_read(v[44], v[82])) + k.emit(v_accvgpr_read(v[45], v[86])) + k.emit(v_accvgpr_read(v[46], v[90])) + k.emit(v_accvgpr_read(v[47], v[94])) + k.emit(v_accvgpr_read(v[48], v[98])) + k.emit(v_accvgpr_read(v[49], v[102])) + k.emit(v_accvgpr_read(v[50], v[106])) + k.emit(v_accvgpr_read(v[51], v[110])) + k.emit(v_accvgpr_read(v[52], v[114])) + k.emit(v_accvgpr_read(v[53], v[118])) + k.emit(v_accvgpr_read(v[54], v[122])) + k.emit(v_accvgpr_read(v[55], v[126])) + k.emit(v_accvgpr_read(v[56], v[130])) + k.emit(v_accvgpr_read(v[57], v[134])) + k.emit(v_accvgpr_read(v[58], v[138])) + k.emit(v_accvgpr_read(v[59], v[142])) + k.emit(v_accvgpr_read(v[60], v[146])) + k.emit(v_accvgpr_read(v[61], v[150])) + k.emit(v_accvgpr_read(v[62], v[154])) + k.emit(v_accvgpr_read(v[63], v[158])) + k.emit(v_accvgpr_read(v[64], v[162])) + k.emit(v_accvgpr_read(v[65], v[166])) + k.emit(v_accvgpr_read(v[66], v[170])) + k.emit(v_accvgpr_read(v[67], v[174])) + k.emit(v_accvgpr_read(v[68], v[178])) + k.emit(v_accvgpr_read(v[69], v[182])) + k.emit(v_accvgpr_read(v[70], v[186])) + k.emit(v_accvgpr_read(v[71], v[190])) + k.emit(v_accvgpr_read(v[72], v[194])) + k.emit(v_accvgpr_read(v[73], v[198])) + k.emit(v_accvgpr_read(v[74], v[202])) + k.emit(v_accvgpr_read(v[75], v[206])) + k.emit(v_accvgpr_read(v[76], v[210])) + k.emit(v_accvgpr_read(v[77], v[214])) + k.emit(v_accvgpr_read(v[78], v[218])) + k.emit(v_accvgpr_read(v[79], v[222])) + k.emit(v_accvgpr_read(v[80], v[226])) + k.emit(v_accvgpr_read(v[81], v[230])) + k.emit(v_accvgpr_read(v[82], v[234])) + k.emit(v_accvgpr_read(v[83], v[238])) + k.emit(v_accvgpr_read(v[84], v[242])) + k.emit(v_accvgpr_read(v[85], v[246])) + k.emit(v_accvgpr_read(v[86], v[250])) + k.emit(v_accvgpr_read(v[87], v[254])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_pk_mul_f32(v[40:41], v[96:97], v[40:41])) + k.emit(v_pk_mul_f32(v[42:43], v[98:99], v[42:43])) + k.emit(v_pk_mul_f32(v[44:45], v[100:101], v[44:45])) + k.emit(v_pk_mul_f32(v[46:47], v[102:103], v[46:47])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[40:41])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[42:43])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[44:45])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[46:47])) + k.emit(v_mov_b64_e32(v[40:41], v[22:23])) + k.emit(v_mov_b64_e32(v[42:43], v[24:25])) + k.emit(v_mov_b64_e32(v[44:45], v[26:27])) + k.emit(v_mov_b64_e32(v[46:47], v[28:29])) + k.emit(v_cvt_pk(v[40], v[40], v[41])) + k.emit(v_cvt_pk(v[41], v[42], v[43])) + k.emit(v_cvt_pk(v[42], v[44], v[45])) + k.emit(v_cvt_pk(v[43], v[46], v[47])) + k.emit(buffer_store_dwordx4(v[40:43], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[48:49], v[96:97], v[48:49])) + k.emit(v_pk_mul_f32(v[50:51], v[98:99], v[50:51])) + k.emit(v_pk_mul_f32(v[52:53], v[100:101], v[52:53])) + k.emit(v_pk_mul_f32(v[54:55], v[102:103], v[54:55])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[48:49])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[50:51])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[52:53])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[54:55])) + k.emit(v_mov_b64_e32(v[48:49], v[22:23])) + k.emit(v_mov_b64_e32(v[50:51], v[24:25])) + k.emit(v_mov_b64_e32(v[52:53], v[26:27])) + k.emit(v_mov_b64_e32(v[54:55], v[28:29])) + k.emit(v_cvt_pk(v[48], v[48], v[49])) + k.emit(v_cvt_pk(v[49], v[50], v[51])) + k.emit(v_cvt_pk(v[50], v[52], v[53])) + k.emit(v_cvt_pk(v[51], v[54], v[55])) + k.emit(buffer_store_dwordx4(v[48:51], v[37], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[56:57], v[96:97], v[56:57])) + k.emit(v_pk_mul_f32(v[58:59], v[98:99], v[58:59])) + k.emit(v_pk_mul_f32(v[60:61], v[100:101], v[60:61])) + k.emit(v_pk_mul_f32(v[62:63], v[102:103], v[62:63])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[56:57])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[58:59])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[60:61])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[62:63])) + k.emit(v_mov_b64_e32(v[56:57], v[22:23])) + k.emit(v_mov_b64_e32(v[58:59], v[24:25])) + k.emit(v_mov_b64_e32(v[60:61], v[26:27])) + k.emit(v_mov_b64_e32(v[62:63], v[28:29])) + k.emit(v_cvt_pk(v[56], v[56], v[57])) + k.emit(v_cvt_pk(v[57], v[58], v[59])) + k.emit(v_cvt_pk(v[58], v[60], v[61])) + k.emit(v_cvt_pk(v[59], v[62], v[63])) + k.emit(buffer_store_dwordx4(v[56:59], v[39], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[64:65], v[96:97], v[64:65])) + k.emit(v_pk_mul_f32(v[66:67], v[98:99], v[66:67])) + k.emit(v_pk_mul_f32(v[68:69], v[100:101], v[68:69])) + k.emit(v_pk_mul_f32(v[70:71], v[102:103], v[70:71])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[64:65])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[66:67])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[68:69])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[70:71])) + k.emit(v_mov_b64_e32(v[64:65], v[22:23])) + k.emit(v_mov_b64_e32(v[66:67], v[24:25])) + k.emit(v_mov_b64_e32(v[68:69], v[26:27])) + k.emit(v_mov_b64_e32(v[70:71], v[28:29])) + k.emit(v_cvt_pk(v[64], v[64], v[65])) + k.emit(v_cvt_pk(v[65], v[66], v[67])) + k.emit(v_cvt_pk(v[66], v[68], v[69])) + k.emit(v_cvt_pk(v[67], v[70], v[71])) + k.emit(buffer_store_dwordx4(v[64:67], v[105], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[72:73], v[96:97], v[72:73])) + k.emit(v_pk_mul_f32(v[74:75], v[98:99], v[74:75])) + k.emit(v_pk_mul_f32(v[76:77], v[100:101], v[76:77])) + k.emit(v_pk_mul_f32(v[78:79], v[102:103], v[78:79])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[72:73])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[74:75])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[76:77])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[78:79])) + k.emit(v_mov_b64_e32(v[72:73], v[22:23])) + k.emit(v_mov_b64_e32(v[74:75], v[24:25])) + k.emit(v_mov_b64_e32(v[76:77], v[26:27])) + k.emit(v_mov_b64_e32(v[78:79], v[28:29])) + k.emit(v_cvt_pk(v[72], v[72], v[73])) + k.emit(v_cvt_pk(v[73], v[74], v[75])) + k.emit(v_cvt_pk(v[74], v[76], v[77])) + k.emit(v_cvt_pk(v[75], v[78], v[79])) + k.emit(buffer_store_dwordx4(v[72:75], v[107], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[80:81], v[96:97], v[80:81])) + k.emit(v_pk_mul_f32(v[82:83], v[98:99], v[82:83])) + k.emit(v_pk_mul_f32(v[84:85], v[100:101], v[84:85])) + k.emit(v_pk_mul_f32(v[86:87], v[102:103], v[86:87])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[80:81])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[82:83])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[84:85])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[86:87])) + k.emit(v_mov_b64_e32(v[80:81], v[22:23])) + k.emit(v_mov_b64_e32(v[82:83], v[24:25])) + k.emit(v_mov_b64_e32(v[84:85], v[26:27])) + k.emit(v_mov_b64_e32(v[86:87], v[28:29])) + k.emit(v_cvt_pk(v[80], v[80], v[81])) + k.emit(v_cvt_pk(v[81], v[82], v[83])) + k.emit(v_cvt_pk(v[82], v[84], v[85])) + k.emit(v_cvt_pk(v[83], v[86], v[87])) + k.emit(buffer_store_dwordx4(v[80:83], v[109], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[36], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[36], 2, v[36])) + k.emit(ds_read_b128(v[88:91], v[36])) + k.emit(ds_read_b128(v[92:95], v[36], v[0], v[0], 0, 16)) + k.emit(ds_read_b128(v[96:99], v[36], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[100:103], v[36], v[0], v[0], 0, 16, 4)) + k.emit(v_add_lshl_u32_e64(v[35], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[35], v[30], v[35], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[38], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[38], 2, v[38])) + k.emit(v_add_lshl_u32_e64(v[37], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[37], v[30], v[37], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[104], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[104], 2, v[104])) + k.emit(v_add_lshl_u32_e64(v[39], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[39], v[30], v[39], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[106], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[106], 2, v[106])) + k.emit(v_add_lshl_u32_e64(v[105], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[105], v[30], v[105], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[108], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[108], 2, v[108])) + k.emit(v_add_lshl_u32_e64(v[107], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[107], v[30], v[107], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[110], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[110], 2, v[110])) + k.emit(v_add_lshl_u32_e64(v[109], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[109], v[30], v[109], s[82:83])) + k.emit(v_accvgpr_read(v[40], v[3])) + k.emit(v_accvgpr_read(v[41], v[7])) + k.emit(v_accvgpr_read(v[42], v[11])) + k.emit(v_accvgpr_read(v[43], v[15])) + k.emit(v_accvgpr_read(v[44], v[19])) + k.emit(v_accvgpr_read(v[45], v[23])) + k.emit(v_accvgpr_read(v[46], v[27])) + k.emit(v_accvgpr_read(v[47], v[31])) + k.emit(v_accvgpr_read(v[48], v[35])) + k.emit(v_accvgpr_read(v[49], v[39])) + k.emit(v_accvgpr_read(v[50], v[43])) + k.emit(v_accvgpr_read(v[51], v[47])) + k.emit(v_accvgpr_read(v[52], v[51])) + k.emit(v_accvgpr_read(v[53], v[55])) + k.emit(v_accvgpr_read(v[54], v[59])) + k.emit(v_accvgpr_read(v[55], v[63])) + k.emit(v_accvgpr_read(v[56], v[67])) + k.emit(v_accvgpr_read(v[57], v[71])) + k.emit(v_accvgpr_read(v[58], v[75])) + k.emit(v_accvgpr_read(v[59], v[79])) + k.emit(v_accvgpr_read(v[60], v[83])) + k.emit(v_accvgpr_read(v[61], v[87])) + k.emit(v_accvgpr_read(v[62], v[91])) + k.emit(v_accvgpr_read(v[63], v[95])) + k.emit(v_accvgpr_read(v[64], v[99])) + k.emit(v_accvgpr_read(v[65], v[103])) + k.emit(v_accvgpr_read(v[66], v[107])) + k.emit(v_accvgpr_read(v[67], v[111])) + k.emit(v_accvgpr_read(v[68], v[115])) + k.emit(v_accvgpr_read(v[69], v[119])) + k.emit(v_accvgpr_read(v[70], v[123])) + k.emit(v_accvgpr_read(v[71], v[127])) + k.emit(v_accvgpr_read(v[72], v[131])) + k.emit(v_accvgpr_read(v[73], v[135])) + k.emit(v_accvgpr_read(v[74], v[139])) + k.emit(v_accvgpr_read(v[75], v[143])) + k.emit(v_accvgpr_read(v[76], v[147])) + k.emit(v_accvgpr_read(v[77], v[151])) + k.emit(v_accvgpr_read(v[78], v[155])) + k.emit(v_accvgpr_read(v[79], v[159])) + k.emit(v_accvgpr_read(v[80], v[163])) + k.emit(v_accvgpr_read(v[81], v[167])) + k.emit(v_accvgpr_read(v[82], v[171])) + k.emit(v_accvgpr_read(v[83], v[175])) + k.emit(v_accvgpr_read(v[84], v[179])) + k.emit(v_accvgpr_read(v[85], v[183])) + k.emit(v_accvgpr_read(v[86], v[187])) + k.emit(v_accvgpr_read(v[87], v[191])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_pk_mul_f32(v[40:41], v[96:97], v[40:41])) + k.emit(v_pk_mul_f32(v[42:43], v[98:99], v[42:43])) + k.emit(v_pk_mul_f32(v[44:45], v[100:101], v[44:45])) + k.emit(v_pk_mul_f32(v[46:47], v[102:103], v[46:47])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[40:41])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[42:43])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[44:45])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[46:47])) + k.emit(v_mov_b64_e32(v[40:41], v[22:23])) + k.emit(v_mov_b64_e32(v[42:43], v[24:25])) + k.emit(v_mov_b64_e32(v[44:45], v[26:27])) + k.emit(v_mov_b64_e32(v[46:47], v[28:29])) + k.emit(v_cvt_pk(v[40], v[40], v[41])) + k.emit(v_cvt_pk(v[41], v[42], v[43])) + k.emit(v_cvt_pk(v[42], v[44], v[45])) + k.emit(v_cvt_pk(v[43], v[46], v[47])) + k.emit(buffer_store_dwordx4(v[40:43], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[48:49], v[96:97], v[48:49])) + k.emit(v_pk_mul_f32(v[50:51], v[98:99], v[50:51])) + k.emit(v_pk_mul_f32(v[52:53], v[100:101], v[52:53])) + k.emit(v_pk_mul_f32(v[54:55], v[102:103], v[54:55])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[48:49])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[50:51])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[52:53])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[54:55])) + k.emit(v_mov_b64_e32(v[48:49], v[22:23])) + k.emit(v_mov_b64_e32(v[50:51], v[24:25])) + k.emit(v_mov_b64_e32(v[52:53], v[26:27])) + k.emit(v_mov_b64_e32(v[54:55], v[28:29])) + k.emit(v_cvt_pk(v[48], v[48], v[49])) + k.emit(v_cvt_pk(v[49], v[50], v[51])) + k.emit(v_cvt_pk(v[50], v[52], v[53])) + k.emit(v_cvt_pk(v[51], v[54], v[55])) + k.emit(buffer_store_dwordx4(v[48:51], v[37], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[56:57], v[96:97], v[56:57])) + k.emit(v_pk_mul_f32(v[58:59], v[98:99], v[58:59])) + k.emit(v_pk_mul_f32(v[60:61], v[100:101], v[60:61])) + k.emit(v_pk_mul_f32(v[62:63], v[102:103], v[62:63])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[56:57])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[58:59])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[60:61])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[62:63])) + k.emit(v_mov_b64_e32(v[56:57], v[22:23])) + k.emit(v_mov_b64_e32(v[58:59], v[24:25])) + k.emit(v_mov_b64_e32(v[60:61], v[26:27])) + k.emit(v_mov_b64_e32(v[62:63], v[28:29])) + k.emit(v_cvt_pk(v[56], v[56], v[57])) + k.emit(v_cvt_pk(v[57], v[58], v[59])) + k.emit(v_cvt_pk(v[58], v[60], v[61])) + k.emit(v_cvt_pk(v[59], v[62], v[63])) + k.emit(buffer_store_dwordx4(v[56:59], v[39], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[64:65], v[96:97], v[64:65])) + k.emit(v_pk_mul_f32(v[66:67], v[98:99], v[66:67])) + k.emit(v_pk_mul_f32(v[68:69], v[100:101], v[68:69])) + k.emit(v_pk_mul_f32(v[70:71], v[102:103], v[70:71])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[64:65])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[66:67])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[68:69])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[70:71])) + k.emit(v_mov_b64_e32(v[64:65], v[22:23])) + k.emit(v_mov_b64_e32(v[66:67], v[24:25])) + k.emit(v_mov_b64_e32(v[68:69], v[26:27])) + k.emit(v_mov_b64_e32(v[70:71], v[28:29])) + k.emit(v_cvt_pk(v[64], v[64], v[65])) + k.emit(v_cvt_pk(v[65], v[66], v[67])) + k.emit(v_cvt_pk(v[66], v[68], v[69])) + k.emit(v_cvt_pk(v[67], v[70], v[71])) + k.emit(buffer_store_dwordx4(v[64:67], v[105], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[72:73], v[96:97], v[72:73])) + k.emit(v_pk_mul_f32(v[74:75], v[98:99], v[74:75])) + k.emit(v_pk_mul_f32(v[76:77], v[100:101], v[76:77])) + k.emit(v_pk_mul_f32(v[78:79], v[102:103], v[78:79])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[72:73])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[74:75])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[76:77])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[78:79])) + k.emit(v_mov_b64_e32(v[72:73], v[22:23])) + k.emit(v_mov_b64_e32(v[74:75], v[24:25])) + k.emit(v_mov_b64_e32(v[76:77], v[26:27])) + k.emit(v_mov_b64_e32(v[78:79], v[28:29])) + k.emit(v_cvt_pk(v[72], v[72], v[73])) + k.emit(v_cvt_pk(v[73], v[74], v[75])) + k.emit(v_cvt_pk(v[74], v[76], v[77])) + k.emit(v_cvt_pk(v[75], v[78], v[79])) + k.emit(buffer_store_dwordx4(v[72:75], v[107], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[80:81], v[96:97], v[80:81])) + k.emit(v_pk_mul_f32(v[82:83], v[98:99], v[82:83])) + k.emit(v_pk_mul_f32(v[84:85], v[100:101], v[84:85])) + k.emit(v_pk_mul_f32(v[86:87], v[102:103], v[86:87])) + k.emit(v_pk_add_f32(v[22:23], v[88:89], v[80:81])) + k.emit(v_pk_add_f32(v[24:25], v[90:91], v[82:83])) + k.emit(v_pk_add_f32(v[26:27], v[92:93], v[84:85])) + k.emit(v_pk_add_f32(v[28:29], v[94:95], v[86:87])) + k.emit(v_mov_b64_e32(v[80:81], v[22:23])) + k.emit(v_mov_b64_e32(v[82:83], v[24:25])) + k.emit(v_mov_b64_e32(v[84:85], v[26:27])) + k.emit(v_mov_b64_e32(v[86:87], v[28:29])) + k.emit(v_cvt_pk(v[80], v[80], v[81])) + k.emit(v_cvt_pk(v[81], v[82], v[83])) + k.emit(v_cvt_pk(v[82], v[84], v[85])) + k.emit(v_cvt_pk(v[83], v[86], v[87])) + k.emit(buffer_store_dwordx4(v[80:83], v[109], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[36], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[36], 2, v[36])) + k.emit(ds_read_b128(v[56:59], v[36])) + k.emit(ds_read_b128(v[60:63], v[36], v[0], v[0], 0, 16)) + k.emit(ds_read_b128(v[64:67], v[36], v[0], v[0], 0, 0, 4)) + k.emit(ds_read_b128(v[68:71], v[36], v[0], v[0], 0, 16, 4)) + k.emit(v_add_lshl_u32_e64(v[35], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[35], v[30], v[35], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[38], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[38], 2, v[38])) + k.emit(v_add_lshl_u32_e64(v[37], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[37], v[30], v[37], s[82:83])) + k.emit(v_accvgpr_read(v[40], v[195])) + k.emit(v_accvgpr_read(v[41], v[199])) + k.emit(v_accvgpr_read(v[42], v[203])) + k.emit(v_accvgpr_read(v[43], v[207])) + k.emit(v_accvgpr_read(v[44], v[211])) + k.emit(v_accvgpr_read(v[45], v[215])) + k.emit(v_accvgpr_read(v[46], v[219])) + k.emit(v_accvgpr_read(v[47], v[223])) + k.emit(v_accvgpr_read(v[48], v[227])) + k.emit(v_accvgpr_read(v[49], v[231])) + k.emit(v_accvgpr_read(v[50], v[235])) + k.emit(v_accvgpr_read(v[51], v[239])) + k.emit(v_accvgpr_read(v[52], v[243])) + k.emit(v_accvgpr_read(v[53], v[247])) + k.emit(v_accvgpr_read(v[54], v[251])) + k.emit(v_accvgpr_read(v[55], v[255])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_pk_mul_f32(v[40:41], v[64:65], v[40:41])) + k.emit(v_pk_mul_f32(v[42:43], v[66:67], v[42:43])) + k.emit(v_pk_mul_f32(v[44:45], v[68:69], v[44:45])) + k.emit(v_pk_mul_f32(v[46:47], v[70:71], v[46:47])) + k.emit(v_pk_add_f32(v[22:23], v[56:57], v[40:41])) + k.emit(v_pk_add_f32(v[24:25], v[58:59], v[42:43])) + k.emit(v_pk_add_f32(v[26:27], v[60:61], v[44:45])) + k.emit(v_pk_add_f32(v[28:29], v[62:63], v[46:47])) + k.emit(v_mov_b64_e32(v[40:41], v[22:23])) + k.emit(v_mov_b64_e32(v[42:43], v[24:25])) + k.emit(v_mov_b64_e32(v[44:45], v[26:27])) + k.emit(v_mov_b64_e32(v[46:47], v[28:29])) + k.emit(v_cvt_pk(v[40], v[40], v[41])) + k.emit(v_cvt_pk(v[41], v[42], v[43])) + k.emit(v_cvt_pk(v[42], v[44], v[45])) + k.emit(v_cvt_pk(v[43], v[46], v[47])) + k.emit(buffer_store_dwordx4(v[40:43], v[35], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_pk_mul_f32(v[48:49], v[64:65], v[48:49])) + k.emit(v_pk_mul_f32(v[50:51], v[66:67], v[50:51])) + k.emit(v_pk_mul_f32(v[52:53], v[68:69], v[52:53])) + k.emit(v_pk_mul_f32(v[54:55], v[70:71], v[54:55])) + k.emit(v_pk_add_f32(v[22:23], v[56:57], v[48:49])) + k.emit(v_pk_add_f32(v[24:25], v[58:59], v[50:51])) + k.emit(v_pk_add_f32(v[26:27], v[60:61], v[52:53])) + k.emit(v_pk_add_f32(v[28:29], v[62:63], v[54:55])) + k.emit(v_mov_b64_e32(v[48:49], v[22:23])) + k.emit(v_mov_b64_e32(v[50:51], v[24:25])) + k.emit(v_mov_b64_e32(v[52:53], v[26:27])) + k.emit(v_mov_b64_e32(v[54:55], v[28:29])) + k.emit(v_cvt_pk(v[48], v[48], v[49])) + k.emit(v_cvt_pk(v[49], v[50], v[51])) + k.emit(v_cvt_pk(v[50], v[52], v[53])) + k.emit(v_cvt_pk(v[51], v[54], v[55])) + k.emit(buffer_store_dwordx4(v[48:51], v[37], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(s_branch(), target='GW_End_1') + k.label('GW_B0_E1_M_1') + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[78], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[78], 2, v[78])) + k.waitcnt(lgkm=0) + k.emit(s_barrier()) + k.emit(ds_read_b32(v[75], v[78])) + k.emit(ds_read_b32(v[76], v[78], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[77], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[77], v[30], v[77], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[82], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[82], 2, v[82])) + k.emit(ds_read_b32(v[79], v[82])) + k.emit(ds_read_b32(v[80], v[82], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[81], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[81], v[30], v[81], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[86], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[86], 2, v[86])) + k.emit(ds_read_b32(v[83], v[86])) + k.emit(ds_read_b32(v[84], v[86], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[85], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[85], v[30], v[85], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[90], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[90], 2, v[90])) + k.emit(ds_read_b32(v[87], v[90])) + k.emit(ds_read_b32(v[88], v[90], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[89], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[89], v[30], v[89], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[94], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[94], 2, v[94])) + k.emit(ds_read_b32(v[91], v[94])) + k.emit(ds_read_b32(v[92], v[94], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[93], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[93], v[30], v[93], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[98], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[98], 2, v[98])) + k.emit(ds_read_b32(v[95], v[98])) + k.emit(ds_read_b32(v[96], v[98], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[97], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[97], v[30], v[97], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[102], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[102], 2, v[102])) + k.emit(ds_read_b32(v[99], v[102])) + k.emit(ds_read_b32(v[100], v[102], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[101], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[101], v[30], v[101], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[106], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[106], 2, v[106])) + k.emit(ds_read_b32(v[103], v[106])) + k.emit(ds_read_b32(v[104], v[106], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[105], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[105], v[30], v[105], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[108], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[108], 2, v[108])) + k.emit(v_add_lshl_u32_e64(v[107], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[107], v[30], v[107], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[110], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[110], 2, v[110])) + k.emit(v_add_lshl_u32_e64(v[109], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[109], v[30], v[109], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[112], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[112], 2, v[112])) + k.emit(v_add_lshl_u32_e64(v[111], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[111], v[30], v[111], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[114], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[114], 2, v[114])) + k.emit(v_add_lshl_u32_e64(v[113], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[113], v[30], v[113], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[116], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[116], 2, v[116])) + k.emit(v_add_lshl_u32_e64(v[115], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[115], v[30], v[115], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[118], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[118], 2, v[118])) + k.emit(v_add_lshl_u32_e64(v[117], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[117], v[30], v[117], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[120], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[120], 2, v[120])) + k.emit(v_add_lshl_u32_e64(v[119], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[119], v[30], v[119], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[122], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[122], 2, v[122])) + k.emit(v_add_lshl_u32_e64(v[121], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[121], v[30], v[121], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[124], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[124], 2, v[124])) + k.emit(v_add_lshl_u32_e64(v[123], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[123], v[30], v[123], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[126], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[126], 2, v[126])) + k.emit(v_add_lshl_u32_e64(v[125], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[125], v[30], v[125], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[128], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[128], 2, v[128])) + k.emit(v_add_lshl_u32_e64(v[127], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[127], v[30], v[127], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[130], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[130], 2, v[130])) + k.emit(v_add_lshl_u32_e64(v[129], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[129], v[30], v[129], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[132], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[132], 2, v[132])) + k.emit(v_add_lshl_u32_e64(v[131], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[131], v[30], v[131], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[134], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[134], 2, v[134])) + k.emit(v_add_lshl_u32_e64(v[133], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[133], v[30], v[133], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[136], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[136], 2, v[136])) + k.emit(v_add_lshl_u32_e64(v[135], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[135], v[30], v[135], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[138], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[138], 2, v[138])) + k.emit(v_add_lshl_u32_e64(v[137], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[137], v[30], v[137], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[140], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[140], 2, v[140])) + k.emit(v_add_lshl_u32_e64(v[139], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[139], v[30], v[139], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[142], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[142], 2, v[142])) + k.emit(v_add_lshl_u32_e64(v[141], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[141], v[30], v[141], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[144], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[144], 2, v[144])) + k.emit(v_add_lshl_u32_e64(v[143], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[143], v[30], v[143], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[146], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[146], 2, v[146])) + k.emit(v_add_lshl_u32_e64(v[145], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[145], v[30], v[145], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[148], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[148], 2, v[148])) + k.emit(v_add_lshl_u32_e64(v[147], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[147], v[30], v[147], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[150], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[150], 2, v[150])) + k.emit(v_add_lshl_u32_e64(v[149], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[149], v[30], v[149], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[152], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[152], 2, v[152])) + k.emit(v_add_lshl_u32_e64(v[151], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[151], v[30], v[151], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[154], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[154], 2, v[154])) + k.emit(v_add_lshl_u32_e64(v[153], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[153], v[30], v[153], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[156], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[156], 2, v[156])) + k.emit(v_add_lshl_u32_e64(v[155], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[155], v[30], v[155], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[158], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[158], 2, v[158])) + k.emit(v_add_lshl_u32_e64(v[157], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[157], v[30], v[157], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[160], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[160], 2, v[160])) + k.emit(v_add_lshl_u32_e64(v[159], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[159], v[30], v[159], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[162], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[162], 2, v[162])) + k.emit(v_add_lshl_u32_e64(v[161], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[161], v[30], v[161], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[164], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[164], 2, v[164])) + k.emit(v_add_lshl_u32_e64(v[163], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[163], v[30], v[163], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[166], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[166], 2, v[166])) + k.emit(v_add_lshl_u32_e64(v[165], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[165], v[30], v[165], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[168], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[168], 2, v[168])) + k.emit(v_add_lshl_u32_e64(v[167], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[167], v[30], v[167], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[170], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[170], 2, v[170])) + k.emit(v_add_lshl_u32_e64(v[169], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[169], v[30], v[169], s[82:83])) + k.emit(v_accvgpr_read(v[35], v[0])) + k.emit(v_accvgpr_read(v[36], v[4])) + k.emit(v_accvgpr_read(v[37], v[8])) + k.emit(v_accvgpr_read(v[38], v[12])) + k.emit(v_accvgpr_read(v[39], v[16])) + k.emit(v_accvgpr_read(v[40], v[20])) + k.emit(v_accvgpr_read(v[41], v[24])) + k.emit(v_accvgpr_read(v[42], v[28])) + k.emit(v_accvgpr_read(v[43], v[32])) + k.emit(v_accvgpr_read(v[44], v[36])) + k.emit(v_accvgpr_read(v[45], v[40])) + k.emit(v_accvgpr_read(v[46], v[44])) + k.emit(v_accvgpr_read(v[47], v[48])) + k.emit(v_accvgpr_read(v[48], v[52])) + k.emit(v_accvgpr_read(v[49], v[56])) + k.emit(v_accvgpr_read(v[50], v[60])) + k.emit(v_accvgpr_read(v[51], v[64])) + k.emit(v_accvgpr_read(v[52], v[68])) + k.emit(v_accvgpr_read(v[53], v[72])) + k.emit(v_accvgpr_read(v[54], v[76])) + k.emit(v_accvgpr_read(v[55], v[80])) + k.emit(v_accvgpr_read(v[56], v[84])) + k.emit(v_accvgpr_read(v[57], v[88])) + k.emit(v_accvgpr_read(v[58], v[92])) + k.emit(v_accvgpr_read(v[59], v[96])) + k.emit(v_accvgpr_read(v[60], v[100])) + k.emit(v_accvgpr_read(v[61], v[104])) + k.emit(v_accvgpr_read(v[62], v[108])) + k.emit(v_accvgpr_read(v[63], v[112])) + k.emit(v_accvgpr_read(v[64], v[116])) + k.emit(v_accvgpr_read(v[65], v[120])) + k.emit(v_accvgpr_read(v[66], v[124])) + k.emit(v_accvgpr_read(v[67], v[128])) + k.emit(v_accvgpr_read(v[68], v[132])) + k.emit(v_accvgpr_read(v[69], v[136])) + k.emit(v_accvgpr_read(v[70], v[140])) + k.emit(v_accvgpr_read(v[71], v[144])) + k.emit(v_accvgpr_read(v[72], v[148])) + k.emit(v_accvgpr_read(v[73], v[152])) + k.emit(v_accvgpr_read(v[74], v[156])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_mul_f32_e32(v[35], v[76], v[35])) + k.emit(v_add_f32_e32(v[22], v[75], v[35])) + k.emit(v_mov_b32_e32(v[35], v[22])) + k.emit(v_cvt_pk(v[35], v[35], v[35])) + k.emit(buffer_store_short(v[35], v[77], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[36], v[80], v[36])) + k.emit(v_add_f32_e32(v[22], v[79], v[36])) + k.emit(v_mov_b32_e32(v[36], v[22])) + k.emit(v_cvt_pk(v[36], v[36], v[36])) + k.emit(buffer_store_short(v[36], v[81], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[37], v[84], v[37])) + k.emit(v_add_f32_e32(v[22], v[83], v[37])) + k.emit(v_mov_b32_e32(v[37], v[22])) + k.emit(v_cvt_pk(v[37], v[37], v[37])) + k.emit(buffer_store_short(v[37], v[85], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[38], v[88], v[38])) + k.emit(v_add_f32_e32(v[22], v[87], v[38])) + k.emit(v_mov_b32_e32(v[38], v[22])) + k.emit(v_cvt_pk(v[38], v[38], v[38])) + k.emit(buffer_store_short(v[38], v[89], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[39], v[92], v[39])) + k.emit(v_add_f32_e32(v[22], v[91], v[39])) + k.emit(v_mov_b32_e32(v[39], v[22])) + k.emit(v_cvt_pk(v[39], v[39], v[39])) + k.emit(buffer_store_short(v[39], v[93], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[40], v[96], v[40])) + k.emit(v_add_f32_e32(v[22], v[95], v[40])) + k.emit(v_mov_b32_e32(v[40], v[22])) + k.emit(v_cvt_pk(v[40], v[40], v[40])) + k.emit(buffer_store_short(v[40], v[97], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[41], v[100], v[41])) + k.emit(v_add_f32_e32(v[22], v[99], v[41])) + k.emit(v_mov_b32_e32(v[41], v[22])) + k.emit(v_cvt_pk(v[41], v[41], v[41])) + k.emit(buffer_store_short(v[41], v[101], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[42], v[104], v[42])) + k.emit(v_add_f32_e32(v[22], v[103], v[42])) + k.emit(v_mov_b32_e32(v[42], v[22])) + k.emit(v_cvt_pk(v[42], v[42], v[42])) + k.emit(buffer_store_short(v[42], v[105], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[43], v[76], v[43])) + k.emit(v_add_f32_e32(v[22], v[75], v[43])) + k.emit(v_mov_b32_e32(v[43], v[22])) + k.emit(v_cvt_pk(v[43], v[43], v[43])) + k.emit(buffer_store_short(v[43], v[107], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[44], v[80], v[44])) + k.emit(v_add_f32_e32(v[22], v[79], v[44])) + k.emit(v_mov_b32_e32(v[44], v[22])) + k.emit(v_cvt_pk(v[44], v[44], v[44])) + k.emit(buffer_store_short(v[44], v[109], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[45], v[84], v[45])) + k.emit(v_add_f32_e32(v[22], v[83], v[45])) + k.emit(v_mov_b32_e32(v[45], v[22])) + k.emit(v_cvt_pk(v[45], v[45], v[45])) + k.emit(buffer_store_short(v[45], v[111], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[46], v[88], v[46])) + k.emit(v_add_f32_e32(v[22], v[87], v[46])) + k.emit(v_mov_b32_e32(v[46], v[22])) + k.emit(v_cvt_pk(v[46], v[46], v[46])) + k.emit(buffer_store_short(v[46], v[113], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[47], v[92], v[47])) + k.emit(v_add_f32_e32(v[22], v[91], v[47])) + k.emit(v_mov_b32_e32(v[47], v[22])) + k.emit(v_cvt_pk(v[47], v[47], v[47])) + k.emit(buffer_store_short(v[47], v[115], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[48], v[96], v[48])) + k.emit(v_add_f32_e32(v[22], v[95], v[48])) + k.emit(v_mov_b32_e32(v[48], v[22])) + k.emit(v_cvt_pk(v[48], v[48], v[48])) + k.emit(buffer_store_short(v[48], v[117], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[49], v[100], v[49])) + k.emit(v_add_f32_e32(v[22], v[99], v[49])) + k.emit(v_mov_b32_e32(v[49], v[22])) + k.emit(v_cvt_pk(v[49], v[49], v[49])) + k.emit(buffer_store_short(v[49], v[119], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[50], v[104], v[50])) + k.emit(v_add_f32_e32(v[22], v[103], v[50])) + k.emit(v_mov_b32_e32(v[50], v[22])) + k.emit(v_cvt_pk(v[50], v[50], v[50])) + k.emit(buffer_store_short(v[50], v[121], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[51], v[76], v[51])) + k.emit(v_add_f32_e32(v[22], v[75], v[51])) + k.emit(v_mov_b32_e32(v[51], v[22])) + k.emit(v_cvt_pk(v[51], v[51], v[51])) + k.emit(buffer_store_short(v[51], v[123], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[52], v[80], v[52])) + k.emit(v_add_f32_e32(v[22], v[79], v[52])) + k.emit(v_mov_b32_e32(v[52], v[22])) + k.emit(v_cvt_pk(v[52], v[52], v[52])) + k.emit(buffer_store_short(v[52], v[125], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[53], v[84], v[53])) + k.emit(v_add_f32_e32(v[22], v[83], v[53])) + k.emit(v_mov_b32_e32(v[53], v[22])) + k.emit(v_cvt_pk(v[53], v[53], v[53])) + k.emit(buffer_store_short(v[53], v[127], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[54], v[88], v[54])) + k.emit(v_add_f32_e32(v[22], v[87], v[54])) + k.emit(v_mov_b32_e32(v[54], v[22])) + k.emit(v_cvt_pk(v[54], v[54], v[54])) + k.emit(buffer_store_short(v[54], v[129], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[55], v[92], v[55])) + k.emit(v_add_f32_e32(v[22], v[91], v[55])) + k.emit(v_mov_b32_e32(v[55], v[22])) + k.emit(v_cvt_pk(v[55], v[55], v[55])) + k.emit(buffer_store_short(v[55], v[131], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[56], v[96], v[56])) + k.emit(v_add_f32_e32(v[22], v[95], v[56])) + k.emit(v_mov_b32_e32(v[56], v[22])) + k.emit(v_cvt_pk(v[56], v[56], v[56])) + k.emit(buffer_store_short(v[56], v[133], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[57], v[100], v[57])) + k.emit(v_add_f32_e32(v[22], v[99], v[57])) + k.emit(v_mov_b32_e32(v[57], v[22])) + k.emit(v_cvt_pk(v[57], v[57], v[57])) + k.emit(buffer_store_short(v[57], v[135], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[58], v[104], v[58])) + k.emit(v_add_f32_e32(v[22], v[103], v[58])) + k.emit(v_mov_b32_e32(v[58], v[22])) + k.emit(v_cvt_pk(v[58], v[58], v[58])) + k.emit(buffer_store_short(v[58], v[137], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[59], v[76], v[59])) + k.emit(v_add_f32_e32(v[22], v[75], v[59])) + k.emit(v_mov_b32_e32(v[59], v[22])) + k.emit(v_cvt_pk(v[59], v[59], v[59])) + k.emit(buffer_store_short(v[59], v[139], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[60], v[80], v[60])) + k.emit(v_add_f32_e32(v[22], v[79], v[60])) + k.emit(v_mov_b32_e32(v[60], v[22])) + k.emit(v_cvt_pk(v[60], v[60], v[60])) + k.emit(buffer_store_short(v[60], v[141], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[61], v[84], v[61])) + k.emit(v_add_f32_e32(v[22], v[83], v[61])) + k.emit(v_mov_b32_e32(v[61], v[22])) + k.emit(v_cvt_pk(v[61], v[61], v[61])) + k.emit(buffer_store_short(v[61], v[143], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[62], v[88], v[62])) + k.emit(v_add_f32_e32(v[22], v[87], v[62])) + k.emit(v_mov_b32_e32(v[62], v[22])) + k.emit(v_cvt_pk(v[62], v[62], v[62])) + k.emit(buffer_store_short(v[62], v[145], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[63], v[92], v[63])) + k.emit(v_add_f32_e32(v[22], v[91], v[63])) + k.emit(v_mov_b32_e32(v[63], v[22])) + k.emit(v_cvt_pk(v[63], v[63], v[63])) + k.emit(buffer_store_short(v[63], v[147], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[64], v[96], v[64])) + k.emit(v_add_f32_e32(v[22], v[95], v[64])) + k.emit(v_mov_b32_e32(v[64], v[22])) + k.emit(v_cvt_pk(v[64], v[64], v[64])) + k.emit(buffer_store_short(v[64], v[149], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[65], v[100], v[65])) + k.emit(v_add_f32_e32(v[22], v[99], v[65])) + k.emit(v_mov_b32_e32(v[65], v[22])) + k.emit(v_cvt_pk(v[65], v[65], v[65])) + k.emit(buffer_store_short(v[65], v[151], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[66], v[104], v[66])) + k.emit(v_add_f32_e32(v[22], v[103], v[66])) + k.emit(v_mov_b32_e32(v[66], v[22])) + k.emit(v_cvt_pk(v[66], v[66], v[66])) + k.emit(buffer_store_short(v[66], v[153], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[67], v[76], v[67])) + k.emit(v_add_f32_e32(v[22], v[75], v[67])) + k.emit(v_mov_b32_e32(v[67], v[22])) + k.emit(v_cvt_pk(v[67], v[67], v[67])) + k.emit(buffer_store_short(v[67], v[155], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[68], v[80], v[68])) + k.emit(v_add_f32_e32(v[22], v[79], v[68])) + k.emit(v_mov_b32_e32(v[68], v[22])) + k.emit(v_cvt_pk(v[68], v[68], v[68])) + k.emit(buffer_store_short(v[68], v[157], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[69], v[84], v[69])) + k.emit(v_add_f32_e32(v[22], v[83], v[69])) + k.emit(v_mov_b32_e32(v[69], v[22])) + k.emit(v_cvt_pk(v[69], v[69], v[69])) + k.emit(buffer_store_short(v[69], v[159], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[70], v[88], v[70])) + k.emit(v_add_f32_e32(v[22], v[87], v[70])) + k.emit(v_mov_b32_e32(v[70], v[22])) + k.emit(v_cvt_pk(v[70], v[70], v[70])) + k.emit(buffer_store_short(v[70], v[161], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[71], v[92], v[71])) + k.emit(v_add_f32_e32(v[22], v[91], v[71])) + k.emit(v_mov_b32_e32(v[71], v[22])) + k.emit(v_cvt_pk(v[71], v[71], v[71])) + k.emit(buffer_store_short(v[71], v[163], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[72], v[96], v[72])) + k.emit(v_add_f32_e32(v[22], v[95], v[72])) + k.emit(v_mov_b32_e32(v[72], v[22])) + k.emit(v_cvt_pk(v[72], v[72], v[72])) + k.emit(buffer_store_short(v[72], v[165], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[73], v[100], v[73])) + k.emit(v_add_f32_e32(v[22], v[99], v[73])) + k.emit(v_mov_b32_e32(v[73], v[22])) + k.emit(v_cvt_pk(v[73], v[73], v[73])) + k.emit(buffer_store_short(v[73], v[167], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[74], v[104], v[74])) + k.emit(v_add_f32_e32(v[22], v[103], v[74])) + k.emit(v_mov_b32_e32(v[74], v[22])) + k.emit(v_cvt_pk(v[74], v[74], v[74])) + k.emit(buffer_store_short(v[74], v[169], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[78], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[78], 2, v[78])) + k.emit(ds_read_b32(v[75], v[78])) + k.emit(ds_read_b32(v[76], v[78], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[77], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[77], v[30], v[77], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[82], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[82], 2, v[82])) + k.emit(ds_read_b32(v[79], v[82])) + k.emit(ds_read_b32(v[80], v[82], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[81], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[81], v[30], v[81], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[86], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[86], 2, v[86])) + k.emit(ds_read_b32(v[83], v[86])) + k.emit(ds_read_b32(v[84], v[86], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[85], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[85], v[30], v[85], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[90], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[90], 2, v[90])) + k.emit(ds_read_b32(v[87], v[90])) + k.emit(ds_read_b32(v[88], v[90], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[89], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[89], v[30], v[89], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[94], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[94], 2, v[94])) + k.emit(ds_read_b32(v[91], v[94])) + k.emit(ds_read_b32(v[92], v[94], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[93], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[93], v[30], v[93], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[98], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[98], 2, v[98])) + k.emit(ds_read_b32(v[95], v[98])) + k.emit(ds_read_b32(v[96], v[98], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[97], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[97], v[30], v[97], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[102], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[102], 2, v[102])) + k.emit(ds_read_b32(v[99], v[102])) + k.emit(ds_read_b32(v[100], v[102], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[101], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[101], v[30], v[101], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[106], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[106], 2, v[106])) + k.emit(ds_read_b32(v[103], v[106])) + k.emit(ds_read_b32(v[104], v[106], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[105], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[105], v[30], v[105], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[108], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[108], 2, v[108])) + k.emit(v_add_lshl_u32_e64(v[107], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[107], v[30], v[107], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[110], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[110], 2, v[110])) + k.emit(v_add_lshl_u32_e64(v[109], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[109], v[30], v[109], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[112], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[112], 2, v[112])) + k.emit(v_add_lshl_u32_e64(v[111], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[111], v[30], v[111], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[114], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[114], 2, v[114])) + k.emit(v_add_lshl_u32_e64(v[113], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[113], v[30], v[113], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[116], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[116], 2, v[116])) + k.emit(v_add_lshl_u32_e64(v[115], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[115], v[30], v[115], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[118], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[118], 2, v[118])) + k.emit(v_add_lshl_u32_e64(v[117], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[117], v[30], v[117], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[120], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[120], 2, v[120])) + k.emit(v_add_lshl_u32_e64(v[119], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[119], v[30], v[119], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[122], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[122], 2, v[122])) + k.emit(v_add_lshl_u32_e64(v[121], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[121], v[30], v[121], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[124], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[124], 2, v[124])) + k.emit(v_add_lshl_u32_e64(v[123], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[123], v[30], v[123], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[126], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[126], 2, v[126])) + k.emit(v_add_lshl_u32_e64(v[125], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[125], v[30], v[125], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[128], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[128], 2, v[128])) + k.emit(v_add_lshl_u32_e64(v[127], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[127], v[30], v[127], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[130], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[130], 2, v[130])) + k.emit(v_add_lshl_u32_e64(v[129], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[129], v[30], v[129], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[132], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[132], 2, v[132])) + k.emit(v_add_lshl_u32_e64(v[131], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[131], v[30], v[131], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[134], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[134], 2, v[134])) + k.emit(v_add_lshl_u32_e64(v[133], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[133], v[30], v[133], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[136], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[136], 2, v[136])) + k.emit(v_add_lshl_u32_e64(v[135], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[135], v[30], v[135], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[138], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[138], 2, v[138])) + k.emit(v_add_lshl_u32_e64(v[137], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[137], v[30], v[137], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[140], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[140], 2, v[140])) + k.emit(v_add_lshl_u32_e64(v[139], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[139], v[30], v[139], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[142], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[142], 2, v[142])) + k.emit(v_add_lshl_u32_e64(v[141], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[141], v[30], v[141], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[144], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[144], 2, v[144])) + k.emit(v_add_lshl_u32_e64(v[143], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[143], v[30], v[143], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[146], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[146], 2, v[146])) + k.emit(v_add_lshl_u32_e64(v[145], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[145], v[30], v[145], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[148], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[148], 2, v[148])) + k.emit(v_add_lshl_u32_e64(v[147], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[147], v[30], v[147], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[150], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[150], 2, v[150])) + k.emit(v_add_lshl_u32_e64(v[149], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[149], v[30], v[149], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[152], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[152], 2, v[152])) + k.emit(v_add_lshl_u32_e64(v[151], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[151], v[30], v[151], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[154], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[154], 2, v[154])) + k.emit(v_add_lshl_u32_e64(v[153], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[153], v[30], v[153], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[156], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[156], 2, v[156])) + k.emit(v_add_lshl_u32_e64(v[155], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[155], v[30], v[155], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[158], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[158], 2, v[158])) + k.emit(v_add_lshl_u32_e64(v[157], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[157], v[30], v[157], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[160], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[160], 2, v[160])) + k.emit(v_add_lshl_u32_e64(v[159], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[159], v[30], v[159], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[162], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[162], 2, v[162])) + k.emit(v_add_lshl_u32_e64(v[161], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[161], v[30], v[161], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[164], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[164], 2, v[164])) + k.emit(v_add_lshl_u32_e64(v[163], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[163], v[30], v[163], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[166], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[166], 2, v[166])) + k.emit(v_add_lshl_u32_e64(v[165], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[165], v[30], v[165], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[168], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[168], 2, v[168])) + k.emit(v_add_lshl_u32_e64(v[167], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[167], v[30], v[167], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[170], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[170], 2, v[170])) + k.emit(v_add_lshl_u32_e64(v[169], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[169], v[30], v[169], s[82:83])) + k.emit(v_accvgpr_read(v[35], v[160])) + k.emit(v_accvgpr_read(v[36], v[164])) + k.emit(v_accvgpr_read(v[37], v[168])) + k.emit(v_accvgpr_read(v[38], v[172])) + k.emit(v_accvgpr_read(v[39], v[176])) + k.emit(v_accvgpr_read(v[40], v[180])) + k.emit(v_accvgpr_read(v[41], v[184])) + k.emit(v_accvgpr_read(v[42], v[188])) + k.emit(v_accvgpr_read(v[43], v[192])) + k.emit(v_accvgpr_read(v[44], v[196])) + k.emit(v_accvgpr_read(v[45], v[200])) + k.emit(v_accvgpr_read(v[46], v[204])) + k.emit(v_accvgpr_read(v[47], v[208])) + k.emit(v_accvgpr_read(v[48], v[212])) + k.emit(v_accvgpr_read(v[49], v[216])) + k.emit(v_accvgpr_read(v[50], v[220])) + k.emit(v_accvgpr_read(v[51], v[224])) + k.emit(v_accvgpr_read(v[52], v[228])) + k.emit(v_accvgpr_read(v[53], v[232])) + k.emit(v_accvgpr_read(v[54], v[236])) + k.emit(v_accvgpr_read(v[55], v[240])) + k.emit(v_accvgpr_read(v[56], v[244])) + k.emit(v_accvgpr_read(v[57], v[248])) + k.emit(v_accvgpr_read(v[58], v[252])) + k.emit(v_accvgpr_read(v[59], v[1])) + k.emit(v_accvgpr_read(v[60], v[5])) + k.emit(v_accvgpr_read(v[61], v[9])) + k.emit(v_accvgpr_read(v[62], v[13])) + k.emit(v_accvgpr_read(v[63], v[17])) + k.emit(v_accvgpr_read(v[64], v[21])) + k.emit(v_accvgpr_read(v[65], v[25])) + k.emit(v_accvgpr_read(v[66], v[29])) + k.emit(v_accvgpr_read(v[67], v[33])) + k.emit(v_accvgpr_read(v[68], v[37])) + k.emit(v_accvgpr_read(v[69], v[41])) + k.emit(v_accvgpr_read(v[70], v[45])) + k.emit(v_accvgpr_read(v[71], v[49])) + k.emit(v_accvgpr_read(v[72], v[53])) + k.emit(v_accvgpr_read(v[73], v[57])) + k.emit(v_accvgpr_read(v[74], v[61])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_mul_f32_e32(v[35], v[76], v[35])) + k.emit(v_add_f32_e32(v[22], v[75], v[35])) + k.emit(v_mov_b32_e32(v[35], v[22])) + k.emit(v_cvt_pk(v[35], v[35], v[35])) + k.emit(buffer_store_short(v[35], v[77], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[36], v[80], v[36])) + k.emit(v_add_f32_e32(v[22], v[79], v[36])) + k.emit(v_mov_b32_e32(v[36], v[22])) + k.emit(v_cvt_pk(v[36], v[36], v[36])) + k.emit(buffer_store_short(v[36], v[81], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[37], v[84], v[37])) + k.emit(v_add_f32_e32(v[22], v[83], v[37])) + k.emit(v_mov_b32_e32(v[37], v[22])) + k.emit(v_cvt_pk(v[37], v[37], v[37])) + k.emit(buffer_store_short(v[37], v[85], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[38], v[88], v[38])) + k.emit(v_add_f32_e32(v[22], v[87], v[38])) + k.emit(v_mov_b32_e32(v[38], v[22])) + k.emit(v_cvt_pk(v[38], v[38], v[38])) + k.emit(buffer_store_short(v[38], v[89], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[39], v[92], v[39])) + k.emit(v_add_f32_e32(v[22], v[91], v[39])) + k.emit(v_mov_b32_e32(v[39], v[22])) + k.emit(v_cvt_pk(v[39], v[39], v[39])) + k.emit(buffer_store_short(v[39], v[93], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[40], v[96], v[40])) + k.emit(v_add_f32_e32(v[22], v[95], v[40])) + k.emit(v_mov_b32_e32(v[40], v[22])) + k.emit(v_cvt_pk(v[40], v[40], v[40])) + k.emit(buffer_store_short(v[40], v[97], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[41], v[100], v[41])) + k.emit(v_add_f32_e32(v[22], v[99], v[41])) + k.emit(v_mov_b32_e32(v[41], v[22])) + k.emit(v_cvt_pk(v[41], v[41], v[41])) + k.emit(buffer_store_short(v[41], v[101], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[42], v[104], v[42])) + k.emit(v_add_f32_e32(v[22], v[103], v[42])) + k.emit(v_mov_b32_e32(v[42], v[22])) + k.emit(v_cvt_pk(v[42], v[42], v[42])) + k.emit(buffer_store_short(v[42], v[105], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[43], v[76], v[43])) + k.emit(v_add_f32_e32(v[22], v[75], v[43])) + k.emit(v_mov_b32_e32(v[43], v[22])) + k.emit(v_cvt_pk(v[43], v[43], v[43])) + k.emit(buffer_store_short(v[43], v[107], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[44], v[80], v[44])) + k.emit(v_add_f32_e32(v[22], v[79], v[44])) + k.emit(v_mov_b32_e32(v[44], v[22])) + k.emit(v_cvt_pk(v[44], v[44], v[44])) + k.emit(buffer_store_short(v[44], v[109], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[45], v[84], v[45])) + k.emit(v_add_f32_e32(v[22], v[83], v[45])) + k.emit(v_mov_b32_e32(v[45], v[22])) + k.emit(v_cvt_pk(v[45], v[45], v[45])) + k.emit(buffer_store_short(v[45], v[111], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[46], v[88], v[46])) + k.emit(v_add_f32_e32(v[22], v[87], v[46])) + k.emit(v_mov_b32_e32(v[46], v[22])) + k.emit(v_cvt_pk(v[46], v[46], v[46])) + k.emit(buffer_store_short(v[46], v[113], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[47], v[92], v[47])) + k.emit(v_add_f32_e32(v[22], v[91], v[47])) + k.emit(v_mov_b32_e32(v[47], v[22])) + k.emit(v_cvt_pk(v[47], v[47], v[47])) + k.emit(buffer_store_short(v[47], v[115], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[48], v[96], v[48])) + k.emit(v_add_f32_e32(v[22], v[95], v[48])) + k.emit(v_mov_b32_e32(v[48], v[22])) + k.emit(v_cvt_pk(v[48], v[48], v[48])) + k.emit(buffer_store_short(v[48], v[117], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[49], v[100], v[49])) + k.emit(v_add_f32_e32(v[22], v[99], v[49])) + k.emit(v_mov_b32_e32(v[49], v[22])) + k.emit(v_cvt_pk(v[49], v[49], v[49])) + k.emit(buffer_store_short(v[49], v[119], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[50], v[104], v[50])) + k.emit(v_add_f32_e32(v[22], v[103], v[50])) + k.emit(v_mov_b32_e32(v[50], v[22])) + k.emit(v_cvt_pk(v[50], v[50], v[50])) + k.emit(buffer_store_short(v[50], v[121], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[51], v[76], v[51])) + k.emit(v_add_f32_e32(v[22], v[75], v[51])) + k.emit(v_mov_b32_e32(v[51], v[22])) + k.emit(v_cvt_pk(v[51], v[51], v[51])) + k.emit(buffer_store_short(v[51], v[123], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[52], v[80], v[52])) + k.emit(v_add_f32_e32(v[22], v[79], v[52])) + k.emit(v_mov_b32_e32(v[52], v[22])) + k.emit(v_cvt_pk(v[52], v[52], v[52])) + k.emit(buffer_store_short(v[52], v[125], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[53], v[84], v[53])) + k.emit(v_add_f32_e32(v[22], v[83], v[53])) + k.emit(v_mov_b32_e32(v[53], v[22])) + k.emit(v_cvt_pk(v[53], v[53], v[53])) + k.emit(buffer_store_short(v[53], v[127], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[54], v[88], v[54])) + k.emit(v_add_f32_e32(v[22], v[87], v[54])) + k.emit(v_mov_b32_e32(v[54], v[22])) + k.emit(v_cvt_pk(v[54], v[54], v[54])) + k.emit(buffer_store_short(v[54], v[129], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[55], v[92], v[55])) + k.emit(v_add_f32_e32(v[22], v[91], v[55])) + k.emit(v_mov_b32_e32(v[55], v[22])) + k.emit(v_cvt_pk(v[55], v[55], v[55])) + k.emit(buffer_store_short(v[55], v[131], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[56], v[96], v[56])) + k.emit(v_add_f32_e32(v[22], v[95], v[56])) + k.emit(v_mov_b32_e32(v[56], v[22])) + k.emit(v_cvt_pk(v[56], v[56], v[56])) + k.emit(buffer_store_short(v[56], v[133], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[57], v[100], v[57])) + k.emit(v_add_f32_e32(v[22], v[99], v[57])) + k.emit(v_mov_b32_e32(v[57], v[22])) + k.emit(v_cvt_pk(v[57], v[57], v[57])) + k.emit(buffer_store_short(v[57], v[135], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[58], v[104], v[58])) + k.emit(v_add_f32_e32(v[22], v[103], v[58])) + k.emit(v_mov_b32_e32(v[58], v[22])) + k.emit(v_cvt_pk(v[58], v[58], v[58])) + k.emit(buffer_store_short(v[58], v[137], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[59], v[76], v[59])) + k.emit(v_add_f32_e32(v[22], v[75], v[59])) + k.emit(v_mov_b32_e32(v[59], v[22])) + k.emit(v_cvt_pk(v[59], v[59], v[59])) + k.emit(buffer_store_short(v[59], v[139], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[60], v[80], v[60])) + k.emit(v_add_f32_e32(v[22], v[79], v[60])) + k.emit(v_mov_b32_e32(v[60], v[22])) + k.emit(v_cvt_pk(v[60], v[60], v[60])) + k.emit(buffer_store_short(v[60], v[141], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[61], v[84], v[61])) + k.emit(v_add_f32_e32(v[22], v[83], v[61])) + k.emit(v_mov_b32_e32(v[61], v[22])) + k.emit(v_cvt_pk(v[61], v[61], v[61])) + k.emit(buffer_store_short(v[61], v[143], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[62], v[88], v[62])) + k.emit(v_add_f32_e32(v[22], v[87], v[62])) + k.emit(v_mov_b32_e32(v[62], v[22])) + k.emit(v_cvt_pk(v[62], v[62], v[62])) + k.emit(buffer_store_short(v[62], v[145], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[63], v[92], v[63])) + k.emit(v_add_f32_e32(v[22], v[91], v[63])) + k.emit(v_mov_b32_e32(v[63], v[22])) + k.emit(v_cvt_pk(v[63], v[63], v[63])) + k.emit(buffer_store_short(v[63], v[147], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[64], v[96], v[64])) + k.emit(v_add_f32_e32(v[22], v[95], v[64])) + k.emit(v_mov_b32_e32(v[64], v[22])) + k.emit(v_cvt_pk(v[64], v[64], v[64])) + k.emit(buffer_store_short(v[64], v[149], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[65], v[100], v[65])) + k.emit(v_add_f32_e32(v[22], v[99], v[65])) + k.emit(v_mov_b32_e32(v[65], v[22])) + k.emit(v_cvt_pk(v[65], v[65], v[65])) + k.emit(buffer_store_short(v[65], v[151], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[66], v[104], v[66])) + k.emit(v_add_f32_e32(v[22], v[103], v[66])) + k.emit(v_mov_b32_e32(v[66], v[22])) + k.emit(v_cvt_pk(v[66], v[66], v[66])) + k.emit(buffer_store_short(v[66], v[153], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[67], v[76], v[67])) + k.emit(v_add_f32_e32(v[22], v[75], v[67])) + k.emit(v_mov_b32_e32(v[67], v[22])) + k.emit(v_cvt_pk(v[67], v[67], v[67])) + k.emit(buffer_store_short(v[67], v[155], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[68], v[80], v[68])) + k.emit(v_add_f32_e32(v[22], v[79], v[68])) + k.emit(v_mov_b32_e32(v[68], v[22])) + k.emit(v_cvt_pk(v[68], v[68], v[68])) + k.emit(buffer_store_short(v[68], v[157], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[69], v[84], v[69])) + k.emit(v_add_f32_e32(v[22], v[83], v[69])) + k.emit(v_mov_b32_e32(v[69], v[22])) + k.emit(v_cvt_pk(v[69], v[69], v[69])) + k.emit(buffer_store_short(v[69], v[159], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[70], v[88], v[70])) + k.emit(v_add_f32_e32(v[22], v[87], v[70])) + k.emit(v_mov_b32_e32(v[70], v[22])) + k.emit(v_cvt_pk(v[70], v[70], v[70])) + k.emit(buffer_store_short(v[70], v[161], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[71], v[92], v[71])) + k.emit(v_add_f32_e32(v[22], v[91], v[71])) + k.emit(v_mov_b32_e32(v[71], v[22])) + k.emit(v_cvt_pk(v[71], v[71], v[71])) + k.emit(buffer_store_short(v[71], v[163], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[72], v[96], v[72])) + k.emit(v_add_f32_e32(v[22], v[95], v[72])) + k.emit(v_mov_b32_e32(v[72], v[22])) + k.emit(v_cvt_pk(v[72], v[72], v[72])) + k.emit(buffer_store_short(v[72], v[165], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[73], v[100], v[73])) + k.emit(v_add_f32_e32(v[22], v[99], v[73])) + k.emit(v_mov_b32_e32(v[73], v[22])) + k.emit(v_cvt_pk(v[73], v[73], v[73])) + k.emit(buffer_store_short(v[73], v[167], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[74], v[104], v[74])) + k.emit(v_add_f32_e32(v[22], v[103], v[74])) + k.emit(v_mov_b32_e32(v[74], v[22])) + k.emit(v_cvt_pk(v[74], v[74], v[74])) + k.emit(buffer_store_short(v[74], v[169], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[78], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[78], 2, v[78])) + k.emit(ds_read_b32(v[75], v[78])) + k.emit(ds_read_b32(v[76], v[78], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[77], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[77], v[30], v[77], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[82], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[82], 2, v[82])) + k.emit(ds_read_b32(v[79], v[82])) + k.emit(ds_read_b32(v[80], v[82], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[81], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[81], v[30], v[81], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[86], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[86], 2, v[86])) + k.emit(ds_read_b32(v[83], v[86])) + k.emit(ds_read_b32(v[84], v[86], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[85], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[85], v[30], v[85], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[90], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[90], 2, v[90])) + k.emit(ds_read_b32(v[87], v[90])) + k.emit(ds_read_b32(v[88], v[90], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[89], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[89], v[30], v[89], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[94], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[94], 2, v[94])) + k.emit(ds_read_b32(v[91], v[94])) + k.emit(ds_read_b32(v[92], v[94], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[93], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[93], v[30], v[93], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[98], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[98], 2, v[98])) + k.emit(ds_read_b32(v[95], v[98])) + k.emit(ds_read_b32(v[96], v[98], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[97], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[97], v[30], v[97], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[102], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[102], 2, v[102])) + k.emit(ds_read_b32(v[99], v[102])) + k.emit(ds_read_b32(v[100], v[102], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[101], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[101], v[30], v[101], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[106], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[106], 2, v[106])) + k.emit(ds_read_b32(v[103], v[106])) + k.emit(ds_read_b32(v[104], v[106], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[105], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[105], v[30], v[105], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[108], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[108], 2, v[108])) + k.emit(v_add_lshl_u32_e64(v[107], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[107], v[30], v[107], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[110], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[110], 2, v[110])) + k.emit(v_add_lshl_u32_e64(v[109], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[109], v[30], v[109], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[112], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[112], 2, v[112])) + k.emit(v_add_lshl_u32_e64(v[111], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[111], v[30], v[111], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[114], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[114], 2, v[114])) + k.emit(v_add_lshl_u32_e64(v[113], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[113], v[30], v[113], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[116], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[116], 2, v[116])) + k.emit(v_add_lshl_u32_e64(v[115], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[115], v[30], v[115], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[118], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[118], 2, v[118])) + k.emit(v_add_lshl_u32_e64(v[117], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[117], v[30], v[117], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[120], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[120], 2, v[120])) + k.emit(v_add_lshl_u32_e64(v[119], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[119], v[30], v[119], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[122], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[122], 2, v[122])) + k.emit(v_add_lshl_u32_e64(v[121], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[121], v[30], v[121], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[124], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[124], 2, v[124])) + k.emit(v_add_lshl_u32_e64(v[123], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[123], v[30], v[123], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[126], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[126], 2, v[126])) + k.emit(v_add_lshl_u32_e64(v[125], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[125], v[30], v[125], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[128], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[128], 2, v[128])) + k.emit(v_add_lshl_u32_e64(v[127], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[127], v[30], v[127], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[130], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[130], 2, v[130])) + k.emit(v_add_lshl_u32_e64(v[129], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[129], v[30], v[129], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[132], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[132], 2, v[132])) + k.emit(v_add_lshl_u32_e64(v[131], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[131], v[30], v[131], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[134], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[134], 2, v[134])) + k.emit(v_add_lshl_u32_e64(v[133], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[133], v[30], v[133], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[136], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[136], 2, v[136])) + k.emit(v_add_lshl_u32_e64(v[135], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[135], v[30], v[135], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[138], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[138], 2, v[138])) + k.emit(v_add_lshl_u32_e64(v[137], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[137], v[30], v[137], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[140], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[140], 2, v[140])) + k.emit(v_add_lshl_u32_e64(v[139], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[139], v[30], v[139], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[142], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[142], 2, v[142])) + k.emit(v_add_lshl_u32_e64(v[141], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[141], v[30], v[141], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[144], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[144], 2, v[144])) + k.emit(v_add_lshl_u32_e64(v[143], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[143], v[30], v[143], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[146], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[146], 2, v[146])) + k.emit(v_add_lshl_u32_e64(v[145], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[145], v[30], v[145], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[148], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[148], 2, v[148])) + k.emit(v_add_lshl_u32_e64(v[147], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[147], v[30], v[147], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[150], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[150], 2, v[150])) + k.emit(v_add_lshl_u32_e64(v[149], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[149], v[30], v[149], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[152], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[152], 2, v[152])) + k.emit(v_add_lshl_u32_e64(v[151], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[151], v[30], v[151], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[154], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[154], 2, v[154])) + k.emit(v_add_lshl_u32_e64(v[153], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[153], v[30], v[153], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[156], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[156], 2, v[156])) + k.emit(v_add_lshl_u32_e64(v[155], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[155], v[30], v[155], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[158], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[158], 2, v[158])) + k.emit(v_add_lshl_u32_e64(v[157], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[157], v[30], v[157], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[160], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[160], 2, v[160])) + k.emit(v_add_lshl_u32_e64(v[159], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[159], v[30], v[159], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[162], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[162], 2, v[162])) + k.emit(v_add_lshl_u32_e64(v[161], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[161], v[30], v[161], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[164], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[164], 2, v[164])) + k.emit(v_add_lshl_u32_e64(v[163], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[163], v[30], v[163], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[166], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[166], 2, v[166])) + k.emit(v_add_lshl_u32_e64(v[165], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[165], v[30], v[165], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[168], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[168], 2, v[168])) + k.emit(v_add_lshl_u32_e64(v[167], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[167], v[30], v[167], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[170], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[170], 2, v[170])) + k.emit(v_add_lshl_u32_e64(v[169], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[169], v[30], v[169], s[82:83])) + k.emit(v_accvgpr_read(v[35], v[65])) + k.emit(v_accvgpr_read(v[36], v[69])) + k.emit(v_accvgpr_read(v[37], v[73])) + k.emit(v_accvgpr_read(v[38], v[77])) + k.emit(v_accvgpr_read(v[39], v[81])) + k.emit(v_accvgpr_read(v[40], v[85])) + k.emit(v_accvgpr_read(v[41], v[89])) + k.emit(v_accvgpr_read(v[42], v[93])) + k.emit(v_accvgpr_read(v[43], v[97])) + k.emit(v_accvgpr_read(v[44], v[101])) + k.emit(v_accvgpr_read(v[45], v[105])) + k.emit(v_accvgpr_read(v[46], v[109])) + k.emit(v_accvgpr_read(v[47], v[113])) + k.emit(v_accvgpr_read(v[48], v[117])) + k.emit(v_accvgpr_read(v[49], v[121])) + k.emit(v_accvgpr_read(v[50], v[125])) + k.emit(v_accvgpr_read(v[51], v[129])) + k.emit(v_accvgpr_read(v[52], v[133])) + k.emit(v_accvgpr_read(v[53], v[137])) + k.emit(v_accvgpr_read(v[54], v[141])) + k.emit(v_accvgpr_read(v[55], v[145])) + k.emit(v_accvgpr_read(v[56], v[149])) + k.emit(v_accvgpr_read(v[57], v[153])) + k.emit(v_accvgpr_read(v[58], v[157])) + k.emit(v_accvgpr_read(v[59], v[161])) + k.emit(v_accvgpr_read(v[60], v[165])) + k.emit(v_accvgpr_read(v[61], v[169])) + k.emit(v_accvgpr_read(v[62], v[173])) + k.emit(v_accvgpr_read(v[63], v[177])) + k.emit(v_accvgpr_read(v[64], v[181])) + k.emit(v_accvgpr_read(v[65], v[185])) + k.emit(v_accvgpr_read(v[66], v[189])) + k.emit(v_accvgpr_read(v[67], v[193])) + k.emit(v_accvgpr_read(v[68], v[197])) + k.emit(v_accvgpr_read(v[69], v[201])) + k.emit(v_accvgpr_read(v[70], v[205])) + k.emit(v_accvgpr_read(v[71], v[209])) + k.emit(v_accvgpr_read(v[72], v[213])) + k.emit(v_accvgpr_read(v[73], v[217])) + k.emit(v_accvgpr_read(v[74], v[221])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_mul_f32_e32(v[35], v[76], v[35])) + k.emit(v_add_f32_e32(v[22], v[75], v[35])) + k.emit(v_mov_b32_e32(v[35], v[22])) + k.emit(v_cvt_pk(v[35], v[35], v[35])) + k.emit(buffer_store_short(v[35], v[77], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[36], v[80], v[36])) + k.emit(v_add_f32_e32(v[22], v[79], v[36])) + k.emit(v_mov_b32_e32(v[36], v[22])) + k.emit(v_cvt_pk(v[36], v[36], v[36])) + k.emit(buffer_store_short(v[36], v[81], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[37], v[84], v[37])) + k.emit(v_add_f32_e32(v[22], v[83], v[37])) + k.emit(v_mov_b32_e32(v[37], v[22])) + k.emit(v_cvt_pk(v[37], v[37], v[37])) + k.emit(buffer_store_short(v[37], v[85], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[38], v[88], v[38])) + k.emit(v_add_f32_e32(v[22], v[87], v[38])) + k.emit(v_mov_b32_e32(v[38], v[22])) + k.emit(v_cvt_pk(v[38], v[38], v[38])) + k.emit(buffer_store_short(v[38], v[89], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[39], v[92], v[39])) + k.emit(v_add_f32_e32(v[22], v[91], v[39])) + k.emit(v_mov_b32_e32(v[39], v[22])) + k.emit(v_cvt_pk(v[39], v[39], v[39])) + k.emit(buffer_store_short(v[39], v[93], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[40], v[96], v[40])) + k.emit(v_add_f32_e32(v[22], v[95], v[40])) + k.emit(v_mov_b32_e32(v[40], v[22])) + k.emit(v_cvt_pk(v[40], v[40], v[40])) + k.emit(buffer_store_short(v[40], v[97], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[41], v[100], v[41])) + k.emit(v_add_f32_e32(v[22], v[99], v[41])) + k.emit(v_mov_b32_e32(v[41], v[22])) + k.emit(v_cvt_pk(v[41], v[41], v[41])) + k.emit(buffer_store_short(v[41], v[101], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[42], v[104], v[42])) + k.emit(v_add_f32_e32(v[22], v[103], v[42])) + k.emit(v_mov_b32_e32(v[42], v[22])) + k.emit(v_cvt_pk(v[42], v[42], v[42])) + k.emit(buffer_store_short(v[42], v[105], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[43], v[76], v[43])) + k.emit(v_add_f32_e32(v[22], v[75], v[43])) + k.emit(v_mov_b32_e32(v[43], v[22])) + k.emit(v_cvt_pk(v[43], v[43], v[43])) + k.emit(buffer_store_short(v[43], v[107], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[44], v[80], v[44])) + k.emit(v_add_f32_e32(v[22], v[79], v[44])) + k.emit(v_mov_b32_e32(v[44], v[22])) + k.emit(v_cvt_pk(v[44], v[44], v[44])) + k.emit(buffer_store_short(v[44], v[109], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[45], v[84], v[45])) + k.emit(v_add_f32_e32(v[22], v[83], v[45])) + k.emit(v_mov_b32_e32(v[45], v[22])) + k.emit(v_cvt_pk(v[45], v[45], v[45])) + k.emit(buffer_store_short(v[45], v[111], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[46], v[88], v[46])) + k.emit(v_add_f32_e32(v[22], v[87], v[46])) + k.emit(v_mov_b32_e32(v[46], v[22])) + k.emit(v_cvt_pk(v[46], v[46], v[46])) + k.emit(buffer_store_short(v[46], v[113], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[47], v[92], v[47])) + k.emit(v_add_f32_e32(v[22], v[91], v[47])) + k.emit(v_mov_b32_e32(v[47], v[22])) + k.emit(v_cvt_pk(v[47], v[47], v[47])) + k.emit(buffer_store_short(v[47], v[115], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[48], v[96], v[48])) + k.emit(v_add_f32_e32(v[22], v[95], v[48])) + k.emit(v_mov_b32_e32(v[48], v[22])) + k.emit(v_cvt_pk(v[48], v[48], v[48])) + k.emit(buffer_store_short(v[48], v[117], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[49], v[100], v[49])) + k.emit(v_add_f32_e32(v[22], v[99], v[49])) + k.emit(v_mov_b32_e32(v[49], v[22])) + k.emit(v_cvt_pk(v[49], v[49], v[49])) + k.emit(buffer_store_short(v[49], v[119], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[50], v[104], v[50])) + k.emit(v_add_f32_e32(v[22], v[103], v[50])) + k.emit(v_mov_b32_e32(v[50], v[22])) + k.emit(v_cvt_pk(v[50], v[50], v[50])) + k.emit(buffer_store_short(v[50], v[121], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[51], v[76], v[51])) + k.emit(v_add_f32_e32(v[22], v[75], v[51])) + k.emit(v_mov_b32_e32(v[51], v[22])) + k.emit(v_cvt_pk(v[51], v[51], v[51])) + k.emit(buffer_store_short(v[51], v[123], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[52], v[80], v[52])) + k.emit(v_add_f32_e32(v[22], v[79], v[52])) + k.emit(v_mov_b32_e32(v[52], v[22])) + k.emit(v_cvt_pk(v[52], v[52], v[52])) + k.emit(buffer_store_short(v[52], v[125], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[53], v[84], v[53])) + k.emit(v_add_f32_e32(v[22], v[83], v[53])) + k.emit(v_mov_b32_e32(v[53], v[22])) + k.emit(v_cvt_pk(v[53], v[53], v[53])) + k.emit(buffer_store_short(v[53], v[127], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[54], v[88], v[54])) + k.emit(v_add_f32_e32(v[22], v[87], v[54])) + k.emit(v_mov_b32_e32(v[54], v[22])) + k.emit(v_cvt_pk(v[54], v[54], v[54])) + k.emit(buffer_store_short(v[54], v[129], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[55], v[92], v[55])) + k.emit(v_add_f32_e32(v[22], v[91], v[55])) + k.emit(v_mov_b32_e32(v[55], v[22])) + k.emit(v_cvt_pk(v[55], v[55], v[55])) + k.emit(buffer_store_short(v[55], v[131], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[56], v[96], v[56])) + k.emit(v_add_f32_e32(v[22], v[95], v[56])) + k.emit(v_mov_b32_e32(v[56], v[22])) + k.emit(v_cvt_pk(v[56], v[56], v[56])) + k.emit(buffer_store_short(v[56], v[133], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[57], v[100], v[57])) + k.emit(v_add_f32_e32(v[22], v[99], v[57])) + k.emit(v_mov_b32_e32(v[57], v[22])) + k.emit(v_cvt_pk(v[57], v[57], v[57])) + k.emit(buffer_store_short(v[57], v[135], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[58], v[104], v[58])) + k.emit(v_add_f32_e32(v[22], v[103], v[58])) + k.emit(v_mov_b32_e32(v[58], v[22])) + k.emit(v_cvt_pk(v[58], v[58], v[58])) + k.emit(buffer_store_short(v[58], v[137], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[59], v[76], v[59])) + k.emit(v_add_f32_e32(v[22], v[75], v[59])) + k.emit(v_mov_b32_e32(v[59], v[22])) + k.emit(v_cvt_pk(v[59], v[59], v[59])) + k.emit(buffer_store_short(v[59], v[139], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[60], v[80], v[60])) + k.emit(v_add_f32_e32(v[22], v[79], v[60])) + k.emit(v_mov_b32_e32(v[60], v[22])) + k.emit(v_cvt_pk(v[60], v[60], v[60])) + k.emit(buffer_store_short(v[60], v[141], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[61], v[84], v[61])) + k.emit(v_add_f32_e32(v[22], v[83], v[61])) + k.emit(v_mov_b32_e32(v[61], v[22])) + k.emit(v_cvt_pk(v[61], v[61], v[61])) + k.emit(buffer_store_short(v[61], v[143], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[62], v[88], v[62])) + k.emit(v_add_f32_e32(v[22], v[87], v[62])) + k.emit(v_mov_b32_e32(v[62], v[22])) + k.emit(v_cvt_pk(v[62], v[62], v[62])) + k.emit(buffer_store_short(v[62], v[145], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[63], v[92], v[63])) + k.emit(v_add_f32_e32(v[22], v[91], v[63])) + k.emit(v_mov_b32_e32(v[63], v[22])) + k.emit(v_cvt_pk(v[63], v[63], v[63])) + k.emit(buffer_store_short(v[63], v[147], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[64], v[96], v[64])) + k.emit(v_add_f32_e32(v[22], v[95], v[64])) + k.emit(v_mov_b32_e32(v[64], v[22])) + k.emit(v_cvt_pk(v[64], v[64], v[64])) + k.emit(buffer_store_short(v[64], v[149], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[65], v[100], v[65])) + k.emit(v_add_f32_e32(v[22], v[99], v[65])) + k.emit(v_mov_b32_e32(v[65], v[22])) + k.emit(v_cvt_pk(v[65], v[65], v[65])) + k.emit(buffer_store_short(v[65], v[151], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[66], v[104], v[66])) + k.emit(v_add_f32_e32(v[22], v[103], v[66])) + k.emit(v_mov_b32_e32(v[66], v[22])) + k.emit(v_cvt_pk(v[66], v[66], v[66])) + k.emit(buffer_store_short(v[66], v[153], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[67], v[76], v[67])) + k.emit(v_add_f32_e32(v[22], v[75], v[67])) + k.emit(v_mov_b32_e32(v[67], v[22])) + k.emit(v_cvt_pk(v[67], v[67], v[67])) + k.emit(buffer_store_short(v[67], v[155], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[68], v[80], v[68])) + k.emit(v_add_f32_e32(v[22], v[79], v[68])) + k.emit(v_mov_b32_e32(v[68], v[22])) + k.emit(v_cvt_pk(v[68], v[68], v[68])) + k.emit(buffer_store_short(v[68], v[157], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[69], v[84], v[69])) + k.emit(v_add_f32_e32(v[22], v[83], v[69])) + k.emit(v_mov_b32_e32(v[69], v[22])) + k.emit(v_cvt_pk(v[69], v[69], v[69])) + k.emit(buffer_store_short(v[69], v[159], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[70], v[88], v[70])) + k.emit(v_add_f32_e32(v[22], v[87], v[70])) + k.emit(v_mov_b32_e32(v[70], v[22])) + k.emit(v_cvt_pk(v[70], v[70], v[70])) + k.emit(buffer_store_short(v[70], v[161], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[71], v[92], v[71])) + k.emit(v_add_f32_e32(v[22], v[91], v[71])) + k.emit(v_mov_b32_e32(v[71], v[22])) + k.emit(v_cvt_pk(v[71], v[71], v[71])) + k.emit(buffer_store_short(v[71], v[163], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[72], v[96], v[72])) + k.emit(v_add_f32_e32(v[22], v[95], v[72])) + k.emit(v_mov_b32_e32(v[72], v[22])) + k.emit(v_cvt_pk(v[72], v[72], v[72])) + k.emit(buffer_store_short(v[72], v[165], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[73], v[100], v[73])) + k.emit(v_add_f32_e32(v[22], v[99], v[73])) + k.emit(v_mov_b32_e32(v[73], v[22])) + k.emit(v_cvt_pk(v[73], v[73], v[73])) + k.emit(buffer_store_short(v[73], v[167], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[74], v[104], v[74])) + k.emit(v_add_f32_e32(v[22], v[103], v[74])) + k.emit(v_mov_b32_e32(v[74], v[22])) + k.emit(v_cvt_pk(v[74], v[74], v[74])) + k.emit(buffer_store_short(v[74], v[169], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[78], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[78], 2, v[78])) + k.emit(ds_read_b32(v[75], v[78])) + k.emit(ds_read_b32(v[76], v[78], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[77], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[77], v[30], v[77], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[82], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[82], 2, v[82])) + k.emit(ds_read_b32(v[79], v[82])) + k.emit(ds_read_b32(v[80], v[82], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[81], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[81], v[30], v[81], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[86], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[86], 2, v[86])) + k.emit(ds_read_b32(v[83], v[86])) + k.emit(ds_read_b32(v[84], v[86], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[85], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[85], v[30], v[85], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[90], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[90], 2, v[90])) + k.emit(ds_read_b32(v[87], v[90])) + k.emit(ds_read_b32(v[88], v[90], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[89], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[89], v[30], v[89], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[94], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[94], 2, v[94])) + k.emit(ds_read_b32(v[91], v[94])) + k.emit(ds_read_b32(v[92], v[94], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[93], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[93], v[30], v[93], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[98], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[98], 2, v[98])) + k.emit(ds_read_b32(v[95], v[98])) + k.emit(ds_read_b32(v[96], v[98], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[97], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[97], v[30], v[97], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[102], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[102], 2, v[102])) + k.emit(ds_read_b32(v[99], v[102])) + k.emit(ds_read_b32(v[100], v[102], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[101], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[101], v[30], v[101], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[106], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[106], 2, v[106])) + k.emit(ds_read_b32(v[103], v[106])) + k.emit(ds_read_b32(v[104], v[106], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[105], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[105], v[30], v[105], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[108], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[108], 2, v[108])) + k.emit(v_add_lshl_u32_e64(v[107], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[107], v[30], v[107], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[110], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[110], 2, v[110])) + k.emit(v_add_lshl_u32_e64(v[109], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[109], v[30], v[109], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[112], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[112], 2, v[112])) + k.emit(v_add_lshl_u32_e64(v[111], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[111], v[30], v[111], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[114], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[114], 2, v[114])) + k.emit(v_add_lshl_u32_e64(v[113], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[113], v[30], v[113], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[116], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[116], 2, v[116])) + k.emit(v_add_lshl_u32_e64(v[115], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[115], v[30], v[115], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[118], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[118], 2, v[118])) + k.emit(v_add_lshl_u32_e64(v[117], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[117], v[30], v[117], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[120], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[120], 2, v[120])) + k.emit(v_add_lshl_u32_e64(v[119], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[119], v[30], v[119], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[122], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[122], 2, v[122])) + k.emit(v_add_lshl_u32_e64(v[121], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[121], v[30], v[121], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[124], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[124], 2, v[124])) + k.emit(v_add_lshl_u32_e64(v[123], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[123], v[30], v[123], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[126], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[126], 2, v[126])) + k.emit(v_add_lshl_u32_e64(v[125], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[125], v[30], v[125], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[128], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[128], 2, v[128])) + k.emit(v_add_lshl_u32_e64(v[127], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[127], v[30], v[127], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[130], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[130], 2, v[130])) + k.emit(v_add_lshl_u32_e64(v[129], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[129], v[30], v[129], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[132], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[132], 2, v[132])) + k.emit(v_add_lshl_u32_e64(v[131], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[131], v[30], v[131], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[134], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[134], 2, v[134])) + k.emit(v_add_lshl_u32_e64(v[133], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[133], v[30], v[133], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[136], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[136], 2, v[136])) + k.emit(v_add_lshl_u32_e64(v[135], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[135], v[30], v[135], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[138], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[138], 2, v[138])) + k.emit(v_add_lshl_u32_e64(v[137], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[137], v[30], v[137], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[140], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[140], 2, v[140])) + k.emit(v_add_lshl_u32_e64(v[139], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[139], v[30], v[139], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[142], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[142], 2, v[142])) + k.emit(v_add_lshl_u32_e64(v[141], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[141], v[30], v[141], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[144], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[144], 2, v[144])) + k.emit(v_add_lshl_u32_e64(v[143], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[143], v[30], v[143], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[146], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[146], 2, v[146])) + k.emit(v_add_lshl_u32_e64(v[145], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[145], v[30], v[145], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[148], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[148], 2, v[148])) + k.emit(v_add_lshl_u32_e64(v[147], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[147], v[30], v[147], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[150], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[150], 2, v[150])) + k.emit(v_add_lshl_u32_e64(v[149], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[149], v[30], v[149], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[152], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[152], 2, v[152])) + k.emit(v_add_lshl_u32_e64(v[151], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[151], v[30], v[151], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[154], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[154], 2, v[154])) + k.emit(v_add_lshl_u32_e64(v[153], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[153], v[30], v[153], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[156], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[156], 2, v[156])) + k.emit(v_add_lshl_u32_e64(v[155], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[155], v[30], v[155], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[158], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[158], 2, v[158])) + k.emit(v_add_lshl_u32_e64(v[157], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[157], v[30], v[157], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[160], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[160], 2, v[160])) + k.emit(v_add_lshl_u32_e64(v[159], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[159], v[30], v[159], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[162], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[162], 2, v[162])) + k.emit(v_add_lshl_u32_e64(v[161], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[161], v[30], v[161], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[164], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[164], 2, v[164])) + k.emit(v_add_lshl_u32_e64(v[163], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[163], v[30], v[163], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[166], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[166], 2, v[166])) + k.emit(v_add_lshl_u32_e64(v[165], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[165], v[30], v[165], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[168], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[168], 2, v[168])) + k.emit(v_add_lshl_u32_e64(v[167], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[167], v[30], v[167], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[170], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[170], 2, v[170])) + k.emit(v_add_lshl_u32_e64(v[169], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[169], v[30], v[169], s[82:83])) + k.emit(v_accvgpr_read(v[35], v[225])) + k.emit(v_accvgpr_read(v[36], v[229])) + k.emit(v_accvgpr_read(v[37], v[233])) + k.emit(v_accvgpr_read(v[38], v[237])) + k.emit(v_accvgpr_read(v[39], v[241])) + k.emit(v_accvgpr_read(v[40], v[245])) + k.emit(v_accvgpr_read(v[41], v[249])) + k.emit(v_accvgpr_read(v[42], v[253])) + k.emit(v_accvgpr_read(v[43], v[2])) + k.emit(v_accvgpr_read(v[44], v[6])) + k.emit(v_accvgpr_read(v[45], v[10])) + k.emit(v_accvgpr_read(v[46], v[14])) + k.emit(v_accvgpr_read(v[47], v[18])) + k.emit(v_accvgpr_read(v[48], v[22])) + k.emit(v_accvgpr_read(v[49], v[26])) + k.emit(v_accvgpr_read(v[50], v[30])) + k.emit(v_accvgpr_read(v[51], v[34])) + k.emit(v_accvgpr_read(v[52], v[38])) + k.emit(v_accvgpr_read(v[53], v[42])) + k.emit(v_accvgpr_read(v[54], v[46])) + k.emit(v_accvgpr_read(v[55], v[50])) + k.emit(v_accvgpr_read(v[56], v[54])) + k.emit(v_accvgpr_read(v[57], v[58])) + k.emit(v_accvgpr_read(v[58], v[62])) + k.emit(v_accvgpr_read(v[59], v[66])) + k.emit(v_accvgpr_read(v[60], v[70])) + k.emit(v_accvgpr_read(v[61], v[74])) + k.emit(v_accvgpr_read(v[62], v[78])) + k.emit(v_accvgpr_read(v[63], v[82])) + k.emit(v_accvgpr_read(v[64], v[86])) + k.emit(v_accvgpr_read(v[65], v[90])) + k.emit(v_accvgpr_read(v[66], v[94])) + k.emit(v_accvgpr_read(v[67], v[98])) + k.emit(v_accvgpr_read(v[68], v[102])) + k.emit(v_accvgpr_read(v[69], v[106])) + k.emit(v_accvgpr_read(v[70], v[110])) + k.emit(v_accvgpr_read(v[71], v[114])) + k.emit(v_accvgpr_read(v[72], v[118])) + k.emit(v_accvgpr_read(v[73], v[122])) + k.emit(v_accvgpr_read(v[74], v[126])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_mul_f32_e32(v[35], v[76], v[35])) + k.emit(v_add_f32_e32(v[22], v[75], v[35])) + k.emit(v_mov_b32_e32(v[35], v[22])) + k.emit(v_cvt_pk(v[35], v[35], v[35])) + k.emit(buffer_store_short(v[35], v[77], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[36], v[80], v[36])) + k.emit(v_add_f32_e32(v[22], v[79], v[36])) + k.emit(v_mov_b32_e32(v[36], v[22])) + k.emit(v_cvt_pk(v[36], v[36], v[36])) + k.emit(buffer_store_short(v[36], v[81], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[37], v[84], v[37])) + k.emit(v_add_f32_e32(v[22], v[83], v[37])) + k.emit(v_mov_b32_e32(v[37], v[22])) + k.emit(v_cvt_pk(v[37], v[37], v[37])) + k.emit(buffer_store_short(v[37], v[85], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[38], v[88], v[38])) + k.emit(v_add_f32_e32(v[22], v[87], v[38])) + k.emit(v_mov_b32_e32(v[38], v[22])) + k.emit(v_cvt_pk(v[38], v[38], v[38])) + k.emit(buffer_store_short(v[38], v[89], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[39], v[92], v[39])) + k.emit(v_add_f32_e32(v[22], v[91], v[39])) + k.emit(v_mov_b32_e32(v[39], v[22])) + k.emit(v_cvt_pk(v[39], v[39], v[39])) + k.emit(buffer_store_short(v[39], v[93], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[40], v[96], v[40])) + k.emit(v_add_f32_e32(v[22], v[95], v[40])) + k.emit(v_mov_b32_e32(v[40], v[22])) + k.emit(v_cvt_pk(v[40], v[40], v[40])) + k.emit(buffer_store_short(v[40], v[97], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[41], v[100], v[41])) + k.emit(v_add_f32_e32(v[22], v[99], v[41])) + k.emit(v_mov_b32_e32(v[41], v[22])) + k.emit(v_cvt_pk(v[41], v[41], v[41])) + k.emit(buffer_store_short(v[41], v[101], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[42], v[104], v[42])) + k.emit(v_add_f32_e32(v[22], v[103], v[42])) + k.emit(v_mov_b32_e32(v[42], v[22])) + k.emit(v_cvt_pk(v[42], v[42], v[42])) + k.emit(buffer_store_short(v[42], v[105], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[43], v[76], v[43])) + k.emit(v_add_f32_e32(v[22], v[75], v[43])) + k.emit(v_mov_b32_e32(v[43], v[22])) + k.emit(v_cvt_pk(v[43], v[43], v[43])) + k.emit(buffer_store_short(v[43], v[107], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[44], v[80], v[44])) + k.emit(v_add_f32_e32(v[22], v[79], v[44])) + k.emit(v_mov_b32_e32(v[44], v[22])) + k.emit(v_cvt_pk(v[44], v[44], v[44])) + k.emit(buffer_store_short(v[44], v[109], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[45], v[84], v[45])) + k.emit(v_add_f32_e32(v[22], v[83], v[45])) + k.emit(v_mov_b32_e32(v[45], v[22])) + k.emit(v_cvt_pk(v[45], v[45], v[45])) + k.emit(buffer_store_short(v[45], v[111], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[46], v[88], v[46])) + k.emit(v_add_f32_e32(v[22], v[87], v[46])) + k.emit(v_mov_b32_e32(v[46], v[22])) + k.emit(v_cvt_pk(v[46], v[46], v[46])) + k.emit(buffer_store_short(v[46], v[113], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[47], v[92], v[47])) + k.emit(v_add_f32_e32(v[22], v[91], v[47])) + k.emit(v_mov_b32_e32(v[47], v[22])) + k.emit(v_cvt_pk(v[47], v[47], v[47])) + k.emit(buffer_store_short(v[47], v[115], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[48], v[96], v[48])) + k.emit(v_add_f32_e32(v[22], v[95], v[48])) + k.emit(v_mov_b32_e32(v[48], v[22])) + k.emit(v_cvt_pk(v[48], v[48], v[48])) + k.emit(buffer_store_short(v[48], v[117], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[49], v[100], v[49])) + k.emit(v_add_f32_e32(v[22], v[99], v[49])) + k.emit(v_mov_b32_e32(v[49], v[22])) + k.emit(v_cvt_pk(v[49], v[49], v[49])) + k.emit(buffer_store_short(v[49], v[119], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[50], v[104], v[50])) + k.emit(v_add_f32_e32(v[22], v[103], v[50])) + k.emit(v_mov_b32_e32(v[50], v[22])) + k.emit(v_cvt_pk(v[50], v[50], v[50])) + k.emit(buffer_store_short(v[50], v[121], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[51], v[76], v[51])) + k.emit(v_add_f32_e32(v[22], v[75], v[51])) + k.emit(v_mov_b32_e32(v[51], v[22])) + k.emit(v_cvt_pk(v[51], v[51], v[51])) + k.emit(buffer_store_short(v[51], v[123], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[52], v[80], v[52])) + k.emit(v_add_f32_e32(v[22], v[79], v[52])) + k.emit(v_mov_b32_e32(v[52], v[22])) + k.emit(v_cvt_pk(v[52], v[52], v[52])) + k.emit(buffer_store_short(v[52], v[125], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[53], v[84], v[53])) + k.emit(v_add_f32_e32(v[22], v[83], v[53])) + k.emit(v_mov_b32_e32(v[53], v[22])) + k.emit(v_cvt_pk(v[53], v[53], v[53])) + k.emit(buffer_store_short(v[53], v[127], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[54], v[88], v[54])) + k.emit(v_add_f32_e32(v[22], v[87], v[54])) + k.emit(v_mov_b32_e32(v[54], v[22])) + k.emit(v_cvt_pk(v[54], v[54], v[54])) + k.emit(buffer_store_short(v[54], v[129], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[55], v[92], v[55])) + k.emit(v_add_f32_e32(v[22], v[91], v[55])) + k.emit(v_mov_b32_e32(v[55], v[22])) + k.emit(v_cvt_pk(v[55], v[55], v[55])) + k.emit(buffer_store_short(v[55], v[131], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[56], v[96], v[56])) + k.emit(v_add_f32_e32(v[22], v[95], v[56])) + k.emit(v_mov_b32_e32(v[56], v[22])) + k.emit(v_cvt_pk(v[56], v[56], v[56])) + k.emit(buffer_store_short(v[56], v[133], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[57], v[100], v[57])) + k.emit(v_add_f32_e32(v[22], v[99], v[57])) + k.emit(v_mov_b32_e32(v[57], v[22])) + k.emit(v_cvt_pk(v[57], v[57], v[57])) + k.emit(buffer_store_short(v[57], v[135], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[58], v[104], v[58])) + k.emit(v_add_f32_e32(v[22], v[103], v[58])) + k.emit(v_mov_b32_e32(v[58], v[22])) + k.emit(v_cvt_pk(v[58], v[58], v[58])) + k.emit(buffer_store_short(v[58], v[137], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[59], v[76], v[59])) + k.emit(v_add_f32_e32(v[22], v[75], v[59])) + k.emit(v_mov_b32_e32(v[59], v[22])) + k.emit(v_cvt_pk(v[59], v[59], v[59])) + k.emit(buffer_store_short(v[59], v[139], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[60], v[80], v[60])) + k.emit(v_add_f32_e32(v[22], v[79], v[60])) + k.emit(v_mov_b32_e32(v[60], v[22])) + k.emit(v_cvt_pk(v[60], v[60], v[60])) + k.emit(buffer_store_short(v[60], v[141], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[61], v[84], v[61])) + k.emit(v_add_f32_e32(v[22], v[83], v[61])) + k.emit(v_mov_b32_e32(v[61], v[22])) + k.emit(v_cvt_pk(v[61], v[61], v[61])) + k.emit(buffer_store_short(v[61], v[143], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[62], v[88], v[62])) + k.emit(v_add_f32_e32(v[22], v[87], v[62])) + k.emit(v_mov_b32_e32(v[62], v[22])) + k.emit(v_cvt_pk(v[62], v[62], v[62])) + k.emit(buffer_store_short(v[62], v[145], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[63], v[92], v[63])) + k.emit(v_add_f32_e32(v[22], v[91], v[63])) + k.emit(v_mov_b32_e32(v[63], v[22])) + k.emit(v_cvt_pk(v[63], v[63], v[63])) + k.emit(buffer_store_short(v[63], v[147], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[64], v[96], v[64])) + k.emit(v_add_f32_e32(v[22], v[95], v[64])) + k.emit(v_mov_b32_e32(v[64], v[22])) + k.emit(v_cvt_pk(v[64], v[64], v[64])) + k.emit(buffer_store_short(v[64], v[149], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[65], v[100], v[65])) + k.emit(v_add_f32_e32(v[22], v[99], v[65])) + k.emit(v_mov_b32_e32(v[65], v[22])) + k.emit(v_cvt_pk(v[65], v[65], v[65])) + k.emit(buffer_store_short(v[65], v[151], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[66], v[104], v[66])) + k.emit(v_add_f32_e32(v[22], v[103], v[66])) + k.emit(v_mov_b32_e32(v[66], v[22])) + k.emit(v_cvt_pk(v[66], v[66], v[66])) + k.emit(buffer_store_short(v[66], v[153], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[67], v[76], v[67])) + k.emit(v_add_f32_e32(v[22], v[75], v[67])) + k.emit(v_mov_b32_e32(v[67], v[22])) + k.emit(v_cvt_pk(v[67], v[67], v[67])) + k.emit(buffer_store_short(v[67], v[155], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[68], v[80], v[68])) + k.emit(v_add_f32_e32(v[22], v[79], v[68])) + k.emit(v_mov_b32_e32(v[68], v[22])) + k.emit(v_cvt_pk(v[68], v[68], v[68])) + k.emit(buffer_store_short(v[68], v[157], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[69], v[84], v[69])) + k.emit(v_add_f32_e32(v[22], v[83], v[69])) + k.emit(v_mov_b32_e32(v[69], v[22])) + k.emit(v_cvt_pk(v[69], v[69], v[69])) + k.emit(buffer_store_short(v[69], v[159], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[70], v[88], v[70])) + k.emit(v_add_f32_e32(v[22], v[87], v[70])) + k.emit(v_mov_b32_e32(v[70], v[22])) + k.emit(v_cvt_pk(v[70], v[70], v[70])) + k.emit(buffer_store_short(v[70], v[161], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[71], v[92], v[71])) + k.emit(v_add_f32_e32(v[22], v[91], v[71])) + k.emit(v_mov_b32_e32(v[71], v[22])) + k.emit(v_cvt_pk(v[71], v[71], v[71])) + k.emit(buffer_store_short(v[71], v[163], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[72], v[96], v[72])) + k.emit(v_add_f32_e32(v[22], v[95], v[72])) + k.emit(v_mov_b32_e32(v[72], v[22])) + k.emit(v_cvt_pk(v[72], v[72], v[72])) + k.emit(buffer_store_short(v[72], v[165], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[73], v[100], v[73])) + k.emit(v_add_f32_e32(v[22], v[99], v[73])) + k.emit(v_mov_b32_e32(v[73], v[22])) + k.emit(v_cvt_pk(v[73], v[73], v[73])) + k.emit(buffer_store_short(v[73], v[167], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[74], v[104], v[74])) + k.emit(v_add_f32_e32(v[22], v[103], v[74])) + k.emit(v_mov_b32_e32(v[74], v[22])) + k.emit(v_cvt_pk(v[74], v[74], v[74])) + k.emit(buffer_store_short(v[74], v[169], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[78], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[78], 2, v[78])) + k.emit(ds_read_b32(v[75], v[78])) + k.emit(ds_read_b32(v[76], v[78], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[77], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[77], v[30], v[77], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[82], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[82], 2, v[82])) + k.emit(ds_read_b32(v[79], v[82])) + k.emit(ds_read_b32(v[80], v[82], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[81], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[81], v[30], v[81], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[86], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[86], 2, v[86])) + k.emit(ds_read_b32(v[83], v[86])) + k.emit(ds_read_b32(v[84], v[86], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[85], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[85], v[30], v[85], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[90], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[90], 2, v[90])) + k.emit(ds_read_b32(v[87], v[90])) + k.emit(ds_read_b32(v[88], v[90], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[89], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[89], v[30], v[89], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[94], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[94], 2, v[94])) + k.emit(ds_read_b32(v[91], v[94])) + k.emit(ds_read_b32(v[92], v[94], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[93], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[93], v[30], v[93], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[98], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[98], 2, v[98])) + k.emit(ds_read_b32(v[95], v[98])) + k.emit(ds_read_b32(v[96], v[98], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[97], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[97], v[30], v[97], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[102], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[102], 2, v[102])) + k.emit(ds_read_b32(v[99], v[102])) + k.emit(ds_read_b32(v[100], v[102], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[101], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[101], v[30], v[101], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[106], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[106], 2, v[106])) + k.emit(ds_read_b32(v[103], v[106])) + k.emit(ds_read_b32(v[104], v[106], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[105], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[105], v[30], v[105], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[108], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[108], 2, v[108])) + k.emit(v_add_lshl_u32_e64(v[107], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[107], v[30], v[107], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[110], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[110], 2, v[110])) + k.emit(v_add_lshl_u32_e64(v[109], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[109], v[30], v[109], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[112], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[112], 2, v[112])) + k.emit(v_add_lshl_u32_e64(v[111], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[111], v[30], v[111], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[114], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[114], 2, v[114])) + k.emit(v_add_lshl_u32_e64(v[113], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[113], v[30], v[113], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[116], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[116], 2, v[116])) + k.emit(v_add_lshl_u32_e64(v[115], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[115], v[30], v[115], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[118], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[118], 2, v[118])) + k.emit(v_add_lshl_u32_e64(v[117], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[117], v[30], v[117], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[120], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[120], 2, v[120])) + k.emit(v_add_lshl_u32_e64(v[119], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[119], v[30], v[119], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[122], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[122], 2, v[122])) + k.emit(v_add_lshl_u32_e64(v[121], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[121], v[30], v[121], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[124], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[124], 2, v[124])) + k.emit(v_add_lshl_u32_e64(v[123], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[123], v[30], v[123], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[126], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[126], 2, v[126])) + k.emit(v_add_lshl_u32_e64(v[125], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[125], v[30], v[125], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[128], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[128], 2, v[128])) + k.emit(v_add_lshl_u32_e64(v[127], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[127], v[30], v[127], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[130], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[130], 2, v[130])) + k.emit(v_add_lshl_u32_e64(v[129], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[129], v[30], v[129], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[132], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[132], 2, v[132])) + k.emit(v_add_lshl_u32_e64(v[131], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[131], v[30], v[131], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[134], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[134], 2, v[134])) + k.emit(v_add_lshl_u32_e64(v[133], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[133], v[30], v[133], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[136], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[136], 2, v[136])) + k.emit(v_add_lshl_u32_e64(v[135], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[135], v[30], v[135], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[138], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[138], 2, v[138])) + k.emit(v_add_lshl_u32_e64(v[137], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[137], v[30], v[137], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[140], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[140], 2, v[140])) + k.emit(v_add_lshl_u32_e64(v[139], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[139], v[30], v[139], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[142], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[142], 2, v[142])) + k.emit(v_add_lshl_u32_e64(v[141], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[141], v[30], v[141], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[144], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[144], 2, v[144])) + k.emit(v_add_lshl_u32_e64(v[143], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[143], v[30], v[143], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[146], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[146], 2, v[146])) + k.emit(v_add_lshl_u32_e64(v[145], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[145], v[30], v[145], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[148], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[148], 2, v[148])) + k.emit(v_add_lshl_u32_e64(v[147], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[147], v[30], v[147], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[150], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[150], 2, v[150])) + k.emit(v_add_lshl_u32_e64(v[149], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[149], v[30], v[149], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[152], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[152], 2, v[152])) + k.emit(v_add_lshl_u32_e64(v[151], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[151], v[30], v[151], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[154], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[154], 2, v[154])) + k.emit(v_add_lshl_u32_e64(v[153], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[153], v[30], v[153], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[156], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[156], 2, v[156])) + k.emit(v_add_lshl_u32_e64(v[155], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[155], v[30], v[155], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[158], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[158], 2, v[158])) + k.emit(v_add_lshl_u32_e64(v[157], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[157], v[30], v[157], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[160], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[160], 2, v[160])) + k.emit(v_add_lshl_u32_e64(v[159], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[159], v[30], v[159], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[162], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[162], 2, v[162])) + k.emit(v_add_lshl_u32_e64(v[161], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[161], v[30], v[161], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[164], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[164], 2, v[164])) + k.emit(v_add_lshl_u32_e64(v[163], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[163], v[30], v[163], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[166], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[166], 2, v[166])) + k.emit(v_add_lshl_u32_e64(v[165], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[165], v[30], v[165], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[168], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[168], 2, v[168])) + k.emit(v_add_lshl_u32_e64(v[167], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[167], v[30], v[167], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[170], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[170], 2, v[170])) + k.emit(v_add_lshl_u32_e64(v[169], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[169], v[30], v[169], s[82:83])) + k.emit(v_accvgpr_read(v[35], v[130])) + k.emit(v_accvgpr_read(v[36], v[134])) + k.emit(v_accvgpr_read(v[37], v[138])) + k.emit(v_accvgpr_read(v[38], v[142])) + k.emit(v_accvgpr_read(v[39], v[146])) + k.emit(v_accvgpr_read(v[40], v[150])) + k.emit(v_accvgpr_read(v[41], v[154])) + k.emit(v_accvgpr_read(v[42], v[158])) + k.emit(v_accvgpr_read(v[43], v[162])) + k.emit(v_accvgpr_read(v[44], v[166])) + k.emit(v_accvgpr_read(v[45], v[170])) + k.emit(v_accvgpr_read(v[46], v[174])) + k.emit(v_accvgpr_read(v[47], v[178])) + k.emit(v_accvgpr_read(v[48], v[182])) + k.emit(v_accvgpr_read(v[49], v[186])) + k.emit(v_accvgpr_read(v[50], v[190])) + k.emit(v_accvgpr_read(v[51], v[194])) + k.emit(v_accvgpr_read(v[52], v[198])) + k.emit(v_accvgpr_read(v[53], v[202])) + k.emit(v_accvgpr_read(v[54], v[206])) + k.emit(v_accvgpr_read(v[55], v[210])) + k.emit(v_accvgpr_read(v[56], v[214])) + k.emit(v_accvgpr_read(v[57], v[218])) + k.emit(v_accvgpr_read(v[58], v[222])) + k.emit(v_accvgpr_read(v[59], v[226])) + k.emit(v_accvgpr_read(v[60], v[230])) + k.emit(v_accvgpr_read(v[61], v[234])) + k.emit(v_accvgpr_read(v[62], v[238])) + k.emit(v_accvgpr_read(v[63], v[242])) + k.emit(v_accvgpr_read(v[64], v[246])) + k.emit(v_accvgpr_read(v[65], v[250])) + k.emit(v_accvgpr_read(v[66], v[254])) + k.emit(v_accvgpr_read(v[67], v[3])) + k.emit(v_accvgpr_read(v[68], v[7])) + k.emit(v_accvgpr_read(v[69], v[11])) + k.emit(v_accvgpr_read(v[70], v[15])) + k.emit(v_accvgpr_read(v[71], v[19])) + k.emit(v_accvgpr_read(v[72], v[23])) + k.emit(v_accvgpr_read(v[73], v[27])) + k.emit(v_accvgpr_read(v[74], v[31])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_mul_f32_e32(v[35], v[76], v[35])) + k.emit(v_add_f32_e32(v[22], v[75], v[35])) + k.emit(v_mov_b32_e32(v[35], v[22])) + k.emit(v_cvt_pk(v[35], v[35], v[35])) + k.emit(buffer_store_short(v[35], v[77], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[36], v[80], v[36])) + k.emit(v_add_f32_e32(v[22], v[79], v[36])) + k.emit(v_mov_b32_e32(v[36], v[22])) + k.emit(v_cvt_pk(v[36], v[36], v[36])) + k.emit(buffer_store_short(v[36], v[81], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[37], v[84], v[37])) + k.emit(v_add_f32_e32(v[22], v[83], v[37])) + k.emit(v_mov_b32_e32(v[37], v[22])) + k.emit(v_cvt_pk(v[37], v[37], v[37])) + k.emit(buffer_store_short(v[37], v[85], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[38], v[88], v[38])) + k.emit(v_add_f32_e32(v[22], v[87], v[38])) + k.emit(v_mov_b32_e32(v[38], v[22])) + k.emit(v_cvt_pk(v[38], v[38], v[38])) + k.emit(buffer_store_short(v[38], v[89], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[39], v[92], v[39])) + k.emit(v_add_f32_e32(v[22], v[91], v[39])) + k.emit(v_mov_b32_e32(v[39], v[22])) + k.emit(v_cvt_pk(v[39], v[39], v[39])) + k.emit(buffer_store_short(v[39], v[93], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[40], v[96], v[40])) + k.emit(v_add_f32_e32(v[22], v[95], v[40])) + k.emit(v_mov_b32_e32(v[40], v[22])) + k.emit(v_cvt_pk(v[40], v[40], v[40])) + k.emit(buffer_store_short(v[40], v[97], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[41], v[100], v[41])) + k.emit(v_add_f32_e32(v[22], v[99], v[41])) + k.emit(v_mov_b32_e32(v[41], v[22])) + k.emit(v_cvt_pk(v[41], v[41], v[41])) + k.emit(buffer_store_short(v[41], v[101], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[42], v[104], v[42])) + k.emit(v_add_f32_e32(v[22], v[103], v[42])) + k.emit(v_mov_b32_e32(v[42], v[22])) + k.emit(v_cvt_pk(v[42], v[42], v[42])) + k.emit(buffer_store_short(v[42], v[105], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[43], v[76], v[43])) + k.emit(v_add_f32_e32(v[22], v[75], v[43])) + k.emit(v_mov_b32_e32(v[43], v[22])) + k.emit(v_cvt_pk(v[43], v[43], v[43])) + k.emit(buffer_store_short(v[43], v[107], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[44], v[80], v[44])) + k.emit(v_add_f32_e32(v[22], v[79], v[44])) + k.emit(v_mov_b32_e32(v[44], v[22])) + k.emit(v_cvt_pk(v[44], v[44], v[44])) + k.emit(buffer_store_short(v[44], v[109], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[45], v[84], v[45])) + k.emit(v_add_f32_e32(v[22], v[83], v[45])) + k.emit(v_mov_b32_e32(v[45], v[22])) + k.emit(v_cvt_pk(v[45], v[45], v[45])) + k.emit(buffer_store_short(v[45], v[111], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[46], v[88], v[46])) + k.emit(v_add_f32_e32(v[22], v[87], v[46])) + k.emit(v_mov_b32_e32(v[46], v[22])) + k.emit(v_cvt_pk(v[46], v[46], v[46])) + k.emit(buffer_store_short(v[46], v[113], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[47], v[92], v[47])) + k.emit(v_add_f32_e32(v[22], v[91], v[47])) + k.emit(v_mov_b32_e32(v[47], v[22])) + k.emit(v_cvt_pk(v[47], v[47], v[47])) + k.emit(buffer_store_short(v[47], v[115], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[48], v[96], v[48])) + k.emit(v_add_f32_e32(v[22], v[95], v[48])) + k.emit(v_mov_b32_e32(v[48], v[22])) + k.emit(v_cvt_pk(v[48], v[48], v[48])) + k.emit(buffer_store_short(v[48], v[117], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[49], v[100], v[49])) + k.emit(v_add_f32_e32(v[22], v[99], v[49])) + k.emit(v_mov_b32_e32(v[49], v[22])) + k.emit(v_cvt_pk(v[49], v[49], v[49])) + k.emit(buffer_store_short(v[49], v[119], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[50], v[104], v[50])) + k.emit(v_add_f32_e32(v[22], v[103], v[50])) + k.emit(v_mov_b32_e32(v[50], v[22])) + k.emit(v_cvt_pk(v[50], v[50], v[50])) + k.emit(buffer_store_short(v[50], v[121], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[51], v[76], v[51])) + k.emit(v_add_f32_e32(v[22], v[75], v[51])) + k.emit(v_mov_b32_e32(v[51], v[22])) + k.emit(v_cvt_pk(v[51], v[51], v[51])) + k.emit(buffer_store_short(v[51], v[123], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[52], v[80], v[52])) + k.emit(v_add_f32_e32(v[22], v[79], v[52])) + k.emit(v_mov_b32_e32(v[52], v[22])) + k.emit(v_cvt_pk(v[52], v[52], v[52])) + k.emit(buffer_store_short(v[52], v[125], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[53], v[84], v[53])) + k.emit(v_add_f32_e32(v[22], v[83], v[53])) + k.emit(v_mov_b32_e32(v[53], v[22])) + k.emit(v_cvt_pk(v[53], v[53], v[53])) + k.emit(buffer_store_short(v[53], v[127], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[54], v[88], v[54])) + k.emit(v_add_f32_e32(v[22], v[87], v[54])) + k.emit(v_mov_b32_e32(v[54], v[22])) + k.emit(v_cvt_pk(v[54], v[54], v[54])) + k.emit(buffer_store_short(v[54], v[129], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[55], v[92], v[55])) + k.emit(v_add_f32_e32(v[22], v[91], v[55])) + k.emit(v_mov_b32_e32(v[55], v[22])) + k.emit(v_cvt_pk(v[55], v[55], v[55])) + k.emit(buffer_store_short(v[55], v[131], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[56], v[96], v[56])) + k.emit(v_add_f32_e32(v[22], v[95], v[56])) + k.emit(v_mov_b32_e32(v[56], v[22])) + k.emit(v_cvt_pk(v[56], v[56], v[56])) + k.emit(buffer_store_short(v[56], v[133], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[57], v[100], v[57])) + k.emit(v_add_f32_e32(v[22], v[99], v[57])) + k.emit(v_mov_b32_e32(v[57], v[22])) + k.emit(v_cvt_pk(v[57], v[57], v[57])) + k.emit(buffer_store_short(v[57], v[135], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[58], v[104], v[58])) + k.emit(v_add_f32_e32(v[22], v[103], v[58])) + k.emit(v_mov_b32_e32(v[58], v[22])) + k.emit(v_cvt_pk(v[58], v[58], v[58])) + k.emit(buffer_store_short(v[58], v[137], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[59], v[76], v[59])) + k.emit(v_add_f32_e32(v[22], v[75], v[59])) + k.emit(v_mov_b32_e32(v[59], v[22])) + k.emit(v_cvt_pk(v[59], v[59], v[59])) + k.emit(buffer_store_short(v[59], v[139], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[60], v[80], v[60])) + k.emit(v_add_f32_e32(v[22], v[79], v[60])) + k.emit(v_mov_b32_e32(v[60], v[22])) + k.emit(v_cvt_pk(v[60], v[60], v[60])) + k.emit(buffer_store_short(v[60], v[141], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[61], v[84], v[61])) + k.emit(v_add_f32_e32(v[22], v[83], v[61])) + k.emit(v_mov_b32_e32(v[61], v[22])) + k.emit(v_cvt_pk(v[61], v[61], v[61])) + k.emit(buffer_store_short(v[61], v[143], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[62], v[88], v[62])) + k.emit(v_add_f32_e32(v[22], v[87], v[62])) + k.emit(v_mov_b32_e32(v[62], v[22])) + k.emit(v_cvt_pk(v[62], v[62], v[62])) + k.emit(buffer_store_short(v[62], v[145], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[63], v[92], v[63])) + k.emit(v_add_f32_e32(v[22], v[91], v[63])) + k.emit(v_mov_b32_e32(v[63], v[22])) + k.emit(v_cvt_pk(v[63], v[63], v[63])) + k.emit(buffer_store_short(v[63], v[147], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[64], v[96], v[64])) + k.emit(v_add_f32_e32(v[22], v[95], v[64])) + k.emit(v_mov_b32_e32(v[64], v[22])) + k.emit(v_cvt_pk(v[64], v[64], v[64])) + k.emit(buffer_store_short(v[64], v[149], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[65], v[100], v[65])) + k.emit(v_add_f32_e32(v[22], v[99], v[65])) + k.emit(v_mov_b32_e32(v[65], v[22])) + k.emit(v_cvt_pk(v[65], v[65], v[65])) + k.emit(buffer_store_short(v[65], v[151], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[66], v[104], v[66])) + k.emit(v_add_f32_e32(v[22], v[103], v[66])) + k.emit(v_mov_b32_e32(v[66], v[22])) + k.emit(v_cvt_pk(v[66], v[66], v[66])) + k.emit(buffer_store_short(v[66], v[153], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[67], v[76], v[67])) + k.emit(v_add_f32_e32(v[22], v[75], v[67])) + k.emit(v_mov_b32_e32(v[67], v[22])) + k.emit(v_cvt_pk(v[67], v[67], v[67])) + k.emit(buffer_store_short(v[67], v[155], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[68], v[80], v[68])) + k.emit(v_add_f32_e32(v[22], v[79], v[68])) + k.emit(v_mov_b32_e32(v[68], v[22])) + k.emit(v_cvt_pk(v[68], v[68], v[68])) + k.emit(buffer_store_short(v[68], v[157], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[69], v[84], v[69])) + k.emit(v_add_f32_e32(v[22], v[83], v[69])) + k.emit(v_mov_b32_e32(v[69], v[22])) + k.emit(v_cvt_pk(v[69], v[69], v[69])) + k.emit(buffer_store_short(v[69], v[159], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[70], v[88], v[70])) + k.emit(v_add_f32_e32(v[22], v[87], v[70])) + k.emit(v_mov_b32_e32(v[70], v[22])) + k.emit(v_cvt_pk(v[70], v[70], v[70])) + k.emit(buffer_store_short(v[70], v[161], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[71], v[92], v[71])) + k.emit(v_add_f32_e32(v[22], v[91], v[71])) + k.emit(v_mov_b32_e32(v[71], v[22])) + k.emit(v_cvt_pk(v[71], v[71], v[71])) + k.emit(buffer_store_short(v[71], v[163], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[72], v[96], v[72])) + k.emit(v_add_f32_e32(v[22], v[95], v[72])) + k.emit(v_mov_b32_e32(v[72], v[22])) + k.emit(v_cvt_pk(v[72], v[72], v[72])) + k.emit(buffer_store_short(v[72], v[165], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[73], v[100], v[73])) + k.emit(v_add_f32_e32(v[22], v[99], v[73])) + k.emit(v_mov_b32_e32(v[73], v[22])) + k.emit(v_cvt_pk(v[73], v[73], v[73])) + k.emit(buffer_store_short(v[73], v[167], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[74], v[104], v[74])) + k.emit(v_add_f32_e32(v[22], v[103], v[74])) + k.emit(v_mov_b32_e32(v[74], v[22])) + k.emit(v_cvt_pk(v[74], v[74], v[74])) + k.emit(buffer_store_short(v[74], v[169], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[78], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[78], 2, v[78])) + k.emit(ds_read_b32(v[75], v[78])) + k.emit(ds_read_b32(v[76], v[78], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[77], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[77], v[30], v[77], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[82], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[82], 2, v[82])) + k.emit(ds_read_b32(v[79], v[82])) + k.emit(ds_read_b32(v[80], v[82], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[81], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[81], v[30], v[81], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[86], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[86], 2, v[86])) + k.emit(ds_read_b32(v[83], v[86])) + k.emit(ds_read_b32(v[84], v[86], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[85], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[85], v[30], v[85], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[90], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[90], 2, v[90])) + k.emit(ds_read_b32(v[87], v[90])) + k.emit(ds_read_b32(v[88], v[90], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[89], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[89], v[30], v[89], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[94], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[94], 2, v[94])) + k.emit(ds_read_b32(v[91], v[94])) + k.emit(ds_read_b32(v[92], v[94], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[93], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[93], v[30], v[93], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[98], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[98], 2, v[98])) + k.emit(ds_read_b32(v[95], v[98])) + k.emit(ds_read_b32(v[96], v[98], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[97], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[97], v[30], v[97], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[102], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[102], 2, v[102])) + k.emit(ds_read_b32(v[99], v[102])) + k.emit(ds_read_b32(v[100], v[102], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[101], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[101], v[30], v[101], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[106], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[106], 2, v[106])) + k.emit(ds_read_b32(v[103], v[106])) + k.emit(ds_read_b32(v[104], v[106], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[105], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[105], v[30], v[105], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[108], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[108], 2, v[108])) + k.emit(v_add_lshl_u32_e64(v[107], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[107], v[30], v[107], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[110], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[110], 2, v[110])) + k.emit(v_add_lshl_u32_e64(v[109], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[109], v[30], v[109], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[112], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[112], 2, v[112])) + k.emit(v_add_lshl_u32_e64(v[111], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[111], v[30], v[111], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[114], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[114], 2, v[114])) + k.emit(v_add_lshl_u32_e64(v[113], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[113], v[30], v[113], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[116], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[116], 2, v[116])) + k.emit(v_add_lshl_u32_e64(v[115], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[115], v[30], v[115], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[118], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[118], 2, v[118])) + k.emit(v_add_lshl_u32_e64(v[117], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[117], v[30], v[117], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[120], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[120], 2, v[120])) + k.emit(v_add_lshl_u32_e64(v[119], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[119], v[30], v[119], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[122], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[122], 2, v[122])) + k.emit(v_add_lshl_u32_e64(v[121], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[121], v[30], v[121], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[124], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[124], 2, v[124])) + k.emit(v_add_lshl_u32_e64(v[123], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[123], v[30], v[123], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[126], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[126], 2, v[126])) + k.emit(v_add_lshl_u32_e64(v[125], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[125], v[30], v[125], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[128], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[128], 2, v[128])) + k.emit(v_add_lshl_u32_e64(v[127], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[127], v[30], v[127], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[130], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[130], 2, v[130])) + k.emit(v_add_lshl_u32_e64(v[129], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[129], v[30], v[129], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[132], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[132], 2, v[132])) + k.emit(v_add_lshl_u32_e64(v[131], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[131], v[30], v[131], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[134], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[134], 2, v[134])) + k.emit(v_add_lshl_u32_e64(v[133], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[133], v[30], v[133], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[136], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[136], 2, v[136])) + k.emit(v_add_lshl_u32_e64(v[135], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[135], v[30], v[135], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[138], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[138], 2, v[138])) + k.emit(v_add_lshl_u32_e64(v[137], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[137], v[30], v[137], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[140], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[140], 2, v[140])) + k.emit(v_add_lshl_u32_e64(v[139], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[139], v[30], v[139], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[142], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[142], 2, v[142])) + k.emit(v_add_lshl_u32_e64(v[141], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[141], v[30], v[141], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[144], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[144], 2, v[144])) + k.emit(v_add_lshl_u32_e64(v[143], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[143], v[30], v[143], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[146], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[146], 2, v[146])) + k.emit(v_add_lshl_u32_e64(v[145], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[145], v[30], v[145], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[148], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[148], 2, v[148])) + k.emit(v_add_lshl_u32_e64(v[147], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[147], v[30], v[147], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[150], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[150], 2, v[150])) + k.emit(v_add_lshl_u32_e64(v[149], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[149], v[30], v[149], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[152], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[152], 2, v[152])) + k.emit(v_add_lshl_u32_e64(v[151], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[151], v[30], v[151], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[154], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[154], 2, v[154])) + k.emit(v_add_lshl_u32_e64(v[153], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[153], v[30], v[153], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[156], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[156], 2, v[156])) + k.emit(v_add_lshl_u32_e64(v[155], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[155], v[30], v[155], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[158], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[158], 2, v[158])) + k.emit(v_add_lshl_u32_e64(v[157], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[157], v[30], v[157], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[160], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[160], 2, v[160])) + k.emit(v_add_lshl_u32_e64(v[159], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[159], v[30], v[159], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[162], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[162], 2, v[162])) + k.emit(v_add_lshl_u32_e64(v[161], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[161], v[30], v[161], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[164], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[164], 2, v[164])) + k.emit(v_add_lshl_u32_e64(v[163], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[163], v[30], v[163], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[166], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[166], 2, v[166])) + k.emit(v_add_lshl_u32_e64(v[165], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[165], v[30], v[165], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[168], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[168], 2, v[168])) + k.emit(v_add_lshl_u32_e64(v[167], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[167], v[30], v[167], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[170], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[170], 2, v[170])) + k.emit(v_add_lshl_u32_e64(v[169], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[169], v[30], v[169], s[82:83])) + k.emit(v_accvgpr_read(v[35], v[35])) + k.emit(v_accvgpr_read(v[36], v[39])) + k.emit(v_accvgpr_read(v[37], v[43])) + k.emit(v_accvgpr_read(v[38], v[47])) + k.emit(v_accvgpr_read(v[39], v[51])) + k.emit(v_accvgpr_read(v[40], v[55])) + k.emit(v_accvgpr_read(v[41], v[59])) + k.emit(v_accvgpr_read(v[42], v[63])) + k.emit(v_accvgpr_read(v[43], v[67])) + k.emit(v_accvgpr_read(v[44], v[71])) + k.emit(v_accvgpr_read(v[45], v[75])) + k.emit(v_accvgpr_read(v[46], v[79])) + k.emit(v_accvgpr_read(v[47], v[83])) + k.emit(v_accvgpr_read(v[48], v[87])) + k.emit(v_accvgpr_read(v[49], v[91])) + k.emit(v_accvgpr_read(v[50], v[95])) + k.emit(v_accvgpr_read(v[51], v[99])) + k.emit(v_accvgpr_read(v[52], v[103])) + k.emit(v_accvgpr_read(v[53], v[107])) + k.emit(v_accvgpr_read(v[54], v[111])) + k.emit(v_accvgpr_read(v[55], v[115])) + k.emit(v_accvgpr_read(v[56], v[119])) + k.emit(v_accvgpr_read(v[57], v[123])) + k.emit(v_accvgpr_read(v[58], v[127])) + k.emit(v_accvgpr_read(v[59], v[131])) + k.emit(v_accvgpr_read(v[60], v[135])) + k.emit(v_accvgpr_read(v[61], v[139])) + k.emit(v_accvgpr_read(v[62], v[143])) + k.emit(v_accvgpr_read(v[63], v[147])) + k.emit(v_accvgpr_read(v[64], v[151])) + k.emit(v_accvgpr_read(v[65], v[155])) + k.emit(v_accvgpr_read(v[66], v[159])) + k.emit(v_accvgpr_read(v[67], v[163])) + k.emit(v_accvgpr_read(v[68], v[167])) + k.emit(v_accvgpr_read(v[69], v[171])) + k.emit(v_accvgpr_read(v[70], v[175])) + k.emit(v_accvgpr_read(v[71], v[179])) + k.emit(v_accvgpr_read(v[72], v[183])) + k.emit(v_accvgpr_read(v[73], v[187])) + k.emit(v_accvgpr_read(v[74], v[191])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_mul_f32_e32(v[35], v[76], v[35])) + k.emit(v_add_f32_e32(v[22], v[75], v[35])) + k.emit(v_mov_b32_e32(v[35], v[22])) + k.emit(v_cvt_pk(v[35], v[35], v[35])) + k.emit(buffer_store_short(v[35], v[77], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[36], v[80], v[36])) + k.emit(v_add_f32_e32(v[22], v[79], v[36])) + k.emit(v_mov_b32_e32(v[36], v[22])) + k.emit(v_cvt_pk(v[36], v[36], v[36])) + k.emit(buffer_store_short(v[36], v[81], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[37], v[84], v[37])) + k.emit(v_add_f32_e32(v[22], v[83], v[37])) + k.emit(v_mov_b32_e32(v[37], v[22])) + k.emit(v_cvt_pk(v[37], v[37], v[37])) + k.emit(buffer_store_short(v[37], v[85], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[38], v[88], v[38])) + k.emit(v_add_f32_e32(v[22], v[87], v[38])) + k.emit(v_mov_b32_e32(v[38], v[22])) + k.emit(v_cvt_pk(v[38], v[38], v[38])) + k.emit(buffer_store_short(v[38], v[89], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[39], v[92], v[39])) + k.emit(v_add_f32_e32(v[22], v[91], v[39])) + k.emit(v_mov_b32_e32(v[39], v[22])) + k.emit(v_cvt_pk(v[39], v[39], v[39])) + k.emit(buffer_store_short(v[39], v[93], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[40], v[96], v[40])) + k.emit(v_add_f32_e32(v[22], v[95], v[40])) + k.emit(v_mov_b32_e32(v[40], v[22])) + k.emit(v_cvt_pk(v[40], v[40], v[40])) + k.emit(buffer_store_short(v[40], v[97], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[41], v[100], v[41])) + k.emit(v_add_f32_e32(v[22], v[99], v[41])) + k.emit(v_mov_b32_e32(v[41], v[22])) + k.emit(v_cvt_pk(v[41], v[41], v[41])) + k.emit(buffer_store_short(v[41], v[101], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[42], v[104], v[42])) + k.emit(v_add_f32_e32(v[22], v[103], v[42])) + k.emit(v_mov_b32_e32(v[42], v[22])) + k.emit(v_cvt_pk(v[42], v[42], v[42])) + k.emit(buffer_store_short(v[42], v[105], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[43], v[76], v[43])) + k.emit(v_add_f32_e32(v[22], v[75], v[43])) + k.emit(v_mov_b32_e32(v[43], v[22])) + k.emit(v_cvt_pk(v[43], v[43], v[43])) + k.emit(buffer_store_short(v[43], v[107], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[44], v[80], v[44])) + k.emit(v_add_f32_e32(v[22], v[79], v[44])) + k.emit(v_mov_b32_e32(v[44], v[22])) + k.emit(v_cvt_pk(v[44], v[44], v[44])) + k.emit(buffer_store_short(v[44], v[109], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[45], v[84], v[45])) + k.emit(v_add_f32_e32(v[22], v[83], v[45])) + k.emit(v_mov_b32_e32(v[45], v[22])) + k.emit(v_cvt_pk(v[45], v[45], v[45])) + k.emit(buffer_store_short(v[45], v[111], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[46], v[88], v[46])) + k.emit(v_add_f32_e32(v[22], v[87], v[46])) + k.emit(v_mov_b32_e32(v[46], v[22])) + k.emit(v_cvt_pk(v[46], v[46], v[46])) + k.emit(buffer_store_short(v[46], v[113], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[47], v[92], v[47])) + k.emit(v_add_f32_e32(v[22], v[91], v[47])) + k.emit(v_mov_b32_e32(v[47], v[22])) + k.emit(v_cvt_pk(v[47], v[47], v[47])) + k.emit(buffer_store_short(v[47], v[115], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[48], v[96], v[48])) + k.emit(v_add_f32_e32(v[22], v[95], v[48])) + k.emit(v_mov_b32_e32(v[48], v[22])) + k.emit(v_cvt_pk(v[48], v[48], v[48])) + k.emit(buffer_store_short(v[48], v[117], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[49], v[100], v[49])) + k.emit(v_add_f32_e32(v[22], v[99], v[49])) + k.emit(v_mov_b32_e32(v[49], v[22])) + k.emit(v_cvt_pk(v[49], v[49], v[49])) + k.emit(buffer_store_short(v[49], v[119], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[50], v[104], v[50])) + k.emit(v_add_f32_e32(v[22], v[103], v[50])) + k.emit(v_mov_b32_e32(v[50], v[22])) + k.emit(v_cvt_pk(v[50], v[50], v[50])) + k.emit(buffer_store_short(v[50], v[121], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[51], v[76], v[51])) + k.emit(v_add_f32_e32(v[22], v[75], v[51])) + k.emit(v_mov_b32_e32(v[51], v[22])) + k.emit(v_cvt_pk(v[51], v[51], v[51])) + k.emit(buffer_store_short(v[51], v[123], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[52], v[80], v[52])) + k.emit(v_add_f32_e32(v[22], v[79], v[52])) + k.emit(v_mov_b32_e32(v[52], v[22])) + k.emit(v_cvt_pk(v[52], v[52], v[52])) + k.emit(buffer_store_short(v[52], v[125], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[53], v[84], v[53])) + k.emit(v_add_f32_e32(v[22], v[83], v[53])) + k.emit(v_mov_b32_e32(v[53], v[22])) + k.emit(v_cvt_pk(v[53], v[53], v[53])) + k.emit(buffer_store_short(v[53], v[127], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[54], v[88], v[54])) + k.emit(v_add_f32_e32(v[22], v[87], v[54])) + k.emit(v_mov_b32_e32(v[54], v[22])) + k.emit(v_cvt_pk(v[54], v[54], v[54])) + k.emit(buffer_store_short(v[54], v[129], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[55], v[92], v[55])) + k.emit(v_add_f32_e32(v[22], v[91], v[55])) + k.emit(v_mov_b32_e32(v[55], v[22])) + k.emit(v_cvt_pk(v[55], v[55], v[55])) + k.emit(buffer_store_short(v[55], v[131], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[56], v[96], v[56])) + k.emit(v_add_f32_e32(v[22], v[95], v[56])) + k.emit(v_mov_b32_e32(v[56], v[22])) + k.emit(v_cvt_pk(v[56], v[56], v[56])) + k.emit(buffer_store_short(v[56], v[133], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[57], v[100], v[57])) + k.emit(v_add_f32_e32(v[22], v[99], v[57])) + k.emit(v_mov_b32_e32(v[57], v[22])) + k.emit(v_cvt_pk(v[57], v[57], v[57])) + k.emit(buffer_store_short(v[57], v[135], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[58], v[104], v[58])) + k.emit(v_add_f32_e32(v[22], v[103], v[58])) + k.emit(v_mov_b32_e32(v[58], v[22])) + k.emit(v_cvt_pk(v[58], v[58], v[58])) + k.emit(buffer_store_short(v[58], v[137], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[59], v[76], v[59])) + k.emit(v_add_f32_e32(v[22], v[75], v[59])) + k.emit(v_mov_b32_e32(v[59], v[22])) + k.emit(v_cvt_pk(v[59], v[59], v[59])) + k.emit(buffer_store_short(v[59], v[139], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[60], v[80], v[60])) + k.emit(v_add_f32_e32(v[22], v[79], v[60])) + k.emit(v_mov_b32_e32(v[60], v[22])) + k.emit(v_cvt_pk(v[60], v[60], v[60])) + k.emit(buffer_store_short(v[60], v[141], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[61], v[84], v[61])) + k.emit(v_add_f32_e32(v[22], v[83], v[61])) + k.emit(v_mov_b32_e32(v[61], v[22])) + k.emit(v_cvt_pk(v[61], v[61], v[61])) + k.emit(buffer_store_short(v[61], v[143], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[62], v[88], v[62])) + k.emit(v_add_f32_e32(v[22], v[87], v[62])) + k.emit(v_mov_b32_e32(v[62], v[22])) + k.emit(v_cvt_pk(v[62], v[62], v[62])) + k.emit(buffer_store_short(v[62], v[145], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[63], v[92], v[63])) + k.emit(v_add_f32_e32(v[22], v[91], v[63])) + k.emit(v_mov_b32_e32(v[63], v[22])) + k.emit(v_cvt_pk(v[63], v[63], v[63])) + k.emit(buffer_store_short(v[63], v[147], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[64], v[96], v[64])) + k.emit(v_add_f32_e32(v[22], v[95], v[64])) + k.emit(v_mov_b32_e32(v[64], v[22])) + k.emit(v_cvt_pk(v[64], v[64], v[64])) + k.emit(buffer_store_short(v[64], v[149], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[65], v[100], v[65])) + k.emit(v_add_f32_e32(v[22], v[99], v[65])) + k.emit(v_mov_b32_e32(v[65], v[22])) + k.emit(v_cvt_pk(v[65], v[65], v[65])) + k.emit(buffer_store_short(v[65], v[151], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[66], v[104], v[66])) + k.emit(v_add_f32_e32(v[22], v[103], v[66])) + k.emit(v_mov_b32_e32(v[66], v[22])) + k.emit(v_cvt_pk(v[66], v[66], v[66])) + k.emit(buffer_store_short(v[66], v[153], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[67], v[76], v[67])) + k.emit(v_add_f32_e32(v[22], v[75], v[67])) + k.emit(v_mov_b32_e32(v[67], v[22])) + k.emit(v_cvt_pk(v[67], v[67], v[67])) + k.emit(buffer_store_short(v[67], v[155], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[68], v[80], v[68])) + k.emit(v_add_f32_e32(v[22], v[79], v[68])) + k.emit(v_mov_b32_e32(v[68], v[22])) + k.emit(v_cvt_pk(v[68], v[68], v[68])) + k.emit(buffer_store_short(v[68], v[157], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[69], v[84], v[69])) + k.emit(v_add_f32_e32(v[22], v[83], v[69])) + k.emit(v_mov_b32_e32(v[69], v[22])) + k.emit(v_cvt_pk(v[69], v[69], v[69])) + k.emit(buffer_store_short(v[69], v[159], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[70], v[88], v[70])) + k.emit(v_add_f32_e32(v[22], v[87], v[70])) + k.emit(v_mov_b32_e32(v[70], v[22])) + k.emit(v_cvt_pk(v[70], v[70], v[70])) + k.emit(buffer_store_short(v[70], v[161], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[71], v[92], v[71])) + k.emit(v_add_f32_e32(v[22], v[91], v[71])) + k.emit(v_mov_b32_e32(v[71], v[22])) + k.emit(v_cvt_pk(v[71], v[71], v[71])) + k.emit(buffer_store_short(v[71], v[163], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[72], v[96], v[72])) + k.emit(v_add_f32_e32(v[22], v[95], v[72])) + k.emit(v_mov_b32_e32(v[72], v[22])) + k.emit(v_cvt_pk(v[72], v[72], v[72])) + k.emit(buffer_store_short(v[72], v[165], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[73], v[100], v[73])) + k.emit(v_add_f32_e32(v[22], v[99], v[73])) + k.emit(v_mov_b32_e32(v[73], v[22])) + k.emit(v_cvt_pk(v[73], v[73], v[73])) + k.emit(buffer_store_short(v[73], v[167], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[74], v[104], v[74])) + k.emit(v_add_f32_e32(v[22], v[103], v[74])) + k.emit(v_mov_b32_e32(v[74], v[22])) + k.emit(v_cvt_pk(v[74], v[74], v[74])) + k.emit(buffer_store_short(v[74], v[169], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(v_mov_b32_e32(v[30], 2147483648)) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[54], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[54], 2, v[54])) + k.emit(ds_read_b32(v[51], v[54])) + k.emit(ds_read_b32(v[52], v[54], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[53], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[53], v[30], v[53], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[58], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[58], 2, v[58])) + k.emit(ds_read_b32(v[55], v[58])) + k.emit(ds_read_b32(v[56], v[58], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[57], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[57], v[30], v[57], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[62], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[62], 2, v[62])) + k.emit(ds_read_b32(v[59], v[62])) + k.emit(ds_read_b32(v[60], v[62], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[61], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[61], v[30], v[61], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[66], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[66], 2, v[66])) + k.emit(ds_read_b32(v[63], v[66])) + k.emit(ds_read_b32(v[64], v[66], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[65], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[65], v[30], v[65], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[70], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[70], 2, v[70])) + k.emit(ds_read_b32(v[67], v[70])) + k.emit(ds_read_b32(v[68], v[70], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[69], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[69], v[30], v[69], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[74], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[74], 2, v[74])) + k.emit(ds_read_b32(v[71], v[74])) + k.emit(ds_read_b32(v[72], v[74], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[73], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[73], v[30], v[73], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[78], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[78], 2, v[78])) + k.emit(ds_read_b32(v[75], v[78])) + k.emit(ds_read_b32(v[76], v[78], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[77], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[77], v[30], v[77], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[82], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[82], 2, v[82])) + k.emit(ds_read_b32(v[79], v[82])) + k.emit(ds_read_b32(v[80], v[82], v[0], v[0], 0, 0, 4)) + k.emit(v_add_lshl_u32_e64(v[81], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[81], v[30], v[81], s[82:83])) + k.emit(v_add_co_u32(v[19], VCC, v[19], 1)) + k.emit(v_add_u32_e64(v[20], v[20], s[38])) + k.emit(v_add_u32_e64(v[21], v[21], s[36])) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[18], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[84], v[18], s[78])) + k.emit(v_lshlrev_b32_e32(v[84], 2, v[84])) + k.emit(v_add_lshl_u32_e64(v[83], v[21], v[18], 1)) + k.emit(v_cndmask_b32_e64(v[83], v[30], v[83], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 1)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[86], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[86], 2, v[86])) + k.emit(v_add_lshl_u32_e64(v[85], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[85], v[30], v[85], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 2)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[88], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[88], 2, v[88])) + k.emit(v_add_lshl_u32_e64(v[87], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[87], v[30], v[87], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 3)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[90], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[90], 2, v[90])) + k.emit(v_add_lshl_u32_e64(v[89], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[89], v[30], v[89], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 4)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[92], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[92], 2, v[92])) + k.emit(v_add_lshl_u32_e64(v[91], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[91], v[30], v[91], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 5)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[94], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[94], 2, v[94])) + k.emit(v_add_lshl_u32_e64(v[93], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[93], v[30], v[93], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 6)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[96], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[96], 2, v[96])) + k.emit(v_add_lshl_u32_e64(v[95], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[95], v[30], v[95], s[82:83])) + k.emit(v_add_co_u32(v[22], VCC, v[18], 7)) + k.emit(v_cmp_lt_u32_e64(s[78:79], v[22], s[20])) + k.emit(v_cmp_lt_u32_e64(s[82:83], v[19], s[21])) + k.emit(s_and_b64(s[82:83], s[78:79], s[82:83])) + k.emit(s_mul_i32(s[78], 256, s[2])) + k.emit(v_sub_u32_e64(v[98], v[22], s[78])) + k.emit(v_lshlrev_b32_e32(v[98], 2, v[98])) + k.emit(v_add_lshl_u32_e64(v[97], v[21], v[22], 1)) + k.emit(v_cndmask_b32_e64(v[97], v[30], v[97], s[82:83])) + k.emit(v_accvgpr_read(v[35], v[195])) + k.emit(v_accvgpr_read(v[36], v[199])) + k.emit(v_accvgpr_read(v[37], v[203])) + k.emit(v_accvgpr_read(v[38], v[207])) + k.emit(v_accvgpr_read(v[39], v[211])) + k.emit(v_accvgpr_read(v[40], v[215])) + k.emit(v_accvgpr_read(v[41], v[219])) + k.emit(v_accvgpr_read(v[42], v[223])) + k.emit(v_accvgpr_read(v[43], v[227])) + k.emit(v_accvgpr_read(v[44], v[231])) + k.emit(v_accvgpr_read(v[45], v[235])) + k.emit(v_accvgpr_read(v[46], v[239])) + k.emit(v_accvgpr_read(v[47], v[243])) + k.emit(v_accvgpr_read(v[48], v[247])) + k.emit(v_accvgpr_read(v[49], v[251])) + k.emit(v_accvgpr_read(v[50], v[255])) + k.waitcnt(lgkm=0) + k.emit(v_mov_b32_e32(v[32], 4294901760)) + k.emit(v_mov_b32_e32(v[33], 2147418112)) + k.emit(v_mov_b32_e32(v[34], 32767)) + k.emit(v_mul_f32_e32(v[35], v[52], v[35])) + k.emit(v_add_f32_e32(v[22], v[51], v[35])) + k.emit(v_mov_b32_e32(v[35], v[22])) + k.emit(v_cvt_pk(v[35], v[35], v[35])) + k.emit(buffer_store_short(v[35], v[53], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[36], v[56], v[36])) + k.emit(v_add_f32_e32(v[22], v[55], v[36])) + k.emit(v_mov_b32_e32(v[36], v[22])) + k.emit(v_cvt_pk(v[36], v[36], v[36])) + k.emit(buffer_store_short(v[36], v[57], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[37], v[60], v[37])) + k.emit(v_add_f32_e32(v[22], v[59], v[37])) + k.emit(v_mov_b32_e32(v[37], v[22])) + k.emit(v_cvt_pk(v[37], v[37], v[37])) + k.emit(buffer_store_short(v[37], v[61], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[38], v[64], v[38])) + k.emit(v_add_f32_e32(v[22], v[63], v[38])) + k.emit(v_mov_b32_e32(v[38], v[22])) + k.emit(v_cvt_pk(v[38], v[38], v[38])) + k.emit(buffer_store_short(v[38], v[65], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[39], v[68], v[39])) + k.emit(v_add_f32_e32(v[22], v[67], v[39])) + k.emit(v_mov_b32_e32(v[39], v[22])) + k.emit(v_cvt_pk(v[39], v[39], v[39])) + k.emit(buffer_store_short(v[39], v[69], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[40], v[72], v[40])) + k.emit(v_add_f32_e32(v[22], v[71], v[40])) + k.emit(v_mov_b32_e32(v[40], v[22])) + k.emit(v_cvt_pk(v[40], v[40], v[40])) + k.emit(buffer_store_short(v[40], v[73], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[41], v[76], v[41])) + k.emit(v_add_f32_e32(v[22], v[75], v[41])) + k.emit(v_mov_b32_e32(v[41], v[22])) + k.emit(v_cvt_pk(v[41], v[41], v[41])) + k.emit(buffer_store_short(v[41], v[77], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[42], v[80], v[42])) + k.emit(v_add_f32_e32(v[22], v[79], v[42])) + k.emit(v_mov_b32_e32(v[42], v[22])) + k.emit(v_cvt_pk(v[42], v[42], v[42])) + k.emit(buffer_store_short(v[42], v[81], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[43], v[52], v[43])) + k.emit(v_add_f32_e32(v[22], v[51], v[43])) + k.emit(v_mov_b32_e32(v[43], v[22])) + k.emit(v_cvt_pk(v[43], v[43], v[43])) + k.emit(buffer_store_short(v[43], v[83], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[44], v[56], v[44])) + k.emit(v_add_f32_e32(v[22], v[55], v[44])) + k.emit(v_mov_b32_e32(v[44], v[22])) + k.emit(v_cvt_pk(v[44], v[44], v[44])) + k.emit(buffer_store_short(v[44], v[85], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[45], v[60], v[45])) + k.emit(v_add_f32_e32(v[22], v[59], v[45])) + k.emit(v_mov_b32_e32(v[45], v[22])) + k.emit(v_cvt_pk(v[45], v[45], v[45])) + k.emit(buffer_store_short(v[45], v[87], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[46], v[64], v[46])) + k.emit(v_add_f32_e32(v[22], v[63], v[46])) + k.emit(v_mov_b32_e32(v[46], v[22])) + k.emit(v_cvt_pk(v[46], v[46], v[46])) + k.emit(buffer_store_short(v[46], v[89], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[47], v[68], v[47])) + k.emit(v_add_f32_e32(v[22], v[67], v[47])) + k.emit(v_mov_b32_e32(v[47], v[22])) + k.emit(v_cvt_pk(v[47], v[47], v[47])) + k.emit(buffer_store_short(v[47], v[91], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[48], v[72], v[48])) + k.emit(v_add_f32_e32(v[22], v[71], v[48])) + k.emit(v_mov_b32_e32(v[48], v[22])) + k.emit(v_cvt_pk(v[48], v[48], v[48])) + k.emit(buffer_store_short(v[48], v[93], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[49], v[76], v[49])) + k.emit(v_add_f32_e32(v[22], v[75], v[49])) + k.emit(v_mov_b32_e32(v[49], v[22])) + k.emit(v_cvt_pk(v[49], v[49], v[49])) + k.emit(buffer_store_short(v[49], v[95], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(v_mul_f32_e32(v[50], v[80], v[50])) + k.emit(v_add_f32_e32(v[22], v[79], v[50])) + k.emit(v_mov_b32_e32(v[50], v[22])) + k.emit(v_cvt_pk(v[50], v[50], v[50])) + k.emit(buffer_store_short(v[50], v[97], s[12:15], 0, 0, 1, 0, 0, 0, 0, 0, 1)) + k.emit(s_nop()) + k.emit(s_branch(), target='GW_End_1') + k.label('GW_End_1') + k.emit(s_cmp_ge_u32(s[58], s[59])) + k.emit(s_cbranch_scc1(), target='KernelEnd') + k.emit(s_branch(), target='PersistentLoopStart') + k.label('KernelEnd') + k.emit(s_endpgm()) + return k diff --git a/extra/gemm/asm/cdna/gemm.py b/extra/gemm/asm/cdna/gemm.py new file mode 100644 index 0000000000..1201966715 --- /dev/null +++ b/extra/gemm/asm/cdna/gemm.py @@ -0,0 +1,95 @@ +import atexit, functools +from tinygrad.runtime.support.compiler_amd import HIPCompiler +from tinygrad import Tensor, Device, dtypes +from tinygrad.uop.ops import UOp, Ops, KernelInfo, AxisType +from tinygrad.renderer import Estimates +from tinygrad.helpers import getenv, all_same, dedup +from extra.gemm.asm.cdna.asm import build_kernel, GEMM_ARGS + +# ** CDNA4 assembly gemm + +WORKGROUP_SIZE = 256 + +def custom_asm_gemm(C:UOp, A:UOp, B:UOp, dname:str, arch:str, wg:int) -> UOp: + batch, M, K = A.shape + K2, N = B.shape[(1 if B.ndim == 3 else 0):] + assert K == K2 + lidx = UOp.special(WORKGROUP_SIZE, "lidx0") + gidx = UOp.special(wg, "gidx0") + k = build_kernel(batch, M, N, K, A.dtype.base) + sink = UOp.sink(C.base, A.base, B.base, lidx, gidx, + arg=KernelInfo(name=k.name, estimates=Estimates(ops=2*batch*M*N*K, mem=(batch*M*K + K*N + batch*M*N)*2))) + binary = HIPCompiler(arch).compile(k.to_asm()) + return UOp(Ops.PROGRAM, src=(sink, UOp(Ops.DEVICE, arg=dname), UOp(Ops.LINEAR, src=(*sink.src, sink)), + UOp(Ops.SOURCE, arg=k.to_text()), UOp(Ops.BINARY, arg=binary))) + +counters = {"used":0, "todos":[]} +def todo(msg:str) -> bool: counters["todos"].append(msg); return False +atexit.register(lambda: print(f'asm_gemm: {counters["used"]} used, {len(counters["todos"])} not used')) + +def can_use_asm_gemm(a:Tensor, b:Tensor) -> bool: + if a.dtype != b.dtype: return todo(f"dtypes must match {a.dtype} != {b.dtype}") + if a.dtype not in {dtypes.bfloat16, dtypes.float16}: return todo(f"only bfloat16/float16, got {a.dtype}") + # only sharding on the batch is tested, others might work too + if isinstance(a.device, tuple) and not (a.ndim == 3 and a.uop.axis == 0 and b.uop.axis is None): + return todo(f"sharding mismatch a.ndim={a.ndim} a.uop.axis={a.uop.axis} b.uop.axis={b.uop.axis}") + batch, M, K = (1, *a.shape) if a.ndim == 2 else a.shape + N = b.shape[1] + if isinstance(a.device, tuple): batch //= len(a.device) + if batch not in {1, 2}: return todo(f"GEMM batch size {batch}") + if (key:=(M, N, K)) not in GEMM_ARGS: return todo(f"GEMM shape not supported {key}") + return True + +# ** UOp gemm to test Tensor.custom_kernel multi and backward correctness on non cdna4 +# note: this can be removed after we have GEMM on mixins + +def custom_uop_gemm(C:UOp, A:UOp, B:UOp) -> UOp: + M, K = A.shape[0]*A.shape[1], A.shape[2] + K2, N = B.shape[(1 if B.ndim == 3 else 0):] + assert K == K2 + m = UOp.range(M, 1, AxisType.LOOP) + n = UOp.range(N, 2, AxisType.LOOP) + k = UOp.range(K, 0, AxisType.REDUCE) + mul = (A.index((m*UOp.const(dtypes.index, K)+k))*B.index((k*UOp.const(dtypes.index, N)+n))).cast(dtypes.float32) + red = mul.reduce(k, arg=Ops.ADD, dtype=dtypes.float32).cast(C.dtype.base) + store = C.index((m*UOp.const(dtypes.index, N)+n), ptr=True).store(red).end(m, n) + return store.sink(arg=KernelInfo(name=f'uop_gemm_{M}_{N}_{K}')) + +# ** backward gemm, might use the asm gemm + +def custom_gemm_bw(gradient:UOp, kernel:UOp): + out, a, b = kernel.src + assert all_same([gradient.device, a.device, b.device, out.device]) + a_t, b_t, g_t = Tensor(a, device=a.device), Tensor(b, device=a.device), Tensor(gradient, device=a.device) + grad_a = (g_t @ b_t.T).uop + a_T = a_t.transpose(-2, -1) + a_T = a_T.reshape(*a_T.shape[:-1], 1, a_T.shape[-1]) + g_r = g_t.reshape(*g_t.shape[:-2], 1, *g_t.shape[-2:]).transpose(-1, -2) + grad_b = (a_T * g_r).sum((-1, 0)).uop + return (None, grad_a, grad_b) + +# ** main gemm function + +def asm_gemm(a:Tensor, b:Tensor) -> Tensor: + assert can_use_asm_gemm(a, b), f"{counters['todos'][-1]}" + counters["used"] += 1 + squeeze = a.ndim == 2 + if squeeze: a = a.unsqueeze(0) + + batch, M, K = a.shape + N = b.shape[1] + is_multi = isinstance(a.device, tuple) + + if is_multi: + out = Tensor(Tensor.empty(batch//len(a.device), M, N, dtype=a.dtype, device=a.device).uop.multi(0), device=a.device) + else: + out = Tensor.empty(batch, M, N, dtype=a.dtype, device=a.device) + + dname = a.device[0] if is_multi else a.device + arch = getattr(Device[dname].renderer, "arch", None) + if arch.startswith("gfx950") and getenv("USE_ASM", 1): + numWG = GEMM_ARGS[(M, N, K)][0] + out = Tensor.custom_kernel(out, a, b, fxn=functools.partial(custom_asm_gemm, dname=dname, wg=numWG, arch=arch), grad_fxn=custom_gemm_bw)[0] + else: + out = Tensor.custom_kernel(out, a, b, fxn=custom_uop_gemm, grad_fxn=custom_gemm_bw)[0] + return out.squeeze(0) if squeeze else out diff --git a/extra/gemm/asm/cdna/gemm.s b/extra/gemm/asm/cdna/gemm.s deleted file mode 100644 index 81bc04e12f..0000000000 --- a/extra/gemm/asm/cdna/gemm.s +++ /dev/null @@ -1,1621 +0,0 @@ - // ** global buffers - s_load_dwordx2 s[28:29], s[0:1], 0x0 // C - s_load_dwordx2 s[34:35], s[0:1], 0x08 // A - s_load_dwordx2 s[32:33], s[0:1], 0x10 // B - // ** others kernel args - s_load_dword s24, s[0:1], 0x18 // N - s_waitcnt lgkmcnt(0) - // "info" - s_mov_b32 s51, 1 // gemm_info = 1 - s_mov_b32 s53, 1 // kernel_info0 = 1 - s_mov_b32 s11, 0x40010020 // kernel_info1 = 0x40010020 - // sizes / strides - s_mov_b32 s25, s24 // sizesFree1 = N - s_mov_b32 s26, 1 // sizesFree2 = BATCH - s_mov_b32 s27, s24 // sizesSum0 = K (== N) - // Strides: major=N, minor=0 (addr = base + idx0*N + idx1*0) - s_mov_b32 s36, s24 // strideD0 - s_mov_b32 s37, 0 // strideD1 - s_mov_b32 s38, s24 // strideC0 - s_mov_b32 s39, 0 // strideC1 - s_mov_b32 s40, s24 // strideA0 - s_mov_b32 s41, 0 // strideA1 - s_mov_b32 s42, s24 // strideB0 - s_mov_b32 s43, 0 // strideB1 - // ** workgroup mapping - s_lshr_b32 s52, s51, 30 // 000000002924: 8F349E33 - s_and_b32 s51, 0x3fffffff, s51 // 000000002928: 863333FF 3FFFFFFF - s_cmp_eq_u32 s52, 0 // 000000002930: BF068034 - s_and_b32 s10, s53, 0xffff0000 // 000000002A70: 860AFF35 FFFF0000 - s_lshr_b32 s10, s10, 16 // 000000002A78: 8F0A900A - s_and_b32 s50, s53, 0xffff // 000000002A7C: 8632FF35 0000FFFF - s_mov_b32 s5, s52 // 000000002A84: BE850034 - s_mov_b32 m0, 0x20800 // 000000002A88: BEFC00FF 00020800 - v_mov_b32_e32 v134, v0 // 000000002A90: 7F0C0300 - s_lshr_b32 s60, s11, 16 // 000000002A94: 8F3C900B - s_ff1_i32_b32 s60, s60 // 000000002A98: BEBC103C - s_lshr_b32 s61, s11, 22 // 000000002A9C: 8F3D960B - v_and_b32_e32 v5, 63, v134 // 000000002BB0: 260B0CBF - v_and_b32_e32 v4, 15, v5 // 000000002BB4: 26080A8F - v_lshlrev_b32_e32 v4, 6, v4 // 000000002BB8: 24080886 - v_lshlrev_b32_e32 v4, 3, v4 // 000000002BBC: 24080883 - v_lshrrev_b32_e32 v5, 4, v5 // 000000002BC0: 200A0A84 - v_lshl_add_u32 v4, v5, 3, v4 // 000000002BC4: D1FD0004 04110705 - v_lshrrev_b32_e32 v8, 6, v134 // 000000002BCC: 20110C86 - v_and_b32_e32 v8, 1, v8 // 000000002BD0: 26101081 - v_lshl_add_u32 v4, v8, 13, v4 // 000000002BD4: D1FD0004 04111B08 - v_and_b32_e32 v6, 63, v134 // 000000002BDC: 260D0CBF - v_and_b32_e32 v5, 15, v6 // 000000002BE0: 260A0C8F - v_lshlrev_b32_e32 v5, 6, v5 // 000000002BE4: 240A0A86 - v_lshlrev_b32_e32 v5, 3, v5 // 000000002BE8: 240A0A83 - v_lshrrev_b32_e32 v6, 4, v6 // 000000002BEC: 200C0C84 - v_lshl_add_u32 v5, v6, 3, v5 // 000000002BF0: D1FD0005 04150706 - v_lshrrev_b32_e32 v7, 7, v134 // 000000002BF8: 200F0C87 - v_and_b32_e32 v7, 1, v7 // 000000002BFC: 260E0E81 - v_lshl_add_u32 v5, v7, 13, v5 // 000000002C00: D1FD0005 04151B07 - v_lshrrev_b32_e32 v6, 6, v134 // 000000002C08: 200D0C86 - v_lshrrev_b32_e32 v6, 2, v6 // 000000002C0C: 200C0C82 - s_mov_b32 s53, 64 // 000000002C10: BEB500C0 - v_mul_lo_u32 v6, s53, v6 // 000000002C14: D2850006 00020C35 - v_add_lshl_u32 v2, v6, v4, 1 // 000000002C1C: D1FE0002 02060906 - v_lshrrev_b32_e32 v7, 10, v2 // 000000002C24: 200E048A - v_lshl_add_u32 v2, v7, 4, v2 // 000000002C28: D1FD0002 04090907 - v_lshrrev_b32_e32 v4, 6, v134 // 000000002C30: 20090C86 - v_lshrrev_b32_e32 v4, 2, v4 // 000000002C34: 20080882 - v_mul_lo_u32 v4, s53, v4 // 000000002C38: D2850004 00020835 - v_add_lshl_u32 v3, v4, v5, 1 // 000000002C40: D1FE0003 02060B04 - v_lshrrev_b32_e32 v6, 10, v3 // 000000002C48: 200C068A - v_lshl_add_u32 v3, v6, 4, v3 // 000000002C4C: D1FD0003 040D0906 - v_add_co_u32_e32 v3, vcc, 0x8200, v3 // 000000002C54: 320606FF 00008200 - v_add_u32_e32 v132, 0x10400, v2 // 000000002C5C: 690804FF 00010400 - v_xor_b32_e32 v132, v132, v2 // 000000002C64: 2B080584 - v_add_u32_e32 v133, 0x10400, v3 // 000000002C68: 690A06FF 00010400 - v_xor_b32_e32 v133, v133, v3 // 000000002C70: 2B0A0785 - v_lshrrev_b32_e32 v4, 3, v134 // 000000002C74: 20090C83 - v_and_b32_e32 v5, 7, v134 // 000000002C78: 260B0C87 - v_lshlrev_b32_e32 v5, 3, v5 // 000000002C7C: 240A0A83 - v_mov_b32_e32 v8, v5 // 000000002C80: 7E100305 - v_lshrrev_b32_e32 v6, 3, v134 // 000000002C84: 200D0C83 - v_and_b32_e32 v7, 7, v134 // 000000002C88: 260F0C87 - v_lshlrev_b32_e32 v7, 3, v7 // 000000002C8C: 240E0E83 - v_mov_b32_e32 v9, v7 // 000000002C90: 7E120307 - v_mul_u32_u24_e32 v10, 64, v4 // 000000002C94: 101408C0 - v_add_lshl_u32 v10, v8, v10, 1 // 000000002C98: D1FE000A 02061508 - v_lshrrev_b32_e32 v12, 10, v10 // 000000002CA0: 2018148A - v_lshl_add_u32 v10, v12, 4, v10 // 000000002CA4: D1FD000A 0429090C - s_nop 0 // 000000002CAC: BF800000 - v_readfirstlane_b32 s46, v10 // 000000002CB0: 7E5C050A - s_nop 0 // 000000002CB4: BF800000 - s_add_u32 s48, s46, 0x10400 // 000000002CB8: 8030FF2E 00010400 - s_xor_b32 s48, s48, s46 // 000000002CC0: 88302E30 - v_mul_u32_u24_e32 v10, 64, v6 // 000000002CC4: 10140CC0 - v_add_lshl_u32 v10, v9, v10, 1 // 000000002CC8: D1FE000A 02061509 - v_lshrrev_b32_e32 v12, 10, v10 // 000000002CD0: 2018148A - v_lshl_add_u32 v10, v12, 4, v10 // 000000002CD4: D1FD000A 0429090C - v_add_co_u32_e32 v10, vcc, 0x8200, v10 // 000000002CDC: 321414FF 00008200 - s_nop 0 // 000000002CE4: BF800000 - v_readfirstlane_b32 s47, v10 // 000000002CE8: 7E5E050A - s_nop 0 // 000000002CEC: BF800000 - s_add_u32 s49, s47, 0x10400 // 000000002CF0: 8031FF2F 00010400 - s_xor_b32 s49, s49, s47 // 000000002CF8: 88312F31 - v_mov_b32_e32 v12, 0x100 // 000000002CFC: 7E1802FF 00000100 - v_mov_b32_e32 v11, s24 // 000000002D04: 7E160218 - v_cvt_f32_u32_e32 v10, v12 // 000000002D08: 7E140D0C - v_rcp_iflag_f32_e32 v10, v10 // 000000002D0C: 7E14470A - v_cvt_f32_u32_e32 v13, v11 // 000000002D10: 7E1A0D0B - v_mul_f32_e32 v10, v10, v13 // 000000002D14: 0A141B0A - v_cvt_u32_f32_e32 v10, v10 // 000000002D18: 7E140F0A - v_mul_u32_u24_e32 v13, v10, v12 // 000000002D1C: 101A190A - v_sub_u32_e32 v13, v11, v13 // 000000002D20: 6A1A1B0B - v_cmp_ne_u32_e64 vcc, v13, 0 // 000000002D24: D0CD006A 0001010D - v_addc_co_u32_e64 v10, vcc, v10, 0, vcc // 000000002D2C: D11C6A0A 01A9010A - v_mov_b32_e32 v12, 0x100 // 000000002D34: 7E1802FF 00000100 - v_mov_b32_e32 v11, s25 // 000000002D3C: 7E160219 - v_readfirstlane_b32 s14, v10 // 000000002D40: 7E1C050A - v_cvt_f32_u32_e32 v10, v12 // 000000002D44: 7E140D0C - v_rcp_iflag_f32_e32 v10, v10 // 000000002D48: 7E14470A - v_cvt_f32_u32_e32 v13, v11 // 000000002D4C: 7E1A0D0B - v_mul_f32_e32 v10, v10, v13 // 000000002D50: 0A141B0A - v_cvt_u32_f32_e32 v10, v10 // 000000002D54: 7E140F0A - v_mul_u32_u24_e32 v13, v10, v12 // 000000002D58: 101A190A - v_sub_u32_e32 v13, v11, v13 // 000000002D5C: 6A1A1B0B - v_cmp_ne_u32_e64 vcc, v13, 0 // 000000002D60: D0CD006A 0001010D - v_addc_co_u32_e64 v10, vcc, v10, 0, vcc // 000000002D68: D11C6A0A 01A9010A - s_nop 0 // 000000002D70: BF800000 - v_readfirstlane_b32 s15, v10 // 000000002D74: 7E1E050A - s_waitcnt lgkmcnt(0) // 000000002D78: BF8CC07F - s_mul_i32 s52, s14, s15 // 000000002D7C: 92340F0E - s_and_b32 s53, s50, 0x3fff // 000000002D80: 8635FF32 00003FFF - s_mul_i32 s52, s52, s53 // 000000002D88: 92343534 - v_cvt_f32_u32_e32 v10, s52 // 000000002D8C: 7E140C34 - v_rcp_iflag_f32_e32 v10, v10 // 000000002D90: 7E14470A - v_cvt_f32_u32_e32 v11, s2 // 000000002D94: 7E160C02 - v_mul_f32_e32 v10, v10, v11 // 000000002D98: 0A14170A - v_cvt_u32_f32_e32 v10, v10 // 000000002D9C: 7E140F0A - v_mul_u32_u24_e64 v11, v10, s52 // 000000002DA0: D108000B 0000690A - v_sub_u32_e32 v11, s2, v11 // 000000002DA8: 6A161602 - v_cmpx_eq_u32_e64 exec, v11, s52 // 000000002DAC: D0DA007E 0000690B - v_add_u32_e32 v10, 1, v10 // 000000002DB4: 68141481 - s_mov_b64 exec, -1 // 000000002DB8: BEFE01C1 - v_cmpx_gt_u32_e64 exec, v11, s52 // 000000002DBC: D0DC007E 0000690B - v_sub_u32_e64 v10, v10, 1 // 000000002DC4: D135000A 0001030A - s_mov_b64 exec, -1 // 000000002DCC: BEFE01C1 - v_readfirstlane_b32 s52, v10 // 000000002DD0: 7E68050A - s_mov_b32 s4, s52 // 000000002DD4: BE840034 - s_mul_i32 s52, s15, s14 // 000000002DD8: 92340E0F - s_mul_i32 s52, s52, s4 // 000000002DDC: 92340434 - s_mul_i32 s52, s52, s53 // 000000002DE0: 92343534 - s_sub_u32 s2, s2, s52 // 000000002DE4: 80823402 - v_cvt_f32_u32_e32 v10, s14 // 000000002DE8: 7E140C0E - v_rcp_iflag_f32_e32 v10, v10 // 000000002DEC: 7E14470A - v_cvt_f32_u32_e32 v11, s2 // 000000002DF0: 7E160C02 - v_mul_f32_e32 v10, v10, v11 // 000000002DF4: 0A14170A - v_cvt_u32_f32_e32 v10, v10 // 000000002DF8: 7E140F0A - v_mul_u32_u24_e64 v11, v10, s14 // 000000002DFC: D108000B 00001D0A - v_sub_u32_e32 v11, s2, v11 // 000000002E04: 6A161602 - v_cmpx_eq_u32_e64 exec, v11, s14 // 000000002E08: D0DA007E 00001D0B - v_add_u32_e32 v10, 1, v10 // 000000002E10: 68141481 - s_mov_b64 exec, -1 // 000000002E14: BEFE01C1 - v_cmpx_gt_u32_e64 exec, v11, s14 // 000000002E18: D0DC007E 00001D0B - v_sub_u32_e64 v10, v10, 1 // 000000002E20: D135000A 0001030A - s_mov_b64 exec, -1 // 000000002E28: BEFE01C1 - v_readfirstlane_b32 s52, v10 // 000000002E2C: 7E68050A - s_mov_b32 s3, s52 // 000000002E30: BE830034 - s_mul_i32 s52, s3, s14 // 000000002E34: 92340E03 - s_sub_u32 s2, s2, s52 // 000000002E38: 80823402 - s_sub_u32 s32, s32, 16 // 000000002E3C: 80A09020 - s_subb_u32 s33, s33, 0 // 000000002E40: 82A18021 - s_sub_u32 s34, s34, 16 // 000000002E44: 80A29022 - s_subb_u32 s35, s35, 0 // 000000002E48: 82A38023 - s_and_b32 s84, s50, 0x3fff // 000000002E5C: 8654FF32 00003FFF - s_mov_b64 s[6:7], 0 // 000000002F48: BE860180 - s_mov_b32 s8, 1 // 000000002F4C: BE880081 - s_mov_b32 s9, 1 // 000000002F50: BE890081 - - s_sext_i32_i16 s11, s11 // 000000002F54: BE8B170B - v_mul_lo_u32 v10, s40, v4 // 0000000031B8: D285000A 00020828 - v_add_co_u32_e32 v0, vcc, v5, v10 // 0000000031C0: 32001505 - v_add_u32_e32 v0, 8, v0 // 0000000031C4: 68000088 - v_lshlrev_b32_e32 v0, 1, v0 // 0000000031C8: 24000081 - s_mul_i32 s70, s40, 32 // 0000000031CC: 9246A028 - s_lshl_b32 s70, s70, 1 // 0000000031D0: 8E468146 - s_mul_i32 s71, s40, 64 // 0000000031D4: 9247C028 - s_lshl_b32 s71, s71, 1 // 0000000031D8: 8E478147 - s_mul_i32 s72, s40, 0x60 // 0000000031DC: 9248FF28 00000060 - s_lshl_b32 s72, s72, 1 // 0000000031E4: 8E488148 - s_mul_i32 s73, s40, 0x80 // 0000000031E8: 9249FF28 00000080 - s_lshl_b32 s73, s73, 1 // 0000000031F0: 8E498149 - s_mul_i32 s74, s40, 0xa0 // 0000000031F4: 924AFF28 000000A0 - s_lshl_b32 s74, s74, 1 // 0000000031FC: 8E4A814A - s_mul_i32 s75, s40, 0xc0 // 000000003200: 924BFF28 000000C0 - s_lshl_b32 s75, s75, 1 // 000000003208: 8E4B814B - s_mul_i32 s76, s40, 0xe0 // 00000000320C: 924CFF28 000000E0 - s_lshl_b32 s76, s76, 1 // 000000003214: 8E4C814C - v_mul_lo_u32 v10, s42, v6 // 000000003218: D285000A 00020C2A - v_add_co_u32_e32 v1, vcc, v7, v10 // 000000003220: 32021507 - v_add_u32_e32 v1, 8, v1 // 000000003224: 68020288 - v_lshlrev_b32_e32 v1, 1, v1 // 000000003228: 24020281 - s_mul_i32 s77, s42, 32 // 00000000322C: 924DA02A - s_lshl_b32 s77, s77, 1 // 000000003230: 8E4D814D - s_mul_i32 s78, s42, 64 // 000000003234: 924EC02A - s_lshl_b32 s78, s78, 1 // 000000003238: 8E4E814E - s_mul_i32 s79, s42, 0x60 // 00000000323C: 924FFF2A 00000060 - s_lshl_b32 s79, s79, 1 // 000000003244: 8E4F814F - s_mul_i32 s80, s42, 0x80 // 000000003248: 9250FF2A 00000080 - s_lshl_b32 s80, s80, 1 // 000000003250: 8E508150 - s_mul_i32 s81, s42, 0xa0 // 000000003254: 9251FF2A 000000A0 - s_lshl_b32 s81, s81, 1 // 00000000325C: 8E518151 - s_mul_i32 s82, s42, 0xc0 // 000000003260: 9252FF2A 000000C0 - s_lshl_b32 s82, s82, 1 // 000000003268: 8E528152 - s_mul_i32 s83, s42, 0xe0 // 00000000326C: 9253FF2A 000000E0 - s_lshl_b32 s83, s83, 1 // 000000003274: 8E538153 - s_mul_hi_u32 s87, s2, 0x100 // 000000003278: 9657FF02 00000100 - s_mul_i32 s86, s2, 0x100 // 000000003280: 9256FF02 00000100 - s_mul_hi_u32 s87, s86, s40 // 000000003288: 96572856 - s_mul_i32 s86, s86, s40 // 00000000328C: 92562856 - s_and_b32 s84, s50, 0x8000 // 000000003290: 8654FF32 00008000 - s_cbranch_scc1 skip_offset_A // 000000003298: BF850003 - s_mul_hi_u32 s85, 64, s6 // 00000000329C: 965506C0 - s_mul_i32 s84, 64, s6 // 0000000032A0: 925406C0 - -skip_offset_A: - s_add_u32 s86, s86, s84 // 000000003330: 80565456 - s_addc_u32 s87, s87, s85 // 000000003334: 82575557 - s_mov_b64 s[60:61], 1 // 000000003338: BEBC0181 - s_sub_u32 s84, s27, 1 // 00000000333C: 80D4811B - s_mul_hi_u32 s85, 1, s84 // 000000003340: 96555481 - s_mul_i32 s84, 1, s84 // 000000003344: 92545481 - s_add_u32 s60, s60, s84 // 000000003348: 803C543C - s_addc_u32 s61, s61, s85 // 00000000334C: 823D553D - s_sub_u32 s84, s24, 1 // 000000003350: 80D48118 - s_mul_hi_u32 s85, s40, s84 // 000000003354: 96555428 - s_mul_i32 s84, s40, s84 // 000000003358: 92545428 - s_add_u32 s60, s60, s84 // 00000000335C: 803C543C - s_addc_u32 s61, s61, s85 // 000000003360: 823D553D - s_sub_u32 s60, s60, s86 // 000000003364: 80BC563C - s_subb_u32 s61, s61, s87 // 000000003368: 82BD573D - s_lshl_b64 s[60:61], s[60:61], 1 // 00000000336C: 8EBC813C - s_add_u32 s60, s60, 16 // 000000003370: 803C903C - s_addc_u32 s61, s61, 0 // 000000003374: 823D803D - s_cmp_eq_u32 s61, 0 // 000000003378: BF06803D - s_cselect_b32 s54, s60, -1 // 00000000337C: 8536C13C - s_mul_hi_u32 s85, s41, s4 // 000000003380: 96550429 - s_mul_i32 s84, s41, s4 // 000000003384: 92540429 - s_add_u32 s86, s86, s84 // 000000003388: 80565456 - s_addc_u32 s87, s87, s85 // 00000000338C: 82575557 - s_lshl_b64 s[86:87], s[86:87], 1 // 000000003390: 8ED68156 - s_add_u32 s52, s32, s86 // 000000003394: 80345620 - s_addc_u32 s53, s33, s87 // 000000003398: 82355721 - s_mov_b32 s55, 0x20000 // 00000000339C: BEB700FF 00020000 - s_mul_hi_u32 s87, s3, 0x100 // 0000000033A4: 9657FF03 00000100 - s_mul_i32 s86, s3, 0x100 // 0000000033AC: 9256FF03 00000100 - s_mul_hi_u32 s87, s86, s42 // 0000000033B4: 96572A56 - s_mul_i32 s86, s86, s42 // 0000000033B8: 92562A56 - s_and_b32 s84, s50, 0x8000 // 0000000033BC: 8654FF32 00008000 - s_cbranch_scc1 skip_offset_B // 0000000033C4: BF850003 - s_mul_hi_u32 s85, 64, s6 // 0000000033C8: 965506C0 - s_mul_i32 s84, 64, s6 // 0000000033CC: 925406C0 - -skip_offset_B: - s_add_u32 s86, s86, s84 // 00000000345C: 80565456 - s_addc_u32 s87, s87, s85 // 000000003460: 82575557 - s_mov_b64 s[62:63], 1 // 000000003464: BEBE0181 - s_sub_u32 s84, s27, 1 // 000000003468: 80D4811B - s_mul_hi_u32 s85, 1, s84 // 00000000346C: 96555481 - s_mul_i32 s84, 1, s84 // 000000003470: 92545481 - s_add_u32 s62, s62, s84 // 000000003474: 803E543E - s_addc_u32 s63, s63, s85 // 000000003478: 823F553F - s_sub_u32 s84, s25, 1 // 00000000347C: 80D48119 - s_mul_hi_u32 s85, s42, s84 // 000000003480: 9655542A - s_mul_i32 s84, s42, s84 // 000000003484: 9254542A - s_add_u32 s62, s62, s84 // 000000003488: 803E543E - s_addc_u32 s63, s63, s85 // 00000000348C: 823F553F - s_sub_u32 s62, s62, s86 // 000000003490: 80BE563E - s_subb_u32 s63, s63, s87 // 000000003494: 82BF573F - s_lshl_b64 s[62:63], s[62:63], 1 // 000000003498: 8EBE813E - s_add_u32 s62, s62, 16 // 00000000349C: 803E903E - s_addc_u32 s63, s63, 0 // 0000000034A0: 823F803F - s_cmp_eq_u32 s63, 0 // 0000000034A4: BF06803F - s_cselect_b32 s58, s62, -1 // 0000000034A8: 853AC13E - s_mul_hi_u32 s85, s43, s4 // 0000000034AC: 9655042B - s_mul_i32 s84, s43, s4 // 0000000034B0: 9254042B - s_add_u32 s86, s86, s84 // 0000000034B4: 80565456 - s_addc_u32 s87, s87, s85 // 0000000034B8: 82575557 - s_lshl_b64 s[86:87], s[86:87], 1 // 0000000034BC: 8ED68156 - s_add_u32 s56, s34, s86 // 0000000034C0: 80385622 - s_addc_u32 s57, s35, s87 // 0000000034C4: 82395723 - s_mov_b32 s59, 0x20000 // 0000000034C8: BEBB00FF 00020000 - s_and_b32 s85, s50, 0x3fff // 0000000034D0: 8655FF32 00003FFF - s_mul_i32 s85, s85, 0x80 // 0000000034D8: 9255FF55 00000080 - s_and_b32 s84, s50, 0x8000 // 0000000034E0: 8654FF32 00008000 - s_cselect_b32 s68, 0x80, s85 // 0000000034E8: 854455FF 00000080 - s_and_b32 s85, s50, 0x3fff // 0000000034F0: 8655FF32 00003FFF - s_mul_i32 s85, s85, 0x80 // 0000000034F8: 9255FF55 00000080 - s_and_b32 s84, s50, 0x8000 // 000000003500: 8654FF32 00008000 - s_cselect_b32 s69, 0x80, s85 // 000000003508: 854555FF 00000080 - s_lshr_b32 s12, s27, 6 // 000000003510: 8F0C861B - s_and_b32 s84, s50, 0x3fff // 000000003514: 8654FF32 00003FFF - s_mov_b32 s13, s12 // 000000003594: BE8D000C - s_and_b32 s86, s10, 0x1f00 // 000000003598: 8656FF0A 00001F00 - s_lshr_b32 s86, s86, 8 // 0000000035A0: 8F568856 - s_and_b32 s87, s10, 0xe000 // 0000000035A4: 8657FF0A 0000E000 - s_and_b32 s10, s10, 0xff // 0000000035AC: 860AFF0A 000000FF - s_mov_b32 s84, s10 // 0000000035B4: BED4000A - s_lshl_b32 s85, s84, s86 // 0000000035B8: 8E555654 - s_cmp_ge_u32 s13, s85 // 0000000035BC: BF09550D - s_sub_u32 s85, s84, 1 // 0000000035CC: 80D58154 - s_cmp_ge_u32 s84, 1 // 0000000035D0: BF098154 - s_cselect_b32 s51, s85, 0 // 0000000035D4: 85338055 - s_cmp_eq_u32 s87, 0x2000 // 0000000035E8: BF06FF57 00002000 - s_and_b32 s51, s51, s84 // 000000003640: 86335433 - s_lshl_b32 s51, s51, s86 // 000000003644: 8E335633 - s_mul_hi_i32 s85, s51, s68 // 000000003648: 96D54433 - s_mul_i32 s84, s51, s68 // 00000000364C: 92544433 - s_mul_hi_i32 s65, s12, s68 // 000000003650: 96C1440C - s_mul_i32 s64, s12, s68 // 000000003654: 9240440C - s_sub_u32 s64, s68, s64 // 000000003658: 80C04044 - s_subb_u32 s65, 0, s65 // 00000000365C: 82C14180 - s_add_u32 s52, s52, s84 // 000000003660: 80345434 - s_addc_u32 s53, s53, s85 // 000000003664: 82355535 - s_sub_u32 s60, s60, s84 // 000000003668: 80BC543C - s_subb_u32 s61, s61, s85 // 00000000366C: 82BD553D - s_cmp_eq_u32 s61, 0 // 000000003670: BF06803D - s_cselect_b32 s54, s60, -1 // 000000003674: 8536C13C - s_mul_hi_i32 s85, s51, s69 // 000000003678: 96D54533 - s_mul_i32 s84, s51, s69 // 00000000367C: 92544533 - s_mul_hi_i32 s67, s12, s69 // 000000003680: 96C3450C - s_mul_i32 s66, s12, s69 // 000000003684: 9242450C - s_sub_u32 s66, s69, s66 // 000000003688: 80C24245 - s_subb_u32 s67, 0, s67 // 00000000368C: 82C34380 - s_add_u32 s56, s56, s84 // 000000003690: 80385438 - s_addc_u32 s57, s57, s85 // 000000003694: 82395539 - s_sub_u32 s62, s62, s84 // 000000003698: 80BE543E - s_subb_u32 s63, s63, s85 // 00000000369C: 82BF553F - s_cmp_eq_u32 s63, 0 // 0000000036A0: BF06803F - s_cselect_b32 s58, s62, -1 // 0000000036A4: 853AC13E - s_add_u32 s51, s51, 2 // 0000000036A8: 80338233 - s_cmp_eq_u32 s12, 0 // 0000000036AC: BF06800C - s_cbranch_scc1 init_output_buffers // 0000000036B0: BF850092 - s_mov_b32 m0, s46 // 0000000036B4: BEFC002E - buffer_load_dwordx4 v0, s[52:55], 0 offen lds // 0000000036B8: E05D1000 800D0000 - s_add_u32 m0, m0, 0x1040 // 0000000036C0: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s70 offen lds // 0000000036C8: E05D1000 460D0000 - s_add_u32 m0, m0, 0x1040 // 0000000036D0: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s71 offen lds // 0000000036D8: E05D1000 470D0000 - s_add_u32 m0, m0, 0x1040 // 0000000036E0: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s72 offen lds // 0000000036E8: E05D1000 480D0000 - s_add_u32 m0, m0, 0x1040 // 0000000036F0: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s73 offen lds // 0000000036F8: E05D1000 490D0000 - s_add_u32 m0, m0, 0x1040 // 000000003700: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s74 offen lds // 000000003708: E05D1000 4A0D0000 - s_add_u32 m0, m0, 0x1040 // 000000003710: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s75 offen lds // 000000003718: E05D1000 4B0D0000 - s_add_u32 m0, m0, 0x1040 // 000000003720: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s76 offen lds // 000000003728: E05D1000 4C0D0000 - s_mov_b32 m0, s47 // 000000003730: BEFC002F - buffer_load_dwordx4 v1, s[56:59], 0 offen lds // 000000003734: E05D1000 800E0001 - s_add_u32 m0, m0, 0x1040 // 00000000373C: 807CFF7C 00001040 - buffer_load_dwordx4 v1, s[56:59], s77 offen lds // 000000003744: E05D1000 4D0E0001 - s_add_u32 m0, m0, 0x1040 // 00000000374C: 807CFF7C 00001040 - buffer_load_dwordx4 v1, s[56:59], s78 offen lds // 000000003754: E05D1000 4E0E0001 - s_add_u32 m0, m0, 0x1040 // 00000000375C: 807CFF7C 00001040 - v_accvgpr_write_b32 a0, 0 // 000000003764: D3D94000 18000080 - v_accvgpr_write_b32 a1, 0 // 00000000376C: D3D94001 18000080 - v_accvgpr_write_b32 a2, 0 // 000000003774: D3D94002 18000080 - v_accvgpr_write_b32 a3, 0 // 00000000377C: D3D94003 18000080 - v_accvgpr_write_b32 a4, 0 // 000000003784: D3D94004 18000080 - v_accvgpr_write_b32 a5, 0 // 00000000378C: D3D94005 18000080 - v_accvgpr_write_b32 a6, 0 // 000000003794: D3D94006 18000080 - v_accvgpr_write_b32 a7, 0 // 00000000379C: D3D94007 18000080 - v_accvgpr_write_b32 a8, 0 // 0000000037A4: D3D94008 18000080 - v_accvgpr_write_b32 a9, 0 // 0000000037AC: D3D94009 18000080 - v_accvgpr_write_b32 a10, 0 // 0000000037B4: D3D9400A 18000080 - v_accvgpr_write_b32 a11, 0 // 0000000037BC: D3D9400B 18000080 - v_accvgpr_write_b32 a12, 0 // 0000000037C4: D3D9400C 18000080 - v_accvgpr_write_b32 a13, 0 // 0000000037CC: D3D9400D 18000080 - v_accvgpr_write_b32 a14, 0 // 0000000037D4: D3D9400E 18000080 - v_accvgpr_write_b32 a15, 0 // 0000000037DC: D3D9400F 18000080 - v_mov_b64_e32 v[6:7], 0 // 0000000037E4: 7E0C7080 - v_mov_b64_e32 v[8:9], 0 // 0000000037E8: 7E107080 - v_mfma_f32_32x32x16_bf16 a[16:31], v[6:9], v[6:9], a[0:15] // 0000000037EC: D3B78010 04020D06 - v_mfma_f32_32x32x16_bf16 a[32:47], v[6:9], v[6:9], a[0:15] // 0000000037F4: D3B78020 04020D06 - v_mfma_f32_32x32x16_bf16 a[48:63], v[6:9], v[6:9], a[0:15] // 0000000037FC: D3B78030 04020D06 - v_mfma_f32_32x32x16_bf16 a[64:79], v[6:9], v[6:9], a[0:15] // 000000003804: D3B78040 04020D06 - v_mfma_f32_32x32x16_bf16 a[80:95], v[6:9], v[6:9], a[0:15] // 00000000380C: D3B78050 04020D06 - v_mfma_f32_32x32x16_bf16 a[96:111], v[6:9], v[6:9], a[0:15]// 000000003814: D3B78060 04020D06 - v_mfma_f32_32x32x16_bf16 a[112:127], v[6:9], v[6:9], a[0:15]// 00000000381C: D3B78070 04020D06 - v_mfma_f32_32x32x16_bf16 a[128:143], v[6:9], v[6:9], a[0:15]// 000000003824: D3B78080 04020D06 - buffer_load_dwordx4 v1, s[56:59], s79 offen lds // 00000000382C: E05D1000 4F0E0001 - s_add_u32 m0, m0, 0x1040 // 000000003834: 807CFF7C 00001040 - v_mfma_f32_32x32x16_bf16 a[144:159], v[6:9], v[6:9], a[0:15]// 00000000383C: D3B78090 04020D06 - v_mfma_f32_32x32x16_bf16 a[160:175], v[6:9], v[6:9], a[0:15]// 000000003844: D3B780A0 04020D06 - v_mfma_f32_32x32x16_bf16 a[176:191], v[6:9], v[6:9], a[0:15]// 00000000384C: D3B780B0 04020D06 - v_mfma_f32_32x32x16_bf16 a[192:207], v[6:9], v[6:9], a[0:15]// 000000003854: D3B780C0 04020D06 - v_mfma_f32_32x32x16_bf16 a[208:223], v[6:9], v[6:9], a[0:15]// 00000000385C: D3B780D0 04020D06 - v_mfma_f32_32x32x16_bf16 a[224:239], v[6:9], v[6:9], a[0:15]// 000000003864: D3B780E0 04020D06 - v_mfma_f32_32x32x16_bf16 a[240:255], v[6:9], v[6:9], a[0:15]// 00000000386C: D3B780F0 04020D06 - buffer_load_dwordx4 v1, s[56:59], s80 offen lds // 000000003874: E05D1000 500E0001 - s_add_u32 m0, m0, 0x1040 // 00000000387C: 807CFF7C 00001040 - buffer_load_dwordx4 v1, s[56:59], s81 offen lds // 000000003884: E05D1000 510E0001 - s_add_u32 m0, m0, 0x1040 // 00000000388C: 807CFF7C 00001040 - buffer_load_dwordx4 v1, s[56:59], s82 offen lds // 000000003894: E05D1000 520E0001 - s_add_u32 m0, m0, 0x1040 // 00000000389C: 807CFF7C 00001040 - buffer_load_dwordx4 v1, s[56:59], s83 offen lds // 0000000038A4: E05D1000 530E0001 - s_add_u32 s86, s12, 1 // 0000000038AC: 8056810C - s_cmp_eq_u32 s51, s86 // 0000000038B0: BF065633 - s_cselect_b32 s84, s64, s68 // 0000000038B4: 85544440 - s_cselect_b32 s85, s65, 0 // 0000000038B8: 85558041 - s_add_u32 s52, s52, s84 // 0000000038BC: 80345434 - s_addc_u32 s53, s53, s85 // 0000000038C0: 82355535 - s_sub_u32 s60, s60, s84 // 0000000038C4: 80BC543C - s_subb_u32 s61, s61, s85 // 0000000038C8: 82BD553D - s_cmp_eq_u32 s61, 0 // 0000000038CC: BF06803D - s_cselect_b32 s54, s60, -1 // 0000000038D0: 8536C13C - s_add_u32 s86, s12, 1 // 0000000038D4: 8056810C - s_cmp_eq_u32 s51, s86 // 0000000038D8: BF065633 - s_cselect_b32 s84, s66, s69 // 0000000038DC: 85544542 - s_cselect_b32 s85, s67, 0 // 0000000038E0: 85558043 - s_add_u32 s56, s56, s84 // 0000000038E4: 80385438 - s_addc_u32 s57, s57, s85 // 0000000038E8: 82395539 - s_sub_u32 s62, s62, s84 // 0000000038EC: 80BE543E - s_subb_u32 s63, s63, s85 // 0000000038F0: 82BF553F - s_cmp_eq_u32 s63, 0 // 0000000038F4: BF06803F - s_cselect_b32 s58, s62, -1 // 0000000038F8: 853AC13E - -init_output_buffers: - s_mov_b64 s[16:17], s[28:29] // 0000000038FC: BE90011C - s_mov_b32 s18, 0x80000000 // 000000003900: BE9200FF 80000000 - s_mov_b32 s19, 0x20000 // 000000003908: BE9300FF 00020000 - s_mov_b64 s[20:21], s[30:31] // 000000003910: BE94011E - s_mov_b32 s22, 0x80000000 // 000000003914: BE9600FF 80000000 - s_mov_b32 s23, 0x20000 // 00000000391C: BE9700FF 00020000 - s_mul_i32 s86, 0x100, s3 // 000000003924: 925603FF 00000100 - s_mul_hi_u32 s85, s86, s38 // 00000000392C: 96552656 - s_mul_i32 s84, s86, s38 // 000000003930: 92542656 - s_lshl_b64 s[84:85], s[84:85], s8 // 000000003934: 8ED40854 - s_add_u32 s20, s30, s84 // 000000003938: 8014541E - s_addc_u32 s21, s31, s85 // 00000000393C: 8215551F - s_mul_hi_u32 s85, s86, s36 // 000000003940: 96552456 - s_mul_i32 s84, s86, s36 // 000000003944: 92542456 - s_lshl_b64 s[84:85], s[84:85], s9 // 000000003948: 8ED40954 - s_add_u32 s16, s28, s84 // 00000000394C: 8010541C - s_addc_u32 s17, s29, s85 // 000000003950: 8211551D - s_mul_hi_u32 s85, s4, s39 // 000000003954: 96552704 - s_mul_i32 s84, s4, s39 // 000000003958: 92542704 - s_lshl_b64 s[84:85], s[84:85], s8 // 00000000395C: 8ED40854 - s_add_u32 s20, s20, s84 // 000000003960: 80145414 - s_addc_u32 s21, s21, s85 // 000000003964: 82155515 - s_mul_hi_u32 s85, s4, s37 // 000000003968: 96552504 - s_mul_i32 s84, s4, s37 // 00000000396C: 92542504 - s_lshl_b64 s[84:85], s[84:85], s9 // 000000003970: 8ED40954 - s_add_u32 s16, s16, s84 // 000000003974: 80105410 - s_addc_u32 s17, s17, s85 // 000000003978: 82115511 - s_mul_hi_u32 s85, s24, s6 // 00000000398C: 96550618 - s_mul_i32 s84, s24, s6 // 000000003990: 92540618 - s_sub_u32 s86, s25, 1 // 000000003994: 80D68119 - s_mul_i32 s86, s86, s6 // 000000003998: 92560656 - s_mul_hi_u32 s87, s86, s38 // 00000000399C: 96572656 - s_mul_i32 s86, s86, s38 // 0000000039A0: 92562656 - s_add_u32 s84, s84, s86 // 0000000039A4: 80545654 - s_addc_u32 s85, s85, s87 // 0000000039A8: 82555755 - s_sub_u32 s86, s26, 1 // 0000000039AC: 80D6811A - s_mul_i32 s86, s86, s6 // 0000000039B0: 92560656 - s_mul_hi_u32 s87, s86, s39 // 0000000039B4: 96572756 - s_mul_i32 s86, s86, s39 // 0000000039B8: 92562756 - s_add_u32 s84, s84, s86 // 0000000039BC: 80545654 - s_addc_u32 s85, s85, s87 // 0000000039C0: 82555755 - s_lshl_b64 s[84:85], s[84:85], 2 // 0000000039C4: 8ED48254 - s_add_u32 s16, s16, s84 // 0000000039C8: 80105410 - s_addc_u32 s17, s17, s85 // 0000000039CC: 82115511 - s_xor_b32 s46, s48, s46 // 0000000039F0: 882E2E30 - s_xor_b32 s47, s49, s47 // 0000000039F4: 882F2F31 - s_cmp_eq_u32 s12, 1 // 0000000039F8: BF06810C - s_cbranch_scc1 after_prefetch // 0000000039FC: BF850040 - s_mov_b32 m0, s46 // 000000003A00: BEFC002E - buffer_load_dwordx4 v0, s[52:55], 0 offen lds // 000000003A04: E05D1000 800D0000 - s_add_u32 m0, m0, 0x1040 // 000000003A0C: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s70 offen lds // 000000003A14: E05D1000 460D0000 - s_add_u32 m0, m0, 0x1040 // 000000003A1C: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s71 offen lds // 000000003A24: E05D1000 470D0000 - s_add_u32 m0, m0, 0x1040 // 000000003A2C: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s72 offen lds // 000000003A34: E05D1000 480D0000 - s_add_u32 m0, m0, 0x1040 // 000000003A3C: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s73 offen lds // 000000003A44: E05D1000 490D0000 - s_add_u32 m0, m0, 0x1040 // 000000003A4C: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s74 offen lds // 000000003A54: E05D1000 4A0D0000 - s_add_u32 m0, m0, 0x1040 // 000000003A5C: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s75 offen lds // 000000003A64: E05D1000 4B0D0000 - s_add_u32 m0, m0, 0x1040 // 000000003A6C: 807CFF7C 00001040 - buffer_load_dwordx4 v0, s[52:55], s76 offen lds // 000000003A74: E05D1000 4C0D0000 - s_mov_b32 m0, s47 // 000000003A7C: BEFC002F - buffer_load_dwordx4 v1, s[56:59], 0 offen lds // 000000003A80: E05D1000 800E0001 - s_add_u32 m0, m0, 0x1040 // 000000003A88: 807CFF7C 00001040 - buffer_load_dwordx4 v1, s[56:59], s77 offen lds // 000000003A90: E05D1000 4D0E0001 - s_add_u32 m0, m0, 0x1040 // 000000003A98: 807CFF7C 00001040 - buffer_load_dwordx4 v1, s[56:59], s78 offen lds // 000000003AA0: E05D1000 4E0E0001 - s_add_u32 m0, m0, 0x1040 // 000000003AA8: 807CFF7C 00001040 - buffer_load_dwordx4 v1, s[56:59], s79 offen lds // 000000003AB0: E05D1000 4F0E0001 - s_add_u32 m0, m0, 0x1040 // 000000003AB8: 807CFF7C 00001040 - buffer_load_dwordx4 v1, s[56:59], s80 offen lds // 000000003AC0: E05D1000 500E0001 - s_add_u32 m0, m0, 0x1040 // 000000003AC8: 807CFF7C 00001040 - buffer_load_dwordx4 v1, s[56:59], s81 offen lds // 000000003AD0: E05D1000 510E0001 - s_add_u32 m0, m0, 0x1040 // 000000003AD8: 807CFF7C 00001040 - buffer_load_dwordx4 v1, s[56:59], s82 offen lds // 000000003AE0: E05D1000 520E0001 - s_add_u32 m0, m0, 0x1040 // 000000003AE8: 807CFF7C 00001040 - buffer_load_dwordx4 v1, s[56:59], s83 offen lds // 000000003AF0: E05D1000 530E0001 - s_xor_b32 s46, s48, s46 // 000000003AF8: 882E2E30 - s_xor_b32 s47, s49, s47 // 000000003AFC: 882F2F31 - -after_prefetch: - s_waitcnt vmcnt(24) // 000000003B00: BF8C4F78 - s_barrier // 000000003B04: BF8A0000 - ds_read_b128 v[4:7], v2 // 000000003B08: D9FE0000 04000002 - ds_read_b128 v[8:11], v2 offset:128 // 000000003B10: D9FE0080 08000002 - ds_read_b128 v[12:15], v2 offset:256 // 000000003B18: D9FE0100 0C000002 - ds_read_b128 v[16:19], v2 offset:384 // 000000003B20: D9FE0180 10000002 - ds_read_b128 v[20:23], v2 offset:512 // 000000003B28: D9FE0200 14000002 - ds_read_b128 v[24:27], v2 offset:640 // 000000003B30: D9FE0280 18000002 - ds_read_b128 v[28:31], v2 offset:768 // 000000003B38: D9FE0300 1C000002 - ds_read_b128 v[32:35], v2 offset:896 // 000000003B40: D9FE0380 20000002 - s_waitcnt vmcnt(16) // 000000003B48: BF8C4F70 - s_barrier // 000000003B4C: BF8A0000 - ds_read_b128 v[68:71], v3 // 000000003B50: D9FE0000 44000003 - ds_read_b128 v[72:75], v3 offset:128 // 000000003B58: D9FE0080 48000003 - ds_read_b128 v[76:79], v3 offset:256 // 000000003B60: D9FE0100 4C000003 - ds_read_b128 v[80:83], v3 offset:384 // 000000003B68: D9FE0180 50000003 - ds_read_b128 v[84:87], v3 offset:512 // 000000003B70: D9FE0200 54000003 - ds_read_b128 v[88:91], v3 offset:640 // 000000003B78: D9FE0280 58000003 - ds_read_b128 v[92:95], v3 offset:768 // 000000003B80: D9FE0300 5C000003 - ds_read_b128 v[96:99], v3 offset:896 // 000000003B88: D9FE0380 60000003 - s_waitcnt lgkmcnt(0) // 000000003B90: BF8CC07F - s_cmp_eq_u32 s12, 1 // 000000003B94: BF06810C - s_cbranch_scc1 final_compute // 000000003B98: BF8502E5 - s_cmp_le_u32 s12, 2 // 000000003B9C: BF0B820C - s_cbranch_scc1 loop_epilogue // 000000003BA0: BF85019E - -main_loop: - v_mfma_f32_16x16x32_bf16 a[0:3], v[68:71], v[4:7], a[0:3] // 000000003BA4: D3B58000 04020944 - ds_read_b128 v[36:39], v2 offset:64 // 000000003BAC: D9FE0040 24000002 - v_mfma_f32_16x16x32_bf16 a[4:7], v[68:71], v[8:11], a[4:7] // 000000003BB4: D3B58004 04121144 - s_cmp_eq_u32 s12, s51 // 000000003BBC: BF06330C - s_cselect_b32 s84, s64, s68 // 000000003BC0: 85544440 - v_mfma_f32_16x16x32_bf16 a[8:11], v[68:71], v[12:15], a[8:11]// 000000003BC4: D3B58008 04221944 - ds_read_b128 v[40:43], v2 offset:192 // 000000003BCC: D9FE00C0 28000002 - v_mfma_f32_16x16x32_bf16 a[12:15], v[68:71], v[16:19], a[12:15]// 000000003BD4: D3B5800C 04322144 - s_cselect_b32 s85, s65, 0 // 000000003BDC: 85558041 - s_add_u32 s52, s52, s84 // 000000003BE0: 80345434 - v_mfma_f32_16x16x32_bf16 a[16:19], v[68:71], v[20:23], a[16:19]// 000000003BE4: D3B58010 04422944 - ds_read_b128 v[44:47], v2 offset:320 // 000000003BEC: D9FE0140 2C000002 - v_mfma_f32_16x16x32_bf16 a[20:23], v[68:71], v[24:27], a[20:23]// 000000003BF4: D3B58014 04523144 - s_addc_u32 s53, s53, s85 // 000000003BFC: 82355535 - s_sub_u32 s60, s60, s84 // 000000003C00: 80BC543C - v_mfma_f32_16x16x32_bf16 a[24:27], v[68:71], v[28:31], a[24:27]// 000000003C04: D3B58018 04623944 - ds_read_b128 v[48:51], v2 offset:448 // 000000003C0C: D9FE01C0 30000002 - v_mfma_f32_16x16x32_bf16 a[28:31], v[68:71], v[32:35], a[28:31]// 000000003C14: D3B5801C 04724144 - s_subb_u32 s61, s61, s85 // 000000003C1C: 82BD553D - s_cmp_eq_u32 s61, 0 // 000000003C20: BF06803D - v_mfma_f32_16x16x32_bf16 a[32:35], v[72:75], v[4:7], a[32:35]// 000000003C24: D3B58020 04820948 - ds_read_b128 v[52:55], v2 offset:576 // 000000003C2C: D9FE0240 34000002 - v_mfma_f32_16x16x32_bf16 a[36:39], v[72:75], v[8:11], a[36:39]// 000000003C34: D3B58024 04921148 - s_cselect_b32 s54, s60, -1 // 000000003C3C: 8536C13C - s_cmp_eq_u32 s12, s51 // 000000003C40: BF06330C - v_mfma_f32_16x16x32_bf16 a[40:43], v[72:75], v[12:15], a[40:43]// 000000003C44: D3B58028 04A21948 - ds_read_b128 v[56:59], v2 offset:704 // 000000003C4C: D9FE02C0 38000002 - v_mfma_f32_16x16x32_bf16 a[44:47], v[72:75], v[16:19], a[44:47]// 000000003C54: D3B5802C 04B22148 - s_cselect_b32 s84, s66, s69 // 000000003C5C: 85544542 - s_cselect_b32 s85, s67, 0 // 000000003C60: 85558043 - v_mfma_f32_16x16x32_bf16 a[48:51], v[72:75], v[20:23], a[48:51]// 000000003C64: D3B58030 04C22948 - ds_read_b128 v[60:63], v2 offset:832 // 000000003C6C: D9FE0340 3C000002 - v_mfma_f32_16x16x32_bf16 a[52:55], v[72:75], v[24:27], a[52:55]// 000000003C74: D3B58034 04D23148 - s_add_u32 s56, s56, s84 // 000000003C7C: 80385438 - s_addc_u32 s57, s57, s85 // 000000003C80: 82395539 - v_mfma_f32_16x16x32_bf16 a[56:59], v[72:75], v[28:31], a[56:59]// 000000003C84: D3B58038 04E23948 - ds_read_b128 v[64:67], v2 offset:960 // 000000003C8C: D9FE03C0 40000002 - v_mfma_f32_16x16x32_bf16 a[60:63], v[72:75], v[32:35], a[60:63]// 000000003C94: D3B5803C 04F24148 - s_mov_b32 m0, s46 // 000000003C9C: BEFC002E - s_sub_u32 s62, s62, s84 // 000000003CA0: 80BE543E - v_mfma_f32_16x16x32_bf16 a[64:67], v[76:79], v[4:7], a[64:67]// 000000003CA4: D3B58040 0502094C - s_subb_u32 s63, s63, s85 // 000000003CAC: 82BF553F - s_cmp_eq_u32 s63, 0 // 000000003CB0: BF06803F - v_mfma_f32_16x16x32_bf16 a[68:71], v[76:79], v[8:11], a[68:71]// 000000003CB4: D3B58044 0512114C - s_cselect_b32 s58, s62, -1 // 000000003CBC: 853AC13E - v_mfma_f32_16x16x32_bf16 a[72:75], v[76:79], v[12:15], a[72:75]// 000000003CC0: D3B58048 0522194C - v_mfma_f32_16x16x32_bf16 a[76:79], v[76:79], v[16:19], a[76:79]// 000000003CC8: D3B5804C 0532214C - v_mfma_f32_16x16x32_bf16 a[80:83], v[76:79], v[20:23], a[80:83]// 000000003CD0: D3B58050 0542294C - s_waitcnt lgkmcnt(0) // 000000003CD8: BF8CC07F - v_mfma_f32_16x16x32_bf16 a[84:87], v[76:79], v[24:27], a[84:87]// 000000003CDC: D3B58054 0552314C - s_barrier // 000000003CE4: BF8A0000 - v_mfma_f32_16x16x32_bf16 a[88:91], v[76:79], v[28:31], a[88:91]// 000000003CE8: D3B58058 0562394C - buffer_load_dwordx4 v0, s[52:55], 0 offen lds // 000000003CF0: E05D1000 800D0000 - v_mfma_f32_16x16x32_bf16 a[92:95], v[76:79], v[32:35], a[92:95]// 000000003CF8: D3B5805C 0572414C - s_add_u32 m0, m0, 0x1040 // 000000003D00: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[96:99], v[80:83], v[4:7], a[96:99]// 000000003D08: D3B58060 05820950 - ds_read_b128 v[100:103], v3 offset:64 // 000000003D10: D9FE0040 64000003 - v_mfma_f32_16x16x32_bf16 a[100:103], v[80:83], v[8:11], a[100:103]// 000000003D18: D3B58064 05921150 - buffer_load_dwordx4 v0, s[52:55], s70 offen lds // 000000003D20: E05D1000 460D0000 - v_mfma_f32_16x16x32_bf16 a[104:107], v[80:83], v[12:15], a[104:107]// 000000003D28: D3B58068 05A21950 - s_add_u32 m0, m0, 0x1040 // 000000003D30: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[108:111], v[80:83], v[16:19], a[108:111]// 000000003D38: D3B5806C 05B22150 - ds_read_b128 v[104:107], v3 offset:192 // 000000003D40: D9FE00C0 68000003 - v_mfma_f32_16x16x32_bf16 a[112:115], v[80:83], v[20:23], a[112:115]// 000000003D48: D3B58070 05C22950 - buffer_load_dwordx4 v0, s[52:55], s71 offen lds // 000000003D50: E05D1000 470D0000 - v_mfma_f32_16x16x32_bf16 a[116:119], v[80:83], v[24:27], a[116:119]// 000000003D58: D3B58074 05D23150 - s_add_u32 m0, m0, 0x1040 // 000000003D60: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[120:123], v[80:83], v[28:31], a[120:123]// 000000003D68: D3B58078 05E23950 - ds_read_b128 v[108:111], v3 offset:320 // 000000003D70: D9FE0140 6C000003 - v_mfma_f32_16x16x32_bf16 a[124:127], v[80:83], v[32:35], a[124:127]// 000000003D78: D3B5807C 05F24150 - buffer_load_dwordx4 v0, s[52:55], s72 offen lds // 000000003D80: E05D1000 480D0000 - v_mfma_f32_16x16x32_bf16 a[128:131], v[84:87], v[4:7], a[128:131]// 000000003D88: D3B58080 06020954 - s_add_u32 m0, m0, 0x1040 // 000000003D90: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[132:135], v[84:87], v[8:11], a[132:135]// 000000003D98: D3B58084 06121154 - ds_read_b128 v[112:115], v3 offset:448 // 000000003DA0: D9FE01C0 70000003 - v_mfma_f32_16x16x32_bf16 a[136:139], v[84:87], v[12:15], a[136:139]// 000000003DA8: D3B58088 06221954 - buffer_load_dwordx4 v0, s[52:55], s73 offen lds // 000000003DB0: E05D1000 490D0000 - v_mfma_f32_16x16x32_bf16 a[140:143], v[84:87], v[16:19], a[140:143]// 000000003DB8: D3B5808C 06322154 - s_add_u32 m0, m0, 0x1040 // 000000003DC0: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[144:147], v[84:87], v[20:23], a[144:147]// 000000003DC8: D3B58090 06422954 - ds_read_b128 v[116:119], v3 offset:576 // 000000003DD0: D9FE0240 74000003 - v_mfma_f32_16x16x32_bf16 a[148:151], v[84:87], v[24:27], a[148:151]// 000000003DD8: D3B58094 06523154 - v_mfma_f32_16x16x32_bf16 a[152:155], v[84:87], v[28:31], a[152:155]// 000000003DE0: D3B58098 06623954 - ds_read_b128 v[120:123], v3 offset:704 // 000000003DE8: D9FE02C0 78000003 - v_mfma_f32_16x16x32_bf16 a[156:159], v[84:87], v[32:35], a[156:159]// 000000003DF0: D3B5809C 06724154 - v_mfma_f32_16x16x32_bf16 a[160:163], v[88:91], v[4:7], a[160:163]// 000000003DF8: D3B580A0 06820958 - ds_read_b128 v[124:127], v3 offset:832 // 000000003E00: D9FE0340 7C000003 - v_mfma_f32_16x16x32_bf16 a[164:167], v[88:91], v[8:11], a[164:167]// 000000003E08: D3B580A4 06921158 - v_mfma_f32_16x16x32_bf16 a[168:171], v[88:91], v[12:15], a[168:171]// 000000003E10: D3B580A8 06A21958 - ds_read_b128 v[128:131], v3 offset:960 // 000000003E18: D9FE03C0 80000003 - v_mfma_f32_16x16x32_bf16 a[172:175], v[88:91], v[16:19], a[172:175]// 000000003E20: D3B580AC 06B22158 - v_mfma_f32_16x16x32_bf16 a[176:179], v[88:91], v[20:23], a[176:179]// 000000003E28: D3B580B0 06C22958 - v_mfma_f32_16x16x32_bf16 a[180:183], v[88:91], v[24:27], a[180:183]// 000000003E30: D3B580B4 06D23158 - v_mfma_f32_16x16x32_bf16 a[184:187], v[88:91], v[28:31], a[184:187]// 000000003E38: D3B580B8 06E23958 - v_mfma_f32_16x16x32_bf16 a[188:191], v[88:91], v[32:35], a[188:191]// 000000003E40: D3B580BC 06F24158 - v_mfma_f32_16x16x32_bf16 a[192:195], v[92:95], v[4:7], a[192:195]// 000000003E48: D3B580C0 0702095C - v_mfma_f32_16x16x32_bf16 a[196:199], v[92:95], v[8:11], a[196:199]// 000000003E50: D3B580C4 0712115C - v_mfma_f32_16x16x32_bf16 a[200:203], v[92:95], v[12:15], a[200:203]// 000000003E58: D3B580C8 0722195C - s_waitcnt lgkmcnt(0) // 000000003E60: BF8CC07F - v_mfma_f32_16x16x32_bf16 a[204:207], v[92:95], v[16:19], a[204:207]// 000000003E64: D3B580CC 0732215C - s_barrier // 000000003E6C: BF8A0000 - v_mfma_f32_16x16x32_bf16 a[208:211], v[92:95], v[20:23], a[208:211]// 000000003E70: D3B580D0 0742295C - buffer_load_dwordx4 v0, s[52:55], s74 offen lds // 000000003E78: E05D1000 4A0D0000 - v_mfma_f32_16x16x32_bf16 a[212:215], v[92:95], v[24:27], a[212:215]// 000000003E80: D3B580D4 0752315C - s_add_u32 m0, m0, 0x1040 // 000000003E88: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[216:219], v[92:95], v[28:31], a[216:219]// 000000003E90: D3B580D8 0762395C - v_mfma_f32_16x16x32_bf16 a[220:223], v[92:95], v[32:35], a[220:223]// 000000003E98: D3B580DC 0772415C - buffer_load_dwordx4 v0, s[52:55], s75 offen lds // 000000003EA0: E05D1000 4B0D0000 - v_mfma_f32_16x16x32_bf16 a[224:227], v[96:99], v[4:7], a[224:227]// 000000003EA8: D3B580E0 07820960 - s_add_u32 m0, m0, 0x1040 // 000000003EB0: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[228:231], v[96:99], v[8:11], a[228:231]// 000000003EB8: D3B580E4 07921160 - v_mfma_f32_16x16x32_bf16 a[232:235], v[96:99], v[12:15], a[232:235]// 000000003EC0: D3B580E8 07A21960 - buffer_load_dwordx4 v0, s[52:55], s76 offen lds // 000000003EC8: E05D1000 4C0D0000 - v_mfma_f32_16x16x32_bf16 a[236:239], v[96:99], v[16:19], a[236:239]// 000000003ED0: D3B580EC 07B22160 - s_mov_b32 m0, s47 // 000000003ED8: BEFC002F - v_mfma_f32_16x16x32_bf16 a[240:243], v[96:99], v[20:23], a[240:243]// 000000003EDC: D3B580F0 07C22960 - v_mfma_f32_16x16x32_bf16 a[244:247], v[96:99], v[24:27], a[244:247]// 000000003EE4: D3B580F4 07D23160 - buffer_load_dwordx4 v1, s[56:59], 0 offen lds // 000000003EEC: E05D1000 800E0001 - v_mfma_f32_16x16x32_bf16 a[248:251], v[96:99], v[28:31], a[248:251]// 000000003EF4: D3B580F8 07E23960 - s_add_u32 m0, m0, 0x1040 // 000000003EFC: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[252:255], v[96:99], v[32:35], a[252:255]// 000000003F04: D3B580FC 07F24160 - v_mfma_f32_16x16x32_bf16 a[0:3], v[100:103], v[36:39], a[0:3]// 000000003F0C: D3B58000 04024964 - buffer_load_dwordx4 v1, s[56:59], s77 offen lds // 000000003F14: E05D1000 4D0E0001 - v_mfma_f32_16x16x32_bf16 a[4:7], v[100:103], v[40:43], a[4:7]// 000000003F1C: D3B58004 04125164 - s_add_u32 m0, m0, 0x1040 // 000000003F24: 807CFF7C 00001040 - s_xor_b32 s46, s48, s46 // 000000003F2C: 882E2E30 - v_mfma_f32_16x16x32_bf16 a[8:11], v[100:103], v[44:47], a[8:11]// 000000003F30: D3B58008 04225964 - v_mfma_f32_16x16x32_bf16 a[12:15], v[100:103], v[48:51], a[12:15]// 000000003F38: D3B5800C 04326164 - v_mfma_f32_16x16x32_bf16 a[16:19], v[100:103], v[52:55], a[16:19]// 000000003F40: D3B58010 04426964 - v_mfma_f32_16x16x32_bf16 a[20:23], v[100:103], v[56:59], a[20:23]// 000000003F48: D3B58014 04527164 - v_mfma_f32_16x16x32_bf16 a[24:27], v[100:103], v[60:63], a[24:27]// 000000003F50: D3B58018 04627964 - v_mfma_f32_16x16x32_bf16 a[28:31], v[100:103], v[64:67], a[28:31]// 000000003F58: D3B5801C 04728164 - v_mfma_f32_16x16x32_bf16 a[32:35], v[104:107], v[36:39], a[32:35]// 000000003F60: D3B58020 04824968 - v_mfma_f32_16x16x32_bf16 a[36:39], v[104:107], v[40:43], a[36:39]// 000000003F68: D3B58024 04925168 - v_mfma_f32_16x16x32_bf16 a[40:43], v[104:107], v[44:47], a[40:43]// 000000003F70: D3B58028 04A25968 - v_mfma_f32_16x16x32_bf16 a[44:47], v[104:107], v[48:51], a[44:47]// 000000003F78: D3B5802C 04B26168 - v_mfma_f32_16x16x32_bf16 a[48:51], v[104:107], v[52:55], a[48:51]// 000000003F80: D3B58030 04C26968 - v_mfma_f32_16x16x32_bf16 a[52:55], v[104:107], v[56:59], a[52:55]// 000000003F88: D3B58034 04D27168 - v_mfma_f32_16x16x32_bf16 a[56:59], v[104:107], v[60:63], a[56:59]// 000000003F90: D3B58038 04E27968 - v_mfma_f32_16x16x32_bf16 a[60:63], v[104:107], v[64:67], a[60:63]// 000000003F98: D3B5803C 04F28168 - v_mfma_f32_16x16x32_bf16 a[64:67], v[108:111], v[36:39], a[64:67]// 000000003FA0: D3B58040 0502496C - v_mfma_f32_16x16x32_bf16 a[68:71], v[108:111], v[40:43], a[68:71]// 000000003FA8: D3B58044 0512516C - v_mfma_f32_16x16x32_bf16 a[72:75], v[108:111], v[44:47], a[72:75]// 000000003FB0: D3B58048 0522596C - v_mfma_f32_16x16x32_bf16 a[76:79], v[108:111], v[48:51], a[76:79]// 000000003FB8: D3B5804C 0532616C - v_mfma_f32_16x16x32_bf16 a[80:83], v[108:111], v[52:55], a[80:83]// 000000003FC0: D3B58050 0542696C - v_xor_b32_e32 v2, v132, v2 // 000000003FC8: 2A040584 - v_xor_b32_e32 v3, v133, v3 // 000000003FCC: 2A060785 - v_mfma_f32_16x16x32_bf16 a[84:87], v[108:111], v[56:59], a[84:87]// 000000003FD0: D3B58054 0552716C - buffer_load_dwordx4 v1, s[56:59], s78 offen lds // 000000003FD8: E05D1000 4E0E0001 - v_mfma_f32_16x16x32_bf16 a[88:91], v[108:111], v[60:63], a[88:91]// 000000003FE0: D3B58058 0562796C - s_add_u32 m0, m0, 0x1040 // 000000003FE8: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[92:95], v[108:111], v[64:67], a[92:95]// 000000003FF0: D3B5805C 0572816C - buffer_load_dwordx4 v1, s[56:59], s79 offen lds // 000000003FF8: E05D1000 4F0E0001 - v_mfma_f32_16x16x32_bf16 a[96:99], v[112:115], v[36:39], a[96:99]// 000000004000: D3B58060 05824970 - s_add_u32 m0, m0, 0x1040 // 000000004008: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[100:103], v[112:115], v[40:43], a[100:103]// 000000004010: D3B58064 05925170 - buffer_load_dwordx4 v1, s[56:59], s80 offen lds // 000000004018: E05D1000 500E0001 - v_mfma_f32_16x16x32_bf16 a[104:107], v[112:115], v[44:47], a[104:107]// 000000004020: D3B58068 05A25970 - v_mfma_f32_16x16x32_bf16 a[108:111], v[112:115], v[48:51], a[108:111]// 000000004028: D3B5806C 05B26170 - s_waitcnt vmcnt(13) // 000000004030: BF8C0F7D - v_mfma_f32_16x16x32_bf16 a[112:115], v[112:115], v[52:55], a[112:115]// 000000004034: D3B58070 05C26970 - s_barrier // 00000000403C: BF8A0000 - v_mfma_f32_16x16x32_bf16 a[116:119], v[112:115], v[56:59], a[116:119]// 000000004040: D3B58074 05D27170 - ds_read_b128 v[4:7], v2 // 000000004048: D9FE0000 04000002 - v_mfma_f32_16x16x32_bf16 a[120:123], v[112:115], v[60:63], a[120:123]// 000000004050: D3B58078 05E27970 - ds_read_b128 v[8:11], v2 offset:128 // 000000004058: D9FE0080 08000002 - s_add_u32 m0, m0, 0x1040 // 000000004060: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[124:127], v[112:115], v[64:67], a[124:127]// 000000004068: D3B5807C 05F28170 - ds_read_b128 v[12:15], v2 offset:256 // 000000004070: D9FE0100 0C000002 - v_mfma_f32_16x16x32_bf16 a[128:131], v[116:119], v[36:39], a[128:131]// 000000004078: D3B58080 06024974 - buffer_load_dwordx4 v1, s[56:59], s81 offen lds // 000000004080: E05D1000 510E0001 - v_mfma_f32_16x16x32_bf16 a[132:135], v[116:119], v[40:43], a[132:135]// 000000004088: D3B58084 06125174 - ds_read_b128 v[16:19], v2 offset:384 // 000000004090: D9FE0180 10000002 - v_mfma_f32_16x16x32_bf16 a[136:139], v[116:119], v[44:47], a[136:139]// 000000004098: D3B58088 06225974 - ds_read_b128 v[20:23], v2 offset:512 // 0000000040A0: D9FE0200 14000002 - s_add_u32 m0, m0, 0x1040 // 0000000040A8: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[140:143], v[116:119], v[48:51], a[140:143]// 0000000040B0: D3B5808C 06326174 - v_mfma_f32_16x16x32_bf16 a[144:147], v[116:119], v[52:55], a[144:147]// 0000000040B8: D3B58090 06426974 - buffer_load_dwordx4 v1, s[56:59], s82 offen lds // 0000000040C0: E05D1000 520E0001 - v_mfma_f32_16x16x32_bf16 a[148:151], v[116:119], v[56:59], a[148:151]// 0000000040C8: D3B58094 06527174 - v_mfma_f32_16x16x32_bf16 a[152:155], v[116:119], v[60:63], a[152:155]// 0000000040D0: D3B58098 06627974 - ds_read_b128 v[24:27], v2 offset:640 // 0000000040D8: D9FE0280 18000002 - s_add_u32 m0, m0, 0x1040 // 0000000040E0: 807CFF7C 00001040 - v_mfma_f32_16x16x32_bf16 a[156:159], v[116:119], v[64:67], a[156:159]// 0000000040E8: D3B5809C 06728174 - ds_read_b128 v[28:31], v2 offset:768 // 0000000040F0: D9FE0300 1C000002 - v_mfma_f32_16x16x32_bf16 a[160:163], v[120:123], v[36:39], a[160:163]// 0000000040F8: D3B580A0 06824978 - ds_read_b128 v[32:35], v2 offset:896 // 000000004100: D9FE0380 20000002 - v_mfma_f32_16x16x32_bf16 a[164:167], v[120:123], v[40:43], a[164:167]// 000000004108: D3B580A4 06925178 - ds_read_b128 v[68:71], v3 // 000000004110: D9FE0000 44000003 - v_mfma_f32_16x16x32_bf16 a[168:171], v[120:123], v[44:47], a[168:171]// 000000004118: D3B580A8 06A25978 - ds_read_b128 v[72:75], v3 offset:128 // 000000004120: D9FE0080 48000003 - v_mfma_f32_16x16x32_bf16 a[172:175], v[120:123], v[48:51], a[172:175]// 000000004128: D3B580AC 06B26178 - v_mfma_f32_16x16x32_bf16 a[176:179], v[120:123], v[52:55], a[176:179]// 000000004130: D3B580B0 06C26978 - v_mfma_f32_16x16x32_bf16 a[180:183], v[120:123], v[56:59], a[180:183]// 000000004138: D3B580B4 06D27178 - ds_read_b128 v[76:79], v3 offset:256 // 000000004140: D9FE0100 4C000003 - v_mfma_f32_16x16x32_bf16 a[184:187], v[120:123], v[60:63], a[184:187]// 000000004148: D3B580B8 06E27978 - v_mfma_f32_16x16x32_bf16 a[188:191], v[120:123], v[64:67], a[188:191]// 000000004150: D3B580BC 06F28178 - v_mfma_f32_16x16x32_bf16 a[192:195], v[124:127], v[36:39], a[192:195]// 000000004158: D3B580C0 0702497C - ds_read_b128 v[80:83], v3 offset:384 // 000000004160: D9FE0180 50000003 - v_mfma_f32_16x16x32_bf16 a[196:199], v[124:127], v[40:43], a[196:199]// 000000004168: D3B580C4 0712517C - v_mfma_f32_16x16x32_bf16 a[200:203], v[124:127], v[44:47], a[200:203]// 000000004170: D3B580C8 0722597C - ds_read_b128 v[84:87], v3 offset:512 // 000000004178: D9FE0200 54000003 - v_mfma_f32_16x16x32_bf16 a[204:207], v[124:127], v[48:51], a[204:207]// 000000004180: D3B580CC 0732617C - v_mfma_f32_16x16x32_bf16 a[208:211], v[124:127], v[52:55], a[208:211]// 000000004188: D3B580D0 0742697C - v_mfma_f32_16x16x32_bf16 a[212:215], v[124:127], v[56:59], a[212:215]// 000000004190: D3B580D4 0752717C - ds_read_b128 v[88:91], v3 offset:640 // 000000004198: D9FE0280 58000003 - v_mfma_f32_16x16x32_bf16 a[216:219], v[124:127], v[60:63], a[216:219]// 0000000041A0: D3B580D8 0762797C - v_mfma_f32_16x16x32_bf16 a[220:223], v[124:127], v[64:67], a[220:223]// 0000000041A8: D3B580DC 0772817C - v_mfma_f32_16x16x32_bf16 a[224:227], v[128:131], v[36:39], a[224:227]// 0000000041B0: D3B580E0 07824980 - ds_read_b128 v[92:95], v3 offset:768 // 0000000041B8: D9FE0300 5C000003 - v_mfma_f32_16x16x32_bf16 a[228:231], v[128:131], v[40:43], a[228:231]// 0000000041C0: D3B580E4 07925180 - v_mfma_f32_16x16x32_bf16 a[232:235], v[128:131], v[44:47], a[232:235]// 0000000041C8: D3B580E8 07A25980 - v_mfma_f32_16x16x32_bf16 a[236:239], v[128:131], v[48:51], a[236:239]// 0000000041D0: D3B580EC 07B26180 - ds_read_b128 v[96:99], v3 offset:896 // 0000000041D8: D9FE0380 60000003 - v_mfma_f32_16x16x32_bf16 a[240:243], v[128:131], v[52:55], a[240:243]// 0000000041E0: D3B580F0 07C26980 - buffer_load_dwordx4 v1, s[56:59], s83 offen lds // 0000000041E8: E05D1000 530E0001 - v_mfma_f32_16x16x32_bf16 a[244:247], v[128:131], v[56:59], a[244:247]// 0000000041F0: D3B580F4 07D27180 - s_xor_b32 s47, s49, s47 // 0000000041F8: 882F2F31 - s_sub_u32 s12, s12, 1 // 0000000041FC: 808C810C - v_mfma_f32_16x16x32_bf16 a[248:251], v[128:131], v[60:63], a[248:251]// 000000004200: D3B580F8 07E27980 - s_cmp_eq_i32 s12, 2 // 000000004208: BF00820C - s_waitcnt lgkmcnt(0) // 00000000420C: BF8CC07F - v_mfma_f32_16x16x32_bf16 a[252:255], v[128:131], v[64:67], a[252:255]// 000000004210: D3B580FC 07F28180 - s_cbranch_scc0 main_loop // 000000004218: BF84FE62 - -loop_epilogue: - v_mfma_f32_16x16x32_bf16 a[0:3], v[68:71], v[4:7], a[0:3] // 00000000421C: D3B58000 04020944 - ds_read_b128 v[36:39], v2 offset:64 // 000000004224: D9FE0040 24000002 - v_mfma_f32_16x16x32_bf16 a[4:7], v[68:71], v[8:11], a[4:7] // 00000000422C: D3B58004 04121144 - v_mfma_f32_16x16x32_bf16 a[8:11], v[68:71], v[12:15], a[8:11]// 000000004234: D3B58008 04221944 - ds_read_b128 v[100:103], v3 offset:64 // 00000000423C: D9FE0040 64000003 - v_mfma_f32_16x16x32_bf16 a[12:15], v[68:71], v[16:19], a[12:15]// 000000004244: D3B5800C 04322144 - v_mfma_f32_16x16x32_bf16 a[16:19], v[68:71], v[20:23], a[16:19]// 00000000424C: D3B58010 04422944 - ds_read_b128 v[40:43], v2 offset:192 // 000000004254: D9FE00C0 28000002 - v_mfma_f32_16x16x32_bf16 a[20:23], v[68:71], v[24:27], a[20:23]// 00000000425C: D3B58014 04523144 - v_mfma_f32_16x16x32_bf16 a[24:27], v[68:71], v[28:31], a[24:27]// 000000004264: D3B58018 04623944 - ds_read_b128 v[44:47], v2 offset:320 // 00000000426C: D9FE0140 2C000002 - v_mfma_f32_16x16x32_bf16 a[28:31], v[68:71], v[32:35], a[28:31]// 000000004274: D3B5801C 04724144 - v_mfma_f32_16x16x32_bf16 a[32:35], v[72:75], v[4:7], a[32:35]// 00000000427C: D3B58020 04820948 - ds_read_b128 v[48:51], v2 offset:448 // 000000004284: D9FE01C0 30000002 - v_mfma_f32_16x16x32_bf16 a[36:39], v[72:75], v[8:11], a[36:39]// 00000000428C: D3B58024 04921148 - v_mfma_f32_16x16x32_bf16 a[40:43], v[72:75], v[12:15], a[40:43]// 000000004294: D3B58028 04A21948 - ds_read_b128 v[52:55], v2 offset:576 // 00000000429C: D9FE0240 34000002 - v_mfma_f32_16x16x32_bf16 a[44:47], v[72:75], v[16:19], a[44:47]// 0000000042A4: D3B5802C 04B22148 - v_mfma_f32_16x16x32_bf16 a[48:51], v[72:75], v[20:23], a[48:51]// 0000000042AC: D3B58030 04C22948 - ds_read_b128 v[56:59], v2 offset:704 // 0000000042B4: D9FE02C0 38000002 - v_mfma_f32_16x16x32_bf16 a[52:55], v[72:75], v[24:27], a[52:55]// 0000000042BC: D3B58034 04D23148 - v_mfma_f32_16x16x32_bf16 a[56:59], v[72:75], v[28:31], a[56:59]// 0000000042C4: D3B58038 04E23948 - ds_read_b128 v[60:63], v2 offset:832 // 0000000042CC: D9FE0340 3C000002 - v_mfma_f32_16x16x32_bf16 a[60:63], v[72:75], v[32:35], a[60:63]// 0000000042D4: D3B5803C 04F24148 - v_mfma_f32_16x16x32_bf16 a[64:67], v[76:79], v[4:7], a[64:67]// 0000000042DC: D3B58040 0502094C - ds_read_b128 v[64:67], v2 offset:960 // 0000000042E4: D9FE03C0 40000002 - v_mfma_f32_16x16x32_bf16 a[68:71], v[76:79], v[8:11], a[68:71]// 0000000042EC: D3B58044 0512114C - v_mfma_f32_16x16x32_bf16 a[72:75], v[76:79], v[12:15], a[72:75]// 0000000042F4: D3B58048 0522194C - ds_read_b128 v[104:107], v3 offset:192 // 0000000042FC: D9FE00C0 68000003 - v_mfma_f32_16x16x32_bf16 a[76:79], v[76:79], v[16:19], a[76:79]// 000000004304: D3B5804C 0532214C - v_mfma_f32_16x16x32_bf16 a[80:83], v[76:79], v[20:23], a[80:83]// 00000000430C: D3B58050 0542294C - ds_read_b128 v[108:111], v3 offset:320 // 000000004314: D9FE0140 6C000003 - v_mfma_f32_16x16x32_bf16 a[84:87], v[76:79], v[24:27], a[84:87]// 00000000431C: D3B58054 0552314C - v_mfma_f32_16x16x32_bf16 a[88:91], v[76:79], v[28:31], a[88:91]// 000000004324: D3B58058 0562394C - ds_read_b128 v[112:115], v3 offset:448 // 00000000432C: D9FE01C0 70000003 - v_mfma_f32_16x16x32_bf16 a[92:95], v[76:79], v[32:35], a[92:95]// 000000004334: D3B5805C 0572414C - v_mfma_f32_16x16x32_bf16 a[96:99], v[80:83], v[4:7], a[96:99]// 00000000433C: D3B58060 05820950 - ds_read_b128 v[116:119], v3 offset:576 // 000000004344: D9FE0240 74000003 - v_mfma_f32_16x16x32_bf16 a[100:103], v[80:83], v[8:11], a[100:103]// 00000000434C: D3B58064 05921150 - v_mfma_f32_16x16x32_bf16 a[104:107], v[80:83], v[12:15], a[104:107]// 000000004354: D3B58068 05A21950 - ds_read_b128 v[120:123], v3 offset:704 // 00000000435C: D9FE02C0 78000003 - v_mfma_f32_16x16x32_bf16 a[108:111], v[80:83], v[16:19], a[108:111]// 000000004364: D3B5806C 05B22150 - v_mfma_f32_16x16x32_bf16 a[112:115], v[80:83], v[20:23], a[112:115]// 00000000436C: D3B58070 05C22950 - ds_read_b128 v[124:127], v3 offset:832 // 000000004374: D9FE0340 7C000003 - v_mfma_f32_16x16x32_bf16 a[116:119], v[80:83], v[24:27], a[116:119]// 00000000437C: D3B58074 05D23150 - v_mfma_f32_16x16x32_bf16 a[120:123], v[80:83], v[28:31], a[120:123]// 000000004384: D3B58078 05E23950 - ds_read_b128 v[128:131], v3 offset:960 // 00000000438C: D9FE03C0 80000003 - v_mfma_f32_16x16x32_bf16 a[124:127], v[80:83], v[32:35], a[124:127]// 000000004394: D3B5807C 05F24150 - v_mfma_f32_16x16x32_bf16 a[128:131], v[84:87], v[4:7], a[128:131]// 00000000439C: D3B58080 06020954 - v_mfma_f32_16x16x32_bf16 a[132:135], v[84:87], v[8:11], a[132:135]// 0000000043A4: D3B58084 06121154 - v_mfma_f32_16x16x32_bf16 a[136:139], v[84:87], v[12:15], a[136:139]// 0000000043AC: D3B58088 06221954 - v_mfma_f32_16x16x32_bf16 a[140:143], v[84:87], v[16:19], a[140:143]// 0000000043B4: D3B5808C 06322154 - v_mfma_f32_16x16x32_bf16 a[144:147], v[84:87], v[20:23], a[144:147]// 0000000043BC: D3B58090 06422954 - v_mfma_f32_16x16x32_bf16 a[148:151], v[84:87], v[24:27], a[148:151]// 0000000043C4: D3B58094 06523154 - v_mfma_f32_16x16x32_bf16 a[152:155], v[84:87], v[28:31], a[152:155]// 0000000043CC: D3B58098 06623954 - v_mfma_f32_16x16x32_bf16 a[156:159], v[84:87], v[32:35], a[156:159]// 0000000043D4: D3B5809C 06724154 - v_mfma_f32_16x16x32_bf16 a[160:163], v[88:91], v[4:7], a[160:163]// 0000000043DC: D3B580A0 06820958 - v_mfma_f32_16x16x32_bf16 a[164:167], v[88:91], v[8:11], a[164:167]// 0000000043E4: D3B580A4 06921158 - v_mfma_f32_16x16x32_bf16 a[168:171], v[88:91], v[12:15], a[168:171]// 0000000043EC: D3B580A8 06A21958 - v_mfma_f32_16x16x32_bf16 a[172:175], v[88:91], v[16:19], a[172:175]// 0000000043F4: D3B580AC 06B22158 - v_mfma_f32_16x16x32_bf16 a[176:179], v[88:91], v[20:23], a[176:179]// 0000000043FC: D3B580B0 06C22958 - v_mfma_f32_16x16x32_bf16 a[180:183], v[88:91], v[24:27], a[180:183]// 000000004404: D3B580B4 06D23158 - v_mfma_f32_16x16x32_bf16 a[184:187], v[88:91], v[28:31], a[184:187]// 00000000440C: D3B580B8 06E23958 - v_mfma_f32_16x16x32_bf16 a[188:191], v[88:91], v[32:35], a[188:191]// 000000004414: D3B580BC 06F24158 - v_mfma_f32_16x16x32_bf16 a[192:195], v[92:95], v[4:7], a[192:195]// 00000000441C: D3B580C0 0702095C - v_mfma_f32_16x16x32_bf16 a[196:199], v[92:95], v[8:11], a[196:199]// 000000004424: D3B580C4 0712115C - v_mfma_f32_16x16x32_bf16 a[200:203], v[92:95], v[12:15], a[200:203]// 00000000442C: D3B580C8 0722195C - v_mfma_f32_16x16x32_bf16 a[204:207], v[92:95], v[16:19], a[204:207]// 000000004434: D3B580CC 0732215C - v_mfma_f32_16x16x32_bf16 a[208:211], v[92:95], v[20:23], a[208:211]// 00000000443C: D3B580D0 0742295C - v_mfma_f32_16x16x32_bf16 a[212:215], v[92:95], v[24:27], a[212:215]// 000000004444: D3B580D4 0752315C - v_mfma_f32_16x16x32_bf16 a[216:219], v[92:95], v[28:31], a[216:219]// 00000000444C: D3B580D8 0762395C - v_mfma_f32_16x16x32_bf16 a[220:223], v[92:95], v[32:35], a[220:223]// 000000004454: D3B580DC 0772415C - v_mfma_f32_16x16x32_bf16 a[224:227], v[96:99], v[4:7], a[224:227]// 00000000445C: D3B580E0 07820960 - v_mfma_f32_16x16x32_bf16 a[228:231], v[96:99], v[8:11], a[228:231]// 000000004464: D3B580E4 07921160 - v_mfma_f32_16x16x32_bf16 a[232:235], v[96:99], v[12:15], a[232:235]// 00000000446C: D3B580E8 07A21960 - v_mfma_f32_16x16x32_bf16 a[236:239], v[96:99], v[16:19], a[236:239]// 000000004474: D3B580EC 07B22160 - v_mfma_f32_16x16x32_bf16 a[240:243], v[96:99], v[20:23], a[240:243]// 00000000447C: D3B580F0 07C22960 - v_mfma_f32_16x16x32_bf16 a[244:247], v[96:99], v[24:27], a[244:247]// 000000004484: D3B580F4 07D23160 - v_mfma_f32_16x16x32_bf16 a[248:251], v[96:99], v[28:31], a[248:251]// 00000000448C: D3B580F8 07E23960 - v_xor_b32_e32 v2, v132, v2 // 000000004494: 2A040584 - v_xor_b32_e32 v3, v133, v3 // 000000004498: 2A060785 - v_mfma_f32_16x16x32_bf16 a[252:255], v[96:99], v[32:35], a[252:255]// 00000000449C: D3B580FC 07F24160 - s_waitcnt lgkmcnt(0) // 0000000044A4: BF8CC07F - v_mfma_f32_16x16x32_bf16 a[0:3], v[100:103], v[36:39], a[0:3]// 0000000044A8: D3B58000 04024964 - v_mfma_f32_16x16x32_bf16 a[4:7], v[100:103], v[40:43], a[4:7]// 0000000044B0: D3B58004 04125164 - v_mfma_f32_16x16x32_bf16 a[8:11], v[100:103], v[44:47], a[8:11]// 0000000044B8: D3B58008 04225964 - v_mfma_f32_16x16x32_bf16 a[12:15], v[100:103], v[48:51], a[12:15]// 0000000044C0: D3B5800C 04326164 - v_mfma_f32_16x16x32_bf16 a[16:19], v[100:103], v[52:55], a[16:19]// 0000000044C8: D3B58010 04426964 - v_mfma_f32_16x16x32_bf16 a[20:23], v[100:103], v[56:59], a[20:23]// 0000000044D0: D3B58014 04527164 - v_mfma_f32_16x16x32_bf16 a[24:27], v[100:103], v[60:63], a[24:27]// 0000000044D8: D3B58018 04627964 - v_mfma_f32_16x16x32_bf16 a[28:31], v[100:103], v[64:67], a[28:31]// 0000000044E0: D3B5801C 04728164 - v_mfma_f32_16x16x32_bf16 a[32:35], v[104:107], v[36:39], a[32:35]// 0000000044E8: D3B58020 04824968 - v_mfma_f32_16x16x32_bf16 a[36:39], v[104:107], v[40:43], a[36:39]// 0000000044F0: D3B58024 04925168 - v_mfma_f32_16x16x32_bf16 a[40:43], v[104:107], v[44:47], a[40:43]// 0000000044F8: D3B58028 04A25968 - v_mfma_f32_16x16x32_bf16 a[44:47], v[104:107], v[48:51], a[44:47]// 000000004500: D3B5802C 04B26168 - v_mfma_f32_16x16x32_bf16 a[48:51], v[104:107], v[52:55], a[48:51]// 000000004508: D3B58030 04C26968 - v_mfma_f32_16x16x32_bf16 a[52:55], v[104:107], v[56:59], a[52:55]// 000000004510: D3B58034 04D27168 - v_mfma_f32_16x16x32_bf16 a[56:59], v[104:107], v[60:63], a[56:59]// 000000004518: D3B58038 04E27968 - v_mfma_f32_16x16x32_bf16 a[60:63], v[104:107], v[64:67], a[60:63]// 000000004520: D3B5803C 04F28168 - v_mfma_f32_16x16x32_bf16 a[64:67], v[108:111], v[36:39], a[64:67]// 000000004528: D3B58040 0502496C - v_mfma_f32_16x16x32_bf16 a[68:71], v[108:111], v[40:43], a[68:71]// 000000004530: D3B58044 0512516C - v_mfma_f32_16x16x32_bf16 a[72:75], v[108:111], v[44:47], a[72:75]// 000000004538: D3B58048 0522596C - v_mfma_f32_16x16x32_bf16 a[76:79], v[108:111], v[48:51], a[76:79]// 000000004540: D3B5804C 0532616C - v_mfma_f32_16x16x32_bf16 a[80:83], v[108:111], v[52:55], a[80:83]// 000000004548: D3B58050 0542696C - v_mfma_f32_16x16x32_bf16 a[84:87], v[108:111], v[56:59], a[84:87]// 000000004550: D3B58054 0552716C - v_mfma_f32_16x16x32_bf16 a[88:91], v[108:111], v[60:63], a[88:91]// 000000004558: D3B58058 0562796C - v_mfma_f32_16x16x32_bf16 a[92:95], v[108:111], v[64:67], a[92:95]// 000000004560: D3B5805C 0572816C - v_mfma_f32_16x16x32_bf16 a[96:99], v[112:115], v[36:39], a[96:99]// 000000004568: D3B58060 05824970 - v_mfma_f32_16x16x32_bf16 a[100:103], v[112:115], v[40:43], a[100:103]// 000000004570: D3B58064 05925170 - v_mfma_f32_16x16x32_bf16 a[104:107], v[112:115], v[44:47], a[104:107]// 000000004578: D3B58068 05A25970 - v_mfma_f32_16x16x32_bf16 a[108:111], v[112:115], v[48:51], a[108:111]// 000000004580: D3B5806C 05B26170 - v_mfma_f32_16x16x32_bf16 a[112:115], v[112:115], v[52:55], a[112:115]// 000000004588: D3B58070 05C26970 - v_mfma_f32_16x16x32_bf16 a[116:119], v[112:115], v[56:59], a[116:119]// 000000004590: D3B58074 05D27170 - v_mfma_f32_16x16x32_bf16 a[120:123], v[112:115], v[60:63], a[120:123]// 000000004598: D3B58078 05E27970 - v_mfma_f32_16x16x32_bf16 a[124:127], v[112:115], v[64:67], a[124:127]// 0000000045A0: D3B5807C 05F28170 - v_mfma_f32_16x16x32_bf16 a[128:131], v[116:119], v[36:39], a[128:131]// 0000000045A8: D3B58080 06024974 - v_mfma_f32_16x16x32_bf16 a[132:135], v[116:119], v[40:43], a[132:135]// 0000000045B0: D3B58084 06125174 - v_mfma_f32_16x16x32_bf16 a[136:139], v[116:119], v[44:47], a[136:139]// 0000000045B8: D3B58088 06225974 - v_mfma_f32_16x16x32_bf16 a[140:143], v[116:119], v[48:51], a[140:143]// 0000000045C0: D3B5808C 06326174 - v_mfma_f32_16x16x32_bf16 a[144:147], v[116:119], v[52:55], a[144:147]// 0000000045C8: D3B58090 06426974 - v_mfma_f32_16x16x32_bf16 a[148:151], v[116:119], v[56:59], a[148:151]// 0000000045D0: D3B58094 06527174 - v_mfma_f32_16x16x32_bf16 a[152:155], v[116:119], v[60:63], a[152:155]// 0000000045D8: D3B58098 06627974 - v_mfma_f32_16x16x32_bf16 a[156:159], v[116:119], v[64:67], a[156:159]// 0000000045E0: D3B5809C 06728174 - v_mfma_f32_16x16x32_bf16 a[160:163], v[120:123], v[36:39], a[160:163]// 0000000045E8: D3B580A0 06824978 - v_mfma_f32_16x16x32_bf16 a[164:167], v[120:123], v[40:43], a[164:167]// 0000000045F0: D3B580A4 06925178 - s_waitcnt vmcnt(0) // 0000000045F8: BF8C0F70 - v_mfma_f32_16x16x32_bf16 a[168:171], v[120:123], v[44:47], a[168:171]// 0000000045FC: D3B580A8 06A25978 - s_barrier // 000000004604: BF8A0000 - v_mfma_f32_16x16x32_bf16 a[172:175], v[120:123], v[48:51], a[172:175]// 000000004608: D3B580AC 06B26178 - ds_read_b128 v[4:7], v2 // 000000004610: D9FE0000 04000002 - v_mfma_f32_16x16x32_bf16 a[176:179], v[120:123], v[52:55], a[176:179]// 000000004618: D3B580B0 06C26978 - ds_read_b128 v[68:71], v3 // 000000004620: D9FE0000 44000003 - v_mfma_f32_16x16x32_bf16 a[180:183], v[120:123], v[56:59], a[180:183]// 000000004628: D3B580B4 06D27178 - ds_read_b128 v[8:11], v2 offset:128 // 000000004630: D9FE0080 08000002 - v_mfma_f32_16x16x32_bf16 a[184:187], v[120:123], v[60:63], a[184:187]// 000000004638: D3B580B8 06E27978 - ds_read_b128 v[12:15], v2 offset:256 // 000000004640: D9FE0100 0C000002 - v_mfma_f32_16x16x32_bf16 a[188:191], v[120:123], v[64:67], a[188:191]// 000000004648: D3B580BC 06F28178 - ds_read_b128 v[16:19], v2 offset:384 // 000000004650: D9FE0180 10000002 - v_mfma_f32_16x16x32_bf16 a[192:195], v[124:127], v[36:39], a[192:195]// 000000004658: D3B580C0 0702497C - ds_read_b128 v[20:23], v2 offset:512 // 000000004660: D9FE0200 14000002 - v_mfma_f32_16x16x32_bf16 a[196:199], v[124:127], v[40:43], a[196:199]// 000000004668: D3B580C4 0712517C - ds_read_b128 v[24:27], v2 offset:640 // 000000004670: D9FE0280 18000002 - v_mfma_f32_16x16x32_bf16 a[200:203], v[124:127], v[44:47], a[200:203]// 000000004678: D3B580C8 0722597C - ds_read_b128 v[28:31], v2 offset:768 // 000000004680: D9FE0300 1C000002 - v_mfma_f32_16x16x32_bf16 a[204:207], v[124:127], v[48:51], a[204:207]// 000000004688: D3B580CC 0732617C - ds_read_b128 v[32:35], v2 offset:896 // 000000004690: D9FE0380 20000002 - v_mfma_f32_16x16x32_bf16 a[208:211], v[124:127], v[52:55], a[208:211]// 000000004698: D3B580D0 0742697C - ds_read_b128 v[72:75], v3 offset:128 // 0000000046A0: D9FE0080 48000003 - v_mfma_f32_16x16x32_bf16 a[212:215], v[124:127], v[56:59], a[212:215]// 0000000046A8: D3B580D4 0752717C - ds_read_b128 v[76:79], v3 offset:256 // 0000000046B0: D9FE0100 4C000003 - v_mfma_f32_16x16x32_bf16 a[216:219], v[124:127], v[60:63], a[216:219]// 0000000046B8: D3B580D8 0762797C - ds_read_b128 v[80:83], v3 offset:384 // 0000000046C0: D9FE0180 50000003 - v_mfma_f32_16x16x32_bf16 a[220:223], v[124:127], v[64:67], a[220:223]// 0000000046C8: D3B580DC 0772817C - ds_read_b128 v[84:87], v3 offset:512 // 0000000046D0: D9FE0200 54000003 - v_mfma_f32_16x16x32_bf16 a[224:227], v[128:131], v[36:39], a[224:227]// 0000000046D8: D3B580E0 07824980 - ds_read_b128 v[88:91], v3 offset:640 // 0000000046E0: D9FE0280 58000003 - v_mfma_f32_16x16x32_bf16 a[228:231], v[128:131], v[40:43], a[228:231]// 0000000046E8: D3B580E4 07925180 - ds_read_b128 v[92:95], v3 offset:768 // 0000000046F0: D9FE0300 5C000003 - v_mfma_f32_16x16x32_bf16 a[232:235], v[128:131], v[44:47], a[232:235]// 0000000046F8: D3B580E8 07A25980 - ds_read_b128 v[96:99], v3 offset:896 // 000000004700: D9FE0380 60000003 - v_mfma_f32_16x16x32_bf16 a[236:239], v[128:131], v[48:51], a[236:239]// 000000004708: D3B580EC 07B26180 - v_mfma_f32_16x16x32_bf16 a[240:243], v[128:131], v[52:55], a[240:243]// 000000004710: D3B580F0 07C26980 - v_mfma_f32_16x16x32_bf16 a[244:247], v[128:131], v[56:59], a[244:247]// 000000004718: D3B580F4 07D27180 - v_mfma_f32_16x16x32_bf16 a[248:251], v[128:131], v[60:63], a[248:251]// 000000004720: D3B580F8 07E27980 - v_mfma_f32_16x16x32_bf16 a[252:255], v[128:131], v[64:67], a[252:255]// 000000004728: D3B580FC 07F28180 - -final_compute: - s_and_b32 s8, s50, 0x3fff // 000000004730: 8608FF32 00003FFF - s_and_b32 s84, 0xff, s24 // 000000004750: 865418FF 000000FF - s_add_u32 s85, -1, s14 // 000000004758: 80550EC1 - s_cmp_ge_u32 s2, s85 // 00000000475C: BF095502 - s_cselect_b32 s84, s84, 0 // 000000004760: 85548054 - s_and_b32 s84, 0xff, s25 // 00000000476C: 865419FF 000000FF - s_add_u32 s85, -1, s15 // 000000004774: 80550FC1 - s_cmp_ge_u32 s3, s85 // 000000004778: BF095503 - s_cselect_b32 s84, s84, 0 // 00000000477C: 85548054 - v_mfma_f32_16x16x32_bf16 a[0:3], v[68:71], v[4:7], a[0:3] // 000000004788: D3B58000 04020944 - ds_read_b128 v[36:39], v2 offset:64 // 000000004790: D9FE0040 24000002 - v_mfma_f32_16x16x32_bf16 a[4:7], v[68:71], v[8:11], a[4:7] // 000000004798: D3B58004 04121144 - v_mfma_f32_16x16x32_bf16 a[8:11], v[68:71], v[12:15], a[8:11]// 0000000047A0: D3B58008 04221944 - ds_read_b128 v[100:103], v3 offset:64 // 0000000047A8: D9FE0040 64000003 - v_mfma_f32_16x16x32_bf16 a[12:15], v[68:71], v[16:19], a[12:15]// 0000000047B0: D3B5800C 04322144 - v_mfma_f32_16x16x32_bf16 a[16:19], v[68:71], v[20:23], a[16:19]// 0000000047B8: D3B58010 04422944 - ds_read_b128 v[40:43], v2 offset:192 // 0000000047C0: D9FE00C0 28000002 - v_mfma_f32_16x16x32_bf16 a[20:23], v[68:71], v[24:27], a[20:23]// 0000000047C8: D3B58014 04523144 - v_mfma_f32_16x16x32_bf16 a[24:27], v[68:71], v[28:31], a[24:27]// 0000000047D0: D3B58018 04623944 - ds_read_b128 v[44:47], v2 offset:320 // 0000000047D8: D9FE0140 2C000002 - v_mfma_f32_16x16x32_bf16 a[28:31], v[68:71], v[32:35], a[28:31]// 0000000047E0: D3B5801C 04724144 - v_mfma_f32_16x16x32_bf16 a[32:35], v[72:75], v[4:7], a[32:35]// 0000000047E8: D3B58020 04820948 - ds_read_b128 v[48:51], v2 offset:448 // 0000000047F0: D9FE01C0 30000002 - v_mfma_f32_16x16x32_bf16 a[36:39], v[72:75], v[8:11], a[36:39]// 0000000047F8: D3B58024 04921148 - v_mfma_f32_16x16x32_bf16 a[40:43], v[72:75], v[12:15], a[40:43]// 000000004800: D3B58028 04A21948 - ds_read_b128 v[52:55], v2 offset:576 // 000000004808: D9FE0240 34000002 - v_mfma_f32_16x16x32_bf16 a[44:47], v[72:75], v[16:19], a[44:47]// 000000004810: D3B5802C 04B22148 - v_mfma_f32_16x16x32_bf16 a[48:51], v[72:75], v[20:23], a[48:51]// 000000004818: D3B58030 04C22948 - ds_read_b128 v[56:59], v2 offset:704 // 000000004820: D9FE02C0 38000002 - v_mfma_f32_16x16x32_bf16 a[52:55], v[72:75], v[24:27], a[52:55]// 000000004828: D3B58034 04D23148 - v_mfma_f32_16x16x32_bf16 a[56:59], v[72:75], v[28:31], a[56:59]// 000000004830: D3B58038 04E23948 - ds_read_b128 v[60:63], v2 offset:832 // 000000004838: D9FE0340 3C000002 - v_mfma_f32_16x16x32_bf16 a[60:63], v[72:75], v[32:35], a[60:63]// 000000004840: D3B5803C 04F24148 - v_mfma_f32_16x16x32_bf16 a[64:67], v[76:79], v[4:7], a[64:67]// 000000004848: D3B58040 0502094C - ds_read_b128 v[64:67], v2 offset:960 // 000000004850: D9FE03C0 40000002 - v_mfma_f32_16x16x32_bf16 a[68:71], v[76:79], v[8:11], a[68:71]// 000000004858: D3B58044 0512114C - v_mfma_f32_16x16x32_bf16 a[72:75], v[76:79], v[12:15], a[72:75]// 000000004860: D3B58048 0522194C - ds_read_b128 v[104:107], v3 offset:192 // 000000004868: D9FE00C0 68000003 - v_mfma_f32_16x16x32_bf16 a[76:79], v[76:79], v[16:19], a[76:79]// 000000004870: D3B5804C 0532214C - v_mfma_f32_16x16x32_bf16 a[80:83], v[76:79], v[20:23], a[80:83]// 000000004878: D3B58050 0542294C - ds_read_b128 v[108:111], v3 offset:320 // 000000004880: D9FE0140 6C000003 - v_mfma_f32_16x16x32_bf16 a[84:87], v[76:79], v[24:27], a[84:87]// 000000004888: D3B58054 0552314C - v_mfma_f32_16x16x32_bf16 a[88:91], v[76:79], v[28:31], a[88:91]// 000000004890: D3B58058 0562394C - ds_read_b128 v[112:115], v3 offset:448 // 000000004898: D9FE01C0 70000003 - v_mfma_f32_16x16x32_bf16 a[92:95], v[76:79], v[32:35], a[92:95]// 0000000048A0: D3B5805C 0572414C - v_mfma_f32_16x16x32_bf16 a[96:99], v[80:83], v[4:7], a[96:99]// 0000000048A8: D3B58060 05820950 - ds_read_b128 v[116:119], v3 offset:576 // 0000000048B0: D9FE0240 74000003 - v_mfma_f32_16x16x32_bf16 a[100:103], v[80:83], v[8:11], a[100:103]// 0000000048B8: D3B58064 05921150 - v_mfma_f32_16x16x32_bf16 a[104:107], v[80:83], v[12:15], a[104:107]// 0000000048C0: D3B58068 05A21950 - ds_read_b128 v[120:123], v3 offset:704 // 0000000048C8: D9FE02C0 78000003 - v_mfma_f32_16x16x32_bf16 a[108:111], v[80:83], v[16:19], a[108:111]// 0000000048D0: D3B5806C 05B22150 - v_mfma_f32_16x16x32_bf16 a[112:115], v[80:83], v[20:23], a[112:115]// 0000000048D8: D3B58070 05C22950 - ds_read_b128 v[124:127], v3 offset:832 // 0000000048E0: D9FE0340 7C000003 - v_mfma_f32_16x16x32_bf16 a[116:119], v[80:83], v[24:27], a[116:119]// 0000000048E8: D3B58074 05D23150 - v_mfma_f32_16x16x32_bf16 a[120:123], v[80:83], v[28:31], a[120:123]// 0000000048F0: D3B58078 05E23950 - ds_read_b128 v[128:131], v3 offset:960 // 0000000048F8: D9FE03C0 80000003 - v_mfma_f32_16x16x32_bf16 a[124:127], v[80:83], v[32:35], a[124:127]// 000000004900: D3B5807C 05F24150 - v_mfma_f32_16x16x32_bf16 a[128:131], v[84:87], v[4:7], a[128:131]// 000000004908: D3B58080 06020954 - v_mfma_f32_16x16x32_bf16 a[132:135], v[84:87], v[8:11], a[132:135]// 000000004910: D3B58084 06121154 - v_mfma_f32_16x16x32_bf16 a[136:139], v[84:87], v[12:15], a[136:139]// 000000004918: D3B58088 06221954 - v_mfma_f32_16x16x32_bf16 a[140:143], v[84:87], v[16:19], a[140:143]// 000000004920: D3B5808C 06322154 - v_mfma_f32_16x16x32_bf16 a[144:147], v[84:87], v[20:23], a[144:147]// 000000004928: D3B58090 06422954 - v_mfma_f32_16x16x32_bf16 a[148:151], v[84:87], v[24:27], a[148:151]// 000000004930: D3B58094 06523154 - v_mfma_f32_16x16x32_bf16 a[152:155], v[84:87], v[28:31], a[152:155]// 000000004938: D3B58098 06623954 - v_mfma_f32_16x16x32_bf16 a[156:159], v[84:87], v[32:35], a[156:159]// 000000004940: D3B5809C 06724154 - v_mfma_f32_16x16x32_bf16 a[160:163], v[88:91], v[4:7], a[160:163]// 000000004948: D3B580A0 06820958 - v_mfma_f32_16x16x32_bf16 a[164:167], v[88:91], v[8:11], a[164:167]// 000000004950: D3B580A4 06921158 - v_mfma_f32_16x16x32_bf16 a[168:171], v[88:91], v[12:15], a[168:171]// 000000004958: D3B580A8 06A21958 - v_mfma_f32_16x16x32_bf16 a[172:175], v[88:91], v[16:19], a[172:175]// 000000004960: D3B580AC 06B22158 - v_mfma_f32_16x16x32_bf16 a[176:179], v[88:91], v[20:23], a[176:179]// 000000004968: D3B580B0 06C22958 - v_mfma_f32_16x16x32_bf16 a[180:183], v[88:91], v[24:27], a[180:183]// 000000004970: D3B580B4 06D23158 - v_mfma_f32_16x16x32_bf16 a[184:187], v[88:91], v[28:31], a[184:187]// 000000004978: D3B580B8 06E23958 - v_mfma_f32_16x16x32_bf16 a[188:191], v[88:91], v[32:35], a[188:191]// 000000004980: D3B580BC 06F24158 - v_mfma_f32_16x16x32_bf16 a[192:195], v[92:95], v[4:7], a[192:195]// 000000004988: D3B580C0 0702095C - v_mfma_f32_16x16x32_bf16 a[196:199], v[92:95], v[8:11], a[196:199]// 000000004990: D3B580C4 0712115C - v_mfma_f32_16x16x32_bf16 a[200:203], v[92:95], v[12:15], a[200:203]// 000000004998: D3B580C8 0722195C - v_mfma_f32_16x16x32_bf16 a[204:207], v[92:95], v[16:19], a[204:207]// 0000000049A0: D3B580CC 0732215C - v_mfma_f32_16x16x32_bf16 a[208:211], v[92:95], v[20:23], a[208:211]// 0000000049A8: D3B580D0 0742295C - v_mfma_f32_16x16x32_bf16 a[212:215], v[92:95], v[24:27], a[212:215]// 0000000049B0: D3B580D4 0752315C - v_mfma_f32_16x16x32_bf16 a[216:219], v[92:95], v[28:31], a[216:219]// 0000000049B8: D3B580D8 0762395C - v_mfma_f32_16x16x32_bf16 a[220:223], v[92:95], v[32:35], a[220:223]// 0000000049C0: D3B580DC 0772415C - v_mfma_f32_16x16x32_bf16 a[224:227], v[96:99], v[4:7], a[224:227]// 0000000049C8: D3B580E0 07820960 - v_mfma_f32_16x16x32_bf16 a[228:231], v[96:99], v[8:11], a[228:231]// 0000000049D0: D3B580E4 07921160 - v_mfma_f32_16x16x32_bf16 a[232:235], v[96:99], v[12:15], a[232:235]// 0000000049D8: D3B580E8 07A21960 - v_mfma_f32_16x16x32_bf16 a[236:239], v[96:99], v[16:19], a[236:239]// 0000000049E0: D3B580EC 07B22160 - v_mfma_f32_16x16x32_bf16 a[240:243], v[96:99], v[20:23], a[240:243]// 0000000049E8: D3B580F0 07C22960 - v_mfma_f32_16x16x32_bf16 a[244:247], v[96:99], v[24:27], a[244:247]// 0000000049F0: D3B580F4 07D23160 - v_mfma_f32_16x16x32_bf16 a[248:251], v[96:99], v[28:31], a[248:251]// 0000000049F8: D3B580F8 07E23960 - v_mfma_f32_16x16x32_bf16 a[252:255], v[96:99], v[32:35], a[252:255]// 000000004A00: D3B580FC 07F24160 - s_waitcnt lgkmcnt(0) // 000000004A08: BF8CC07F - v_mfma_f32_16x16x32_bf16 a[0:3], v[100:103], v[36:39], a[0:3]// 000000004A0C: D3B58000 04024964 - v_mfma_f32_16x16x32_bf16 a[4:7], v[100:103], v[40:43], a[4:7]// 000000004A14: D3B58004 04125164 - v_mfma_f32_16x16x32_bf16 a[8:11], v[100:103], v[44:47], a[8:11]// 000000004A1C: D3B58008 04225964 - v_mfma_f32_16x16x32_bf16 a[12:15], v[100:103], v[48:51], a[12:15]// 000000004A24: D3B5800C 04326164 - v_mfma_f32_16x16x32_bf16 a[16:19], v[100:103], v[52:55], a[16:19]// 000000004A2C: D3B58010 04426964 - v_mfma_f32_16x16x32_bf16 a[20:23], v[100:103], v[56:59], a[20:23]// 000000004A34: D3B58014 04527164 - v_mfma_f32_16x16x32_bf16 a[24:27], v[100:103], v[60:63], a[24:27]// 000000004A3C: D3B58018 04627964 - v_mfma_f32_16x16x32_bf16 a[28:31], v[100:103], v[64:67], a[28:31]// 000000004A44: D3B5801C 04728164 - v_mfma_f32_16x16x32_bf16 a[32:35], v[104:107], v[36:39], a[32:35]// 000000004A4C: D3B58020 04824968 - v_mfma_f32_16x16x32_bf16 a[36:39], v[104:107], v[40:43], a[36:39]// 000000004A54: D3B58024 04925168 - v_mfma_f32_16x16x32_bf16 a[40:43], v[104:107], v[44:47], a[40:43]// 000000004A5C: D3B58028 04A25968 - v_mfma_f32_16x16x32_bf16 a[44:47], v[104:107], v[48:51], a[44:47]// 000000004A64: D3B5802C 04B26168 - v_mfma_f32_16x16x32_bf16 a[48:51], v[104:107], v[52:55], a[48:51]// 000000004A6C: D3B58030 04C26968 - v_mfma_f32_16x16x32_bf16 a[52:55], v[104:107], v[56:59], a[52:55]// 000000004A74: D3B58034 04D27168 - v_mfma_f32_16x16x32_bf16 a[56:59], v[104:107], v[60:63], a[56:59]// 000000004A7C: D3B58038 04E27968 - v_mfma_f32_16x16x32_bf16 a[60:63], v[104:107], v[64:67], a[60:63]// 000000004A84: D3B5803C 04F28168 - v_mfma_f32_16x16x32_bf16 a[64:67], v[108:111], v[36:39], a[64:67]// 000000004A8C: D3B58040 0502496C - v_mfma_f32_16x16x32_bf16 a[68:71], v[108:111], v[40:43], a[68:71]// 000000004A94: D3B58044 0512516C - v_mfma_f32_16x16x32_bf16 a[72:75], v[108:111], v[44:47], a[72:75]// 000000004A9C: D3B58048 0522596C - v_mfma_f32_16x16x32_bf16 a[76:79], v[108:111], v[48:51], a[76:79]// 000000004AA4: D3B5804C 0532616C - v_mfma_f32_16x16x32_bf16 a[80:83], v[108:111], v[52:55], a[80:83]// 000000004AAC: D3B58050 0542696C - v_mfma_f32_16x16x32_bf16 a[84:87], v[108:111], v[56:59], a[84:87]// 000000004AB4: D3B58054 0552716C - v_mfma_f32_16x16x32_bf16 a[88:91], v[108:111], v[60:63], a[88:91]// 000000004ABC: D3B58058 0562796C - v_mfma_f32_16x16x32_bf16 a[92:95], v[108:111], v[64:67], a[92:95]// 000000004AC4: D3B5805C 0572816C - v_mfma_f32_16x16x32_bf16 a[96:99], v[112:115], v[36:39], a[96:99]// 000000004ACC: D3B58060 05824970 - v_mfma_f32_16x16x32_bf16 a[100:103], v[112:115], v[40:43], a[100:103]// 000000004AD4: D3B58064 05925170 - v_mfma_f32_16x16x32_bf16 a[104:107], v[112:115], v[44:47], a[104:107]// 000000004ADC: D3B58068 05A25970 - v_mfma_f32_16x16x32_bf16 a[108:111], v[112:115], v[48:51], a[108:111]// 000000004AE4: D3B5806C 05B26170 - v_mfma_f32_16x16x32_bf16 a[112:115], v[112:115], v[52:55], a[112:115]// 000000004AEC: D3B58070 05C26970 - v_mfma_f32_16x16x32_bf16 a[116:119], v[112:115], v[56:59], a[116:119]// 000000004AF4: D3B58074 05D27170 - v_mfma_f32_16x16x32_bf16 a[120:123], v[112:115], v[60:63], a[120:123]// 000000004AFC: D3B58078 05E27970 - v_mfma_f32_16x16x32_bf16 a[124:127], v[112:115], v[64:67], a[124:127]// 000000004B04: D3B5807C 05F28170 - v_mfma_f32_16x16x32_bf16 a[128:131], v[116:119], v[36:39], a[128:131]// 000000004B0C: D3B58080 06024974 - v_mfma_f32_16x16x32_bf16 a[132:135], v[116:119], v[40:43], a[132:135]// 000000004B14: D3B58084 06125174 - v_mfma_f32_16x16x32_bf16 a[136:139], v[116:119], v[44:47], a[136:139]// 000000004B1C: D3B58088 06225974 - v_mfma_f32_16x16x32_bf16 a[140:143], v[116:119], v[48:51], a[140:143]// 000000004B24: D3B5808C 06326174 - v_mfma_f32_16x16x32_bf16 a[144:147], v[116:119], v[52:55], a[144:147]// 000000004B2C: D3B58090 06426974 - v_mfma_f32_16x16x32_bf16 a[148:151], v[116:119], v[56:59], a[148:151]// 000000004B34: D3B58094 06527174 - v_mfma_f32_16x16x32_bf16 a[152:155], v[116:119], v[60:63], a[152:155]// 000000004B3C: D3B58098 06627974 - v_mfma_f32_16x16x32_bf16 a[156:159], v[116:119], v[64:67], a[156:159]// 000000004B44: D3B5809C 06728174 - v_mfma_f32_16x16x32_bf16 a[160:163], v[120:123], v[36:39], a[160:163]// 000000004B4C: D3B580A0 06824978 - v_mfma_f32_16x16x32_bf16 a[164:167], v[120:123], v[40:43], a[164:167]// 000000004B54: D3B580A4 06925178 - v_mfma_f32_16x16x32_bf16 a[168:171], v[120:123], v[44:47], a[168:171]// 000000004B5C: D3B580A8 06A25978 - v_mfma_f32_16x16x32_bf16 a[172:175], v[120:123], v[48:51], a[172:175]// 000000004B64: D3B580AC 06B26178 - v_mfma_f32_16x16x32_bf16 a[176:179], v[120:123], v[52:55], a[176:179]// 000000004B6C: D3B580B0 06C26978 - v_mfma_f32_16x16x32_bf16 a[180:183], v[120:123], v[56:59], a[180:183]// 000000004B74: D3B580B4 06D27178 - v_mfma_f32_16x16x32_bf16 a[184:187], v[120:123], v[60:63], a[184:187]// 000000004B7C: D3B580B8 06E27978 - v_mfma_f32_16x16x32_bf16 a[188:191], v[120:123], v[64:67], a[188:191]// 000000004B84: D3B580BC 06F28178 - v_mfma_f32_16x16x32_bf16 a[192:195], v[124:127], v[36:39], a[192:195]// 000000004B8C: D3B580C0 0702497C - v_mfma_f32_16x16x32_bf16 a[196:199], v[124:127], v[40:43], a[196:199]// 000000004B94: D3B580C4 0712517C - v_mfma_f32_16x16x32_bf16 a[200:203], v[124:127], v[44:47], a[200:203]// 000000004B9C: D3B580C8 0722597C - v_mfma_f32_16x16x32_bf16 a[204:207], v[124:127], v[48:51], a[204:207]// 000000004BA4: D3B580CC 0732617C - v_mfma_f32_16x16x32_bf16 a[208:211], v[124:127], v[52:55], a[208:211]// 000000004BAC: D3B580D0 0742697C - v_mfma_f32_16x16x32_bf16 a[212:215], v[124:127], v[56:59], a[212:215]// 000000004BB4: D3B580D4 0752717C - v_mfma_f32_16x16x32_bf16 a[216:219], v[124:127], v[60:63], a[216:219]// 000000004BBC: D3B580D8 0762797C - v_mfma_f32_16x16x32_bf16 a[220:223], v[124:127], v[64:67], a[220:223]// 000000004BC4: D3B580DC 0772817C - v_mfma_f32_16x16x32_bf16 a[224:227], v[128:131], v[36:39], a[224:227]// 000000004BCC: D3B580E0 07824980 - v_mfma_f32_16x16x32_bf16 a[228:231], v[128:131], v[40:43], a[228:231]// 000000004BD4: D3B580E4 07925180 - v_mfma_f32_16x16x32_bf16 a[232:235], v[128:131], v[44:47], a[232:235]// 000000004BDC: D3B580E8 07A25980 - v_mfma_f32_16x16x32_bf16 a[236:239], v[128:131], v[48:51], a[236:239]// 000000004BE4: D3B580EC 07B26180 - v_mfma_f32_16x16x32_bf16 a[240:243], v[128:131], v[52:55], a[240:243]// 000000004BEC: D3B580F0 07C26980 - v_mfma_f32_16x16x32_bf16 a[244:247], v[128:131], v[56:59], a[244:247]// 000000004BF4: D3B580F4 07D27180 - v_mfma_f32_16x16x32_bf16 a[248:251], v[128:131], v[60:63], a[248:251]// 000000004BFC: D3B580F8 07E27980 - v_mfma_f32_16x16x32_bf16 a[252:255], v[128:131], v[64:67], a[252:255]// 000000004C04: D3B580FC 07F28180 - - v_lshrrev_b32_e32 v4, 6, v134 // 000000004C0C: 20090C86 - v_lshrrev_b32_e32 v5, 1, v4 // 000000004C10: 200A0881 - v_mul_lo_u32 v5, 16, v5 // 000000004C14: D2850005 00020A90 - v_and_b32_e32 v1, 63, v134 // 000000004C1C: 26030CBF - v_lshrrev_b32_e32 v1, 4, v1 // 000000004C20: 20020284 - v_lshlrev_b32_e32 v1, 2, v1 // 000000004C24: 24020282 - v_add_lshl_u32 v1, v5, v1, 3 // 000000004C28: D1FE0001 020E0305 - v_mul_lo_u32 v2, v1, s38 // 000000004C30: D2850002 00004D01 - v_mul_lo_u32 v3, v1, s36 // 000000004C38: D2850003 00004901 - v_and_b32_e32 v0, 1, v4 // 000000004C40: 26000881 - v_mul_lo_u32 v0, 16, v0 // 000000004C44: D2850000 00020090 - v_and_b32_e32 v5, 15, v134 // 000000004C4C: 260B0C8F - v_add_lshl_u32 v0, v5, v0, 3 // 000000004C50: D1FE0000 020E0105 - s_mul_i32 s8, 0x100, s2 // 000000004C58: 920802FF 00000100 - v_add_u32_e32 v0, s8, v0 // 000000004C60: 68000008 - s_mul_i32 s8, 0x100, s3 // 000000004C64: 920803FF 00000100 - v_add_u32_e32 v1, s8, v1 // 000000004C6C: 68020208 - - v_add_lshl_u32 v11, v3, v0, 1 // 000000004C70: D1FE000B 02060103 - v_accvgpr_read_b32 v16, a0 // 000000004C78: D3D84010 18000100 - v_accvgpr_read_b32 v17, a4 // 000000004C80: D3D84011 18000104 - v_accvgpr_read_b32 v18, a8 // 000000004C88: D3D84012 18000108 - v_accvgpr_read_b32 v19, a12 // 000000004C90: D3D84013 1800010C - v_accvgpr_read_b32 v20, a16 // 000000004C98: D3D84014 18000110 - v_accvgpr_read_b32 v21, a20 // 000000004CA0: D3D84015 18000114 - v_accvgpr_read_b32 v22, a24 // 000000004CA8: D3D84016 18000118 - v_accvgpr_read_b32 v23, a28 // 000000004CB0: D3D84017 1800011C - v_accvgpr_read_b32 v24, a32 // 000000004CB8: D3D84018 18000120 - v_accvgpr_read_b32 v25, a36 // 000000004CC0: D3D84019 18000124 - v_accvgpr_read_b32 v26, a40 // 000000004CC8: D3D8401A 18000128 - v_accvgpr_read_b32 v27, a44 // 000000004CD0: D3D8401B 1800012C - v_accvgpr_read_b32 v28, a48 // 000000004CD8: D3D8401C 18000130 - v_accvgpr_read_b32 v29, a52 // 000000004CE0: D3D8401D 18000134 - v_accvgpr_read_b32 v30, a56 // 000000004CE8: D3D8401E 18000138 - v_accvgpr_read_b32 v31, a60 // 000000004CF0: D3D8401F 1800013C - v_accvgpr_read_b32 v32, a64 // 000000004CF8: D3D84020 18000140 - v_accvgpr_read_b32 v33, a68 // 000000004D00: D3D84021 18000144 - v_accvgpr_read_b32 v34, a72 // 000000004D08: D3D84022 18000148 - v_accvgpr_read_b32 v35, a76 // 000000004D10: D3D84023 1800014C - v_accvgpr_read_b32 v36, a80 // 000000004D18: D3D84024 18000150 - v_accvgpr_read_b32 v37, a84 // 000000004D20: D3D84025 18000154 - v_accvgpr_read_b32 v38, a88 // 000000004D28: D3D84026 18000158 - v_accvgpr_read_b32 v39, a92 // 000000004D30: D3D84027 1800015C - v_accvgpr_read_b32 v40, a96 // 000000004D38: D3D84028 18000160 - v_accvgpr_read_b32 v41, a100 // 000000004D40: D3D84029 18000164 - v_accvgpr_read_b32 v42, a104 // 000000004D48: D3D8402A 18000168 - v_accvgpr_read_b32 v43, a108 // 000000004D50: D3D8402B 1800016C - v_accvgpr_read_b32 v44, a112 // 000000004D58: D3D8402C 18000170 - v_accvgpr_read_b32 v45, a116 // 000000004D60: D3D8402D 18000174 - v_accvgpr_read_b32 v46, a120 // 000000004D68: D3D8402E 18000178 - v_accvgpr_read_b32 v47, a124 // 000000004D70: D3D8402F 1800017C - v_accvgpr_read_b32 v48, a128 // 000000004D78: D3D84030 18000180 - v_accvgpr_read_b32 v49, a132 // 000000004D80: D3D84031 18000184 - v_accvgpr_read_b32 v50, a136 // 000000004D88: D3D84032 18000188 - v_accvgpr_read_b32 v51, a140 // 000000004D90: D3D84033 1800018C - v_accvgpr_read_b32 v52, a144 // 000000004D98: D3D84034 18000190 - v_accvgpr_read_b32 v53, a148 // 000000004DA0: D3D84035 18000194 - v_accvgpr_read_b32 v54, a152 // 000000004DA8: D3D84036 18000198 - v_accvgpr_read_b32 v55, a156 // 000000004DB0: D3D84037 1800019C - v_accvgpr_read_b32 v56, a160 // 000000004DB8: D3D84038 180001A0 - v_accvgpr_read_b32 v57, a164 // 000000004DC0: D3D84039 180001A4 - v_accvgpr_read_b32 v58, a168 // 000000004DC8: D3D8403A 180001A8 - v_accvgpr_read_b32 v59, a172 // 000000004DD0: D3D8403B 180001AC - v_accvgpr_read_b32 v60, a176 // 000000004DD8: D3D8403C 180001B0 - v_accvgpr_read_b32 v61, a180 // 000000004DE0: D3D8403D 180001B4 - v_accvgpr_read_b32 v62, a184 // 000000004DE8: D3D8403E 180001B8 - v_accvgpr_read_b32 v63, a188 // 000000004DF0: D3D8403F 180001BC - v_accvgpr_read_b32 v64, a192 // 000000004DF8: D3D84040 180001C0 - v_accvgpr_read_b32 v65, a196 // 000000004E00: D3D84041 180001C4 - v_accvgpr_read_b32 v66, a200 // 000000004E08: D3D84042 180001C8 - v_accvgpr_read_b32 v67, a204 // 000000004E10: D3D84043 180001CC - v_accvgpr_read_b32 v68, a208 // 000000004E18: D3D84044 180001D0 - v_accvgpr_read_b32 v69, a212 // 000000004E20: D3D84045 180001D4 - v_accvgpr_read_b32 v70, a216 // 000000004E28: D3D84046 180001D8 - v_accvgpr_read_b32 v71, a220 // 000000004E30: D3D84047 180001DC - v_accvgpr_read_b32 v72, a224 // 000000004E38: D3D84048 180001E0 - v_accvgpr_read_b32 v73, a228 // 000000004E40: D3D84049 180001E4 - v_accvgpr_read_b32 v74, a232 // 000000004E48: D3D8404A 180001E8 - v_accvgpr_read_b32 v75, a236 // 000000004E50: D3D8404B 180001EC - v_accvgpr_read_b32 v76, a240 // 000000004E58: D3D8404C 180001F0 - v_accvgpr_read_b32 v77, a244 // 000000004E60: D3D8404D 180001F4 - v_accvgpr_read_b32 v78, a248 // 000000004E68: D3D8404E 180001F8 - v_accvgpr_read_b32 v79, a252 // 000000004E70: D3D8404F 180001FC - v_accvgpr_read_b32 v80, a1 // 000000004E78: D3D84050 18000101 - v_accvgpr_read_b32 v81, a5 // 000000004E80: D3D84051 18000105 - v_accvgpr_read_b32 v82, a9 // 000000004E88: D3D84052 18000109 - v_accvgpr_read_b32 v83, a13 // 000000004E90: D3D84053 1800010D - v_accvgpr_read_b32 v84, a17 // 000000004E98: D3D84054 18000111 - v_accvgpr_read_b32 v85, a21 // 000000004EA0: D3D84055 18000115 - v_accvgpr_read_b32 v86, a25 // 000000004EA8: D3D84056 18000119 - v_accvgpr_read_b32 v87, a29 // 000000004EB0: D3D84057 1800011D - v_accvgpr_read_b32 v88, a33 // 000000004EB8: D3D84058 18000121 - v_accvgpr_read_b32 v89, a37 // 000000004EC0: D3D84059 18000125 - v_accvgpr_read_b32 v90, a41 // 000000004EC8: D3D8405A 18000129 - v_accvgpr_read_b32 v91, a45 // 000000004ED0: D3D8405B 1800012D - v_accvgpr_read_b32 v92, a49 // 000000004ED8: D3D8405C 18000131 - v_accvgpr_read_b32 v93, a53 // 000000004EE0: D3D8405D 18000135 - v_accvgpr_read_b32 v94, a57 // 000000004EE8: D3D8405E 18000139 - v_accvgpr_read_b32 v95, a61 // 000000004EF0: D3D8405F 1800013D - v_accvgpr_read_b32 v96, a65 // 000000004EF8: D3D84060 18000141 - v_accvgpr_read_b32 v97, a69 // 000000004F00: D3D84061 18000145 - v_accvgpr_read_b32 v98, a73 // 000000004F08: D3D84062 18000149 - v_accvgpr_read_b32 v99, a77 // 000000004F10: D3D84063 1800014D - v_accvgpr_read_b32 v100, a81 // 000000004F18: D3D84064 18000151 - v_accvgpr_read_b32 v101, a85 // 000000004F20: D3D84065 18000155 - v_accvgpr_read_b32 v102, a89 // 000000004F28: D3D84066 18000159 - v_accvgpr_read_b32 v103, a93 // 000000004F30: D3D84067 1800015D - v_accvgpr_read_b32 v104, a97 // 000000004F38: D3D84068 18000161 - v_accvgpr_read_b32 v105, a101 // 000000004F40: D3D84069 18000165 - v_accvgpr_read_b32 v106, a105 // 000000004F48: D3D8406A 18000169 - v_accvgpr_read_b32 v107, a109 // 000000004F50: D3D8406B 1800016D - v_accvgpr_read_b32 v108, a113 // 000000004F58: D3D8406C 18000171 - v_accvgpr_read_b32 v109, a117 // 000000004F60: D3D8406D 18000175 - v_accvgpr_read_b32 v110, a121 // 000000004F68: D3D8406E 18000179 - v_accvgpr_read_b32 v111, a125 // 000000004F70: D3D8406F 1800017D - v_accvgpr_read_b32 v112, a129 // 000000004F78: D3D84070 18000181 - v_accvgpr_read_b32 v113, a133 // 000000004F80: D3D84071 18000185 - v_accvgpr_read_b32 v114, a137 // 000000004F88: D3D84072 18000189 - v_accvgpr_read_b32 v115, a141 // 000000004F90: D3D84073 1800018D - v_accvgpr_read_b32 v116, a145 // 000000004F98: D3D84074 18000191 - v_accvgpr_read_b32 v117, a149 // 000000004FA0: D3D84075 18000195 - v_accvgpr_read_b32 v118, a153 // 000000004FA8: D3D84076 18000199 - v_accvgpr_read_b32 v119, a157 // 000000004FB0: D3D84077 1800019D - v_accvgpr_read_b32 v120, a161 // 000000004FB8: D3D84078 180001A1 - v_accvgpr_read_b32 v121, a165 // 000000004FC0: D3D84079 180001A5 - v_accvgpr_read_b32 v122, a169 // 000000004FC8: D3D8407A 180001A9 - v_accvgpr_read_b32 v123, a173 // 000000004FD0: D3D8407B 180001AD - v_accvgpr_read_b32 v124, a177 // 000000004FD8: D3D8407C 180001B1 - v_accvgpr_read_b32 v125, a181 // 000000004FE0: D3D8407D 180001B5 - v_accvgpr_read_b32 v126, a185 // 000000004FE8: D3D8407E 180001B9 - v_accvgpr_read_b32 v127, a189 // 000000004FF0: D3D8407F 180001BD - v_accvgpr_read_b32 v136, a193 // 000000004FF8: D3D84088 180001C1 - v_accvgpr_read_b32 v137, a197 // 000000005000: D3D84089 180001C5 - v_accvgpr_read_b32 v138, a201 // 000000005008: D3D8408A 180001C9 - v_accvgpr_read_b32 v139, a205 // 000000005010: D3D8408B 180001CD - v_accvgpr_read_b32 v140, a209 // 000000005018: D3D8408C 180001D1 - v_accvgpr_read_b32 v141, a213 // 000000005020: D3D8408D 180001D5 - v_accvgpr_read_b32 v142, a217 // 000000005028: D3D8408E 180001D9 - v_accvgpr_read_b32 v143, a221 // 000000005030: D3D8408F 180001DD - v_accvgpr_read_b32 v144, a225 // 000000005038: D3D84090 180001E1 - v_accvgpr_read_b32 v145, a229 // 000000005040: D3D84091 180001E5 - v_accvgpr_read_b32 v146, a233 // 000000005048: D3D84092 180001E9 - v_accvgpr_read_b32 v147, a237 // 000000005050: D3D84093 180001ED - v_accvgpr_read_b32 v148, a241 // 000000005058: D3D84094 180001F1 - v_accvgpr_read_b32 v149, a245 // 000000005060: D3D84095 180001F5 - v_accvgpr_read_b32 v150, a249 // 000000005068: D3D84096 180001F9 - v_accvgpr_read_b32 v151, a253 // 000000005070: D3D84097 180001FD - v_accvgpr_read_b32 v152, a2 // 000000005078: D3D84098 18000102 - v_accvgpr_read_b32 v153, a6 // 000000005080: D3D84099 18000106 - v_accvgpr_read_b32 v154, a10 // 000000005088: D3D8409A 1800010A - v_accvgpr_read_b32 v155, a14 // 000000005090: D3D8409B 1800010E - v_accvgpr_read_b32 v156, a18 // 000000005098: D3D8409C 18000112 - v_accvgpr_read_b32 v157, a22 // 0000000050A0: D3D8409D 18000116 - v_accvgpr_read_b32 v158, a26 // 0000000050A8: D3D8409E 1800011A - v_accvgpr_read_b32 v159, a30 // 0000000050B0: D3D8409F 1800011E - v_accvgpr_read_b32 v160, a34 // 0000000050B8: D3D840A0 18000122 - v_accvgpr_read_b32 v161, a38 // 0000000050C0: D3D840A1 18000126 - v_accvgpr_read_b32 v162, a42 // 0000000050C8: D3D840A2 1800012A - v_accvgpr_read_b32 v163, a46 // 0000000050D0: D3D840A3 1800012E - v_accvgpr_read_b32 v164, a50 // 0000000050D8: D3D840A4 18000132 - v_accvgpr_read_b32 v165, a54 // 0000000050E0: D3D840A5 18000136 - v_accvgpr_read_b32 v166, a58 // 0000000050E8: D3D840A6 1800013A - v_accvgpr_read_b32 v167, a62 // 0000000050F0: D3D840A7 1800013E - v_accvgpr_read_b32 v168, a66 // 0000000050F8: D3D840A8 18000142 - v_accvgpr_read_b32 v169, a70 // 000000005100: D3D840A9 18000146 - v_accvgpr_read_b32 v170, a74 // 000000005108: D3D840AA 1800014A - v_accvgpr_read_b32 v171, a78 // 000000005110: D3D840AB 1800014E - v_accvgpr_read_b32 v172, a82 // 000000005118: D3D840AC 18000152 - v_accvgpr_read_b32 v173, a86 // 000000005120: D3D840AD 18000156 - v_accvgpr_read_b32 v174, a90 // 000000005128: D3D840AE 1800015A - v_accvgpr_read_b32 v175, a94 // 000000005130: D3D840AF 1800015E - v_accvgpr_read_b32 v176, a98 // 000000005138: D3D840B0 18000162 - v_accvgpr_read_b32 v177, a102 // 000000005140: D3D840B1 18000166 - v_accvgpr_read_b32 v178, a106 // 000000005148: D3D840B2 1800016A - v_accvgpr_read_b32 v179, a110 // 000000005150: D3D840B3 1800016E - v_accvgpr_read_b32 v180, a114 // 000000005158: D3D840B4 18000172 - v_accvgpr_read_b32 v181, a118 // 000000005160: D3D840B5 18000176 - v_accvgpr_read_b32 v182, a122 // 000000005168: D3D840B6 1800017A - v_accvgpr_read_b32 v183, a126 // 000000005170: D3D840B7 1800017E - v_accvgpr_read_b32 v184, a130 // 000000005178: D3D840B8 18000182 - v_accvgpr_read_b32 v185, a134 // 000000005180: D3D840B9 18000186 - v_accvgpr_read_b32 v186, a138 // 000000005188: D3D840BA 1800018A - v_accvgpr_read_b32 v187, a142 // 000000005190: D3D840BB 1800018E - v_accvgpr_read_b32 v188, a146 // 000000005198: D3D840BC 18000192 - v_accvgpr_read_b32 v189, a150 // 0000000051A0: D3D840BD 18000196 - v_accvgpr_read_b32 v190, a154 // 0000000051A8: D3D840BE 1800019A - v_accvgpr_read_b32 v191, a158 // 0000000051B0: D3D840BF 1800019E - v_accvgpr_read_b32 v192, a162 // 0000000051B8: D3D840C0 180001A2 - v_accvgpr_read_b32 v193, a166 // 0000000051C0: D3D840C1 180001A6 - v_accvgpr_read_b32 v194, a170 // 0000000051C8: D3D840C2 180001AA - v_accvgpr_read_b32 v195, a174 // 0000000051D0: D3D840C3 180001AE - v_accvgpr_read_b32 v196, a178 // 0000000051D8: D3D840C4 180001B2 - v_accvgpr_read_b32 v197, a182 // 0000000051E0: D3D840C5 180001B6 - v_accvgpr_read_b32 v198, a186 // 0000000051E8: D3D840C6 180001BA - v_accvgpr_read_b32 v199, a190 // 0000000051F0: D3D840C7 180001BE - v_accvgpr_read_b32 v200, a194 // 0000000051F8: D3D840C8 180001C2 - v_accvgpr_read_b32 v201, a198 // 000000005200: D3D840C9 180001C6 - v_accvgpr_read_b32 v202, a202 // 000000005208: D3D840CA 180001CA - v_accvgpr_read_b32 v203, a206 // 000000005210: D3D840CB 180001CE - v_accvgpr_read_b32 v204, a210 // 000000005218: D3D840CC 180001D2 - v_accvgpr_read_b32 v205, a214 // 000000005220: D3D840CD 180001D6 - v_accvgpr_read_b32 v206, a218 // 000000005228: D3D840CE 180001DA - v_accvgpr_read_b32 v207, a222 // 000000005230: D3D840CF 180001DE - v_accvgpr_read_b32 v208, a226 // 000000005238: D3D840D0 180001E2 - v_accvgpr_read_b32 v209, a230 // 000000005240: D3D840D1 180001E6 - v_accvgpr_read_b32 v210, a234 // 000000005248: D3D840D2 180001EA - v_accvgpr_read_b32 v211, a238 // 000000005250: D3D840D3 180001EE - v_accvgpr_read_b32 v212, a242 // 000000005258: D3D840D4 180001F2 - v_accvgpr_read_b32 v213, a246 // 000000005260: D3D840D5 180001F6 - v_accvgpr_read_b32 v214, a250 // 000000005268: D3D840D6 180001FA - v_accvgpr_read_b32 v215, a254 // 000000005270: D3D840D7 180001FE - v_accvgpr_read_b32 v216, a3 // 000000005278: D3D840D8 18000103 - v_accvgpr_read_b32 v217, a7 // 000000005280: D3D840D9 18000107 - v_accvgpr_read_b32 v218, a11 // 000000005288: D3D840DA 1800010B - v_accvgpr_read_b32 v219, a15 // 000000005290: D3D840DB 1800010F - v_accvgpr_read_b32 v220, a19 // 000000005298: D3D840DC 18000113 - v_accvgpr_read_b32 v221, a23 // 0000000052A0: D3D840DD 18000117 - v_accvgpr_read_b32 v222, a27 // 0000000052A8: D3D840DE 1800011B - v_accvgpr_read_b32 v223, a31 // 0000000052B0: D3D840DF 1800011F - v_accvgpr_read_b32 v224, a35 // 0000000052B8: D3D840E0 18000123 - v_accvgpr_read_b32 v225, a39 // 0000000052C0: D3D840E1 18000127 - v_accvgpr_read_b32 v226, a43 // 0000000052C8: D3D840E2 1800012B - v_accvgpr_read_b32 v227, a47 // 0000000052D0: D3D840E3 1800012F - v_accvgpr_read_b32 v228, a51 // 0000000052D8: D3D840E4 18000133 - v_accvgpr_read_b32 v229, a55 // 0000000052E0: D3D840E5 18000137 - v_accvgpr_read_b32 v230, a59 // 0000000052E8: D3D840E6 1800013B - v_accvgpr_read_b32 v231, a63 // 0000000052F0: D3D840E7 1800013F - v_accvgpr_read_b32 v232, a67 // 0000000052F8: D3D840E8 18000143 - v_accvgpr_read_b32 v233, a71 // 000000005300: D3D840E9 18000147 - v_accvgpr_read_b32 v234, a75 // 000000005308: D3D840EA 1800014B - v_accvgpr_read_b32 v235, a79 // 000000005310: D3D840EB 1800014F - v_accvgpr_read_b32 v236, a83 // 000000005318: D3D840EC 18000153 - v_accvgpr_read_b32 v237, a87 // 000000005320: D3D840ED 18000157 - v_accvgpr_read_b32 v238, a91 // 000000005328: D3D840EE 1800015B - v_accvgpr_read_b32 v239, a95 // 000000005330: D3D840EF 1800015F - v_accvgpr_read_b32 v240, a99 // 000000005338: D3D840F0 18000163 - v_accvgpr_read_b32 v241, a103 // 000000005340: D3D840F1 18000167 - v_accvgpr_read_b32 v242, a107 // 000000005348: D3D840F2 1800016B - v_accvgpr_read_b32 v243, a111 // 000000005350: D3D840F3 1800016F - v_accvgpr_read_b32 v244, a115 // 000000005358: D3D840F4 18000173 - v_accvgpr_read_b32 v245, a119 // 000000005360: D3D840F5 18000177 - v_accvgpr_read_b32 v246, a123 // 000000005368: D3D840F6 1800017B - v_accvgpr_read_b32 v247, a127 // 000000005370: D3D840F7 1800017F - v_mov_b32_e32 v8, 0xffff0000 // 000000005378: 7E1002FF FFFF0000 - v_mov_b32_e32 v9, 0x7fff0000 // 000000005380: 7E1202FF 7FFF0000 - v_mov_b32_e32 v10, 0x7fff // 000000005388: 7E1402FF 00007FFF - v_cvt_pk_bf16_f32 v16, v16, v17 // 000000005390: D2680010 00022310 - v_cvt_pk_bf16_f32 v17, v18, v19 // 000000005398: D2680011 00022712 - v_cvt_pk_bf16_f32 v18, v20, v21 // 0000000053A0: D2680012 00022B14 - v_cvt_pk_bf16_f32 v19, v22, v23 // 0000000053A8: D2680013 00022F16 - buffer_store_dwordx4 v[16:19], v11, s[16:19], 0 offen nt // 0000000053B0: E07E1000 8004100B - v_cvt_pk_bf16_f32 v24, v24, v25 // 0000000053B8: D2680018 00023318 - v_cvt_pk_bf16_f32 v25, v26, v27 // 0000000053C0: D2680019 0002371A - v_cvt_pk_bf16_f32 v26, v28, v29 // 0000000053C8: D268001A 00023B1C - v_cvt_pk_bf16_f32 v27, v30, v31 // 0000000053D0: D268001B 00023F1E - s_lshl_b32 s12, s36, 1 // 0000000053D8: 8E0C8124 - s_add_u32 s16, s16, s12 // 0000000053DC: 80100C10 - s_addc_u32 s17, s17, 0 // 0000000053E0: 82118011 - buffer_store_dwordx4 v[24:27], v11, s[16:19], 0 offen nt // 0000000053E4: E07E1000 8004180B - v_cvt_pk_bf16_f32 v32, v32, v33 // 0000000053EC: D2680020 00024320 - v_cvt_pk_bf16_f32 v33, v34, v35 // 0000000053F4: D2680021 00024722 - v_cvt_pk_bf16_f32 v34, v36, v37 // 0000000053FC: D2680022 00024B24 - v_cvt_pk_bf16_f32 v35, v38, v39 // 000000005404: D2680023 00024F26 - s_lshl_b32 s12, s36, 1 // 00000000540C: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005410: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005414: 82118011 - buffer_store_dwordx4 v[32:35], v11, s[16:19], 0 offen nt // 000000005418: E07E1000 8004200B - v_cvt_pk_bf16_f32 v40, v40, v41 // 000000005420: D2680028 00025328 - v_cvt_pk_bf16_f32 v41, v42, v43 // 000000005428: D2680029 0002572A - v_cvt_pk_bf16_f32 v42, v44, v45 // 000000005430: D268002A 00025B2C - v_cvt_pk_bf16_f32 v43, v46, v47 // 000000005438: D268002B 00025F2E - s_lshl_b32 s12, s36, 1 // 000000005440: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005444: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005448: 82118011 - buffer_store_dwordx4 v[40:43], v11, s[16:19], 0 offen nt // 00000000544C: E07E1000 8004280B - v_cvt_pk_bf16_f32 v48, v48, v49 // 000000005454: D2680030 00026330 - v_cvt_pk_bf16_f32 v49, v50, v51 // 00000000545C: D2680031 00026732 - v_cvt_pk_bf16_f32 v50, v52, v53 // 000000005464: D2680032 00026B34 - v_cvt_pk_bf16_f32 v51, v54, v55 // 00000000546C: D2680033 00026F36 - s_lshl_b32 s12, s36, 1 // 000000005474: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005478: 80100C10 - s_addc_u32 s17, s17, 0 // 00000000547C: 82118011 - buffer_store_dwordx4 v[48:51], v11, s[16:19], 0 offen nt // 000000005480: E07E1000 8004300B - v_cvt_pk_bf16_f32 v56, v56, v57 // 000000005488: D2680038 00027338 - v_cvt_pk_bf16_f32 v57, v58, v59 // 000000005490: D2680039 0002773A - v_cvt_pk_bf16_f32 v58, v60, v61 // 000000005498: D268003A 00027B3C - v_cvt_pk_bf16_f32 v59, v62, v63 // 0000000054A0: D268003B 00027F3E - s_lshl_b32 s12, s36, 1 // 0000000054A8: 8E0C8124 - s_add_u32 s16, s16, s12 // 0000000054AC: 80100C10 - s_addc_u32 s17, s17, 0 // 0000000054B0: 82118011 - buffer_store_dwordx4 v[56:59], v11, s[16:19], 0 offen nt // 0000000054B4: E07E1000 8004380B - v_cvt_pk_bf16_f32 v64, v64, v65 // 0000000054BC: D2680040 00028340 - v_cvt_pk_bf16_f32 v65, v66, v67 // 0000000054C4: D2680041 00028742 - v_cvt_pk_bf16_f32 v66, v68, v69 // 0000000054CC: D2680042 00028B44 - v_cvt_pk_bf16_f32 v67, v70, v71 // 0000000054D4: D2680043 00028F46 - s_lshl_b32 s12, s36, 1 // 0000000054DC: 8E0C8124 - s_add_u32 s16, s16, s12 // 0000000054E0: 80100C10 - s_addc_u32 s17, s17, 0 // 0000000054E4: 82118011 - buffer_store_dwordx4 v[64:67], v11, s[16:19], 0 offen nt // 0000000054E8: E07E1000 8004400B - v_cvt_pk_bf16_f32 v72, v72, v73 // 0000000054F0: D2680048 00029348 - v_cvt_pk_bf16_f32 v73, v74, v75 // 0000000054F8: D2680049 0002974A - v_cvt_pk_bf16_f32 v74, v76, v77 // 000000005500: D268004A 00029B4C - v_cvt_pk_bf16_f32 v75, v78, v79 // 000000005508: D268004B 00029F4E - s_lshl_b32 s12, s36, 1 // 000000005510: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005514: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005518: 82118011 - buffer_store_dwordx4 v[72:75], v11, s[16:19], 0 offen nt // 00000000551C: E07E1000 8004480B - v_cvt_pk_bf16_f32 v80, v80, v81 // 000000005524: D2680050 0002A350 - v_cvt_pk_bf16_f32 v81, v82, v83 // 00000000552C: D2680051 0002A752 - v_cvt_pk_bf16_f32 v82, v84, v85 // 000000005534: D2680052 0002AB54 - v_cvt_pk_bf16_f32 v83, v86, v87 // 00000000553C: D2680053 0002AF56 - s_lshl_b32 s12, s36, 1 // 000000005544: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005548: 80100C10 - s_addc_u32 s17, s17, 0 // 00000000554C: 82118011 - buffer_store_dwordx4 v[80:83], v11, s[16:19], 0 offen nt // 000000005550: E07E1000 8004500B - v_cvt_pk_bf16_f32 v88, v88, v89 // 000000005558: D2680058 0002B358 - v_cvt_pk_bf16_f32 v89, v90, v91 // 000000005560: D2680059 0002B75A - v_cvt_pk_bf16_f32 v90, v92, v93 // 000000005568: D268005A 0002BB5C - v_cvt_pk_bf16_f32 v91, v94, v95 // 000000005570: D268005B 0002BF5E - s_lshl_b32 s12, s36, 1 // 000000005578: 8E0C8124 - s_add_u32 s16, s16, s12 // 00000000557C: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005580: 82118011 - buffer_store_dwordx4 v[88:91], v11, s[16:19], 0 offen nt // 000000005584: E07E1000 8004580B - v_cvt_pk_bf16_f32 v96, v96, v97 // 00000000558C: D2680060 0002C360 - v_cvt_pk_bf16_f32 v97, v98, v99 // 000000005594: D2680061 0002C762 - v_cvt_pk_bf16_f32 v98, v100, v101 // 00000000559C: D2680062 0002CB64 - v_cvt_pk_bf16_f32 v99, v102, v103 // 0000000055A4: D2680063 0002CF66 - s_lshl_b32 s12, s36, 1 // 0000000055AC: 8E0C8124 - s_add_u32 s16, s16, s12 // 0000000055B0: 80100C10 - s_addc_u32 s17, s17, 0 // 0000000055B4: 82118011 - buffer_store_dwordx4 v[96:99], v11, s[16:19], 0 offen nt // 0000000055B8: E07E1000 8004600B - v_cvt_pk_bf16_f32 v104, v104, v105 // 0000000055C0: D2680068 0002D368 - v_cvt_pk_bf16_f32 v105, v106, v107 // 0000000055C8: D2680069 0002D76A - v_cvt_pk_bf16_f32 v106, v108, v109 // 0000000055D0: D268006A 0002DB6C - v_cvt_pk_bf16_f32 v107, v110, v111 // 0000000055D8: D268006B 0002DF6E - s_lshl_b32 s12, s36, 1 // 0000000055E0: 8E0C8124 - s_add_u32 s16, s16, s12 // 0000000055E4: 80100C10 - s_addc_u32 s17, s17, 0 // 0000000055E8: 82118011 - buffer_store_dwordx4 v[104:107], v11, s[16:19], 0 offen nt // 0000000055EC: E07E1000 8004680B - v_cvt_pk_bf16_f32 v112, v112, v113 // 0000000055F4: D2680070 0002E370 - v_cvt_pk_bf16_f32 v113, v114, v115 // 0000000055FC: D2680071 0002E772 - v_cvt_pk_bf16_f32 v114, v116, v117 // 000000005604: D2680072 0002EB74 - v_cvt_pk_bf16_f32 v115, v118, v119 // 00000000560C: D2680073 0002EF76 - s_lshl_b32 s12, s36, 1 // 000000005614: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005618: 80100C10 - s_addc_u32 s17, s17, 0 // 00000000561C: 82118011 - buffer_store_dwordx4 v[112:115], v11, s[16:19], 0 offen nt // 000000005620: E07E1000 8004700B - v_cvt_pk_bf16_f32 v120, v120, v121 // 000000005628: D2680078 0002F378 - v_cvt_pk_bf16_f32 v121, v122, v123 // 000000005630: D2680079 0002F77A - v_cvt_pk_bf16_f32 v122, v124, v125 // 000000005638: D268007A 0002FB7C - v_cvt_pk_bf16_f32 v123, v126, v127 // 000000005640: D268007B 0002FF7E - s_lshl_b32 s12, s36, 1 // 000000005648: 8E0C8124 - s_add_u32 s16, s16, s12 // 00000000564C: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005650: 82118011 - buffer_store_dwordx4 v[120:123], v11, s[16:19], 0 offen nt // 000000005654: E07E1000 8004780B - v_cvt_pk_bf16_f32 v136, v136, v137 // 00000000565C: D2680088 00031388 - v_cvt_pk_bf16_f32 v137, v138, v139 // 000000005664: D2680089 0003178A - v_cvt_pk_bf16_f32 v138, v140, v141 // 00000000566C: D268008A 00031B8C - v_cvt_pk_bf16_f32 v139, v142, v143 // 000000005674: D268008B 00031F8E - s_lshl_b32 s12, s36, 1 // 00000000567C: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005680: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005684: 82118011 - buffer_store_dwordx4 v[136:139], v11, s[16:19], 0 offen nt // 000000005688: E07E1000 8004880B - v_cvt_pk_bf16_f32 v144, v144, v145 // 000000005690: D2680090 00032390 - v_cvt_pk_bf16_f32 v145, v146, v147 // 000000005698: D2680091 00032792 - v_cvt_pk_bf16_f32 v146, v148, v149 // 0000000056A0: D2680092 00032B94 - v_cvt_pk_bf16_f32 v147, v150, v151 // 0000000056A8: D2680093 00032F96 - s_lshl_b32 s12, s36, 1 // 0000000056B0: 8E0C8124 - s_add_u32 s16, s16, s12 // 0000000056B4: 80100C10 - s_addc_u32 s17, s17, 0 // 0000000056B8: 82118011 - buffer_store_dwordx4 v[144:147], v11, s[16:19], 0 offen nt // 0000000056BC: E07E1000 8004900B - v_cvt_pk_bf16_f32 v152, v152, v153 // 0000000056C4: D2680098 00033398 - v_cvt_pk_bf16_f32 v153, v154, v155 // 0000000056CC: D2680099 0003379A - v_cvt_pk_bf16_f32 v154, v156, v157 // 0000000056D4: D268009A 00033B9C - v_cvt_pk_bf16_f32 v155, v158, v159 // 0000000056DC: D268009B 00033F9E - s_lshl_b32 s12, s36, 1 // 0000000056E4: 8E0C8124 - s_add_u32 s16, s16, s12 // 0000000056E8: 80100C10 - s_addc_u32 s17, s17, 0 // 0000000056EC: 82118011 - buffer_store_dwordx4 v[152:155], v11, s[16:19], 0 offen nt // 0000000056F0: E07E1000 8004980B - v_cvt_pk_bf16_f32 v160, v160, v161 // 0000000056F8: D26800A0 000343A0 - v_cvt_pk_bf16_f32 v161, v162, v163 // 000000005700: D26800A1 000347A2 - v_cvt_pk_bf16_f32 v162, v164, v165 // 000000005708: D26800A2 00034BA4 - v_cvt_pk_bf16_f32 v163, v166, v167 // 000000005710: D26800A3 00034FA6 - s_lshl_b32 s12, s36, 1 // 000000005718: 8E0C8124 - s_add_u32 s16, s16, s12 // 00000000571C: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005720: 82118011 - buffer_store_dwordx4 v[160:163], v11, s[16:19], 0 offen nt // 000000005724: E07E1000 8004A00B - v_cvt_pk_bf16_f32 v168, v168, v169 // 00000000572C: D26800A8 000353A8 - v_cvt_pk_bf16_f32 v169, v170, v171 // 000000005734: D26800A9 000357AA - v_cvt_pk_bf16_f32 v170, v172, v173 // 00000000573C: D26800AA 00035BAC - v_cvt_pk_bf16_f32 v171, v174, v175 // 000000005744: D26800AB 00035FAE - s_lshl_b32 s12, s36, 1 // 00000000574C: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005750: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005754: 82118011 - buffer_store_dwordx4 v[168:171], v11, s[16:19], 0 offen nt // 000000005758: E07E1000 8004A80B - v_cvt_pk_bf16_f32 v176, v176, v177 // 000000005760: D26800B0 000363B0 - v_cvt_pk_bf16_f32 v177, v178, v179 // 000000005768: D26800B1 000367B2 - v_cvt_pk_bf16_f32 v178, v180, v181 // 000000005770: D26800B2 00036BB4 - v_cvt_pk_bf16_f32 v179, v182, v183 // 000000005778: D26800B3 00036FB6 - s_lshl_b32 s12, s36, 1 // 000000005780: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005784: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005788: 82118011 - buffer_store_dwordx4 v[176:179], v11, s[16:19], 0 offen nt // 00000000578C: E07E1000 8004B00B - v_cvt_pk_bf16_f32 v184, v184, v185 // 000000005794: D26800B8 000373B8 - v_cvt_pk_bf16_f32 v185, v186, v187 // 00000000579C: D26800B9 000377BA - v_cvt_pk_bf16_f32 v186, v188, v189 // 0000000057A4: D26800BA 00037BBC - v_cvt_pk_bf16_f32 v187, v190, v191 // 0000000057AC: D26800BB 00037FBE - s_lshl_b32 s12, s36, 1 // 0000000057B4: 8E0C8124 - s_add_u32 s16, s16, s12 // 0000000057B8: 80100C10 - s_addc_u32 s17, s17, 0 // 0000000057BC: 82118011 - buffer_store_dwordx4 v[184:187], v11, s[16:19], 0 offen nt // 0000000057C0: E07E1000 8004B80B - v_cvt_pk_bf16_f32 v192, v192, v193 // 0000000057C8: D26800C0 000383C0 - v_cvt_pk_bf16_f32 v193, v194, v195 // 0000000057D0: D26800C1 000387C2 - v_cvt_pk_bf16_f32 v194, v196, v197 // 0000000057D8: D26800C2 00038BC4 - v_cvt_pk_bf16_f32 v195, v198, v199 // 0000000057E0: D26800C3 00038FC6 - s_lshl_b32 s12, s36, 1 // 0000000057E8: 8E0C8124 - s_add_u32 s16, s16, s12 // 0000000057EC: 80100C10 - s_addc_u32 s17, s17, 0 // 0000000057F0: 82118011 - buffer_store_dwordx4 v[192:195], v11, s[16:19], 0 offen nt // 0000000057F4: E07E1000 8004C00B - v_cvt_pk_bf16_f32 v200, v200, v201 // 0000000057FC: D26800C8 000393C8 - v_cvt_pk_bf16_f32 v201, v202, v203 // 000000005804: D26800C9 000397CA - v_cvt_pk_bf16_f32 v202, v204, v205 // 00000000580C: D26800CA 00039BCC - v_cvt_pk_bf16_f32 v203, v206, v207 // 000000005814: D26800CB 00039FCE - s_lshl_b32 s12, s36, 1 // 00000000581C: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005820: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005824: 82118011 - buffer_store_dwordx4 v[200:203], v11, s[16:19], 0 offen nt // 000000005828: E07E1000 8004C80B - v_cvt_pk_bf16_f32 v208, v208, v209 // 000000005830: D26800D0 0003A3D0 - v_cvt_pk_bf16_f32 v209, v210, v211 // 000000005838: D26800D1 0003A7D2 - v_cvt_pk_bf16_f32 v210, v212, v213 // 000000005840: D26800D2 0003ABD4 - v_cvt_pk_bf16_f32 v211, v214, v215 // 000000005848: D26800D3 0003AFD6 - s_lshl_b32 s12, s36, 1 // 000000005850: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005854: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005858: 82118011 - buffer_store_dwordx4 v[208:211], v11, s[16:19], 0 offen nt // 00000000585C: E07E1000 8004D00B - v_cvt_pk_bf16_f32 v216, v216, v217 // 000000005864: D26800D8 0003B3D8 - v_cvt_pk_bf16_f32 v217, v218, v219 // 00000000586C: D26800D9 0003B7DA - v_cvt_pk_bf16_f32 v218, v220, v221 // 000000005874: D26800DA 0003BBDC - v_cvt_pk_bf16_f32 v219, v222, v223 // 00000000587C: D26800DB 0003BFDE - s_lshl_b32 s12, s36, 1 // 000000005884: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005888: 80100C10 - s_addc_u32 s17, s17, 0 // 00000000588C: 82118011 - buffer_store_dwordx4 v[216:219], v11, s[16:19], 0 offen nt // 000000005890: E07E1000 8004D80B - v_cvt_pk_bf16_f32 v224, v224, v225 // 000000005898: D26800E0 0003C3E0 - v_cvt_pk_bf16_f32 v225, v226, v227 // 0000000058A0: D26800E1 0003C7E2 - v_cvt_pk_bf16_f32 v226, v228, v229 // 0000000058A8: D26800E2 0003CBE4 - v_cvt_pk_bf16_f32 v227, v230, v231 // 0000000058B0: D26800E3 0003CFE6 - s_lshl_b32 s12, s36, 1 // 0000000058B8: 8E0C8124 - s_add_u32 s16, s16, s12 // 0000000058BC: 80100C10 - s_addc_u32 s17, s17, 0 // 0000000058C0: 82118011 - buffer_store_dwordx4 v[224:227], v11, s[16:19], 0 offen nt // 0000000058C4: E07E1000 8004E00B - v_cvt_pk_bf16_f32 v232, v232, v233 // 0000000058CC: D26800E8 0003D3E8 - v_cvt_pk_bf16_f32 v233, v234, v235 // 0000000058D4: D26800E9 0003D7EA - v_cvt_pk_bf16_f32 v234, v236, v237 // 0000000058DC: D26800EA 0003DBEC - v_cvt_pk_bf16_f32 v235, v238, v239 // 0000000058E4: D26800EB 0003DFEE - s_lshl_b32 s12, s36, 1 // 0000000058EC: 8E0C8124 - s_add_u32 s16, s16, s12 // 0000000058F0: 80100C10 - s_addc_u32 s17, s17, 0 // 0000000058F4: 82118011 - buffer_store_dwordx4 v[232:235], v11, s[16:19], 0 offen nt // 0000000058F8: E07E1000 8004E80B - v_cvt_pk_bf16_f32 v240, v240, v241 // 000000005900: D26800F0 0003E3F0 - v_cvt_pk_bf16_f32 v241, v242, v243 // 000000005908: D26800F1 0003E7F2 - v_cvt_pk_bf16_f32 v242, v244, v245 // 000000005910: D26800F2 0003EBF4 - v_cvt_pk_bf16_f32 v243, v246, v247 // 000000005918: D26800F3 0003EFF6 - s_lshl_b32 s12, s36, 1 // 000000005920: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005924: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005928: 82118011 - buffer_store_dwordx4 v[240:243], v11, s[16:19], 0 offen nt // 00000000592C: E07E1000 8004F00B - s_nop 0 // 000000005934: BF800000 - v_accvgpr_read_b32 v16, a131 // 000000005938: D3D84010 18000183 - v_accvgpr_read_b32 v17, a135 // 000000005940: D3D84011 18000187 - v_accvgpr_read_b32 v18, a139 // 000000005948: D3D84012 1800018B - v_accvgpr_read_b32 v19, a143 // 000000005950: D3D84013 1800018F - v_accvgpr_read_b32 v20, a147 // 000000005958: D3D84014 18000193 - v_accvgpr_read_b32 v21, a151 // 000000005960: D3D84015 18000197 - v_accvgpr_read_b32 v22, a155 // 000000005968: D3D84016 1800019B - v_accvgpr_read_b32 v23, a159 // 000000005970: D3D84017 1800019F - v_accvgpr_read_b32 v24, a163 // 000000005978: D3D84018 180001A3 - v_accvgpr_read_b32 v25, a167 // 000000005980: D3D84019 180001A7 - v_accvgpr_read_b32 v26, a171 // 000000005988: D3D8401A 180001AB - v_accvgpr_read_b32 v27, a175 // 000000005990: D3D8401B 180001AF - v_accvgpr_read_b32 v28, a179 // 000000005998: D3D8401C 180001B3 - v_accvgpr_read_b32 v29, a183 // 0000000059A0: D3D8401D 180001B7 - v_accvgpr_read_b32 v30, a187 // 0000000059A8: D3D8401E 180001BB - v_accvgpr_read_b32 v31, a191 // 0000000059B0: D3D8401F 180001BF - v_accvgpr_read_b32 v32, a195 // 0000000059B8: D3D84020 180001C3 - v_accvgpr_read_b32 v33, a199 // 0000000059C0: D3D84021 180001C7 - v_accvgpr_read_b32 v34, a203 // 0000000059C8: D3D84022 180001CB - v_accvgpr_read_b32 v35, a207 // 0000000059D0: D3D84023 180001CF - v_accvgpr_read_b32 v36, a211 // 0000000059D8: D3D84024 180001D3 - v_accvgpr_read_b32 v37, a215 // 0000000059E0: D3D84025 180001D7 - v_accvgpr_read_b32 v38, a219 // 0000000059E8: D3D84026 180001DB - v_accvgpr_read_b32 v39, a223 // 0000000059F0: D3D84027 180001DF - v_accvgpr_read_b32 v40, a227 // 0000000059F8: D3D84028 180001E3 - v_accvgpr_read_b32 v41, a231 // 000000005A00: D3D84029 180001E7 - v_accvgpr_read_b32 v42, a235 // 000000005A08: D3D8402A 180001EB - v_accvgpr_read_b32 v43, a239 // 000000005A10: D3D8402B 180001EF - v_accvgpr_read_b32 v44, a243 // 000000005A18: D3D8402C 180001F3 - v_accvgpr_read_b32 v45, a247 // 000000005A20: D3D8402D 180001F7 - v_accvgpr_read_b32 v46, a251 // 000000005A28: D3D8402E 180001FB - v_accvgpr_read_b32 v47, a255 // 000000005A30: D3D8402F 180001FF - v_mov_b32_e32 v8, 0xffff0000 // 000000005A38: 7E1002FF FFFF0000 - v_mov_b32_e32 v9, 0x7fff0000 // 000000005A40: 7E1202FF 7FFF0000 - v_mov_b32_e32 v10, 0x7fff // 000000005A48: 7E1402FF 00007FFF - v_cvt_pk_bf16_f32 v16, v16, v17 // 000000005A50: D2680010 00022310 - v_cvt_pk_bf16_f32 v17, v18, v19 // 000000005A58: D2680011 00022712 - v_cvt_pk_bf16_f32 v18, v20, v21 // 000000005A60: D2680012 00022B14 - v_cvt_pk_bf16_f32 v19, v22, v23 // 000000005A68: D2680013 00022F16 - s_lshl_b32 s12, s36, 1 // 000000005A70: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005A74: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005A78: 82118011 - buffer_store_dwordx4 v[16:19], v11, s[16:19], 0 offen nt // 000000005A7C: E07E1000 8004100B - v_cvt_pk_bf16_f32 v24, v24, v25 // 000000005A84: D2680018 00023318 - v_cvt_pk_bf16_f32 v25, v26, v27 // 000000005A8C: D2680019 0002371A - v_cvt_pk_bf16_f32 v26, v28, v29 // 000000005A94: D268001A 00023B1C - v_cvt_pk_bf16_f32 v27, v30, v31 // 000000005A9C: D268001B 00023F1E - s_lshl_b32 s12, s36, 1 // 000000005AA4: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005AA8: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005AAC: 82118011 - buffer_store_dwordx4 v[24:27], v11, s[16:19], 0 offen nt // 000000005AB0: E07E1000 8004180B - v_cvt_pk_bf16_f32 v32, v32, v33 // 000000005AB8: D2680020 00024320 - v_cvt_pk_bf16_f32 v33, v34, v35 // 000000005AC0: D2680021 00024722 - v_cvt_pk_bf16_f32 v34, v36, v37 // 000000005AC8: D2680022 00024B24 - v_cvt_pk_bf16_f32 v35, v38, v39 // 000000005AD0: D2680023 00024F26 - s_lshl_b32 s12, s36, 1 // 000000005AD8: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005ADC: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005AE0: 82118011 - buffer_store_dwordx4 v[32:35], v11, s[16:19], 0 offen nt // 000000005AE4: E07E1000 8004200B - v_cvt_pk_bf16_f32 v40, v40, v41 // 000000005AEC: D2680028 00025328 - v_cvt_pk_bf16_f32 v41, v42, v43 // 000000005AF4: D2680029 0002572A - v_cvt_pk_bf16_f32 v42, v44, v45 // 000000005AFC: D268002A 00025B2C - v_cvt_pk_bf16_f32 v43, v46, v47 // 000000005B04: D268002B 00025F2E - s_lshl_b32 s12, s36, 1 // 000000005B0C: 8E0C8124 - s_add_u32 s16, s16, s12 // 000000005B10: 80100C10 - s_addc_u32 s17, s17, 0 // 000000005B14: 82118011 - buffer_store_dwordx4 v[40:43], v11, s[16:19], 0 offen nt // 000000005B18: E07E1000 8004280B - s_nop 0 // 000000005B20: BF800000 - s_endpgm // 00000001F5D0: BF810000 diff --git a/extra/gemm/asm/cdna/template.s b/extra/gemm/asm/cdna/template.s deleted file mode 100644 index 9ba66ed9a9..0000000000 --- a/extra/gemm/asm/cdna/template.s +++ /dev/null @@ -1,78 +0,0 @@ -.text -.section .text. -.global gemm -.p2align 8 -.type gemm,@function - -gemm: -INSTRUCTIONS - -.section .rodata,"a",@progbits -.p2align 6, 0x0 -.amdhsa_kernel gemm - # basic memory requirements - .amdhsa_group_segment_fixed_size 133120 - .amdhsa_private_segment_fixed_size 0 - .amdhsa_kernarg_size 28 - # register usage (RSRC1) - .amdhsa_next_free_vgpr 504 - .amdhsa_next_free_sgpr 96 - # workgroup / workitem IDs (RSRC2) - .amdhsa_system_sgpr_workgroup_id_x 1 - .amdhsa_system_sgpr_workgroup_id_y 1 - .amdhsa_system_sgpr_workgroup_id_z 1 - # user SGPRs, we only specify the kernel args ptr in s[0:1] - .amdhsa_user_sgpr_kernarg_segment_ptr 1 - .amdhsa_user_sgpr_count 2 - .amdhsa_user_sgpr_kernarg_preload_length 0 - .amdhsa_user_sgpr_kernarg_preload_offset 0 - # gfx90a / gfx940 specifics (RSRC3) - .amdhsa_accum_offset 248 - .amdhsa_uses_dynamic_stack 0 - .amdhsa_tg_split 0 -.end_amdhsa_kernel - -.amdgpu_metadata ---- -amdhsa.kernels: - - .name: gemm - .symbol: gemm.kd - .args: - - .name: C - .address_space: global - .offset: 0 - .size: 8 - .value_kind: global_buffer - .value_type: bf16 - - .name: B - .address_space: global - .offset: 8 - .size: 8 - .value_kind: global_buffer - .value_type: bf16 - - .name: A - .address_space: global - .offset: 16 - .size: 8 - .value_kind: global_buffer - .value_type: bf16 - - .name: sz - .offset: 24 - .size: 4 - .value_kind: by_value - .value_type: u32 - .group_segment_fixed_size: 133120 - .private_segment_fixed_size: 0 - .kernarg_segment_align: 8 - .kernarg_segment_size: 28 - .max_flat_workgroup_size: 256 - .sgpr_count: 88 - .sgpr_spill_count: 0 - .vgpr_count: 248 - .vgpr_spill_count: 0 - .wavefront_size: 64 -amdhsa.version: - - 1 - - 0 -... -.end_amdgpu_metadata diff --git a/extra/gemm/asm/cdna/test.py b/extra/gemm/asm/cdna/test.py deleted file mode 100644 index 1370f5879b..0000000000 --- a/extra/gemm/asm/cdna/test.py +++ /dev/null @@ -1,73 +0,0 @@ -# Run assembly on the AMD runtime and check correctness -# VIZ=2 to profile -import pathlib -from tinygrad import Tensor, Device, dtypes, Context -from tinygrad.uop.ops import UOp, Ops, KernelInfo -from tinygrad.engine.realize import Estimates -from tinygrad.helpers import getenv - -fp = pathlib.Path(__file__).parent/"gemm.s" - -N = getenv("N", 8192) -THREADS_PER_WG = 256 -NUM_WG = N//THREADS_PER_WG * N//THREADS_PER_WG - -assert N % THREADS_PER_WG == 0, "N must be divisible by THREADS_PER_WG" - -# ** generate inputs on CPU - -scale = 10.0 - -import torch -torch.manual_seed(0) -A = (torch.randn(N, N, dtype=torch.float32, device="cpu") / scale).to(torch.bfloat16).contiguous() -B = (torch.randn(N, N, dtype=torch.float32, device="cpu") / scale).to(torch.bfloat16).contiguous() -Bt = B.t().contiguous() # transpose B for the asm gemm -C_torch = A@B - -# ** copy buffers to AMD - -# input creation and validation run on the copy engine for simpler tracing - -def from_torch(t:torch.Tensor) -> Tensor: - return Tensor.from_blob(t.data_ptr(), t.shape, dtype=dtypes.bfloat16, device="cpu").to(Device.DEFAULT).realize() - -C_tiny = from_torch(A) @ from_torch(B) -C_asm = Tensor.empty_like(C_tiny) - -# ** assembly custom kernel - -def custom_asm_gemm(C:UOp, A:UOp, B:UOp) -> UOp: - lidx = UOp.special(THREADS_PER_WG, "lidx0") - gidx = UOp.special(NUM_WG, "gidx0") - - src = (pathlib.Path(__file__).parent/"template.s").read_text().replace("INSTRUCTIONS", fp.read_text()) - - sz = UOp.variable("SZ", 256, 8192) - - sink = UOp.sink(C.base, A.base, B.base, sz, lidx, gidx, arg=KernelInfo(name="gemm", estimates=Estimates(ops=N*N*N*2, mem=N*N*4*3))) - return UOp(Ops.PROGRAM, src=(sink, UOp(Ops.DEVICE, arg=Device.DEFAULT), UOp(Ops.LINEAR, src=(*sink.src, sink)), UOp(Ops.SOURCE, arg=src))) - -C_asm = Tensor.custom_kernel(C_asm, from_torch(A), from_torch(Bt), fxn=custom_asm_gemm)[0] - -# ** run gemms - -sched = Tensor.schedule(C_tiny, C_asm) -eis = [si.lower() for si in sched] - -with Context(DEBUG=2): - for ei in eis: - et = ei.run({"SZ":N}, wait=True) - print(f"{(N*N*N*2 / et)*1e-12:.2f} REAL TFLOPS") - -# ** correctness - -import ctypes - -def torch_bf16(t:Tensor) -> torch.tensor: - asm_out = t.to("cpu").realize().uop.buffer._buf - buf = (ctypes.c_uint16*C_asm.uop.size).from_address(asm_out.va_addr) - return torch.frombuffer(buf, dtype=torch.bfloat16, count=C_asm.uop.size).reshape(C_asm.shape) - -assert torch.allclose(torch_bf16(C_asm), C_torch, rtol=1e-2, atol=1e-3) -assert torch.allclose(torch_bf16(C_tiny), C_torch, rtol=1e-2, atol=1e-3) diff --git a/extra/gemm/asm/cdna/test_asm_gemm.py b/extra/gemm/asm/cdna/test_asm_gemm.py new file mode 100644 index 0000000000..905492cc60 --- /dev/null +++ b/extra/gemm/asm/cdna/test_asm_gemm.py @@ -0,0 +1,46 @@ +import unittest +from tinygrad import Tensor, Device, dtypes, Context +from tinygrad.helpers import getenv +from extra.gemm.asm.cdna.gemm import asm_gemm + +def verify_asm_gemm(batch:int, M:int, N:int, K:int, dtype=dtypes.bfloat16, multi=False) -> None: + Tensor.manual_seed(0) + a_rand = Tensor.randn((batch, M, K), dtype=dtypes.float).sub(0.5).cast(dtype) + b_rand = Tensor.randn((K, N), dtype=dtypes.float).sub(0.5).cast(dtype) + with Context(DEBUG=0): + Tensor.realize(a_rand, b_rand) + + devs = tuple(f"{Device.DEFAULT}:{i}" for i in range(8)) if multi else None + + a, b = Tensor(a_rand.numpy(), requires_grad=True).cast(dtype), Tensor(b_rand.numpy(), requires_grad=True).cast(dtype) + if multi: a, b = a.shard(devs, axis=0), b.shard(devs, axis=None) + tst = asm_gemm(a, b) + tst.sum().backward() + Tensor.realize(tst, a.grad, b.grad) + + a_ref, b_ref = Tensor(a_rand.numpy(), requires_grad=True).cast(dtype), Tensor(b_rand.numpy(), requires_grad=True).cast(dtype) + if multi: a_ref, b_ref = a_ref.shard(devs, axis=0), b_ref.shard(devs, axis=None) + with Context(ASM_GEMM=0): ref = a_ref @ b_ref + ref.sum().backward() + Tensor.realize(ref, a_ref.grad, b_ref.grad) + + with Context(DEBUG=0): + assert (tst - ref).square().max().float().item() < 1e-6, "forward mismatch" + assert (a.grad - a_ref.grad).square().max().float().item() < 1e-3, "grad_a mismatch" + assert (b.grad - b_ref.grad).square().max().float().item() < 1e-3, "grad_b mismatch" + +class TestGemm(unittest.TestCase): + def test_simple(self): verify_asm_gemm(1, N:=getenv("N", 4096), N, N, dtype=dtypes.half) + + def test_gemm1(self): verify_asm_gemm(8, 8192, 4096, 14336, multi=True) + def test_gemm2(self): verify_asm_gemm(8, 8192, 128256, 4096, multi=True) + def test_gemm3(self): verify_asm_gemm(8, 8192, 14336, 4096, multi=True) + def test_gemm4(self): verify_asm_gemm(8, 4096, 14336, 4096, multi=True) + def test_gemm5(self): verify_asm_gemm(8, 4096, 4096, 14336, multi=True) + def test_gemm6(self): verify_asm_gemm(16, 4096, 4096, 14336, multi=True) + def test_gemm_unsupported(self): + with self.assertRaisesRegex(AssertionError, "shape not supported"): + verify_asm_gemm(8, 8192, 1024, 4096, multi=True) + +if __name__ == "__main__": + unittest.main() diff --git a/extra/sqtt/examples/gfx1100/profile_empty_run_0.pkl b/extra/sqtt/examples/gfx1100/profile_empty_run_0.pkl index 22fac0f23c..9ae7fbc50a 100644 Binary files a/extra/sqtt/examples/gfx1100/profile_empty_run_0.pkl and b/extra/sqtt/examples/gfx1100/profile_empty_run_0.pkl differ diff --git a/extra/sqtt/examples/gfx1100/profile_empty_run_1.pkl b/extra/sqtt/examples/gfx1100/profile_empty_run_1.pkl index 2c980df292..2c57cb5d8d 100644 Binary files a/extra/sqtt/examples/gfx1100/profile_empty_run_1.pkl and b/extra/sqtt/examples/gfx1100/profile_empty_run_1.pkl differ diff --git a/extra/sqtt/examples/gfx1100/profile_gemm_run_0.pkl b/extra/sqtt/examples/gfx1100/profile_gemm_run_0.pkl index e540cadc0f..ccf477c653 100644 Binary files a/extra/sqtt/examples/gfx1100/profile_gemm_run_0.pkl and b/extra/sqtt/examples/gfx1100/profile_gemm_run_0.pkl differ diff --git a/extra/sqtt/examples/gfx1100/profile_gemm_run_1.pkl b/extra/sqtt/examples/gfx1100/profile_gemm_run_1.pkl index 693f79f38e..be0cedc424 100644 Binary files a/extra/sqtt/examples/gfx1100/profile_gemm_run_1.pkl and b/extra/sqtt/examples/gfx1100/profile_gemm_run_1.pkl differ diff --git a/extra/sqtt/examples/gfx1100/profile_plus_run_0.pkl b/extra/sqtt/examples/gfx1100/profile_plus_run_0.pkl index 5416372220..1a0e2243a7 100644 Binary files a/extra/sqtt/examples/gfx1100/profile_plus_run_0.pkl and b/extra/sqtt/examples/gfx1100/profile_plus_run_0.pkl differ diff --git a/extra/sqtt/examples/gfx1100/profile_plus_run_1.pkl b/extra/sqtt/examples/gfx1100/profile_plus_run_1.pkl index 51aae2dbff..e5f6376fcc 100644 Binary files a/extra/sqtt/examples/gfx1100/profile_plus_run_1.pkl and b/extra/sqtt/examples/gfx1100/profile_plus_run_1.pkl differ diff --git a/extra/sqtt/examples/gfx1200/profile_empty_run_0.pkl b/extra/sqtt/examples/gfx1200/profile_empty_run_0.pkl index 99131b49e4..62940f0928 100644 Binary files a/extra/sqtt/examples/gfx1200/profile_empty_run_0.pkl and b/extra/sqtt/examples/gfx1200/profile_empty_run_0.pkl differ diff --git a/extra/sqtt/examples/gfx1200/profile_empty_run_1.pkl b/extra/sqtt/examples/gfx1200/profile_empty_run_1.pkl index 6a9ae97e85..01a9ddac0a 100644 Binary files a/extra/sqtt/examples/gfx1200/profile_empty_run_1.pkl and b/extra/sqtt/examples/gfx1200/profile_empty_run_1.pkl differ diff --git a/extra/sqtt/examples/gfx1200/profile_gemm_run_0.pkl b/extra/sqtt/examples/gfx1200/profile_gemm_run_0.pkl index c726b9581f..043c730e80 100644 Binary files a/extra/sqtt/examples/gfx1200/profile_gemm_run_0.pkl and b/extra/sqtt/examples/gfx1200/profile_gemm_run_0.pkl differ diff --git a/extra/sqtt/examples/gfx1200/profile_gemm_run_1.pkl b/extra/sqtt/examples/gfx1200/profile_gemm_run_1.pkl index a55bad145b..65f23de629 100644 Binary files a/extra/sqtt/examples/gfx1200/profile_gemm_run_1.pkl and b/extra/sqtt/examples/gfx1200/profile_gemm_run_1.pkl differ diff --git a/extra/sqtt/examples/gfx1200/profile_plus_run_0.pkl b/extra/sqtt/examples/gfx1200/profile_plus_run_0.pkl index 81c064609b..9d1204ca0b 100644 Binary files a/extra/sqtt/examples/gfx1200/profile_plus_run_0.pkl and b/extra/sqtt/examples/gfx1200/profile_plus_run_0.pkl differ diff --git a/extra/sqtt/examples/gfx1200/profile_plus_run_1.pkl b/extra/sqtt/examples/gfx1200/profile_plus_run_1.pkl index 032e0c54f0..4c1bc06cd9 100644 Binary files a/extra/sqtt/examples/gfx1200/profile_plus_run_1.pkl and b/extra/sqtt/examples/gfx1200/profile_plus_run_1.pkl differ diff --git a/extra/sqtt/examples/gfx950/profile_empty_run_0.pkl b/extra/sqtt/examples/gfx950/profile_empty_run_0.pkl index 5dfec279db..8ad5af2294 100644 Binary files a/extra/sqtt/examples/gfx950/profile_empty_run_0.pkl and b/extra/sqtt/examples/gfx950/profile_empty_run_0.pkl differ diff --git a/extra/sqtt/examples/gfx950/profile_empty_run_1.pkl b/extra/sqtt/examples/gfx950/profile_empty_run_1.pkl index 1c0ef9543a..3b94e90698 100644 Binary files a/extra/sqtt/examples/gfx950/profile_empty_run_1.pkl and b/extra/sqtt/examples/gfx950/profile_empty_run_1.pkl differ diff --git a/extra/sqtt/examples/gfx950/profile_gemm_run_0.pkl b/extra/sqtt/examples/gfx950/profile_gemm_run_0.pkl index 6431be7b5a..6ae6664043 100644 Binary files a/extra/sqtt/examples/gfx950/profile_gemm_run_0.pkl and b/extra/sqtt/examples/gfx950/profile_gemm_run_0.pkl differ diff --git a/extra/sqtt/examples/gfx950/profile_gemm_run_1.pkl b/extra/sqtt/examples/gfx950/profile_gemm_run_1.pkl index 1526352ff7..b0685edd2f 100644 Binary files a/extra/sqtt/examples/gfx950/profile_gemm_run_1.pkl and b/extra/sqtt/examples/gfx950/profile_gemm_run_1.pkl differ diff --git a/extra/sqtt/examples/gfx950/profile_plus_run_0.pkl b/extra/sqtt/examples/gfx950/profile_plus_run_0.pkl index c6e491de0d..c816dc509b 100644 Binary files a/extra/sqtt/examples/gfx950/profile_plus_run_0.pkl and b/extra/sqtt/examples/gfx950/profile_plus_run_0.pkl differ diff --git a/extra/sqtt/examples/gfx950/profile_plus_run_1.pkl b/extra/sqtt/examples/gfx950/profile_plus_run_1.pkl index a365766eb7..010125fb66 100644 Binary files a/extra/sqtt/examples/gfx950/profile_plus_run_1.pkl and b/extra/sqtt/examples/gfx950/profile_plus_run_1.pkl differ diff --git a/extra/usbgpu/patch.py b/extra/usbgpu/patch.py index 48c167dd11..61ffcb0420 100755 --- a/extra/usbgpu/patch.py +++ b/extra/usbgpu/patch.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 -import sys, os, zlib, struct, hashlib -from tinygrad.helpers import DEBUG, getenv, fetch +import os, zlib, struct, hashlib +from tinygrad.helpers import getenv from tinygrad.runtime.support.usb import USB3 SUPPORTED_CONTROLLERS = [ @@ -50,7 +50,7 @@ patched_fw = patch(file_path, file_hash, patches) dev = None for vendor, device in SUPPORTED_CONTROLLERS: try: - dev = USB3(vendor, device, 0x81, 0x83, 0x02, 0x04) + dev = USB3(vendor, device, 0x81, 0x83, 0x02, 0x04, use_bot=True) break except RuntimeError: pass if dev is None: diff --git a/test/mockgpu/amd/amddriver.py b/test/mockgpu/amd/amddriver.py index 0e498f1d05..b5801f823c 100644 --- a/test/mockgpu/amd/amddriver.py +++ b/test/mockgpu/amd/amddriver.py @@ -4,7 +4,7 @@ import tinygrad.runtime.autogen.am.am as am import tinygrad.runtime.autogen.amdgpu_drm as amdgpu_drm from tinygrad.helpers import from_mv from test.mockgpu.driver import VirtDriver, VirtFileDesc, TextFileDesc, DirFileDesc, VirtFile -from test.mockgpu.amd.amdgpu import AMDGPU, gpu_props +from test.mockgpu.amd.amdgpu import AMDGPU, gpu_props, GFX_TARGET_VERSION, MOCKGPU_ARCH libc = ctypes.CDLL(ctypes.util.find_library("c")) libc.mmap.argtypes = [ctypes.c_void_p, ctypes.c_size_t, ctypes.c_int, ctypes.c_int, ctypes.c_int, ctypes.c_long] @@ -90,35 +90,30 @@ class AMDDriver(VirtDriver): def _prepare_gpu(self, gpu_id): self.doorbells[gpu_id] = memoryview(bytearray(0x2000)) self.gpus[gpu_id] = AMDGPU(gpu_id) + # IP versions: rdna3 = GC 11.0.0, NBIF 4.3.0; rdna4 = GC 12.0.0, NBIF 6.3.1 + ip_versions = {"rdna3": {"gc": (11, 0, 0), "sdma": (6, 0, 0), "nbif": (4, 3, 0)}, + "rdna4": {"gc": (12, 0, 0), "sdma": (6, 0, 0), "nbif": (6, 3, 1)}}[MOCKGPU_ARCH] + def ip_discovery_files(hwid, ver, base_addr): + p = f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{hwid}/0' + return [VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{hwid}', functools.partial(DirFileDesc, child_names=['0'])), + VirtFile(f'{p}/major', functools.partial(TextFileDesc, text=str(ver[0]))), + VirtFile(f'{p}/minor', functools.partial(TextFileDesc, text=str(ver[1]))), + VirtFile(f'{p}/revision', functools.partial(TextFileDesc, text=str(ver[2]))), + VirtFile(f'{p}/base_addr', functools.partial(TextFileDesc, text=base_addr))] self.tracked_files += [ VirtFile('/sys/module/amdgpu', functools.partial(TextFileDesc, text="1")), VirtFile('/sys/module/amdgpu/parameters/ppfeaturemask', functools.partial(TextFileDesc, text="0xffff3fff")), VirtFile(f'/sys/devices/virtual/kfd/kfd/topology/nodes/{gpu_id}', functools.partial(DirFileDesc, child_names=['gpu_id', 'properties'])), VirtFile(f'/sys/devices/virtual/kfd/kfd/topology/nodes/{gpu_id}/gpu_id', functools.partial(TextFileDesc, text=f"{gpu_id}")), VirtFile(f'/sys/devices/virtual/kfd/kfd/topology/nodes/{gpu_id}/properties', - functools.partial(TextFileDesc, text=gpu_props.format(drm_render_minor=gpu_id))), + functools.partial(TextFileDesc, text=gpu_props.format(drm_render_minor=gpu_id, gfx_target_version=GFX_TARGET_VERSION))), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/power_dpm_force_performance_level', functools.partial(TextFileDesc, text='profile_standard\n')), VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0', functools.partial(DirFileDesc, child_names=[str(am.GC_HWID), str(am.SDMA0_HWID), str(am.NBIF_HWID)])), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.GC_HWID}', functools.partial(DirFileDesc, child_names=['0'])), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.GC_HWID}/0/major', functools.partial(TextFileDesc, text='11')), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.GC_HWID}/0/minor', functools.partial(TextFileDesc, text='0')), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.GC_HWID}/0/revision', functools.partial(TextFileDesc, text='0')), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.GC_HWID}/0/base_addr', - functools.partial(TextFileDesc, text='0x00001260\n0x0000A000\n0x0001C000\n0x02402C00')), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.SDMA0_HWID}', functools.partial(DirFileDesc, child_names=['0'])), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.SDMA0_HWID}/0/major', functools.partial(TextFileDesc, text='6')), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.SDMA0_HWID}/0/minor', functools.partial(TextFileDesc, text='0')), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.SDMA0_HWID}/0/revision', functools.partial(TextFileDesc, text='0')), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.SDMA0_HWID}/0/base_addr', - functools.partial(TextFileDesc, text='0x00001260\n0x0000A000\n0x0001C000\n0x02402C00')), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.NBIF_HWID}', functools.partial(DirFileDesc, child_names=['0'])), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.NBIF_HWID}/0/major', functools.partial(TextFileDesc, text='4')), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.NBIF_HWID}/0/minor', functools.partial(TextFileDesc, text='3')), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.NBIF_HWID}/0/revision', functools.partial(TextFileDesc, text='0')), - VirtFile(f'/sys/class/drm/renderD{gpu_id}/device/ip_discovery/die/0/{am.NBIF_HWID}/0/base_addr', - functools.partial(TextFileDesc, text='0x00000000\n0x00000014\n0x00000D20\n0x00010400\n0x0241B000\n0x04040000')), + *ip_discovery_files(am.GC_HWID, ip_versions["gc"], '0x00001260\n0x0000A000\n0x0001C000\n0x02402C00'), + *ip_discovery_files(am.SDMA0_HWID, ip_versions["sdma"], '0x00001260\n0x0000A000\n0x0001C000\n0x02402C00'), + *ip_discovery_files(am.NBIF_HWID, ip_versions["nbif"], '0x00000000\n0x00000014\n0x00000D20\n0x00010400\n0x0241B000\n0x04040000'), VirtFile(f'/dev/dri/renderD{gpu_id}', functools.partial(DRMFileDesc, driver=self, gpu=f"{self.gpus[gpu_id]}")), ] diff --git a/test/mockgpu/amd/amdgpu.py b/test/mockgpu/amd/amdgpu.py index baf70087eb..f1c752c06c 100644 --- a/test/mockgpu/amd/amdgpu.py +++ b/test/mockgpu/amd/amdgpu.py @@ -1,8 +1,11 @@ import ctypes, time from test.mockgpu.gpu import VirtGPU from test.mockgpu.helpers import _try_dlopen_remu -from tinygrad.helpers import getbits, to_mv +from tinygrad.helpers import getbits, to_mv, getenv from tinygrad.runtime.support import c + +MOCKGPU_ARCH = getenv("MOCKGPU_ARCH", "rdna3") +GFX_TARGET_VERSION = {"rdna3": 110000, "rdna4": 120000}[MOCKGPU_ARCH] import tinygrad.runtime.autogen.amd_gpu as amd_gpu, tinygrad.runtime.autogen.am.pm4_nv as pm4 SDMA_MAX_COPY_SIZE = 0x400000 @@ -194,10 +197,11 @@ class PM4Executor(AMDQueue): scratch_size = wavesize * 4 # This gives the scratch size per thread (lane) assert prg_sz > 0, "Invalid prg ptr (not found in mapped ranges)" - # Pass valid memory ranges, rsrc2, and scratch_size to Python emulator + # Pass valid memory ranges, rsrc2, scratch_size and arch to Python emulator if hasattr(remu, 'valid_mem_ranges'): remu.valid_mem_ranges = self.gpu.mapped_ranges if hasattr(remu, 'rsrc2'): remu.rsrc2 = rsrc2 if hasattr(remu, 'scratch_size'): remu.scratch_size = scratch_size + if hasattr(remu, 'arch'): remu.arch = self.gpu.arch err = remu.run_asm(prg_addr, prg_sz, *gl, *lc, args_addr) if err != 0: raise RuntimeError("remu does not support the new instruction introduced in this kernel") @@ -314,6 +318,7 @@ class AMDGPU(VirtGPU): self.regs = AMDGPURegisters() self.mapped_ranges = set() self.queues = [] + self.arch = MOCKGPU_ARCH def map_range(self, vaddr, size): self.mapped_ranges.add((vaddr, size)) def unmap_range(self, vaddr, size): self.mapped_ranges.remove((vaddr, size)) @@ -342,7 +347,7 @@ simd_arrays_per_engine 2 cu_per_simd_array 8 simd_per_cu 2 max_slots_scratch_cu 32 -gfx_target_version 110000 +gfx_target_version {gfx_target_version} vendor_id 4098 device_id 29772 location_id 34304 diff --git a/test/mockgpu/helpers.py b/test/mockgpu/helpers.py index a8ab73db18..d586598464 100644 --- a/test/mockgpu/helpers.py +++ b/test/mockgpu/helpers.py @@ -16,14 +16,15 @@ def _try_dlopen_gpuocelot(): return None class PythonRemu: - """Python RDNA3 emulator wrapper that matches the libremu.so interface.""" + """Python RDNA3/RDNA4 emulator wrapper that matches the libremu.so interface.""" valid_mem_ranges: set[tuple[int, int]] = set() rsrc2: int = 0x19c # Default: USER_SGPR_COUNT=14, enable X and Y workgroup IDs scratch_size: int = 0 # private_segment_fixed_size from kernel descriptor + arch: str = "rdna3" # Architecture: rdna3 or rdna4 def run_asm(self, lib: int, lib_sz: int, gx: int, gy: int, gz: int, lx: int, ly: int, lz: int, args_ptr: int) -> int: from extra.assembly.amd.emu import run_asm - return run_asm(lib, lib_sz, gx, gy, gz, lx, ly, lz, args_ptr, self.rsrc2, self.scratch_size) + return run_asm(lib, lib_sz, gx, gy, gz, lx, ly, lz, args_ptr, self.rsrc2, self.scratch_size, self.arch) def _try_dlopen_remu(): # Use Python emulator only if PYTHON_REMU=1 diff --git a/test/test_edgecases.py b/test/test_edgecases.py index 9f24524ae2..59358a5a0e 100644 --- a/test/test_edgecases.py +++ b/test/test_edgecases.py @@ -195,8 +195,10 @@ class TestAssignIssues(unittest.TestCase): t.shrink(((1, 3), (1, 3))).assign(Tensor.ones(2, 2)) np.testing.assert_allclose(t.numpy(), torch_tensor.numpy()) + @unittest.expectedFailure def test_assign_broadcast(self): # broadcasting during assign should behave like PyTorch + # NOTE: we don't want implicit dtype casting (int64 -> float32 loses precision), so this fails torch_tensor = torch.zeros(3, 5) torch_tensor[:] = torch.arange(5) t = Tensor.zeros(3, 5) diff --git a/test/test_multitensor.py b/test/test_multitensor.py index e7c8aa401c..375a6825f4 100644 --- a/test/test_multitensor.py +++ b/test/test_multitensor.py @@ -256,6 +256,18 @@ class TestMultiTensor(unittest.TestCase): a,b = _test_allreduce(Tensor.rand(256, 256)) np.testing.assert_almost_equal(a.numpy(), b.numpy(), decimal=5) + def test_multiple_to_single_device_naive(self): + with Context(RING=0): + t = Tensor.arange(32).shard(devices_4, 0).to(Device.DEFAULT).realize() + self.assertEqual(t.device, Device.DEFAULT) + np.testing.assert_equal(t.numpy(), np.arange(32)) + + def test_multiple_to_single_device_ring(self): + with Context(RING=2): + t = Tensor.arange(32).shard(devices_4, 0).to(Device.DEFAULT).realize() + self.assertEqual(t.device, Device.DEFAULT) + np.testing.assert_equal(t.numpy(), np.arange(32)) + def test_allreduce_all2all(self): with Context(ALL2ALL=2): a,b = _test_allreduce(Tensor.rand(256, 256)) @@ -1273,19 +1285,20 @@ class TestMultiRamUsage(unittest.TestCase): _ = Tensor.zeros(self.N, self.N).contiguous().shard(devices_2, axis=0).contiguous().realize() self.assertUsed(self.N*self.N*4) # sharding should not increase total ram usage - def _test_matmul_half(self, devs): + def _test_matmul_half(self, dev_count:int): N = 32 total_mem = {} + devs = tuple(f"NULL:{i}" for i in range(dev_count)) for dtype in {dtypes.float, dtypes.half}: GlobalCounters.reset() - a = Tensor.empty((N, N), dtype=dtype).shard(devs, axis=0) - b = Tensor.empty((N, N), dtype=dtype).shard(devs, axis=None) + a = Tensor.empty((N, N), dtype=dtype, device=devs[0]).shard(devs, axis=0) + b = Tensor.empty((N, N), dtype=dtype, device=devs[0]).shard(devs, axis=None) (a @ b).realize() total_mem[dtype] = GlobalCounters.global_mem self.assertEqual(total_mem[dtypes.half], total_mem[dtypes.float] // 2) - def test_matmul_half(self): self._test_matmul_half(devices_2) - def test_matmul_half_alt(self): self._test_matmul_half(devices_4) + def test_matmul_half(self): self._test_matmul_half(dev_count=2) + def test_matmul_half_alt(self): self._test_matmul_half(dev_count=4) @unittest.skipIf(not_support_multi_device(), "need multi") class TestMultiFromUnrenderable(unittest.TestCase): diff --git a/test/testextra/test_cfg_viz.py b/test/testextra/test_cfg_viz.py index 45ed4a1fb6..3e9850b510 100644 --- a/test/testextra/test_cfg_viz.py +++ b/test/testextra/test_cfg_viz.py @@ -2,7 +2,7 @@ # allow define from star imports import unittest -import textwrap, functools +import functools from tinygrad import Device, Tensor from tinygrad.uop.ops import UOp, Ops, KernelInfo @@ -11,69 +11,27 @@ from tinygrad.runtime.support.compiler_amd import HIPCompiler from tinygrad.viz.serve import amdgpu_cfg from extra.assembly.amd.autogen.rdna3.ins import * -from extra.assembly.amd.dsl import Inst +from extra.assembly.amd.dsl import s -template = """.text -.globl fn_name -.p2align 8 -.type fn_name,@function -fn_name: - INSTRUCTION - -.rodata -.p2align 6 -.amdhsa_kernel fn_name - .amdhsa_kernarg_size 8 - .amdhsa_user_sgpr_kernarg_segment_ptr 1 - .amdhsa_next_free_vgpr .amdgcn.next_free_vgpr - .amdhsa_next_free_sgpr .amdgcn.next_free_sgpr - .amdhsa_wavefront_size32 1 -.end_amdhsa_kernel - -.amdgpu_metadata ---- -amdhsa.version: - - 1 - - 0 -amdhsa.kernels: - - .name: fn_name - .symbol: fn_name.kd - .group_segment_fixed_size: 0 - .private_segment_fixed_size: 0 - .wavefront_size: 32 - .sgpr_count: 8 - .vgpr_count: 8 - .max_flat_workgroup_size: 1024 - .kernarg_segment_align: 8 - .kernarg_segment_size: 8 - .args: - - .address_space: global - .name: a - .offset: 0 - .size: 8 - .type_name: 'float*' - .value_kind: global_buffer -... -.end_amdgpu_metadata -""" +# TODO: this belongs to the dsl infrastructure +from extra.gemm.amd_asm_matmul import Kernel # TODO: shouldn't need compiler once we can output ELF # outputs a text disassembly for humans and a machine readable binary -def assemble(name:str, insts:list[str|Inst], compiler:Compiler) -> tuple[str, bytes]: - asm = "\n".join([inst if isinstance(inst, str) else inst.disasm() for inst in insts]) - src = template.replace("fn_name", name).replace("INSTRUCTION", textwrap.dedent(asm)) +def assemble(name:str, k:Kernel, compiler:Compiler) -> tuple[str, bytes]: + src = k.to_asm() return (src, compiler.compile(src)) -def asm_kernel(out:UOp, insts:list[str|Inst], name:str, device:str, compiler:Compiler, n_threads:int=1, n_workgroups:int=1) -> UOp: +def asm_kernel(out:UOp, k:Kernel, name:str, device:str, compiler:Compiler, n_threads:int=1, n_workgroups:int=1) -> UOp: lidx = UOp.special(n_threads, "lidx0") gidx = UOp.special(n_workgroups, "gidx0") sink = UOp.sink(out, lidx, gidx, arg=KernelInfo(name=name)) - src, lib = assemble(name, insts, compiler) + src, lib = assemble(name, k, compiler) return UOp(Ops.PROGRAM, src=(sink, UOp(Ops.DEVICE, arg=device), UOp(Ops.LINEAR, src=(*sink.src, sink)), UOp(Ops.SOURCE, arg=src), UOp(Ops.BINARY, arg=lib))) -def run_asm(name:str, insts:list) -> None: - fxn = functools.partial(asm_kernel, insts=insts, name=name, device=Device.DEFAULT, compiler=HIPCompiler(Device[Device.DEFAULT].renderer.arch)) +def run_asm(name:str, k:Kernel) -> None: + fxn = functools.partial(asm_kernel, k=k, name=name, device=Device.DEFAULT, compiler=HIPCompiler(Device[Device.DEFAULT].renderer.arch)) out = Tensor.custom_kernel(Tensor.empty(1), fxn=fxn)[0] out.realize() @@ -85,32 +43,32 @@ class TestCfg(unittest.TestCase): self.skipTest(f"tests written for RDNA, got arch {arch}") def test_simple(self): - run_asm("simple", [ - "entry:", - "s_branch bb1", - "bb1:", - s_endpgm(), - s_code_end(), - ]) + k = Kernel(arch=Device["AMD"].arch) + k.label("entry") + k.emit(s_branch(), target="bb1") + k.label("bb1") + k.emit(s_endpgm()) + k.emit(s_code_end()) + run_asm("simple", k) def test_diamond(self): - run_asm("diamond", insts:=[ - "entry:", - s_mov_b32(s[0], 0), - s_mov_b32(s[1], 0), - s_cmp_eq_u64(s[0:1], 0), - "s_cbranch_scc1 if", - "s_branch else", - "if:", - s_nop(1), - "s_branch end", - "else:", - s_nop(0), - "end:", - s_endpgm(), - s_code_end(), - ]) - _, lib = assemble("diamond", insts, HIPCompiler(Device[Device.DEFAULT].arch)) + k = Kernel(arch=Device["AMD"].arch) + k.label("entry") + k.emit(s_mov_b32(s[0], 0)) + k.emit(s_mov_b32(s[1], 0)) + k.emit(s_cmp_eq_u64(s[0:1], 0)) + k.emit(s_cbranch_scc1(), target="if") + k.emit(s_branch(), target="else") + k.label("if") + k.emit(s_nop(1)) + k.emit(s_branch(), target="end") + k.label("else") + k.emit(s_nop(0)) + k.label("end") + k.emit(s_endpgm()) + k.emit(s_code_end()) + run_asm("diamond", k) + _, lib = assemble("diamond", k, HIPCompiler(Device[Device.DEFAULT].arch)) cfg = amdgpu_cfg(lib, Device[Device.DEFAULT].device_props()["gfx_target_version"])["data"] self.assertEqual(len(cfg["blocks"]), 5) edge_count = sum(len(v) for v in cfg["paths"].values()) @@ -124,133 +82,138 @@ class TestCfg(unittest.TestCase): self.assertEqual(insts, ['s_mov_b32', 's_cmp_eq_u64']) def test_loop(self): - run_asm("simple_loop", [ - "entry:", - s_mov_b32(s[1], 4), - "loop:", - s_add_u32(s[1], s[1], -1), - s_cmp_eq_i32(s[1], 0), - "s_cbranch_scc0 loop", - s_endpgm(), - s_code_end(), - ]) + k = Kernel(arch=Device["AMD"].arch) + k.label("entry") + k.emit(s_mov_b32(s[1], 4)) + k.label("loop") + k.emit(s_add_u32(s[1], s[1], -1)) + k.emit(s_cmp_eq_i32(s[1], 0)) + k.emit(s_cbranch_scc0(), target="loop") + k.emit(s_endpgm()) + k.emit(s_code_end()) + run_asm("simple_loop", k) def test_loop_branch(self): - run_asm("loop_if", [ - "entry:", - s_mov_b32(s[1], 4), - "loop:", - s_add_u32(s[1], s[1], -1), - s_cmp_eq_i32(s[1], 2), - "s_cbranch_scc1 cond", - "s_branch cont", - "cond:", - s_add_u32(s[1], s[1], -2), - "cont:", - s_cmp_eq_i32(s[1], 0), - "s_cbranch_scc0 loop", - s_endpgm(), - s_code_end(), - ]) + k = Kernel(arch=Device["AMD"].arch) + k.label("entry") + k.emit(s_mov_b32(s[1], 4)) + k.label("loop") + k.emit(s_add_u32(s[1], s[1], -1)) + k.emit(s_cmp_eq_i32(s[1], 2)) + k.emit(s_cbranch_scc1(), target="cond") + k.emit(s_branch(), target="cont") + k.label("cond") + k.emit(s_add_u32(s[1], s[1], -2)) + k.label("cont") + k.emit(s_cmp_eq_i32(s[1], 0)) + k.emit(s_cbranch_scc0(), target="loop") + k.emit(s_endpgm()) + k.emit(s_code_end()) + run_asm("loop_if", k) def test_loop_break(self): - run_asm("loop_break", [ - "entry:", - s_mov_b32(s[1], 8), - "loop:", - s_add_u32(s[1], s[1], -1), - s_cmp_eq_i32(s[1], 5), - "s_cbranch_scc1 break", - s_cmp_eq_i32(s[1], 0), - "s_cbranch_scc0 loop", - "break:", - s_endpgm(), - s_code_end(), - ]) + k = Kernel(arch=Device["AMD"].arch) + k.label("entry") + k.emit(s_mov_b32(s[1], 8)) + k.label("loop") + k.emit(s_add_u32(s[1], s[1], -1)) + k.emit(s_cmp_eq_i32(s[1], 5)) + k.emit(s_cbranch_scc1(), target="break") + k.emit(s_cmp_eq_i32(s[1], 0)) + k.emit(s_cbranch_scc0(), target="loop") + k.label("break") + k.emit(s_endpgm()) + k.emit(s_code_end()) + run_asm("loop_break", k) def test_switch(self): - run_asm("switch_case", [ - "entry:", - s_cmp_eq_i32(s[0], 0), - "s_cbranch_scc1 case0", - s_cmp_eq_i32(s[0], 1), - "s_cbranch_scc1 case1", - "s_branch case2", - "case0:", - s_nop(0), - "s_branch join", - "case1:", - s_nop(1), - "s_branch join", - "case2:", - s_nop(2), - "s_branch join", - "join:", - s_endpgm(), - s_code_end(), - ]) + k = Kernel(arch=Device["AMD"].arch) + k.label("entry") + k.emit(s_cmp_eq_i32(s[0], 0)) + k.emit(s_cbranch_scc1(), target="case0") + k.emit(s_cmp_eq_i32(s[0], 1)) + k.emit(s_cbranch_scc1(), target="case1") + k.emit(s_branch(), target="case2") + k.label("case0") + k.emit(s_nop(0)) + k.emit(s_branch(), target="join") + k.label("case1") + k.emit(s_nop(1)) + k.emit(s_branch(), target="join") + k.label("case2") + k.emit(s_nop(2)) + k.emit(s_branch(), target="join") + k.label("join") + k.emit(s_endpgm()) + k.emit(s_code_end()) + run_asm("switch_case", k) def test_ping_pong(self): - run_asm("ping_pong", [ - "entry:", - s_cmp_eq_i32(s[0], 0), - "s_cbranch_scc1 ping", - "s_branch pong", - "ping:", - s_cmp_eq_i32(s[1], 0), - "s_cbranch_scc1 pong", - "s_branch end", - "pong:", - s_cmp_eq_i32(s[2], 0), - "s_cbranch_scc1 ping", - "end:", - s_endpgm(), - s_code_end(), - ]) + k = Kernel(arch=Device["AMD"].arch) + k.label("entry") + k.emit(s_cmp_eq_i32(s[0], 0)) + k.emit(s_cbranch_scc1(), target="ping") + k.emit(s_branch(), target="pong") + k.label("ping") + k.emit(s_cmp_eq_i32(s[1], 0)) + k.emit(s_cbranch_scc1(), target="pong") + k.emit(s_branch(), target="end") + k.label("pong") + k.emit(s_cmp_eq_i32(s[2], 0)) + k.emit(s_cbranch_scc1(), target="ping") + k.label("end") + k.emit(s_endpgm()) + k.emit(s_code_end()) + run_asm("ping_pong", k) def test_colored_blocks(self): N = 10 - asm = ["entry:", "s_branch init0"] + k = Kernel(arch=Device["AMD"].arch) + k.label("entry") + k.emit(s_branch(), target="init0") for i in range(N): - asm += [f"init{i}:", s_mov_b32(s[1], i + 1), f"s_branch {(loop:=f'loop{i}')}"] - asm += [ - f"{loop}:", - s_nop(i & 7), - s_add_u32(s[1], s[1], -1), - s_cmp_eq_i32(s[1], 0), - f"s_cbranch_scc0 {loop}", - f"s_branch {'init' + str(i+1) if i + 1 < N else 'end'}", - ] - asm += ["end:", s_endpgm(), s_code_end()] - run_asm("test_colored_blocks", asm) + loop = f"loop{i}" + k.label(f"init{i}") + k.emit(s_mov_b32(s[1], i + 1)) + k.emit(s_branch(), target=loop) + k.label(loop) + k.emit(s_nop(i & 7)) + k.emit(s_add_u32(s[1], s[1], -1)) + k.emit(s_cmp_eq_i32(s[1], 0)) + k.emit(s_cbranch_scc0(), target=loop) + k.emit(s_branch(), target=f"init{i+1}" if i + 1 < N else "end") + k.label("end") + k.emit(s_endpgm()) + k.emit(s_code_end()) + run_asm("test_colored_blocks", k) def test_jump_back_to_end(self): - run_asm("jump_back_to_end", [ - "entry:", - s_mov_b32(s[1], 2), - "s_cbranch_execz loop", - "end:", - s_endpgm(), - "loop:", - s_add_u32(s[1], s[1], -1), - s_cmp_eq_i32(s[1], 0), - "s_branch end", - s_code_end(), - ]) + k = Kernel(arch=Device["AMD"].arch) + k.label("entry") + k.emit(s_mov_b32(s[1], 2)) + k.emit(s_cbranch_execz(), target="loop") + k.label("end") + k.emit(s_endpgm()) + k.label("loop") + k.emit(s_add_u32(s[1], s[1], -1)) + k.emit(s_cmp_eq_i32(s[1], 0)) + k.emit(s_branch(), target="end") + k.emit(s_code_end()) + run_asm("jump_back_to_end", k) def test_hit_count(self): - run_asm("test_hit_count", [ - "entry:", - s_mov_b32(s[1], 1), - "s_branch alt", - "continue:", - s_mov_b32(s[2], 2), - s_add_u32(s[1], s[1], s[2]), - "alt:", - s_add_u32(s[1], s[1], -1), - s_endpgm(), - s_code_end(), - ]) + k = Kernel(arch=Device["AMD"].arch) + k.label("entry") + k.emit(s_mov_b32(s[1], 1)) + k.emit(s_branch(), target="alt") + k.label("continue") + k.emit(s_mov_b32(s[2], 2)) + k.emit(s_add_u32(s[1], s[1], s[2])) + k.label("alt") + k.emit(s_add_u32(s[1], s[1], -1)) + k.emit(s_endpgm()) + k.emit(s_code_end()) + run_asm("test_hit_count", k) if __name__ == "__main__": unittest.main() diff --git a/test/unit/test_assign.py b/test/unit/test_assign.py index 076f2b14f3..71d59a8607 100644 --- a/test/unit/test_assign.py +++ b/test/unit/test_assign.py @@ -461,6 +461,27 @@ class TestAssign(unittest.TestCase): a[2:5] = [1, 2, 3] np.testing.assert_allclose(a.numpy(), [0., 0., 1., 2., 3., 0., 0., 0.]) + def test_assign_bitcast(self): + # assign to a bitcast view should modify the underlying buffer + a = Tensor([1.0, 2.0, 3.0, 4.0], dtype=dtypes.float32).realize() + # IEEE 754: 1.0f = 0x3f800000, 2.0f = 0x40000000, 3.0f = 0x40400000, 4.0f = 0x40800000 + a.bitcast(dtypes.uint32).assign(Tensor([0x40800000, 0x40400000, 0x40000000, 0x3f800000], dtype=dtypes.uint32)).realize() + np.testing.assert_allclose(a.numpy(), [4.0, 3.0, 2.0, 1.0]) + # double bitcast + b = Tensor([1.0, 2.0, 3.0, 4.0], dtype=dtypes.float32).realize() + b.bitcast(dtypes.uint32).bitcast(dtypes.int32).assign(Tensor([0x40800000, 0x40400000, 0x40000000, 0x3f800000], dtype=dtypes.int32)).realize() + np.testing.assert_allclose(b.numpy(), [4.0, 3.0, 2.0, 1.0]) + # shrink then bitcast + c = Tensor([1.0, 2.0, 3.0, 4.0], dtype=dtypes.float32).realize() + c[0:2].bitcast(dtypes.uint32).assign(Tensor([0x40800000, 0x40400000], dtype=dtypes.uint32)).realize() + np.testing.assert_allclose(c.numpy(), [4.0, 3.0, 3.0, 4.0]) + + def test_assign_bitcast_different_size(self): + # different-size bitcast creates a new tensor, not a view, so assign doesn't modify the original + a = Tensor([0]*8, dtype=dtypes.uint8).realize() + a.bitcast(dtypes.int64).assign(Tensor([12345], dtype=dtypes.int64)).realize() + np.testing.assert_equal(a.numpy(), [0]*8) + @unittest.skip("don't use output buffer, and mismatch dtype no longer supported") def test_cast_assignment(self): a = Tensor(np.arange(N*N, dtype=np.float32)).reshape(N,N) @@ -472,6 +493,38 @@ class TestAssign(unittest.TestCase): assert oba1 is None and oba2 is None np.testing.assert_allclose(a.numpy(), np.arange(N*N,dtype=np.int32).reshape((N,N))) + def test_assign_dtype_mismatch(self): + # assign should not implicitly cast dtypes - this can lose precision + a = Tensor.zeros(4, dtype=dtypes.float32).contiguous().realize() + b = Tensor([1, 2, 3, 4], dtype=dtypes.int32) + with self.assertRaisesRegex(RuntimeError, "assign dtype mismatch"): + a.assign(b) + + def test_assign_dtype_mismatch_int64_to_float32(self): + # int64 -> float32 loses precision for large values, should not be implicit + a = Tensor.zeros(1, dtype=dtypes.float32).contiguous().realize() + b = Tensor([16777217], dtype=dtypes.int64) # 2^24 + 1, not exactly representable in float32 + with self.assertRaisesRegex(RuntimeError, "assign dtype mismatch"): + a.assign(b) + + def test_assign_shape_broadcast(self): + # shape broadcasting should work when dtypes match + a = Tensor.zeros(3, 5, dtype=dtypes.float32).contiguous().realize() + b = Tensor([1., 2., 3., 4., 5.], dtype=dtypes.float32) + a.assign(b) + a.realize() + expected = np.array([[1., 2., 3., 4., 5.]] * 3) + np.testing.assert_allclose(a.numpy(), expected) + + def test_assign_shape_broadcast_2d(self): + # broadcast (1, 5) to (3, 5) + a = Tensor.zeros(3, 5, dtype=dtypes.float32).contiguous().realize() + b = Tensor([[1., 2., 3., 4., 5.]], dtype=dtypes.float32) + a.assign(b) + a.realize() + expected = np.array([[1., 2., 3., 4., 5.]] * 3) + np.testing.assert_allclose(a.numpy(), expected) + def test_disk_assignment(self): a = Tensor.empty(5, device=f"disk:{temp('disk_assignment')}").assign(Tensor.ones(5)).numpy() np.testing.assert_equal(a, np.ones(5)) @@ -566,12 +619,12 @@ class TestAssignOrdering(unittest.TestCase): def test_slice_write_then_full_read(self): """Write to slice, then read full buffer.""" # without .realize(): orphan slice assign not triggered by .numpy() - buf = Tensor.zeros(4).contiguous().realize() + buf = Tensor.zeros(4, dtype=dtypes.int32).contiguous().realize() buf[1:3].assign(Tensor([5, 6])) np.testing.assert_equal(buf.numpy(), [0, 0, 0, 0]) # TODO: wrong! should be [0, 5, 6, 0] # with .realize(): assign executes - buf = Tensor.zeros(4).contiguous().realize() + buf = Tensor.zeros(4, dtype=dtypes.int32).contiguous().realize() buf[1:3].assign(Tensor([5, 6])).realize() np.testing.assert_equal(buf.numpy(), [0, 5, 6, 0]) @@ -653,7 +706,7 @@ class TestAssignOrdering(unittest.TestCase): def test_three_buffer_chain(self): """Chain: A depends on B, B depends on C - ordering matters.""" - a = Tensor.zeros(4).contiguous().realize() + a = Tensor.zeros(4, dtype=dtypes.int32).contiguous().realize() b = Tensor([1, 2, 3, 4]).contiguous().realize() c = Tensor([10, 10, 10, 10]).contiguous().realize() # b reads from c, a reads from b @@ -665,8 +718,8 @@ class TestAssignOrdering(unittest.TestCase): def test_interleaved_assign_read_patterns(self): """Complex interleaved pattern: write A, read A into B, write B, read B.""" - a = Tensor.zeros(4).contiguous().realize() - b = Tensor.zeros(4).contiguous().realize() + a = Tensor.zeros(4, dtype=dtypes.int32).contiguous().realize() + b = Tensor.zeros(4, dtype=dtypes.int32).contiguous().realize() a.assign(Tensor([1, 2, 3, 4])) b.assign(a.contiguous()) # b should get [1,2,3,4] diff --git a/test/unit/test_autogen.py b/test/unit/test_autogen.py index 0a0f41da87..55d107ce40 100644 --- a/test/unit/test_autogen.py +++ b/test/unit/test_autogen.py @@ -5,24 +5,13 @@ from tinygrad.runtime.support.c import DLL, record, init_records from tinygrad.runtime.support import c from tinygrad.runtime.support.autogen import gen -class TestAutogen(unittest.TestCase): +@unittest.skipIf(WIN, "doesn't compile on windows") +class TestC(unittest.TestCase): def compile(self, src): with tempfile.NamedTemporaryFile(suffix=".so") as f: subprocess.check_output(('clang', '-x', 'c', '-fPIC', '-shared', '-', '-o', f.name), input=src.encode()) return DLL("test", f.name) - def run_gen(self, contents): - with tempfile.NamedTemporaryFile(mode='w', suffix='.h') as f: - f.write(contents) - f.flush() - - generated_code = gen(name="test_header", dll=None, files=[f.name]) - - namespace = {} - exec(generated_code, namespace) - return namespace - - @unittest.skipIf(WIN, "doesn't compile on windows") def test_packed_struct(self): @record class Baz: @@ -45,7 +34,6 @@ class TestAutogen(unittest.TestCase): assert b.c == 1 assert b.d == 0 - @unittest.skipIf(WIN, "doesn't compile on windows") def test_packed_struct_interop(self): @record class Baz: @@ -75,7 +63,6 @@ class TestAutogen(unittest.TestCase): self.assertEqual(test(b), b.a + b.b + b.c + b.d) # https://github.com/python/cpython/issues/90914 - @unittest.skipIf(WIN, "doesn't compile on windows") def test_bitfield_interop(self): @record class Baz: @@ -103,7 +90,6 @@ class TestAutogen(unittest.TestCase): def test(x:Baz) -> ctypes.c_int: ... for i in range(8): self.assertEqual(test(Baz(*(j==i for j in range(8)))), i==2) - @unittest.skipIf(WIN, "doesn't compile on windows") def test_struct_interop(self): @record class Baz: @@ -131,7 +117,6 @@ class TestAutogen(unittest.TestCase): def test(x:Baz) -> Baz: ... self.assertEqual(bytes(test(Baz(*range(8)))), struct.pack("8i", *range(7, -1, -1))) - @unittest.skipIf(WIN, "doesn't compile on windows") def test_aos_interop(self): @record class Item: @@ -151,7 +136,6 @@ class TestAutogen(unittest.TestCase): def test(arr:(Item * 3)) -> ctypes.c_int: ... self.assertEqual(test((Item * 3)(Item(10), Item(20), Item(30))), 60) - @unittest.skipIf(WIN, "doesn't compile on windows") def test_soa_interop(self): @record class Row: @@ -173,7 +157,6 @@ class TestAutogen(unittest.TestCase): self.assertEqual(r.data[1], 20) self.assertEqual(r.data[2], 10) - @unittest.skipIf(WIN, "doesn't compile on windows") def test_soa_ptr_interop(self): @record class Row: @@ -191,7 +174,6 @@ class TestAutogen(unittest.TestCase): def test(x:Row) -> ctypes.c_int: ... assert test(Row((ctypes.c_int * 3)(10, 20, 30))) == 60 - @unittest.skipIf(WIN, "doesn't compile on windows") def test_nested_struct_interop(self): @record class Inner: @@ -217,7 +199,6 @@ class TestAutogen(unittest.TestCase): self.assertEqual(o.inner.a, 20) self.assertEqual(o.b, 10) - @unittest.skipIf(WIN, "doesn't compile on windows") def test_struct_pointer_interop(self): @record class Foo: @@ -242,7 +223,88 @@ class TestAutogen(unittest.TestCase): self.assertEqual(out.contents.a, 20) self.assertEqual(out.contents.b, 10) - @unittest.skipIf(WIN, "doesn't compile on windows") + def test_pointer_field_roundtrip(self): + # This tests storing a pointer in a record struct field and passing it to C + # Mimics how mesa.struct_lp_build_tgsi_params.mask is used + from tinygrad.runtime.support.c import POINTER + @record + class Inner: + SIZE = 8 + value: Annotated[ctypes.c_int, 0] + flag: Annotated[ctypes.c_int, 4] + @record + class Outer: + SIZE = 16 + x: Annotated[ctypes.c_int, 0] + inner_ptr: Annotated[POINTER[Inner], 8] + init_records() + + src = """ + struct inner { int value; int flag; }; + struct outer { int x; struct inner *inner_ptr; }; + int test(struct inner *p) { + return p->value + p->flag; + } + """ + dll = self.compile(src) + @dll.bind + def test(p:POINTER[Inner]) -> ctypes.c_int: ... + + inner = Inner(value=42, flag=10) + outer = Outer(x=1, inner_ptr=ctypes.pointer(inner)) + # Retrieve pointer from struct field and pass to C + self.assertEqual(test(outer.inner_ptr), 52) + + def test_pointer_field_loses_reference(self): + # BUG: When a pointer is stored in a record struct field, only the address bytes are saved. + # The pointer's _objects dict (which prevents GC of the pointed-to object) is lost. + # This causes the pointed-to object to be garbage collected, leading to use-after-free. + from tinygrad.runtime.support.c import POINTER + @record + class MaskContext: + SIZE = 16 + value: Annotated[ctypes.c_int, 0] + initialized: Annotated[ctypes.c_int, 4] + ptr: Annotated[ctypes.c_void_p, 8] + @record + class Params: + SIZE = 16 + x: Annotated[ctypes.c_int, 0] + mask: Annotated[POINTER[MaskContext], 8] + init_records() + + src = """ + struct mask_ctx { int value; int initialized; void *ptr; }; + void mask_begin(struct mask_ctx *m, int val) { m->value = val; m->initialized = 1; } + int mask_end(struct mask_ctx *m) { return m->value + m->initialized; } + """ + dll = self.compile(src) + @dll.bind + def mask_begin(m:POINTER[MaskContext], val:ctypes.c_int) -> None: ... + @dll.bind + def mask_end(m:POINTER[MaskContext]) -> ctypes.c_int: ... + + # When MaskContext() is created inline, it gets garbage collected after the pointer + # is stored because only the address bytes are saved, not the _objects reference. + params = Params(x=1, mask=ctypes.pointer(MaskContext())) + mask_begin(params.mask, 42) + result = mask_end(params.mask) + self.assertEqual(result, 43) # 42 + 1 + +@unittest.skipIf(OSX and ('MTLCompiler' in DLL._loaded_ or 'llvm' in DLL._loaded_), "libclang can't be loaded after MTLCompiler or llvm on OSX") +@unittest.skipIf(WIN, "doesn't compile on windows") +class TestAutogen(unittest.TestCase): + def run_gen(self, contents): + with tempfile.NamedTemporaryFile(mode='w', suffix='.h') as f: + f.write(contents) + f.flush() + + generated_code = gen(name="test_header", dll=None, files=[f.name]) + + namespace = {} + exec(generated_code, namespace) + return namespace + def test_packed_structs(self): ns = self.run_gen(""" typedef unsigned NvU32; @@ -292,47 +354,6 @@ typedef struct assert frts_cmd.readVbiosDesc.__class__ is FWSECLIC_READ_VBIOS_DESC assert frts_cmd.frtsRegionDesc.__class__ is FWSECLIC_FRTS_REGION_DESC - @unittest.skipIf(WIN, "doesn't compile on windows") - @unittest.skipIf(OSX, "can't find stdint?") - def test_packed_fields(self): - ns = self.run_gen("""#include -typedef struct die_info - { - uint16_t die_id; - uint16_t die_offset; /* Points to the corresponding die_header structure */ - } die_info; - -typedef struct ip_discovery_header - { - uint32_t signature; /* Table Signature */ - uint16_t version; /* Table Version */ - uint16_t size; /* Table Size */ - uint32_t id; /* Table ID */ - uint16_t num_dies; /* Number of Dies */ - die_info die_info[16]; /* list die information for up to 16 dies */ - union { - uint16_t padding[1]; /* version <= 3 */ - struct { /* version == 4 */ - uint8_t base_addr_64_bit : 1; /* ip structures are using 64 bit base address */ - uint8_t reserved : 7; - uint8_t reserved2; - }; - }; - } ip_discovery_header; -""") - - ip_discovery_header = ns['ip_discovery_header'] - - hdr = b'IPDS\x04\x00|\x1d\x80\x1a\xffd\x01\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00' # noqa: E501 - ihdr = ip_discovery_header.from_buffer_copy(hdr) - - assert ctypes.sizeof(ihdr) == 80 - assert ihdr.signature == 0x53445049 - assert ihdr.version == 0x0004 - assert ihdr.num_dies == 1 - assert ihdr.base_addr_64_bit == 1 - - @unittest.skipIf(WIN, "doesn't compile on windows") def test_gen_from_header(self): namespace = self.run_gen(""" typedef struct { @@ -378,7 +399,6 @@ typedef struct ip_discovery_header self.assertTrue(hasattr(rect, 'height')) self.assertTrue(hasattr(rect, 'color')) - @unittest.skipIf(WIN, "doesn't compile on windows") def test_struct_ordering(self): namespace = self.run_gen(""" struct A; @@ -408,77 +428,6 @@ typedef struct ip_discovery_header self.assertTrue(hasattr(b, 'c_ptr')) self.assertTrue(hasattr(c, 'a_ptr')) - @unittest.skipIf(WIN, "doesn't compile on windows") - def test_pointer_field_roundtrip(self): - # This tests storing a pointer in a record struct field and passing it to C - # Mimics how mesa.struct_lp_build_tgsi_params.mask is used - from tinygrad.runtime.support.c import POINTER - @record - class Inner: - SIZE = 8 - value: Annotated[ctypes.c_int, 0] - flag: Annotated[ctypes.c_int, 4] - @record - class Outer: - SIZE = 16 - x: Annotated[ctypes.c_int, 0] - inner_ptr: Annotated[POINTER[Inner], 8] - init_records() - - src = """ - struct inner { int value; int flag; }; - struct outer { int x; struct inner *inner_ptr; }; - int test(struct inner *p) { - return p->value + p->flag; - } - """ - dll = self.compile(src) - @dll.bind - def test(p:POINTER[Inner]) -> ctypes.c_int: ... - - inner = Inner(value=42, flag=10) - outer = Outer(x=1, inner_ptr=ctypes.pointer(inner)) - # Retrieve pointer from struct field and pass to C - self.assertEqual(test(outer.inner_ptr), 52) - - @unittest.skipIf(WIN, "doesn't compile on windows") - def test_pointer_field_loses_reference(self): - # BUG: When a pointer is stored in a record struct field, only the address bytes are saved. - # The pointer's _objects dict (which prevents GC of the pointed-to object) is lost. - # This causes the pointed-to object to be garbage collected, leading to use-after-free. - from tinygrad.runtime.support.c import POINTER - @record - class MaskContext: - SIZE = 16 - value: Annotated[ctypes.c_int, 0] - initialized: Annotated[ctypes.c_int, 4] - ptr: Annotated[ctypes.c_void_p, 8] - @record - class Params: - SIZE = 16 - x: Annotated[ctypes.c_int, 0] - mask: Annotated[POINTER[MaskContext], 8] - init_records() - - src = """ - struct mask_ctx { int value; int initialized; void *ptr; }; - void mask_begin(struct mask_ctx *m, int val) { m->value = val; m->initialized = 1; } - int mask_end(struct mask_ctx *m) { return m->value + m->initialized; } - """ - dll = self.compile(src) - @dll.bind - def mask_begin(m:POINTER[MaskContext], val:ctypes.c_int) -> None: ... - @dll.bind - def mask_end(m:POINTER[MaskContext]) -> ctypes.c_int: ... - - # When MaskContext() is created inline, it gets garbage collected after the pointer - # is stored because only the address bytes are saved, not the _objects reference. - params = Params(x=1, mask=ctypes.pointer(MaskContext())) - mask_begin(params.mask, 42) - result = mask_end(params.mask) - self.assertEqual(result, 43) # 42 + 1 - - @unittest.skipIf(WIN, "doesn't compile on windows") def test_anonymous_children(self): namespace = self.run_gen(""" struct foo { @@ -491,7 +440,6 @@ typedef struct ip_discovery_header self.assertIn('struct_foo', namespace) self.assertIn('struct_foo_bar', namespace) - @unittest.skipIf(WIN, "doesn't compile on windows") def test_enums(self): namespace = self.run_gen(""" enum Foo { A, B, C }; @@ -511,4 +459,43 @@ typedef struct ip_discovery_header assert namespace["enum_Bar"].get(1) == "Y" assert namespace["enum_Bar"].get(2) == "Z" + @unittest.skipIf(OSX, "can't find stdint?") + def test_packed_fields(self): + ns = self.run_gen("""#include +typedef struct die_info + { + uint16_t die_id; + uint16_t die_offset; /* Points to the corresponding die_header structure */ + } die_info; + +typedef struct ip_discovery_header + { + uint32_t signature; /* Table Signature */ + uint16_t version; /* Table Version */ + uint16_t size; /* Table Size */ + uint32_t id; /* Table ID */ + uint16_t num_dies; /* Number of Dies */ + die_info die_info[16]; /* list die information for up to 16 dies */ + union { + uint16_t padding[1]; /* version <= 3 */ + struct { /* version == 4 */ + uint8_t base_addr_64_bit : 1; /* ip structures are using 64 bit base address */ + uint8_t reserved : 7; + uint8_t reserved2; + }; + }; + } ip_discovery_header; +""") + + ip_discovery_header = ns['ip_discovery_header'] + + hdr = b'IPDS\x04\x00|\x1d\x80\x1a\xffd\x01\x00\x00\x00\x8c\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00' # noqa: E501 + ihdr = ip_discovery_header.from_buffer_copy(hdr) + + assert ctypes.sizeof(ihdr) == 80 + assert ihdr.signature == 0x53445049 + assert ihdr.version == 0x0004 + assert ihdr.num_dies == 1 + assert ihdr.base_addr_64_bit == 1 + if __name__ == "__main__": unittest.main() diff --git a/test/unit/test_call.py b/test/unit/test_call.py index 473b2962bc..1c5ef3829a 100644 --- a/test/unit/test_call.py +++ b/test/unit/test_call.py @@ -42,7 +42,7 @@ class TestCall(unittest.TestCase): b = Tensor.randn(K, N) Tensor.realize(a, b) c = Tensor.call(a, b, fxn=a.as_param(0) @ b.as_param(1)) - np.testing.assert_allclose(c.numpy(), a.numpy() @ b.numpy(), rtol=1e-5) + np.testing.assert_allclose(c.numpy(), a.numpy() @ b.numpy(), rtol=1e-5, atol=1e-6) @unittest.skip("needs GEMM on mixins") def test_call_gemm_uop(self): @@ -56,7 +56,7 @@ class TestCall(unittest.TestCase): y = UOp.param(1, dtypes.float, shape=(K, N)) c = Tensor.call(a, b, fxn=x@y) - np.testing.assert_allclose(c.numpy(), a.numpy() @ b.numpy(), rtol=1e-5) + np.testing.assert_allclose(c.numpy(), a.numpy() @ b.numpy(), rtol=1e-5, atol=1e-6) if __name__ == '__main__': unittest.main() diff --git a/test/unit/test_disk_tensor.py b/test/unit/test_disk_tensor.py index 0ed52dafc4..fbc5b0f914 100644 --- a/test/unit/test_disk_tensor.py +++ b/test/unit/test_disk_tensor.py @@ -59,13 +59,13 @@ class TestRawDiskBuffer(unittest.TestCase): _test_bitcasted(t, dtypes.float32, 0.0) _test_bitcasted(t, dtypes.uint32, 0) # pi in float16 stored via int16 - t.bitcast(dtypes.uint16).assign(Tensor.full((128, 64), 0x4248, dtype=dtypes.uint16)).realize() + t.assign(Tensor.full((128, 64), 0x4248, dtype=dtypes.uint16).bitcast(dtypes.uint8)).realize() _test_bitcasted(t, dtypes.float16, 3.140625) _test_bitcasted(t, dtypes.float32, 50.064727) _test_bitcasted(t, dtypes.uint16, 0x4248) _test_bitcasted(t, dtypes.uint32, 0x42484248) # pi in float32 stored via float32 - t.bitcast(dtypes.float32).assign(Tensor.full((128, 32), 3.1415927, dtype=dtypes.float32)).realize() + t.assign(Tensor.full((128, 32), 3.1415927, dtype=dtypes.float32).bitcast(dtypes.uint8)).realize() _test_bitcasted(t, dtypes.float32, 3.1415927) _test_bitcasted(t, dtypes.uint32, 0x40490FDB) # doesn't suport normal cast @@ -348,13 +348,25 @@ class TestDiskTensor(unittest.TestCase): def test_assign_with_bitcast(self): # bitcast assign is used in safe_save for writing header length - # this tests the synchronous disk assign hack handles bitcast correctly + # bitcast on source side works, bitcast on target side raises pathlib.Path(temp(fn:="dt_assign_bitcast")).unlink(missing_ok=True) t = Tensor.empty(16, device=f"disk:{temp(fn)}", dtype=dtypes.uint8) - t[0:8].bitcast(dtypes.int64).assign([12345]) - # verify the data was written correctly + # correct way: bitcast the source to match target dtype + t[0:8].assign(Tensor([12345], dtype=dtypes.int64, device="CPU").bitcast(dtypes.uint8)) val = int.from_bytes(t[0:8].data(), 'little') self.assertEqual(val, 12345) + # bitcast on target with non-broadcastable dtype raises + with self.assertRaises(RuntimeError): + t[0:4].bitcast(dtypes.int32).assign(Tensor([12345], dtype=dtypes.int64)) + + def test_assign_to_bitcast_view(self): + # assign float values to a float32 view of a uint8 disk buffer (used by safe_save) + pathlib.Path(temp(fn:="dt_bitcast_view_assign")).unlink(missing_ok=True) + t = Tensor.empty(32, device=f"disk:{temp(fn)}", dtype=dtypes.uint8) + # create float32 view of bytes 8-24 (4 floats) + float_view = t[8:24].bitcast(dtypes.float32) + float_view.assign(Tensor([1.0, 2.0, 3.0, 4.0], dtype=dtypes.float32, device="CPU")) + np.testing.assert_array_equal(float_view.numpy(), [1.0, 2.0, 3.0, 4.0]) def test_assign_cross_device(self): # disk assign allows cross-device (source on GPU/CPU, target on disk) diff --git a/test/test_memory_planner.py b/test/unit/test_memory_planner.py similarity index 96% rename from test/test_memory_planner.py rename to test/unit/test_memory_planner.py index 6aa03c6be3..32d3250820 100644 --- a/test/test_memory_planner.py +++ b/test/unit/test_memory_planner.py @@ -1,5 +1,5 @@ import unittest -from tinygrad import dtypes, Device +from tinygrad import dtypes from tinygrad.device import Buffer from tinygrad.engine.memory import _internal_memory_planner @@ -7,7 +7,7 @@ global_map = {} def b(i, base=None, offset=0, pin=False, size=16): global global_map if i in global_map: return global_map[i] - global_map[i] = Buffer(Device.DEFAULT, size, dtypes.int8, base=global_map[base] if base is not None else None, offset=offset) + global_map[i] = Buffer("NULL", size, dtypes.int8, base=global_map[base] if base is not None else None, offset=offset) if pin: global_map[i].ref(1) return global_map[i] diff --git a/test/unit/test_schedule_cache.py b/test/unit/test_schedule_cache.py index 71fb85b831..e7908228d7 100644 --- a/test/unit/test_schedule_cache.py +++ b/test/unit/test_schedule_cache.py @@ -35,7 +35,6 @@ class TestScheduleCache(unittest.TestCase): _, var_vals = t.schedule_with_vars() self.assertEqual(var_vals, {'pos': 42}) - @Context(SPEC=0) def test_custom_kernel(self): for i in range(4): a = Tensor.empty(1) @@ -43,7 +42,6 @@ class TestScheduleCache(unittest.TestCase): a.realize() self.assertEqual(a.item(), i) - @Context(SPEC=0) def test_same_custom_function_reuses_cache(self): schedule_cache.clear() fxn = functools.partial(custom_set0_kernel, num=10) diff --git a/test/unit/test_simplify_valid_idx.py b/test/unit/test_simplify_valid_idx.py index 5e016bbcef..c8818ec16d 100644 --- a/test/unit/test_simplify_valid_idx.py +++ b/test/unit/test_simplify_valid_idx.py @@ -470,5 +470,19 @@ class TestUnfoldableImageChannelSelection(unittest.TestCase): load = UOp(Ops.LOAD, dtypes.float, (UOp(Ops.DEFINE_GLOBAL, dtypes.imagef((10, 10, 4)), arg=0).index(x, ptr=True), UOp.const(dtypes.float, 0))) self.assertEqual(self._count_nans(load), 1) +class TestDropTrueGate(unittest.TestCase): + def test_drop_true_gate_on_index(self): + # test that INDEX with a constant True gate gets simplified to drop the gate + from tinygrad.codegen.late.devectorizer import load_store_indexing + from tinygrad.uop.ops import graph_rewrite + buf = UOp(Ops.DEFINE_GLOBAL, dtypes.int.ptr(), arg=0) + idx = UOp.const(dtypes.index, 0) + true_gate = UOp.const(dtypes.bool, True) + index_with_gate = UOp(Ops.INDEX, dtypes.int.ptr(), (buf, idx, true_gate)) + # apply the optimization + result = graph_rewrite(index_with_gate, load_store_indexing) + # the True gate should be dropped (INDEX should only have 2 sources) + self.assertEqual(len(result.src), 2, "True gate should be dropped from INDEX") + if __name__ == '__main__': unittest.main() diff --git a/test/test_uop_graph.py b/test/unit/test_uop_graph.py similarity index 84% rename from test/test_uop_graph.py rename to test/unit/test_uop_graph.py index f57c55ba41..76b252cec7 100644 --- a/test/test_uop_graph.py +++ b/test/unit/test_uop_graph.py @@ -479,6 +479,26 @@ class TestUOpGraph(unittest.TestCase): for u in uops: self.assertNotEqual(u.dtype, dtypes.long) + def test_load_idx_no_math_on_loaded(self): + # test the (x+y) diff --git a/tinygrad/codegen/__init__.py b/tinygrad/codegen/__init__.py index 63667d7a2a..b3273b481f 100644 --- a/tinygrad/codegen/__init__.py +++ b/tinygrad/codegen/__init__.py @@ -115,8 +115,8 @@ pm_linearize_cleanups = PatternMatcher([ # if statements are not allowed in the graph (UPat((Ops.IF, Ops.ENDIF)), lambda: panic(RuntimeError("if not allowed in graph"))), # gated INDEX becomes IF-STORE-ENDIF. this is the only use of IF-ENDIF - (UPat(Ops.STORE, name="u", src=(UPat(Ops.INDEX, src=(UPat(), UPat(), UPat(name="gate", dtype=dtypes.bool))).or_casted(), UPat()), - allow_any_len=True), lambda u, gate: (u, [mif:=UOp(Ops.IF, src=(gate, u.src[0])), u, UOp(Ops.ENDIF, src=(mif,))])) + (UPat(Ops.STORE, name="u", src=(UPat(Ops.INDEX, src=(UPat(), UPat(), UPat(name="gate", dtype=dtypes.bool))).or_casted(), UPat())), + lambda u, gate: (u, [mif:=UOp(Ops.IF, src=(gate, u.src[0])), u, UOp(Ops.ENDIF, src=(mif,))])) ]) # requires lst be toposorted. like graph rewrite, but for lines diff --git a/tinygrad/codegen/late/devectorizer.py b/tinygrad/codegen/late/devectorizer.py index d10c37e176..dbf4fd3ae6 100644 --- a/tinygrad/codegen/late/devectorizer.py +++ b/tinygrad/codegen/late/devectorizer.py @@ -123,12 +123,12 @@ load_store_folding = PatternMatcher([ (UPat(Ops.LOAD, src=(UPat(Ops.GEP, name="gep"),), name="ld", allow_any_len=True), lambda gep, ld: ld.replace(dtype=ld.dtype.scalar().vec(gep.dtype.count), src=(gep.src[0],)+ld.src[1:]).gep(gep.arg)), # GEP on data of STORE - (UPat(Ops.STORE, src=(UPat(Ops.GEP, name="gep"), UPat.var("st")), allow_any_len=True, name="sto"), gep_on_store), + (UPat(Ops.STORE, src=(UPat(Ops.GEP, name="gep"), UPat.var("st")), name="sto"), gep_on_store), # put PTRCAT after LOAD (UPat(Ops.LOAD, src=(UPat(Ops.PTRCAT, name="cat"),), name="ld", allow_any_len=True), lambda cat,ld: UOp(Ops.CAT, cat.dtype.base.vec(cat.dtype.vcount), tuple(ld.replace(dtype=x.dtype.base, src=(x,)+ld.src[1:]) for x in cat.src))), # put PTRCAT after STORE - (UPat(Ops.STORE, src=(UPat(Ops.PTRCAT, name="cat"), UPat(name="data")), allow_any_len=True, name="sto"), cat_after_store), + (UPat(Ops.STORE, src=(UPat(Ops.PTRCAT, name="cat"), UPat(name="data")), name="sto"), cat_after_store), ]) # *** correct load/store *** @@ -319,8 +319,7 @@ def reduce_to_acc(ctx:ReduceContext, red:UOp): input_ranges = tuple([x for x in topo if x.op is Ops.RANGE and x not in reduce_range and x not in ended_ranges]) identity = red.const(red.dtype, identity_element(red.arg, red.dtype.scalar())) acc = UOp(Ops.DEFINE_REG, red.dtype.ptr(size=1, addrspace=AddrSpace.REG), arg=ctx.acc_num) - acc_init = acc.after(*input_ranges).index(UOp.const(dtypes.int, 0)).store(identity) if len(input_ranges) else \ - acc.index(UOp.const(dtypes.int, 0)).store(identity) + acc_init = acc.after(*input_ranges).index(UOp.const(dtypes.int, 0)).store(identity) lst = [acc.after(acc_init, *reduce_range).index(UOp.const(dtypes.int, 0))] + lst # put acc as the first element ctx.acc_num += 1 ret = functools.reduce(lambda x,y: x.alu(red.arg, y), lst) @@ -342,6 +341,6 @@ pm_add_loads = PatternMatcher([ (UPat(Ops.INDEX, name="idx"), lambda idx: None if isinstance(idx.dtype, (PtrDType, ImageDType)) else idx.replace(dtype=idx.src[0].dtype).load(dtype=idx.dtype.base)), # remove loads from stores - (UPat(Ops.STORE, src=(UPat(Ops.LOAD),), allow_any_len=True, name="s"), lambda s: s.replace(src=(s.src[0].src[0],)+s.src[1:])), + (UPat(Ops.STORE, src=(UPat(Ops.LOAD), UPat(name="val")), name="s"), lambda s,val: s.replace(src=(s.src[0].src[0], val))), ]) diff --git a/tinygrad/helpers.py b/tinygrad/helpers.py index 319d44ec8d..85c471afb3 100644 --- a/tinygrad/helpers.py +++ b/tinygrad/helpers.py @@ -206,6 +206,8 @@ ALLOW_TF32 = ContextVar("ALLOW_TF32", 0) SCACHE = ContextVar("SCACHE", 1) # allow use of atomics for embedding backward USE_ATOMICS = ContextVar("USE_ATOMICS", 0) +# allow use of assembly for gemm +ASM_GEMM = ContextVar("ASM_GEMM", 0) @dataclass(frozen=True) class Metadata: diff --git a/tinygrad/nn/state.py b/tinygrad/nn/state.py index 454cb2b9b3..3d078674a7 100644 --- a/tinygrad/nn/state.py +++ b/tinygrad/nn/state.py @@ -78,7 +78,7 @@ def safe_save(tensors:dict[str, Tensor], fn:str, metadata:dict[str, Any]|None=No j += "\x20"*(round_up(len(j),8)-len(j)) pathlib.Path(fn).unlink(missing_ok=True) t = Tensor.empty(8+len(j)+offset, dtype=dtypes.uint8, device=f"disk:{fn}") - t[0:8].bitcast(dtypes.int64).assign([len(j)]) + t[0:8].assign(Tensor([len(j)], dtype=dtypes.int64, device="CPU").bitcast(dtypes.uint8)) t[8:8+len(j)].assign(list(j.encode('utf-8'))) for k,v in safe_load(t).items(): v.assign(tensors[k]) diff --git a/tinygrad/renderer/cstyle.py b/tinygrad/renderer/cstyle.py index 6d76411c61..e57f7e9801 100644 --- a/tinygrad/renderer/cstyle.py +++ b/tinygrad/renderer/cstyle.py @@ -46,10 +46,10 @@ base_rewrite = PatternMatcher([ # new load/store (UPat(Ops.INDEX, src=(UPat.var("buf"), UPat.var('idx')), allow_any_len=True), lambda ctx,buf,idx: f"({ctx[buf]}+{strip_parens(ctx[idx]) if idx.arg == Ops.ADD else ctx[idx]})"), - (UPat(Ops.LOAD, src=(UPat(Ops.INDEX, src=(UPat(), UPat(), UPat.var("gate"))).or_casted("bidx"), UPat.var("var")), allow_any_len=True), + (UPat(Ops.LOAD, src=(UPat(Ops.INDEX, src=(UPat(), UPat(), UPat.var("gate"))).or_casted("bidx"), UPat.var("var"))), lambda ctx,bidx,var,gate: f"({ctx[gate]}?*{ctx[bidx]}:{ctx[var]})"), - (UPat(Ops.LOAD, src=(UPat.var('bidx'),), allow_any_len=True), lambda ctx,bidx: f"(*{ctx[bidx]})"), - (UPat(Ops.STORE, src=(UPat.var('bidx'), UPat.var("var")), allow_any_len=True), lambda ctx,bidx,var: f"*{ctx[bidx]} = {ctx[var]};"), + (UPat(Ops.LOAD, src=(UPat.var('bidx'),)), lambda ctx,bidx: f"(*{ctx[bidx]})"), + (UPat(Ops.STORE, src=(UPat.var('bidx'), UPat.var("var"))), lambda ctx,bidx,var: f"*{ctx[bidx]} = {ctx[var]};"), # alu/gep # TODO: look for left-associative (UPat(GroupOp.ALU, name="x"), lambda ctx,x: ctx.code_for_op[x.op]( diff --git a/tinygrad/runtime/ops_metal.py b/tinygrad/runtime/ops_metal.py index 1268ae705c..b956890bcc 100644 --- a/tinygrad/runtime/ops_metal.py +++ b/tinygrad/runtime/ops_metal.py @@ -4,12 +4,13 @@ import tinygrad.runtime.support.objc as objc from tinygrad.device import Compiled, Compiler, CompileError, LRUAllocator, ProfileDeviceEvent, CompilerSet, CompilerPair from tinygrad.renderer.cstyle import MetalRenderer from tinygrad.runtime.autogen import metal +from tinygrad.runtime.support.c import DLL # 13 is requestType that metal uses to compile source code into MTLB, there aren't any docs or symbols. REQUEST_TYPE_COMPILE = 13 # Must be loaded for default Metal Device: https://developer.apple.com/documentation/metal/1433401-mtlcreatesystemdefaultdevice?language=objc -ctypes.CDLL("/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics") +DLL("CoreGraphics", "CoreGraphics") # FIXME: these need autogen to support objc categories # https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/ObjectiveC/Chapters/ocCategories.html @@ -67,7 +68,7 @@ class MetalCompiler(Compiler): # doesn't seem to be anything we can do. with contextlib.suppress(FileNotFoundError, ModuleNotFoundError): import tinygrad.runtime.autogen.llvm # noqa: F401 - support = ctypes.CDLL("/System/Library/PrivateFrameworks/MTLCompiler.framework/MTLCompiler") + support = DLL("MTLCompiler", "MTLCompiler") support.MTLCodeGenServiceCreate.restype = ctypes.c_void_p def __init__(self): diff --git a/tinygrad/runtime/support/amd.py b/tinygrad/runtime/support/amd.py index 7554e8dda2..dd121d0b7f 100644 --- a/tinygrad/runtime/support/amd.py +++ b/tinygrad/runtime/support/amd.py @@ -88,8 +88,8 @@ def import_asic_regs(prefix:str, version:tuple[int, ...], cls=AMDReg) -> dict[st return x def _download_file(ver, suff) -> str: dir_prefix = {"osssys": "oss"}.get(prefix, prefix) - fetch_name, file_name = f"{prefix}_{'_'.join(map(str, ver))}_{suff}.h", f"{prefix}_{'_'.join(map(str, version))}_{suff}.h" - return header_download(f"include/asic_reg/{dir_prefix}/{fetch_name}", name=file_name, subdir="asic_regs") + fetch_name = f"{prefix}_{'_'.join(map(str, ver))}_{suff}.h" + return header_download(f"include/asic_reg/{dir_prefix}/{fetch_name}", name=fetch_name, subdir="asic_regs") for ver in fixup_ip_version(prefix, version): try: offs, sh_masks = _extract_regs(_download_file(ver, "offset")), _extract_regs(_download_file(ver, "sh_mask")) diff --git a/tinygrad/runtime/support/c.py b/tinygrad/runtime/support/c.py index b02143dada..b6db3c13fd 100644 --- a/tinygrad/runtime/support/c.py +++ b/tinygrad/runtime/support/c.py @@ -131,13 +131,15 @@ def init_c_struct_t(sz:int, fields: tuple[tuple, ...]): def init_c_var(ty, creat_cb): return (creat_cb(v:=del_an(ty)()), v)[1] class DLL(ctypes.CDLL): + _loaded_: set[str] = set() + @staticmethod def findlib(nm:str, paths:list[str], extra_paths=[]): if nm == 'libc' and OSX: return '/usr/lib/libc.dylib' if pathlib.Path(path:=getenv(nm.replace('-', '_').upper()+"_PATH", '')).is_file(): return path for p in paths: libpaths = {"posix": ["/usr/lib64", "/usr/lib", "/usr/local/lib"], "nt": os.environ['PATH'].split(os.pathsep), - "darwin": ["/opt/homebrew/lib", f"/System/Library/Frameworks/{p}.framework"], + "darwin": ["/opt/homebrew/lib", f"/System/Library/Frameworks/{p}.framework", f"/System/Library/PrivateFrameworks/{p}.framework"], 'linux': ['/lib', '/lib64', f"/lib/{sysconfig.get_config_var('MULTIARCH')}", "/usr/lib/wsl/lib/"]} if (pth:=pathlib.Path(p)).is_absolute(): if pth.is_file(): return p @@ -154,12 +156,12 @@ class DLL(ctypes.CDLL): if f.read(4) == b'\x7FELF': return str(l) def __init__(self, nm:str, paths:str|list[str], extra_paths=[], emsg="", **kwargs): - self.nm, self.emsg, self.loaded = nm, emsg, False + self.nm, self.emsg = nm, emsg if (path:= DLL.findlib(nm, paths if isinstance(paths, list) else [paths], extra_paths if isinstance(extra_paths, list) else [extra_paths])): if DEBUG >= 3: print(f"loading {nm} from {path}") try: super().__init__(path, **kwargs) - self.loaded = True + self._loaded_.add(self.nm) except OSError as e: self.emsg = str(e) if DEBUG >= 3: print(f"loading {nm} failed: {e}") @@ -175,5 +177,6 @@ class DLL(ctypes.CDLL): return wrapper def __getattr__(self, nm): - if not self.loaded: raise AttributeError(f"failed to load library {self.nm}: " + (self.emsg or f"try setting {self.nm.upper()+'_PATH'}?")) + if self.nm not in self._loaded_: + raise AttributeError(f"failed to load library {self.nm}: " + (self.emsg or f"try setting {self.nm.upper()+'_PATH'}?")) return super().__getattr__(nm) diff --git a/tinygrad/runtime/support/usb.py b/tinygrad/runtime/support/usb.py index 2340c944cb..a227f5a35b 100644 --- a/tinygrad/runtime/support/usb.py +++ b/tinygrad/runtime/support/usb.py @@ -5,10 +5,10 @@ from tinygrad.helpers import DEBUG, to_mv, round_up, OSX from tinygrad.runtime.support.hcq import MMIOInterface class USB3: - def __init__(self, vendor:int, dev:int, ep_data_in:int, ep_stat_in:int, ep_data_out:int, ep_cmd_out:int, max_streams:int=31): + def __init__(self, vendor:int, dev:int, ep_data_in:int, ep_stat_in:int, ep_data_out:int, ep_cmd_out:int, max_streams:int=31, use_bot=False): self.vendor, self.dev = vendor, dev self.ep_data_in, self.ep_stat_in, self.ep_data_out, self.ep_cmd_out = ep_data_in, ep_stat_in, ep_data_out, ep_cmd_out - self.max_streams = max_streams + self.max_streams, self.use_bot = max_streams, use_bot self.ctx = ctypes.POINTER(libusb.struct_libusb_context)() if libusb.libusb_init(ctypes.byref(self.ctx)): raise RuntimeError("libusb_init failed") @@ -25,30 +25,34 @@ class USB3: # Set configuration and claim interface if libusb.libusb_set_configuration(self.handle, 1): raise RuntimeError("set_configuration failed") if libusb.libusb_claim_interface(self.handle, 0): raise RuntimeError("claim_interface failed. sudo required?") - if libusb.libusb_set_interface_alt_setting(self.handle, 0, 1): raise RuntimeError("alt_setting failed") - # Clear any stalled endpoints - all_eps = (self.ep_data_out, self.ep_data_in, self.ep_stat_in, self.ep_cmd_out) - for ep in all_eps: libusb.libusb_clear_halt(self.handle, ep) + if use_bot: + self._tag = 0 + else: + if libusb.libusb_set_interface_alt_setting(self.handle, 0, 1): raise RuntimeError("alt_setting failed") - # Allocate streams - stream_eps = (ctypes.c_uint8 * 3)(self.ep_data_out, self.ep_data_in, self.ep_stat_in) - if (rc:=libusb.libusb_alloc_streams(self.handle, self.max_streams * len(stream_eps), stream_eps, len(stream_eps))) < 0: - raise RuntimeError(f"alloc_streams failed: {rc}") + # Clear any stalled endpoints + all_eps = (self.ep_data_out, self.ep_data_in, self.ep_stat_in, self.ep_cmd_out) + for ep in all_eps: libusb.libusb_clear_halt(self.handle, ep) - # Base cmd - cmd_template = bytes([0x01, 0x00, 0x00, 0x01, *([0] * 12), 0xE4, 0x24, 0x00, 0xB2, 0x1A, 0x00, 0x00, 0x00, *([0] * 8)]) + # Allocate streams + stream_eps = (ctypes.c_uint8 * 3)(self.ep_data_out, self.ep_data_in, self.ep_stat_in) + if (rc:=libusb.libusb_alloc_streams(self.handle, self.max_streams * len(stream_eps), stream_eps, len(stream_eps))) < 0: + raise RuntimeError(f"alloc_streams failed: {rc}") - # Init pools - self.tr = {ep: [libusb.libusb_alloc_transfer(0) for _ in range(self.max_streams)] for ep in all_eps} + # Base cmd + cmd_template = bytes([0x01, 0x00, 0x00, 0x01, *([0] * 12), 0xE4, 0x24, 0x00, 0xB2, 0x1A, 0x00, 0x00, 0x00, *([0] * 8)]) - self.buf_cmd = [(ctypes.c_uint8 * len(cmd_template))(*cmd_template) for _ in range(self.max_streams)] - self.buf_stat = [(ctypes.c_uint8 * 64)() for _ in range(self.max_streams)] - self.buf_data_in = [(ctypes.c_uint8 * 0x1000)() for _ in range(self.max_streams)] - self.buf_data_out = [(ctypes.c_uint8 * 0x80000)() for _ in range(self.max_streams)] - self.buf_data_out_mvs = [to_mv(ctypes.addressof(self.buf_data_out[i]), 0x80000) for i in range(self.max_streams)] + # Init pools + self.tr = {ep: [libusb.libusb_alloc_transfer(0) for _ in range(self.max_streams)] for ep in all_eps} - for slot in range(self.max_streams): struct.pack_into(">B", self.buf_cmd[slot], 3, slot + 1) + self.buf_cmd = [(ctypes.c_uint8 * len(cmd_template))(*cmd_template) for _ in range(self.max_streams)] + self.buf_stat = [(ctypes.c_uint8 * 64)() for _ in range(self.max_streams)] + self.buf_data_in = [(ctypes.c_uint8 * 0x1000)() for _ in range(self.max_streams)] + self.buf_data_out = [(ctypes.c_uint8 * 0x80000)() for _ in range(self.max_streams)] + self.buf_data_out_mvs = [to_mv(ctypes.addressof(self.buf_data_out[i]), 0x80000) for i in range(self.max_streams)] + + for slot in range(self.max_streams): struct.pack_into(">B", self.buf_cmd[slot], 3, slot + 1) def _prep_transfer(self, tr, ep, stream_id, buf, length): tr.contents.dev_handle, tr.contents.endpoint, tr.contents.length, tr.contents.buffer = self.handle, ep, length, buf @@ -68,38 +72,90 @@ class USB3: if tr.contents.status == libusb.LIBUSB_TRANSFER_COMPLETED: running -= 1 elif tr.contents.status != 0xFF: raise RuntimeError(f"EP 0x{tr.contents.endpoint:02X} error: {tr.contents.status}") + def _bulk_out(self, ep: int, payload: bytes, timeout: int = 1000): + transferred = ctypes.c_int(0) + rc = libusb.libusb_bulk_transfer( + self.handle, + ep, + (ctypes.c_ubyte * len(payload))(*payload), + len(payload), + ctypes.byref(transferred), + timeout, + ) + assert rc == 0, f"bulk OUT 0x{ep:02X} failed: {rc}" + assert transferred.value == len(payload), f"bulk OUT short write on 0x{ep:02X}: {transferred.value}/{len(payload)} bytes" + + def _bulk_in(self, ep: int, length: int, timeout: int = 1000) -> bytes: + buf, transferred = (ctypes.c_ubyte * length)(), ctypes.c_int(0) + rc = libusb.libusb_bulk_transfer( + self.handle, + ep, + buf, + length, + ctypes.byref(transferred), + timeout, + ) + assert rc == 0, f"bulk IN 0x{ep:02X} failed: {rc}" + return bytes(buf[:transferred.value]) + def send_batch(self, cdbs:list[bytes], idata:list[int]|None=None, odata:list[bytes|None]|None=None) -> list[bytes|None]: idata, odata = idata or [0] * len(cdbs), odata or [None] * len(cdbs) - results, tr_window, op_window = [], [], [] + results:list[bytes|None] = [] + tr_window, op_window = [], [] for idx, (cdb, rlen, send_data) in enumerate(zip(cdbs, idata, odata)): - # allocate slot and stream. stream is 1-based - slot, stream = idx % self.max_streams, (idx % self.max_streams) + 1 + if self.use_bot: + dir_in = rlen > 0 + data_len = rlen if dir_in else (len(send_data) if send_data is not None else 0) + assert (data_len == 0) if dir_in else (rlen == 0), "BOT mode only supports either read or write per command" - # build cmd packet - self.buf_cmd[slot][16:16+len(cdb)] = list(cdb) + # CBW + self._tag += 1 + flags = 0x80 if dir_in else 0x00 + cbw = struct.pack(" len(self.buf_data_in[slot]): self.buf_data_in[slot] = (ctypes.c_uint8 * round_up(rlen, 0x1000))() - tr_window.append(self._prep_transfer(self.tr[self.ep_data_in][slot], self.ep_data_in, stream, self.buf_data_in[slot], rlen)) + # CSW + sig, rtag, residue, status = struct.unpack(" len(self.buf_data_out[slot]): - self.buf_data_out[slot] = (ctypes.c_uint8 * len(send_data))() - self.buf_data_out_mvs[slot] = to_mv(ctypes.addressof(self.buf_data_out[slot]), len(send_data)) + # build cmd packet + self.buf_cmd[slot][16:16+len(cdb)] = list(cdb) - self.buf_data_out_mvs[slot][:len(send_data)] = bytes(send_data) - tr_window.append(self._prep_transfer(self.tr[self.ep_data_out][slot], self.ep_data_out, stream, self.buf_data_out[slot], len(send_data))) + # cmd + stat transfers + tr_window.append(self._prep_transfer(self.tr[self.ep_cmd_out][slot], self.ep_cmd_out, None, self.buf_cmd[slot], len(self.buf_cmd[slot]))) + tr_window.append(self._prep_transfer(self.tr[self.ep_stat_in][slot], self.ep_stat_in, stream, self.buf_stat[slot], 64)) - op_window.append((idx, slot, rlen)) - if (idx + 1 == len(cdbs)) or len(op_window) >= self.max_streams: - self._submit_and_wait(tr_window) - for idx, slot, rlen in op_window: results.append(bytes(self.buf_data_in[slot][:rlen]) if rlen else None) - tr_window = [] + if rlen: + if rlen > len(self.buf_data_in[slot]): self.buf_data_in[slot] = (ctypes.c_uint8 * round_up(rlen, 0x1000))() + tr_window.append(self._prep_transfer(self.tr[self.ep_data_in][slot], self.ep_data_in, stream, self.buf_data_in[slot], rlen)) + + if send_data is not None: + if len(send_data) > len(self.buf_data_out[slot]): + self.buf_data_out[slot] = (ctypes.c_uint8 * len(send_data))() + self.buf_data_out_mvs[slot] = to_mv(ctypes.addressof(self.buf_data_out[slot]), len(send_data)) + + self.buf_data_out_mvs[slot][:len(send_data)] = bytes(send_data) + tr_window.append(self._prep_transfer(self.tr[self.ep_data_out][slot], self.ep_data_out, stream, self.buf_data_out[slot], len(send_data))) + + op_window.append((idx, slot, rlen)) + if (idx + 1 == len(cdbs)) or len(op_window) >= self.max_streams: + self._submit_and_wait(tr_window) + for idx, slot, rlen in op_window: results.append(bytes(self.buf_data_in[slot][:rlen]) if rlen else None) + tr_window = [] return results diff --git a/tinygrad/schedule/multi.py b/tinygrad/schedule/multi.py index b6a502c845..5539967eb2 100644 --- a/tinygrad/schedule/multi.py +++ b/tinygrad/schedule/multi.py @@ -71,7 +71,8 @@ def handle_allreduce(buf:UOp, red:UOp) -> UOp|None: # allgather copied_chunks = [] for i,rc in enumerate(reduced_chunks): - if use_all2all: copied_chunks.append(UOp(Ops.MSTACK, buf.dtype, tuple(rc.copy_to_device(buf.device[j]) for j in range(n_lbs)))) + if isinstance(red.src[1].arg, str): copied_chunks.append(rc.copy_to_device(red.src[1].arg)) + elif use_all2all: copied_chunks.append(UOp(Ops.MSTACK, buf.dtype, tuple(rc.copy_to_device(buf.device[j]) for j in range(n_lbs)))) else: this_chunk: list[UOp|None] = [None] * n_lbs this_chunk[(i+n_lbs-1)%n_lbs] = rc @@ -93,12 +94,7 @@ def mstack_early_shrink(ms:UOp, shrink:UOp): return s.shrink(tuple(new_arg)) for i, x in enumerate(ms.src): if x.op is Ops.COPY: - # if src device doesn't have a renderer, we have to view after the copy - # TODO: a way to understand this - if x.src[0].device in {"DISK", "NPY"}: - ret.append(apply_shrink(x, i)) - else: - ret.append(apply_shrink(x.src[0], i).copy_to_device(x.device)) + ret.append(apply_shrink(x.src[0], i).copy_to_device(x.device)) else: ret.append(apply_shrink(x, i).contiguous()) return ms.replace(src=tuple(ret)) diff --git a/tinygrad/schedule/rangeify.py b/tinygrad/schedule/rangeify.py index 25d032f735..11ac054db3 100644 --- a/tinygrad/schedule/rangeify.py +++ b/tinygrad/schedule/rangeify.py @@ -60,7 +60,7 @@ def split_reduceop(reduce:UOp, x:UOp): mop_cleanup = PatternMatcher([ # merge adjacent RESHAPES, safe because they are not tagged - (UPat(Ops.RESHAPE, name="x2").f(Ops.RESHAPE, allow_any_len=True, name="x"), + (UPat(Ops.RESHAPE, src=(UPat(Ops.RESHAPE, name="x2"), UPat()), name="x"), lambda x,x2: x.replace(src=(x2.src[0], x.src[1])) if x.tag is None and x2.tag is None else None), ]) @@ -90,7 +90,7 @@ earliest_rewrites = mop_cleanup+PatternMatcher([ (UPat(Ops.CUSTOM_KERNEL, name="ck"), resolve_custom_kernel), # remove CONTIGUOUS if the BUFFER is already contiguous - (UPat(Ops.BUFFER).f(Ops.RESHAPE, allow_any_len=True, name="r").f(Ops.CONTIGUOUS, name="c"), lambda r,c: r.replace(tag=c.tag)), + (UPat(Ops.RESHAPE, src=(UPat(Ops.BUFFER), UPat()), name="r").f(Ops.CONTIGUOUS, name="c"), lambda r,c: r.replace(tag=c.tag)), # split_reduceop (UPat(Ops.REDUCE_AXIS, name="reduce", src=(UPat.var("x"),)), split_reduceop), @@ -126,6 +126,10 @@ earliest_rewrites = mop_cleanup+PatternMatcher([ # ** assign rules ** + # move bitcast from assign target to source: a.bitcast(X).assign(src) -> a.assign(src.bitcast(a.dtype)) + (UPat(Ops.ASSIGN, src=(UPat(Ops.BITCAST, src=(UPat(name="target"),)), UPat(name="src")), name="assign"), + lambda target, src, assign: target.assign(src.bitcast(target.dtype)).replace(tag=assign.tag)), + # assign only to buffer, otherwise make it a CONTIGUOUS (UPat(Ops.ASSIGN, src=(UPat(GroupOp.All-{Ops.BUFFER}, name="target"), UPat(name="x")), name="assign"), lambda x,target,assign: x.f(Ops.CONTIGUOUS, tag=assign.tag) if ((t:=target.base).op is not Ops.BUFFER and \ @@ -247,7 +251,7 @@ pm_const_buffer_folding = pm_mops+PatternMatcher([ # dont bufferize an arange (UPat.any((r:=UPat(dtype=dtypes.index).cast()).named("src"), r.eq(UPat()).named("src")).f(Ops.BUFFERIZE, allow_any_len=True, name="buf").f(Ops.INDEX, allow_any_len=True, name="idx"), remove_bufferize), - # no buffers for const + # no buffers for const (ranges don't matter for const - it's the same value everywhere) (UPat(Ops.CONST, name='c').f(Ops.BUFFERIZE, allow_any_len=True, name="b"), lambda c,b: b.const_like(c.arg).rtag(b.tag)), # indexing a const is a const (UPat(Ops.INDEX, src=(UPat(Ops.CONST, name="c"),),), lambda c: c), @@ -271,20 +275,20 @@ def late_buffer_view(t:UOp, b:UOp): size = prod(shape) # walk up for the INDEX + # NOTE: even though we allow RESHAPE and SHRINK, they can combine to form non-contiguous access patterns (e.g. t[::2]) x = t - while not any(u.op is Ops.INDEX for u in x.src): - assert x.op not in GroupOp.Elementwise, "can't buffer view elementwise" + while x.op is not Ops.INDEX: + assert x.op in {Ops.BITCAST, Ops.CONTIGUOUS, Ops.SHRINK, Ops.RESHAPE}, f"unexpected op {x.op} in buffer view walk" x = x.src[0] - x = next(u for u in x.src if u.op is Ops.INDEX) if len(shape) == 0: offset = x.src[1].arg - else: offset = max(sum(idx.vmin for idx in x.src[1:]), 0) + else: offset = sum(idx.vmin for idx in x.src[1:]) + if offset < 0: raise RuntimeError(f"negative offset {offset} in buffer view") - return b.replace(src=(UOp(Ops.BUFFER_VIEW, t.dtype, (x.base,), (size, offset), tag=t.tag),) + b.src[1:]) + return b.replace(src=(UOp(Ops.BUFFER_VIEW, t.dtype, (x.base,), (size, offset), tag=t.tag), b.src[1])) to_bufferview = PatternMatcher([ - (UPat((Ops.BITCAST, Ops.CONTIGUOUS), name="t").f(Ops.BUFFERIZE, allow_any_len=True, name="b"), late_buffer_view), - (UPat((Ops.BITCAST, Ops.CONTIGUOUS)).f(Ops.BUFFER_VIEW, name="b"), lambda b: b.replace(src=b.src[0].src)), + (UPat(Ops.BUFFERIZE, src=(UPat((Ops.BITCAST, Ops.CONTIGUOUS), name="t"), UPat()), name="b"), late_buffer_view), ]) DEVICE_MAX_BUFS = {"METAL": 31, "WEBGPU": 8} # TODO: get from device? @@ -451,9 +455,6 @@ to_define_global = PatternMatcher([ # this is only needed if you are using symbolic (UPat((Ops.CONST, Ops.DEFINE_VAR), name="c"), lambda c: c.replace(src=()) if len(c.src) else None), - # remove RANGE with 0 size - (UPat(Ops.RANGE, name="r"), lambda r: UOp.const(dtypes.index, 0) if r.vmax == 0 else None), - # renumber the ranges starting with 0 so that kernel deduping works (UPat(Ops.RANGE, name="r"), renumber_range), ]) @@ -469,9 +470,6 @@ rangeify_codegen = PatternMatcher([ # TODO: this can be moved into codegen? (UPat(Ops.NOOP, name="x"), lambda x: x.src[0]), - # strip the arg from store - (UPat(Ops.STORE, name="x"), lambda x: x.replace(arg=None) if x.arg is not None else None), - # add loads to non ptr indexes # TODO: this can be moved into codegen? #(UPat.any(UPat(Ops.DEFINE_GLOBAL, name="dg"), UPat(Ops.DEFINE_LOCAL).f(Ops.AFTER, allow_any_len=True, name="dg")) diff --git a/tinygrad/tensor.py b/tinygrad/tensor.py index 59a7b72c74..aa45bdfa6e 100644 --- a/tinygrad/tensor.py +++ b/tinygrad/tensor.py @@ -7,7 +7,7 @@ if TYPE_CHECKING: import numpy from tinygrad.dtype import DType, DTypeLike, dtypes, ImageDType, ConstType, least_upper_float, least_upper_dtype, sum_acc_dtype, to_dtype, truncate from tinygrad.dtype import _from_np_dtype, _to_np_dtype, PyConst from tinygrad.helpers import argfix, make_tuple, flatten, prod, all_int, round_up, merge_dicts, argsort, getenv, all_same, fully_flatten -from tinygrad.helpers import IMAGE, WINO, Metadata, TRACEMETA, ceildiv, fetch, polyN, is_numpy_ndarray, TracingKey, cpu_profile +from tinygrad.helpers import IMAGE, WINO, Metadata, TRACEMETA, ASM_GEMM, ceildiv, fetch, polyN, is_numpy_ndarray, TracingKey, cpu_profile from tinygrad.helpers import suppress_finalizing, disable_gc from tinygrad.gradient import compute_gradient from tinygrad.mixin import OpMixin @@ -286,20 +286,20 @@ class Tensor(OpMixin): return self def assign(self, x:Tensor|PyConst|list|tuple) -> Tensor: + is_disk = isinstance(self.device, str) and self.device.startswith("DISK") + if not isinstance(x, Tensor): x = Tensor(x, device="CPU" if is_disk else self.device, dtype=self.dtype) + if self.uop is x.uop: return self # a self assign is a NOOP + # broadcast x (shape only, dtype must match) + if self.shape != x.shape: x = x._broadcast_to(self.shape) + if self.shape != x.shape: raise RuntimeError(f"assign shape mismatch {self.shape} != {x.shape}") + if not is_disk and self.device != x.device: raise RuntimeError(f"assign device mismatch {self.device} != {x.device}") + if self.dtype != x.dtype: raise RuntimeError(f"assign dtype mismatch {self.dtype} != {x.dtype}") + if isinstance(self.device, tuple) and self.uop.axis != x.uop.axis: raise RuntimeError(f"multi axis mismatch {self.uop.axis} != {x.uop.axis}") + # TODO: this is a hack for writing to DISK. remove with working assign - if isinstance(self.device, str) and self.device.startswith("DISK"): - if not isinstance(x, Tensor): x = Tensor(x, device="CPU", dtype=self.dtype) + if is_disk: self._buffer().copyin(x._data()) return self - if not isinstance(x, Tensor): x = Tensor(x, device=self.device, dtype=self.dtype) - if self.uop is x.uop: return self # a self assign is a NOOP - # NOTE: we allow cross device assign - # broadcast x - if least_upper_dtype(self.dtype, x.dtype) == self.dtype: x = x._broadcast_to(self.shape).cast(self.dtype) - assert self.shape == x.shape, f"assign shape mismatch {self.shape} != {x.shape}" - assert self.device == x.device, f"assign device mismatch {self.device} != {x.device}" - assert self.dtype == x.dtype, f"assign dtype mismatch {self.dtype} != {x.dtype}" - assert not isinstance(self.device, tuple) or self.uop.axis == x.uop.axis, f"multi assign axis mismatch {self.uop.axis} != {x.uop.axis}" return self.replace(self._apply_uop(UOp.assign, x)) def detach(self) -> Tensor: @@ -2431,6 +2431,9 @@ class Tensor(OpMixin): ``` """ if IMAGE: return self.image_dot(w, dtype) + if ASM_GEMM: + from extra.gemm.asm.cdna.gemm import can_use_asm_gemm, asm_gemm + if can_use_asm_gemm(self, w): return asm_gemm(self, w) x, dx, dw = self, self.ndim, w.ndim if not (dx > 0 and dw > 0): raise RuntimeError(f"both tensors need to be at least 1D, got {dx}D and {dw}D") if x.shape[-1] != w.shape[axis_w:=-min(w.ndim,2)]: raise RuntimeError(f"cannot dot {x.shape} and {w.shape}") @@ -3865,7 +3868,10 @@ class Tensor(OpMixin): def bitcast(self, dtype:DTypeLike) -> Tensor: """ - Bitcasts `self` to the given `dtype` of the same itemsize. + Bitcasts `self` to the given `dtype`. + + When the target dtype has the same itemsize, this is a view of the same memory. + When itemsizes differ, the last dimension is adjusted and a new Tensor is created. `self` must not require a gradient. diff --git a/tinygrad/uop/__init__.py b/tinygrad/uop/__init__.py index 9641fd6382..4f792ce9ea 100644 --- a/tinygrad/uop/__init__.py +++ b/tinygrad/uop/__init__.py @@ -14,7 +14,7 @@ class Ops(FastEnum): # ** 1 -- defines/special ** # define GLOBAL/VAR are ptrs to outside the Kernel - DEFINE_GLOBAL = auto(); DEFINE_VAR = auto(); BIND = auto() + DEFINE_VAR = auto(); BIND = auto() # this is a RANGE for GPU dimensions, similar to symbolic shapes but not exactly SPECIAL = auto() @@ -28,6 +28,9 @@ class Ops(FastEnum): NOOP = auto(); REWRITE_ERROR = auto() PARAM = auto(); CALL = auto() + # TODO: remove this alias, DEFINE_GLOBAL is PARAM now + DEFINE_GLOBAL = PARAM + # renderer # LINEAR is a list of UOps, SOURCE has a str arg that's human readable, BINARY has bytes arg that's compiled PROGRAM = auto(); LINEAR = auto(); SOURCE = auto(); BINARY = auto() diff --git a/tinygrad/uop/ops.py b/tinygrad/uop/ops.py index 12611f8667..6c5ed761be 100644 --- a/tinygrad/uop/ops.py +++ b/tinygrad/uop/ops.py @@ -206,7 +206,7 @@ class UOp(OpMixin, metaclass=UOpMetaClass): match self.op: # late ops don't have shape case Ops.UNIQUE | Ops.LUNIQUE | Ops.DEVICE | Ops.RANGE | Ops.LOAD | Ops.IF | Ops.BARRIER | Ops.CUSTOM | Ops.CUSTOMI | \ - Ops.VECTORIZE | Ops.VCONST | Ops.GEP | Ops.SPECIAL | Ops.UNROLL | Ops.CONTRACT | Ops.CUSTOM_KERNEL | \ + Ops.VECTORIZE | Ops.VCONST | Ops.GEP | Ops.SPECIAL | Ops.UNROLL | Ops.CONTRACT | Ops.CUSTOM_KERNEL | Ops.SINK | \ Ops.LINEAR | Ops.PROGRAM | Ops.SOURCE | Ops.BINARY: return None @@ -224,8 +224,9 @@ class UOp(OpMixin, metaclass=UOpMetaClass): case Ops.BUFFER_VIEW: return (self.arg[0],) case Ops.ENCDEC: return self.arg[0] case Ops.BUFFERIZE: return tuple([int(r.vmax+1) for r in self.src[1:]]) - case Ops.DEFINE_GLOBAL | Ops.DEFINE_LOCAL | Ops.DEFINE_REG: return (self.ptrdtype.size,) + case Ops.DEFINE_LOCAL | Ops.DEFINE_REG: return (self.ptrdtype.size,) case Ops.PARAM: + if isinstance(self.dtype, PtrDType): return (self.ptrdtype.size,) # NOTE: copied from marg if len(self.src) >= 1: return tuple(self.src[0].sgep(i) for i in range(self.src[0].dtype.count)) return None @@ -413,10 +414,8 @@ class UOp(OpMixin, metaclass=UOpMetaClass): def load(self, *src:UOp, **kwargs): return UOp(Ops.LOAD, dtype=kwargs.pop("dtype", self.dtype.base), src=(self,)+src, **kwargs) def store(self, src:UOp|ConstType, **kwargs): return UOp(Ops.STORE, kwargs.pop("dtype", dtypes.void), (self, UOp.const(self.dtype, src) if not isinstance(src, UOp) else src), **kwargs) - def end(self, *src:UOp): - if len(src) == 0: return self - return UOp(Ops.END, src=(self,)+src) - def after(self, *src:UOp, **kwargs): return UOp(Ops.AFTER, self.dtype, (self,)+src, **kwargs) + def end(self, *src:UOp): return UOp(Ops.END, src=(self,)+src) if len(src) else self + def after(self, *src:UOp, **kwargs): return UOp(Ops.AFTER, self.dtype, (self,)+src, **kwargs) if len(src) else self def assign(self, x:UOp): return UOp(Ops.ASSIGN, self.dtype, (self, x)) def barrier(self, *src:UOp): return UOp(Ops.BARRIER, src=(self,)+src) def contract(self, *rngs:UOp): @@ -1436,6 +1435,7 @@ def pyrender(ast:UOp) -> str: for s in u.src: to_render.add(s) if u.op is Ops.STORE: to_render.add(u.src[1]) if u.op in {Ops.REDUCE, Ops.REDUCE_AXIS}: to_render.add(u.src[0]) + if u.op in {Ops.CUSTOM_KERNEL, Ops.CALL}: raise NotImplementedError("custom_kernel / call can't be pyrendered") if u.op in not_rendered: continue # checking the consumers is not enough, you have to make sure it's not used twice by the one consumer if len(cmap[u]) == 1 and len([x for x in list(cmap[u].keys())[0].src if x is u]) == 1 and u.op not in always_rendered: continue @@ -1444,7 +1444,13 @@ def pyrender(ast:UOp) -> str: kernels: dict[UOp, tuple[str, str]] = {} r: dict[UOp, str] = {} ret: dict[str, str] = {} + depth: dict[UOp, int] = {} for i,u in enumerate(lst): + # limit inline depth to avoid "too many nested parentheses" in Python parser + op_depth = 1 + max([depth[s] for s in u.src], default=0) + if op_depth > 100: to_render.add(u) + depth[u] = 0 if u in to_render else op_depth + # do the rendering if u.op is Ops.KERNEL: if u.arg.ast not in kernels: kernels[u.arg.ast] = (f"k{len(kernels)}", f"def k{len(kernels)}():\n " + pyrender(u.arg.ast).replace('\n', '\n ') + "\n return ast\n\n") diff --git a/tinygrad/uop/spec.py b/tinygrad/uop/spec.py index 869166ed24..d5bb70959b 100644 --- a/tinygrad/uop/spec.py +++ b/tinygrad/uop/spec.py @@ -84,14 +84,11 @@ _tensor_spec = PatternMatcher([ (UPat(Ops.LUNIQUE, dtypes.void, ()), lambda: True), (UPat(Ops.DEVICE, dtypes.void, (), name="d"), lambda d: isinstance(d.arg, str) or (isinstance(d.arg, tuple) and all(isinstance(s, str) for s in d.arg))), - (UPat(Ops.BUFFER, src=(UPat((Ops.LUNIQUE, Ops.UNIQUE)), UPat(Ops.DEVICE)), allow_any_len=True, name="buf"), + (UPat(Ops.BUFFER, src=(UPat((Ops.LUNIQUE, Ops.UNIQUE)), UPat(Ops.DEVICE)), name="buf"), lambda buf: isinstance(buf.arg, int) and isinstance(buf.dtype, (DType, ImageDType))), - (UPat(Ops.BUFFER_VIEW, src=(UPat(Ops.BUFFER),), name="buf_view"), - lambda buf_view: isinstance(buf_view.arg, tuple) and len(buf_view.arg) == 2 and all(isinstance(arg, (int, UOp)) for arg in buf_view.arg)), - (UPat(Ops.BUFFER_VIEW, src=(UPat(Ops.MSTACK, src=UPat(Ops.BUFFER)),)), lambda: True), # KERNEL can attach to an AFTER to describe the compute required to realize a BUFFER - (UPat(Ops.KERNEL, src=UPat((Ops.BUFFER, Ops.BUFFER_VIEW, Ops.AFTER, Ops.MSELECT, Ops.MSTACK, Ops.BIND, Ops.CONTIGUOUS))), lambda: True), + (UPat(Ops.KERNEL, src=UPat((Ops.BUFFER, Ops.AFTER, Ops.MSELECT, Ops.MSTACK, Ops.BIND))), lambda: True), # ASSIGN has a target and a value. It can also optionally depend on other assigns (UPat(Ops.ASSIGN, name="x"), lambda x: len(x.src) >= 2 and all(s.op is Ops.ASSIGN for s in x.src[2:])), @@ -316,7 +313,8 @@ def eval_pyrender(code:str) -> UOp: return lcls['ast'] def test_pyrender(test_ast:UOp, assert_parents=True): - code = pyrender(test_ast) + try: code = pyrender(test_ast) + except NotImplementedError: return None # this is okay, not all ops can be pyrendered ast:UOp = eval_pyrender(code) if ast is not test_ast: if assert_parents: diff --git a/tinygrad/viz/serve.py b/tinygrad/viz/serve.py index be211c981f..7e93d190fd 100755 --- a/tinygrad/viz/serve.py +++ b/tinygrad/viz/serve.py @@ -306,11 +306,12 @@ def load_counters(profile:list[ProfileEvent]) -> None: # to decode a SQTT trace, we need the raw stream, program binary and device properties if (sqtt:=v.get(ProfileSQTTEvent)): for e in sqtt: - if e.itrace: steps.append(create_step(f"PKTS SE:{e.se}", (f"/prg-pkts-{e.se}", len(ctxs), len(steps)), data=(e.blob, prg_events[k].lib))) + if e.itrace: steps.append(create_step(f"PKTS SE:{e.se}", (f"/prg-pkts-{e.se}", len(ctxs), len(steps)), + data=(e.blob, prg_events[k].lib, device_props[e.device]["gfx_target_version"]))) steps.append(create_step("SQTT", ("/prg-sqtt", len(ctxs), len(steps)), ((k, tag), sqtt, prg_events[k]))) ctxs.append({"name":f"Exec {name}"+(f" n{run_number[k]}" if run_number[k] > 1 else ""), "steps":steps}) -def sqtt_timeline(data:bytes, lib:bytes) -> list[ProfileEvent]: +def sqtt_timeline(data:bytes, lib:bytes, target:int) -> list[ProfileEvent]: from extra.assembly.amd.sqttmap import map_insts, InstructionInfo from extra.assembly.amd.sqtt import PacketType, INST, InstOp, VALUINST, IMMEDIATE, IMMEDIATE_MASK, VMEMEXEC, ALUEXEC ret:list[ProfileEvent] = [] @@ -321,7 +322,7 @@ def sqtt_timeline(data:bytes, lib:bytes) -> list[ProfileEvent]: rows.setdefault(r:=(f"WAVE:{wave}" if wave is not None else f"{p.__class__.__name__}:0 {name}")) key = TracingKey(f"{op_name if op_name is not None else name} OP:{idx}", ret=info.inst.disasm() if info is not None else None) ret.append(ProfileRangeEvent(r, key, Decimal(p._time), Decimal(p._time+width))) - for p, info in map_insts(data, lib): + for p, info in map_insts(data, lib, target): if len(ret) > getenv("MAX_SQTT_PKTS", 50_000): break if isinstance(p, INST): op_name = p.op.name if isinstance(p.op, InstOp) else f"0x{p.op:02x}" @@ -346,7 +347,7 @@ def unpack_sqtt(key:tuple[str, int], data:list, p:ProfileProgramEvent) -> tuple[ # * init decoder from extra.sqtt.roc import decode base = unwrap(p.base) - addr_table = amd_decode(unwrap(p.lib), device_props[p.device]["gfx_target_version"], ) + addr_table = amd_decode(unwrap(p.lib), device_props[p.device]["gfx_target_version"]) disasm:dict[int, tuple[str, int]] = {addr+base:(inst.disasm(), inst.size()) for addr, inst in addr_table.items()} rctx = decode(data, {p.tag:disasm}) cu_events:dict[str, list[ProfileEvent]] = {} @@ -422,16 +423,14 @@ def get_stdout(f: Callable) -> str: return buf.getvalue() def amd_readelf(lib:bytes) -> list[dict]: + from tinygrad.runtime.autogen import amdgpu_kd from tinygrad.runtime.support.elf import elf_loader - import msgpack - _, sections, __ = elf_loader(lib) - data = next((s for s in sections if s.name.startswith(".note"))).content - namesz, descsz, typ = struct.unpack_from(hdr:=" 0] + image, sections, __ = elf_loader(lib) + rodata = next((s for s in sections if s.name == ".rodata")).content + kd = amdgpu_kd.llvm_amdhsa_kernel_descriptor_t.from_buffer_copy(bytearray(rodata)) + vgpr_gran = kd.compute_pgm_rsrc1 & amdgpu_kd.COMPUTE_PGM_RSRC1_GRANULATED_WORKITEM_VGPR_COUNT + return [{"label":f"{resource} Alloc", "value":val} for resource,val in [("VGPR", (vgpr_gran+1)*8-7), ("LDS",kd.group_segment_fixed_size), + ("Scratch", kd.private_segment_fixed_size)] if val > 0] def amd_decode(lib:bytes, target:int) -> dict[int, Any]: # Any is the Inst class from extra.assembly.amd.dsl from tinygrad.runtime.support.elf import elf_loader @@ -558,7 +557,7 @@ def get_render(query:str) -> dict: rows:dict[int, dict] = {} for pc, (inst,_) in pc_to_inst.items(): if start_pc is None: start_pc = pc - rows[pc] = {"pc":pc-start_pc, "inst":inst, "hit_count":0, "dur":0, "stall":0, "hits":{"cols":inst_columns, "rows":[]}, "type":""} + rows[pc] = {"pc":pc-start_pc, "inst":inst, "hit_count":0, "dur":0, "stall":0, "type":"", "hits":{"cols":inst_columns, "rows":[]}} for e in w.unpack_insts(): if not (inst:=rows[e.pc]).get("type"): inst["type"] = str(e.typ).split("_")[-1] inst["hit_count"] += 1