From 4976544bf91a8b6d3386a2e6df0fdb32bb254fb3 Mon Sep 17 00:00:00 2001 From: qazal <77887910+Qazalin@users.noreply.github.com> Date: Sat, 31 Jan 2026 00:14:53 -0500 Subject: [PATCH 01/32] multi ram usage tests on the NULL device (#14457) --- test/test_multitensor.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/test/test_multitensor.py b/test/test_multitensor.py index e7c8aa401c..95d7825f8e 100644 --- a/test/test_multitensor.py +++ b/test/test_multitensor.py @@ -1273,19 +1273,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): From d69bc5aa1a6018c21e17d3f552aa0016d37a3d14 Mon Sep 17 00:00:00 2001 From: qazal <77887910+Qazalin@users.noreply.github.com> Date: Sat, 31 Jan 2026 06:45:24 -0500 Subject: [PATCH 02/32] make DEV=NULL EMULATE=AMD amd_asm_matmul run (#14460) --- extra/gemm/amd_asm_matmul.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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") From 55f806b713fa80a4a96672c50f4e697e427c8fd5 Mon Sep 17 00:00:00 2001 From: chenyu Date: Sat, 31 Jan 2026 07:28:26 -0500 Subject: [PATCH 03/32] tighter late_buffer_view match [pr] (#14456) src must be len 2 at that point --- tinygrad/schedule/rangeify.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tinygrad/schedule/rangeify.py b/tinygrad/schedule/rangeify.py index 25d032f735..6bfca54eb0 100644 --- a/tinygrad/schedule/rangeify.py +++ b/tinygrad/schedule/rangeify.py @@ -280,10 +280,10 @@ def late_buffer_view(t:UOp, b:UOp): if len(shape) == 0: offset = x.src[1].arg else: offset = max(sum(idx.vmin for idx in x.src[1:]), 0) - 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.BUFFERIZE, src=(UPat((Ops.BITCAST, Ops.CONTIGUOUS), name="t"), UPat()), 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)), ]) From 616e9c1483333162bdecdffcde03e31b8dddea0c Mon Sep 17 00:00:00 2001 From: qazal <77887910+Qazalin@users.noreply.github.com> Date: Sat, 31 Jan 2026 08:34:14 -0500 Subject: [PATCH 04/32] CDNA assembly gemm in tensor.py with flag (#14310) * work * work * the assembly * remove the old one * remove ws bufs, assert splitk * notes cleanup * work * gemm args * gemm in mixins would be nice * add gemm gradient * print counters * the realize is for DEBUG=2 aesthetics * dedup * rewrite to python dsl, no list copies * leave that * add B, M, N, K to gemm name * it's M0 not NULL * fp16 support * test cleanup + more gemms * work from viz * more work * gemm batch_size * xccg path work * tiny comments on the label naming * s_waitcnt --- .../tinybox_8xMI350X/dev_run.sh | 1 + extra/gemm/asm/cdna/asm.py | 11517 ++++++++++++++++ extra/gemm/asm/cdna/gemm.py | 95 + extra/gemm/asm/cdna/gemm.s | 1621 --- extra/gemm/asm/cdna/template.s | 78 - extra/gemm/asm/cdna/test.py | 73 - extra/gemm/asm/cdna/test_asm_gemm.py | 46 + tinygrad/helpers.py | 2 + tinygrad/tensor.py | 5 +- tinygrad/uop/ops.py | 2 +- tinygrad/viz/serve.py | 2 +- 11 files changed, 11667 insertions(+), 1775 deletions(-) create mode 100644 extra/gemm/asm/cdna/asm.py create mode 100644 extra/gemm/asm/cdna/gemm.py delete mode 100644 extra/gemm/asm/cdna/gemm.s delete mode 100644 extra/gemm/asm/cdna/template.s delete mode 100644 extra/gemm/asm/cdna/test.py create mode 100644 extra/gemm/asm/cdna/test_asm_gemm.py 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/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/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/tensor.py b/tinygrad/tensor.py index 59a7b72c74..86ff73ef9c 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 @@ -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}") diff --git a/tinygrad/uop/ops.py b/tinygrad/uop/ops.py index 12611f8667..6842e44b37 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 diff --git a/tinygrad/viz/serve.py b/tinygrad/viz/serve.py index be211c981f..04b71dbe87 100755 --- a/tinygrad/viz/serve.py +++ b/tinygrad/viz/serve.py @@ -558,7 +558,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 From b4f5a51ebb34579925ed0d752823edaa071a01e9 Mon Sep 17 00:00:00 2001 From: chenyu Date: Sat, 31 Jan 2026 10:49:31 -0500 Subject: [PATCH 05/32] move tests to unit (#14463) test_uop_graph does not need device, test_memory_planner can use NULL --- test/{ => unit}/test_memory_planner.py | 4 ++-- test/{ => unit}/test_uop_graph.py | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename test/{ => unit}/test_memory_planner.py (96%) rename test/{ => unit}/test_uop_graph.py (100%) 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/test_uop_graph.py b/test/unit/test_uop_graph.py similarity index 100% rename from test/test_uop_graph.py rename to test/unit/test_uop_graph.py From c7656412151816a6e9217b46f30051bd81a0dde3 Mon Sep 17 00:00:00 2001 From: chenyu Date: Sat, 31 Jan 2026 11:05:42 -0500 Subject: [PATCH 06/32] remove unused allow_any_len [pr] (#14464) STORE has 2 src, RESHAPE has 2 src, BUFFER has 2 src added some tests for the untested allow_any_len --- test/unit/test_uop_graph.py | 91 +++++++++++++++++++++++++++ tinygrad/codegen/__init__.py | 4 +- tinygrad/codegen/late/devectorizer.py | 6 +- tinygrad/renderer/cstyle.py | 6 +- tinygrad/schedule/rangeify.py | 6 +- tinygrad/uop/spec.py | 2 +- 6 files changed, 103 insertions(+), 12 deletions(-) diff --git a/test/unit/test_uop_graph.py b/test/unit/test_uop_graph.py index f57c55ba41..105d8b43cc 100644 --- a/test/unit/test_uop_graph.py +++ b/test/unit/test_uop_graph.py @@ -686,6 +686,97 @@ class TestExpander(unittest.TestCase): sink = expander_rewrite(sink) print(sink) +class TestReduceCollapse(unittest.TestCase): + def test_multi_range_reduce_add(self): + """Test that (x + y).reduce(r1, r2) distributes over multiple ranges""" + from tinygrad.codegen.simplify import pm_reduce_collapse + # Create two ranges + r1 = UOp.range(3, 0) + r2 = UOp.range(4, 1) + # Create x + y where x and y depend on different ranges + x = r1.cast(dtypes.float) + y = r2.cast(dtypes.float) + # (x + y).reduce(r1, r2) should be rewritten + red = (x + y).reduce(r1, r2, arg=Ops.ADD) + self.assertEqual(len(red.src), 3) # value + 2 ranges + result = graph_rewrite(red, pm_reduce_collapse, name='test') + # Should become add of two separate reduces + self.assertEqual(result.op, Ops.ADD) + +class TestLoadStoreFolding(unittest.TestCase): + def test_gated_load_gep_preserves_alt(self): + """Test that LOAD(GEP, alt) preserves alt value after rewrite""" + from tinygrad.codegen.late.devectorizer import load_store_folding + buf = UOp(Ops.DEFINE_GLOBAL, dtypes.float.vec(4).ptr(), (), 0) + idx = UOp.const(dtypes.int, 0) + gate = UOp.const(dtypes.bool, True) + gated_index = buf.index(idx, gate) + gep = gated_index.gep(0) + alt = UOp.const(dtypes.float, 42.0) + gated_load = gep.load(alt) + self.assertEqual(len(gated_load.src), 2) # GEP + alt + result = graph_rewrite(gated_load, load_store_folding, name='test') + # After rewrite, should still have alt value preserved + self.assertEqual(result.op, Ops.GEP) + inner_load = result.src[0] + self.assertEqual(inner_load.op, Ops.LOAD) + self.assertEqual(len(inner_load.src), 2) # INDEX + alt + + def test_gated_load_ptrcat_preserves_alt(self): + """Test that LOAD(PTRCAT, alt) preserves alt value after rewrite""" + from tinygrad.codegen.late.devectorizer import load_store_folding + buf1 = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(), (), 0) + buf2 = UOp(Ops.DEFINE_GLOBAL, dtypes.float.ptr(), (), 1) + idx = UOp.const(dtypes.int, 0) + idx1 = buf1.index(idx) + idx2 = buf2.index(idx) + ptrcat = UOp(Ops.PTRCAT, dtypes.float.ptr().vec(2), (idx1, idx2)) + alt = UOp.const(dtypes.float.vec(2), 42.0) + gated_load = ptrcat.load(alt) + self.assertEqual(len(gated_load.src), 2) # PTRCAT + alt + result = graph_rewrite(gated_load, load_store_folding, name='test') + # After rewrite, should be CAT of LOADs, each preserving alt + self.assertEqual(result.op, Ops.CAT) + for inner_load in result.src: + self.assertEqual(inner_load.op, Ops.LOAD) + self.assertEqual(len(inner_load.src), 2) # INDEX + alt + self.assertEqual(inner_load.src[1].arg, 42.0) # alt value preserved + +class TestConstBufferize(unittest.TestCase): + def test_const_bufferize_with_ranges(self): + """Test that CONST.BUFFERIZE with ranges is folded correctly. + + BUFFERIZE can have ranges as additional sources beyond the value. + The pattern at rangeify.py uses allow_any_len=True because + CONST doesn't depend on ranges (constant is same value everywhere). + """ + from tinygrad.schedule.rangeify import pm_const_buffer_folding, BufferizeOpts + c = UOp.const(dtypes.float, 42.0) + r1 = UOp.range(3, 0) + bufferize_with_range = UOp(Ops.BUFFERIZE, dtypes.float, (c, r1), arg=BufferizeOpts(device="CPU")) + self.assertEqual(len(bufferize_with_range.src), 2) # const + 1 range + + result = graph_rewrite(bufferize_with_range, pm_const_buffer_folding, name='test') + # BUFFERIZE should be removed, result is const broadcast to shape + self.assertNotEqual(result.op, Ops.BUFFERIZE) + const_vals = [u.arg for u in result.toposort() if u.op is Ops.CONST and u.dtype == dtypes.float] + self.assertIn(42.0, const_vals) + + def test_const_bufferize_with_multiple_ranges(self): + """Test CONST.BUFFERIZE with multiple ranges is also folded.""" + from tinygrad.schedule.rangeify import pm_const_buffer_folding, BufferizeOpts + c = UOp.const(dtypes.float, 3.14) + r1 = UOp.range(3, 0) + r2 = UOp.range(4, 1) + bufferize_with_ranges = UOp(Ops.BUFFERIZE, dtypes.float, (c, r1, r2), arg=BufferizeOpts(device="CPU")) + self.assertEqual(len(bufferize_with_ranges.src), 3) # const + 2 ranges + + result = graph_rewrite(bufferize_with_ranges, pm_const_buffer_folding, name='test') + # BUFFERIZE should be removed + self.assertNotEqual(result.op, Ops.BUFFERIZE) + const_vals = [u.arg for u in result.toposort() if u.op is Ops.CONST and u.dtype == dtypes.float] + self.assertIn(3.14, const_vals) + class TestUOpTags(unittest.TestCase): def test_inc_by_one(self): g = UOp.const(dtypes.int, 1) + UOp.const(dtypes.int, 1) 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..62c2a8c624 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 *** @@ -342,6 +342,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/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/schedule/rangeify.py b/tinygrad/schedule/rangeify.py index 6bfca54eb0..258499ccd0 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), @@ -247,7 +247,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), diff --git a/tinygrad/uop/spec.py b/tinygrad/uop/spec.py index 869166ed24..52fca12ec2 100644 --- a/tinygrad/uop/spec.py +++ b/tinygrad/uop/spec.py @@ -84,7 +84,7 @@ _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)), From f873c7b6c5a1bf13dd6f298b2db1bda3091098cc Mon Sep 17 00:00:00 2001 From: nimlgen <138685161+nimlgen@users.noreply.github.com> Date: Sat, 31 Jan 2026 20:11:07 +0300 Subject: [PATCH 07/32] amd: fetch_name is file_name (#14465) --- tinygrad/runtime/support/amd.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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")) From 81eee5b30ac77e4d586377b9566094420df3c73b Mon Sep 17 00:00:00 2001 From: chenyu Date: Sat, 31 Jan 2026 13:53:16 -0500 Subject: [PATCH 08/32] unused spec [pr] (#14468) no BUFFER_VIEW in tensor, and no CONTIGUOUS in KERNEL --- tinygrad/uop/spec.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tinygrad/uop/spec.py b/tinygrad/uop/spec.py index 52fca12ec2..20b7512445 100644 --- a/tinygrad/uop/spec.py +++ b/tinygrad/uop/spec.py @@ -86,12 +86,9 @@ _tensor_spec = PatternMatcher([ 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)), 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:])), From ced886f26cbcc1a79e10fa6af2d9b30b590cf030 Mon Sep 17 00:00:00 2001 From: chenyu Date: Sat, 31 Jan 2026 14:26:47 -0500 Subject: [PATCH 09/32] failed test case for assign into bitcast (#14469) * failed test case for assign into bitcast DISK assign has custom hack for this. need to fix before we can unify assign * test_assign_bitcast_different_size --- test/unit/test_assign.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/unit/test_assign.py b/test/unit/test_assign.py index 076f2b14f3..87fcd0af07 100644 --- a/test/unit/test_assign.py +++ b/test/unit/test_assign.py @@ -461,6 +461,19 @@ 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 (only works on DISK currently) + 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(), [1.0, 2.0, 3.0, 4.0]) # TODO: should be [4.0, 3.0, 2.0, 1.0] + + def test_assign_bitcast_different_size(self): + # assign to a shape-changing bitcast view (only works on DISK currently) + 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) # TODO: should be [57, 48, 0, 0, 0, 0, 0, 0] (little-endian 12345) + @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) From b38fc43b07b8ecd466dca38a9b8a9bb513be2c49 Mon Sep 17 00:00:00 2001 From: chenyu Date: Sat, 31 Jan 2026 17:08:54 -0500 Subject: [PATCH 10/32] assert assign dtype mismatch for disk [pr] (#14473) the disk hack is generally wrong, now force bitcast on the source before assign --- test/unit/test_assign.py | 4 ++-- test/unit/test_disk_tensor.py | 13 ++++++++----- tinygrad/nn/state.py | 2 +- tinygrad/tensor.py | 6 +++++- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/test/unit/test_assign.py b/test/unit/test_assign.py index 87fcd0af07..508dc01015 100644 --- a/test/unit/test_assign.py +++ b/test/unit/test_assign.py @@ -469,10 +469,10 @@ class TestAssign(unittest.TestCase): np.testing.assert_allclose(a.numpy(), [1.0, 2.0, 3.0, 4.0]) # TODO: should be [4.0, 3.0, 2.0, 1.0] def test_assign_bitcast_different_size(self): - # assign to a shape-changing bitcast view (only works on DISK currently) + # 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) # TODO: should be [57, 48, 0, 0, 0, 0, 0, 0] (little-endian 12345) + 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): diff --git a/test/unit/test_disk_tensor.py b/test/unit/test_disk_tensor.py index 0ed52dafc4..3e8f0ae17a 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,16 @@ 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 mismatched dtype raises + with self.assertRaises(RuntimeError): + t[0:8].bitcast(dtypes.int64).assign(Tensor([12345], dtype=dtypes.int32)) def test_assign_cross_device(self): # disk assign allows cross-device (source on GPU/CPU, target on disk) 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/tensor.py b/tinygrad/tensor.py index 86ff73ef9c..c2edc7763f 100644 --- a/tinygrad/tensor.py +++ b/tinygrad/tensor.py @@ -289,6 +289,7 @@ class Tensor(OpMixin): # 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 self.dtype != x.dtype: raise RuntimeError(f"DISK assign dtype mismatch {self.dtype} != {x.dtype}") self._buffer().copyin(x._data()) return self if not isinstance(x, Tensor): x = Tensor(x, device=self.device, dtype=self.dtype) @@ -3868,7 +3869,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. From 5d38db9da68718cb6ce8bbaab09eaf05e1b4b964 Mon Sep 17 00:00:00 2001 From: chenyu Date: Sat, 31 Jan 2026 17:29:20 -0500 Subject: [PATCH 11/32] generic bitcast assign (#14474) a.bitcast(X).assign(src) -> a.assign(src.bitcast(a.dtype)) --- test/unit/test_assign.py | 12 ++++++++++-- tinygrad/schedule/rangeify.py | 4 ++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/test/unit/test_assign.py b/test/unit/test_assign.py index 508dc01015..93bd9b9149 100644 --- a/test/unit/test_assign.py +++ b/test/unit/test_assign.py @@ -462,11 +462,19 @@ class TestAssign(unittest.TestCase): 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 (only works on DISK currently) + # 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(), [1.0, 2.0, 3.0, 4.0]) # TODO: should be [4.0, 3.0, 2.0, 1.0] + 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 diff --git a/tinygrad/schedule/rangeify.py b/tinygrad/schedule/rangeify.py index 258499ccd0..71d674cb90 100644 --- a/tinygrad/schedule/rangeify.py +++ b/tinygrad/schedule/rangeify.py @@ -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 \ From 54e78dbec8c7758bef21ad33820ef6b979c82292 Mon Sep 17 00:00:00 2001 From: qazal <77887910+Qazalin@users.noreply.github.com> Date: Sat, 31 Jan 2026 19:30:43 -0500 Subject: [PATCH 12/32] viz: remove hardcoded strings in cfg tests (#14462) --- test/testextra/test_cfg_viz.py | 337 +++++++++++++++------------------ 1 file changed, 150 insertions(+), 187 deletions(-) diff --git a/test/testextra/test_cfg_viz.py b/test/testextra/test_cfg_viz.py index 45ed4a1fb6..f1bf8115d9 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() + 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() + 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() + 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() + 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() + 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() + 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() + 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() + 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() + 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() + 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() From b4f96301e0d90750a05e68a9884019993d7d4e22 Mon Sep 17 00:00:00 2001 From: chenyu Date: Sat, 31 Jan 2026 21:29:30 -0500 Subject: [PATCH 13/32] remove unused rules [pr] (#14477) --- test/unit/test_simplify_valid_idx.py | 14 ++++++++++++++ test/unit/test_uop_graph.py | 20 ++++++++++++++++++++ test/unit/test_uop_symbolic.py | 18 ++++++++++++++++++ tinygrad/schedule/rangeify.py | 7 ------- 4 files changed, 52 insertions(+), 7 deletions(-) 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/unit/test_uop_graph.py b/test/unit/test_uop_graph.py index 105d8b43cc..76b252cec7 100644 --- a/test/unit/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/schedule/rangeify.py b/tinygrad/schedule/rangeify.py index 71d674cb90..75e81d4d80 100644 --- a/tinygrad/schedule/rangeify.py +++ b/tinygrad/schedule/rangeify.py @@ -288,7 +288,6 @@ def late_buffer_view(t:UOp, b:UOp): to_bufferview = PatternMatcher([ (UPat(Ops.BUFFERIZE, src=(UPat((Ops.BITCAST, Ops.CONTIGUOUS), name="t"), UPat()), 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)), ]) DEVICE_MAX_BUFS = {"METAL": 31, "WEBGPU": 8} # TODO: get from device? @@ -455,9 +454,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), ]) @@ -473,9 +469,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")) From da500dbe06f3a25d12c9201159bcf06be8217a88 Mon Sep 17 00:00:00 2001 From: chenyu Date: Sat, 31 Jan 2026 22:38:40 -0500 Subject: [PATCH 14/32] simplify late_buffer_view [pr] (#14478) check the only allowed Ops in the chain, and offset cannot be negative --- tinygrad/schedule/rangeify.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tinygrad/schedule/rangeify.py b/tinygrad/schedule/rangeify.py index 75e81d4d80..11ac054db3 100644 --- a/tinygrad/schedule/rangeify.py +++ b/tinygrad/schedule/rangeify.py @@ -275,14 +275,15 @@ 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])) From 5705398a1fb3fcd412ae847d45ebd7c2f112d179 Mon Sep 17 00:00:00 2001 From: chenyu Date: Sun, 1 Feb 2026 09:10:22 -0500 Subject: [PATCH 15/32] assign cleanup [pr] (#14479) share more code path between disk and non-disk. also raise RuntimeError instead of Assert for mismatches --- test/unit/test_disk_tensor.py | 4 ++-- tinygrad/tensor.py | 23 +++++++++++------------ 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/test/unit/test_disk_tensor.py b/test/unit/test_disk_tensor.py index 3e8f0ae17a..6d215b627a 100644 --- a/test/unit/test_disk_tensor.py +++ b/test/unit/test_disk_tensor.py @@ -355,9 +355,9 @@ class TestDiskTensor(unittest.TestCase): 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 mismatched dtype raises + # bitcast on target with non-broadcastable dtype raises with self.assertRaises(RuntimeError): - t[0:8].bitcast(dtypes.int64).assign(Tensor([12345], dtype=dtypes.int32)) + t[0:4].bitcast(dtypes.int32).assign(Tensor([12345], dtype=dtypes.int64)) def test_assign_cross_device(self): # disk assign allows cross-device (source on GPU/CPU, target on disk) diff --git a/tinygrad/tensor.py b/tinygrad/tensor.py index c2edc7763f..f7a09b4116 100644 --- a/tinygrad/tensor.py +++ b/tinygrad/tensor.py @@ -286,21 +286,20 @@ class Tensor(OpMixin): return self def assign(self, x:Tensor|PyConst|list|tuple) -> Tensor: - # 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 self.dtype != x.dtype: raise RuntimeError(f"DISK assign dtype mismatch {self.dtype} != {x.dtype}") - self._buffer().copyin(x._data()) - return self - if not isinstance(x, Tensor): x = Tensor(x, device=self.device, dtype=self.dtype) + 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 - # 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}" + 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 is_disk: + self._buffer().copyin(x._data()) + return self return self.replace(self._apply_uop(UOp.assign, x)) def detach(self) -> Tensor: From 02afae04f4c7e02f5d7eb0ff1b699f81c43c446e Mon Sep 17 00:00:00 2001 From: chenyu Date: Sun, 1 Feb 2026 11:24:58 -0500 Subject: [PATCH 16/32] atol in test_call_gemm (#14480) flaky --- test/unit/test_call.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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() From 2111762a48887db8f934df50d1918865e6c05283 Mon Sep 17 00:00:00 2001 From: imaolo <56898718+imaolo@users.noreply.github.com> Date: Sun, 1 Feb 2026 11:48:43 -0500 Subject: [PATCH 17/32] failed test case for RING output device (#14191) * Add enable/disable scheduler cache ContextVar * add allreduce ring and naive to() tests * clearer test comparing native vs ring allreduce * split tests, add helper * removing trailing whitespace --------- Co-authored-by: chenyu --- test/test_multitensor.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/test/test_multitensor.py b/test/test_multitensor.py index 95d7825f8e..4e9d52fb29 100644 --- a/test/test_multitensor.py +++ b/test/test_multitensor.py @@ -33,6 +33,10 @@ def _test_allreduce(t:Tensor): b.realize() return aa, b +def _test_multiple_to_single_device(ring:int) -> Tensor: + t = Tensor.empty(32).shard(devices_4, 0).to(Device.DEFAULT) + with Context(RING=ring, SCACHE=0): return t.realize() + @unittest.skipIf(not_support_multi_device(), "no multi") class TestMultiTensor(unittest.TestCase): @needs_second_gpu @@ -256,6 +260,15 @@ 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): + t = _test_multiple_to_single_device(0) + self.assertEqual(t.device, Device.DEFAULT) + + @unittest.skip("TODO: ring allreduce ignores target device") + def test_multiple_to_single_device_ring(self): + t = _test_multiple_to_single_device(2) + self.assertEqual(t.device, Device.DEFAULT) + def test_allreduce_all2all(self): with Context(ALL2ALL=2): a,b = _test_allreduce(Tensor.rand(256, 256)) From 3ff390159b17b0e60355e22fedbc102a4e807d54 Mon Sep 17 00:00:00 2001 From: chenyu Date: Sun, 1 Feb 2026 11:48:54 -0500 Subject: [PATCH 18/32] don't implicitly change dtype in assign (#14481) broadcast shape is fine, but implicitly cast dtype is hard to find --- test/test_edgecases.py | 2 ++ test/unit/test_assign.py | 42 +++++++++++++++++++++++++++++++++++----- tinygrad/tensor.py | 4 ++-- 3 files changed, 41 insertions(+), 7 deletions(-) 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/unit/test_assign.py b/test/unit/test_assign.py index 93bd9b9149..71d59a8607 100644 --- a/test/unit/test_assign.py +++ b/test/unit/test_assign.py @@ -493,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)) @@ -587,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]) @@ -674,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 @@ -686,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/tinygrad/tensor.py b/tinygrad/tensor.py index f7a09b4116..aa45bdfa6e 100644 --- a/tinygrad/tensor.py +++ b/tinygrad/tensor.py @@ -289,8 +289,8 @@ class Tensor(OpMixin): 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 - if least_upper_dtype(self.dtype, x.dtype) == self.dtype: x = x._broadcast_to(self.shape).cast(self.dtype) + # 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}") From 6deeccc19235715e8b5af8d629fcb387b713b870 Mon Sep 17 00:00:00 2001 From: chenyu Date: Sun, 1 Feb 2026 12:14:46 -0500 Subject: [PATCH 19/32] fix RING with single dest (#14482) --- test/test_multitensor.py | 13 ++++++------- tinygrad/schedule/multi.py | 3 ++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/test/test_multitensor.py b/test/test_multitensor.py index 4e9d52fb29..375a6825f4 100644 --- a/test/test_multitensor.py +++ b/test/test_multitensor.py @@ -33,10 +33,6 @@ def _test_allreduce(t:Tensor): b.realize() return aa, b -def _test_multiple_to_single_device(ring:int) -> Tensor: - t = Tensor.empty(32).shard(devices_4, 0).to(Device.DEFAULT) - with Context(RING=ring, SCACHE=0): return t.realize() - @unittest.skipIf(not_support_multi_device(), "no multi") class TestMultiTensor(unittest.TestCase): @needs_second_gpu @@ -261,13 +257,16 @@ class TestMultiTensor(unittest.TestCase): np.testing.assert_almost_equal(a.numpy(), b.numpy(), decimal=5) def test_multiple_to_single_device_naive(self): - t = _test_multiple_to_single_device(0) + 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)) - @unittest.skip("TODO: ring allreduce ignores target device") def test_multiple_to_single_device_ring(self): - t = _test_multiple_to_single_device(2) + 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): diff --git a/tinygrad/schedule/multi.py b/tinygrad/schedule/multi.py index b6a502c845..b9a41c3f77 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 From ea1f1d2b9dae70c0fc807b782f9431b85fed9bcc Mon Sep 17 00:00:00 2001 From: chenyu Date: Sun, 1 Feb 2026 16:46:04 -0500 Subject: [PATCH 20/32] test_assign_to_bitcast_view (#14483) currently disk allows assign same size dtype into a bitcasted view --- test/unit/test_disk_tensor.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/unit/test_disk_tensor.py b/test/unit/test_disk_tensor.py index 6d215b627a..fbc5b0f914 100644 --- a/test/unit/test_disk_tensor.py +++ b/test/unit/test_disk_tensor.py @@ -359,6 +359,15 @@ class TestDiskTensor(unittest.TestCase): 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) pathlib.Path(temp(fn:="dt_assign_cross")).unlink(missing_ok=True) From 368a692e1ae8149336ec266e2e3c8b380247ec0f Mon Sep 17 00:00:00 2001 From: George Hotz <72895+geohot@users.noreply.github.com> Date: Mon, 2 Feb 2026 10:30:56 +0800 Subject: [PATCH 21/32] make SPEC=2 work for everything (#14476) * make SPEC=2 work for everything * that's a horrible fix --- tinygrad/uop/ops.py | 1 + tinygrad/uop/spec.py | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tinygrad/uop/ops.py b/tinygrad/uop/ops.py index 6842e44b37..c8d7d11181 100644 --- a/tinygrad/uop/ops.py +++ b/tinygrad/uop/ops.py @@ -1436,6 +1436,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 diff --git a/tinygrad/uop/spec.py b/tinygrad/uop/spec.py index 20b7512445..7d2808ff0a 100644 --- a/tinygrad/uop/spec.py +++ b/tinygrad/uop/spec.py @@ -313,8 +313,9 @@ def eval_pyrender(code:str) -> UOp: return lcls['ast'] def test_pyrender(test_ast:UOp, assert_parents=True): - code = pyrender(test_ast) - ast:UOp = eval_pyrender(code) + try: code = pyrender(test_ast) + except NotImplementedError: return None # this is okay, not all ops can be pyrendered + ast = eval_pyrender(code) if ast is not test_ast: if assert_parents: for u in test_ast.toposort(): test_pyrender(u, assert_parents=False) From 9a32d6e0901eebe77430a0c3c2f2c5396b2a9306 Mon Sep 17 00:00:00 2001 From: George Hotz <72895+geohot@users.noreply.github.com> Date: Mon, 2 Feb 2026 10:43:28 +0800 Subject: [PATCH 22/32] add depth limit for SPEC=2 (#14485) * make SPEC=2 work for everything * that's a horrible fix * add depth limit --- tinygrad/uop/ops.py | 6 ++++++ tinygrad/uop/spec.py | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/tinygrad/uop/ops.py b/tinygrad/uop/ops.py index c8d7d11181..b34413aa25 100644 --- a/tinygrad/uop/ops.py +++ b/tinygrad/uop/ops.py @@ -1445,7 +1445,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 7d2808ff0a..d5bb70959b 100644 --- a/tinygrad/uop/spec.py +++ b/tinygrad/uop/spec.py @@ -315,7 +315,7 @@ def eval_pyrender(code:str) -> UOp: def test_pyrender(test_ast:UOp, assert_parents=True): try: code = pyrender(test_ast) except NotImplementedError: return None # this is okay, not all ops can be pyrendered - ast = eval_pyrender(code) + ast:UOp = eval_pyrender(code) if ast is not test_ast: if assert_parents: for u in test_ast.toposort(): test_pyrender(u, assert_parents=False) From 2931b5287586cde905cdf11a018415a05bfedb88 Mon Sep 17 00:00:00 2001 From: Christopher Milan Date: Sun, 1 Feb 2026 19:12:27 -0800 Subject: [PATCH 23/32] skip autogen if MTLCompiler is loaded (#14466) --- test/unit/test_autogen.py | 259 ++++++++++++++++------------------ tinygrad/runtime/ops_metal.py | 5 +- tinygrad/runtime/support/c.py | 11 +- 3 files changed, 133 insertions(+), 142 deletions(-) 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/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/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) From d75a1b0d5ad65cf3f319f5a2a45289f7ac0a45ee Mon Sep 17 00:00:00 2001 From: Robbe Derks Date: Mon, 2 Feb 2026 04:54:46 +0100 Subject: [PATCH 24/32] usbgpu: use BOT interface for `patch.py` (#13644) * BOT usage * cleanup * fix lint * fix ruff * fix -7? --- extra/usbgpu/patch.py | 6 +- tinygrad/runtime/support/usb.py | 140 ++++++++++++++++++++++---------- 2 files changed, 101 insertions(+), 45 deletions(-) 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/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 From 6c487656f930e658e5fcbeb09d01ec9b386ddba5 Mon Sep 17 00:00:00 2001 From: qazal <77887910+Qazalin@users.noreply.github.com> Date: Mon, 2 Feb 2026 01:41:42 -0500 Subject: [PATCH 25/32] viz: kernel metadata from rodata entry (#14487) --- tinygrad/viz/serve.py | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/tinygrad/viz/serve.py b/tinygrad/viz/serve.py index 04b71dbe87..ececf638b0 100755 --- a/tinygrad/viz/serve.py +++ b/tinygrad/viz/serve.py @@ -422,16 +422,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 From d4007f36e04f9cf86edd29b2f7a1f19d055516b6 Mon Sep 17 00:00:00 2001 From: George Hotz <72895+geohot@users.noreply.github.com> Date: Mon, 2 Feb 2026 14:56:37 +0800 Subject: [PATCH 26/32] remove DEFINE_GLOBAL (it is PARAM now) (#14488) --- test/testextra/test_cfg_viz.py | 20 ++++++++++---------- tinygrad/uop/__init__.py | 5 ++++- tinygrad/uop/ops.py | 3 ++- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/test/testextra/test_cfg_viz.py b/test/testextra/test_cfg_viz.py index f1bf8115d9..3e9850b510 100644 --- a/test/testextra/test_cfg_viz.py +++ b/test/testextra/test_cfg_viz.py @@ -43,7 +43,7 @@ class TestCfg(unittest.TestCase): self.skipTest(f"tests written for RDNA, got arch {arch}") def test_simple(self): - k = Kernel() + k = Kernel(arch=Device["AMD"].arch) k.label("entry") k.emit(s_branch(), target="bb1") k.label("bb1") @@ -52,7 +52,7 @@ class TestCfg(unittest.TestCase): run_asm("simple", k) def test_diamond(self): - k = Kernel() + 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)) @@ -82,7 +82,7 @@ class TestCfg(unittest.TestCase): self.assertEqual(insts, ['s_mov_b32', 's_cmp_eq_u64']) def test_loop(self): - k = Kernel() + k = Kernel(arch=Device["AMD"].arch) k.label("entry") k.emit(s_mov_b32(s[1], 4)) k.label("loop") @@ -94,7 +94,7 @@ class TestCfg(unittest.TestCase): run_asm("simple_loop", k) def test_loop_branch(self): - k = Kernel() + k = Kernel(arch=Device["AMD"].arch) k.label("entry") k.emit(s_mov_b32(s[1], 4)) k.label("loop") @@ -112,7 +112,7 @@ class TestCfg(unittest.TestCase): run_asm("loop_if", k) def test_loop_break(self): - k = Kernel() + k = Kernel(arch=Device["AMD"].arch) k.label("entry") k.emit(s_mov_b32(s[1], 8)) k.label("loop") @@ -127,7 +127,7 @@ class TestCfg(unittest.TestCase): run_asm("loop_break", k) def test_switch(self): - k = Kernel() + 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") @@ -149,7 +149,7 @@ class TestCfg(unittest.TestCase): run_asm("switch_case", k) def test_ping_pong(self): - k = Kernel() + 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") @@ -168,7 +168,7 @@ class TestCfg(unittest.TestCase): def test_colored_blocks(self): N = 10 - k = Kernel() + k = Kernel(arch=Device["AMD"].arch) k.label("entry") k.emit(s_branch(), target="init0") for i in range(N): @@ -188,7 +188,7 @@ class TestCfg(unittest.TestCase): run_asm("test_colored_blocks", k) def test_jump_back_to_end(self): - k = Kernel() + k = Kernel(arch=Device["AMD"].arch) k.label("entry") k.emit(s_mov_b32(s[1], 2)) k.emit(s_cbranch_execz(), target="loop") @@ -202,7 +202,7 @@ class TestCfg(unittest.TestCase): run_asm("jump_back_to_end", k) def test_hit_count(self): - k = Kernel() + k = Kernel(arch=Device["AMD"].arch) k.label("entry") k.emit(s_mov_b32(s[1], 1)) k.emit(s_branch(), target="alt") 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 b34413aa25..1075290688 100644 --- a/tinygrad/uop/ops.py +++ b/tinygrad/uop/ops.py @@ -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 From 1746d1f997470bd5bba3260c2de711130fc93b60 Mon Sep 17 00:00:00 2001 From: qazal <77887910+Qazalin@users.noreply.github.com> Date: Mon, 2 Feb 2026 02:32:01 -0500 Subject: [PATCH 27/32] remove SPEC=0 context in custom_kernel tests, pyrender always skips it (#14489) --- test/unit/test_schedule_cache.py | 2 -- 1 file changed, 2 deletions(-) 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) From 965149a46d44c7144f2ab1f1cb4611e1e8bfc1ee Mon Sep 17 00:00:00 2001 From: George Hotz <72895+geohot@users.noreply.github.com> Date: Mon, 2 Feb 2026 16:02:00 +0800 Subject: [PATCH 28/32] assembly/amd: add ds perm instructions (#14486) * assembly/amd: add ds perm instructions * NO SKIP * fix preexisting RDNA3 issues * pcode * assert * asserts * unify * simp * good fix --- extra/assembly/amd/emu.py | 22 ++- extra/assembly/amd/pcode.py | 183 ++++++++++++++--------- extra/assembly/amd/test/hw/helpers.py | 37 ++++- extra/assembly/amd/test/hw/test_ds.py | 42 ++++++ extra/assembly/amd/test/hw/test_sop.py | 2 + extra/assembly/amd/test/hw/test_vop1.py | 19 +++ extra/assembly/amd/test/hw/test_vop3.py | 76 ++++++++++ extra/assembly/amd/test/hw/test_vop3p.py | 3 +- 8 files changed, 304 insertions(+), 80 deletions(-) diff --git a/extra/assembly/amd/emu.py b/extra/assembly/amd/emu.py index b7aa412764..ad19119299 100644 --- a/extra/assembly/amd/emu.py +++ b/extra/assembly/amd/emu.py @@ -402,17 +402,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 = [] @@ -485,6 +487,7 @@ def _compile_sopp(inst: SOPP, ctx: _Ctx) -> UOp: if inst.op == 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 == 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: pcode = get_pcode(inst.op) @@ -552,7 +555,7 @@ def _compile_sop(inst: SOP1 | SOP2 | SOPC | SOPK, ctx: _Ctx) -> UOp: def _compile_vop12(inst: VOP1 | VOP1_SDST | 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) @@ -645,6 +648,10 @@ 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) @@ -788,7 +795,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: @@ -872,6 +879,15 @@ def _compile_mem_op(inst: DS | FLAT | GLOBAL | SCRATCH, ctx: _Ctx) -> UOp: 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) + # 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) offset64 = offset.cast(dtypes.uint64) diff --git a/extra/assembly/amd/pcode.py b/extra/assembly/amd/pcode.py index 3f826f3260..e618046384 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,12 @@ _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), } 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 +452,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 +479,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 +506,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 +570,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 +662,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 +687,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 +696,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 +758,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 +810,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 +858,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 +918,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 +982,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 +1054,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 +1070,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 +1091,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/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) From 965940dd00563b57c8c85ad5fe7983c9347d85de Mon Sep 17 00:00:00 2001 From: qazal <77887910+Qazalin@users.noreply.github.com> Date: Mon, 2 Feb 2026 07:39:48 -0500 Subject: [PATCH 29/32] sqtt: update examples after event field change (#14493) * regen sqtt examples * cdna * rdna4 * packet counts for rdna3 * sqttmap work --- extra/assembly/amd/sqttmap.py | 38 +++++++----------- extra/assembly/amd/test/test_sqtt_examples.py | 12 +++--- .../examples/gfx1100/profile_empty_run_0.pkl | Bin 55059 -> 55254 bytes .../examples/gfx1100/profile_empty_run_1.pkl | Bin 55050 -> 55195 bytes .../examples/gfx1100/profile_gemm_run_0.pkl | Bin 185688 -> 187634 bytes .../examples/gfx1100/profile_gemm_run_1.pkl | Bin 185696 -> 187780 bytes .../examples/gfx1100/profile_plus_run_0.pkl | Bin 62051 -> 62558 bytes .../examples/gfx1100/profile_plus_run_1.pkl | Bin 62061 -> 62760 bytes .../examples/gfx1200/profile_empty_run_0.pkl | Bin 30499 -> 30545 bytes .../examples/gfx1200/profile_empty_run_1.pkl | Bin 30506 -> 30555 bytes .../examples/gfx1200/profile_gemm_run_0.pkl | Bin 117405 -> 117135 bytes .../examples/gfx1200/profile_gemm_run_1.pkl | Bin 116221 -> 117073 bytes .../examples/gfx1200/profile_plus_run_0.pkl | Bin 38337 -> 38396 bytes .../examples/gfx1200/profile_plus_run_1.pkl | Bin 38414 -> 38382 bytes .../examples/gfx950/profile_empty_run_0.pkl | Bin 62238 -> 61356 bytes .../examples/gfx950/profile_empty_run_1.pkl | Bin 57604 -> 61359 bytes .../examples/gfx950/profile_gemm_run_0.pkl | Bin 229333 -> 219814 bytes .../examples/gfx950/profile_gemm_run_1.pkl | Bin 228081 -> 228593 bytes .../examples/gfx950/profile_plus_run_0.pkl | Bin 69804 -> 69998 bytes .../examples/gfx950/profile_plus_run_1.pkl | Bin 70823 -> 69480 bytes tinygrad/viz/serve.py | 9 +++-- 21 files changed, 25 insertions(+), 34 deletions(-) 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/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/sqtt/examples/gfx1100/profile_empty_run_0.pkl b/extra/sqtt/examples/gfx1100/profile_empty_run_0.pkl index 22fac0f23ceb5b37d30f4d917dcbd7bef1e5be52..9ae7fbc50ad85302bf4d3a8638771e8315f30f12 100644 GIT binary patch literal 55254 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 DM4h?i literal 55059 zcmeHweQ;dYb>DkSkOW9jgeZT=A92>yhXIOQ?k=!ctSZVNNQ$OGP*{?ZEoXB?-0 zpqgpxj?=2YbM8HF-@cEWhWzfYqn^W%C+jfZJ3nomx?;^&YG0`JeY*B3WZyMuT`AhI3VST64w9H59sRT`Sl6syj+n zrFO0ws!Y^+d#i_!<`?Fyqo2q=pPfCLTbQ(tO4A$xYrectiWINa#(uoN+L?K-lr5ss zwQBsiLM0#06&Eu_)%f0edwQqlBN=W&CewE~e2`jxuWwG(yGC}Ey_fcdU^jPa-bpI3y4ot#KSFPIh*j%Ap#*}@WL^c06M*n5?K2BB@WwK=^Sj!))Aj9HB zHB_$Ds=FtxTwyLdi_l3O`a-SRlZf`mVgvEPR4kE*;Gfzr)u0_h)_g60%8@!S)E^m4 z4yx4Mg)*9g>GavfiTnd9gR?7H0B*Y|AnF%5>l4o z{0Bu|^CJzSmxvEW28WdB<bHHLG;RBKspdnXP11<@>dkPsS6;Xk<_+d7ex4l)--3 zIKfr-JYBG!3!j-UE>^;)VZ7ztH4hFYBmD!aX*5ggH7BF7NJ^*pG1j-S zUZHshHIYcd%!)har=$L%!N^cbC;3dH1FFf8#&BgJjCD`REtZMF7}S(D@fyCQ$;1$( zJtm65r}lkV4uUOeCFNnuP%IgVOX)^_5A{bQLj%Fh-e0oj7ND@Oh6-1*)848FQjwT% zn+IdjK?q}T)%P;TM|tt*)LAx92V-%}p@bj12Wg%TN|Fyl?mNzNNYzeEAIlb9(lQuJ z3_@M|R^Ok3wVm+&V&tL89d`76m4)I0*3K36&B%}?>#(M)i6#qSjSw8Q=BEqu)=~cG zVCBIJk$bEAb5LIuDOix__(7kB9PCre@tI?$VT^vMdN8*zSDdv_sjKb`)ttGK zC72?Kuar&nFio`#>3!}QmSe7xy%U9LPEu>5BQ10nwH-x;yz)EVfwfZ|Zg>wC&!922 zIG=N_n`s5DmU{pU|(_GPQiu&Np@jE1}nD zB{T}a;Ntn?Cr*u>x_CVNSU47jg^;0_lgBR}kKjY&0uu1uVF+NVVe#+i#MmCQx?4U@ z)u%}-OP_iVX}m)s>YeO8R9VRAQovg#7cz@Q7!eq(O14ry=6YA-@qWLhFTPuLq? z35!~~y0bv*_*(Vd(r_35HEsch{3S8uU3!!Py7!LJS*!r}W+S?-Y84KkWP4HP2a^2s zE$Whk3D|^5jVCmIiUt$0fyjU)c{Q&?H6ECSR?C)1`-(6-G^5f{J)YDEpre28+s)zr?+7`6IM)HpNaATXMqNfVuIeF6X( z+THmr6J7e(XmJjGGC;PV-=Y~t9Ma*%+61$g%K=K8?scYO?i^}{78xSk#$Ss7YigoJss|S51>eIm zU;>88qZ<{fth%n@i7Eaq{%uh^(y=C^glF1lA#DPJr2O5C1WDMH^ zfbUyS5pTOdn+pIZ03>MiYd!{RX6C_=Vf<1}Z^NpY{DfYR%vcd}^}y_RxL;h3INd

}(wTVTljB!AzZRx_ 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 diff --git a/extra/sqtt/examples/gfx1100/profile_empty_run_1.pkl b/extra/sqtt/examples/gfx1100/profile_empty_run_1.pkl index 2c980df292331c4a306c4f305b10f3687db3af4d..2c57cb5d8dc9beefb4ce197504bb4f887e046ca0 100644 GIT binary patch literal 55195 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 a*;FxpC6zB^7PIB2SAWwqmX@Yc!T$%)iJn&g literal 55050 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 z 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 diff --git a/extra/sqtt/examples/gfx1100/profile_gemm_run_1.pkl b/extra/sqtt/examples/gfx1100/profile_gemm_run_1.pkl index 693f79f38e0373c81996751fa55fa1d9140ec7f0..be0cedc42407a6fa06cec61cec1afdc95db0fbda 100644 GIT binary patch literal 187780 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

(~vg00F~as`843{jbRehfJnIZsX>=+$Okc&RH9 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 H+4%nl2iEFJ diff --git a/extra/sqtt/examples/gfx1100/profile_plus_run_0.pkl b/extra/sqtt/examples/gfx1100/profile_plus_run_0.pkl index 5416372220f0e10192591a570644c6d484829354..1a0e2243a7bbb29998490fd7c50fe79cacd96c5d 100644 GIT binary patch literal 62558 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 KBrLVb`Tsu`n@DN^ diff --git a/extra/sqtt/examples/gfx1100/profile_plus_run_1.pkl b/extra/sqtt/examples/gfx1100/profile_plus_run_1.pkl index 51aae2dbff8bfcd5db372ae1e0e5dbc97f72dc98..e5f6376fcce347e648c024c151dc936e7ba63dd7 100644 GIT binary patch literal 62760 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 literal 62061 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 O4>GWOO~jZ?&iH@bB3ecO diff --git a/extra/sqtt/examples/gfx1200/profile_empty_run_0.pkl b/extra/sqtt/examples/gfx1200/profile_empty_run_0.pkl index 99131b49e43b4fd0ff2ccf892658275bf80104e4..62940f0928f25c024fa941e371d140283f59aee9 100644 GIT binary patch delta 4698 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 SU?~5j3eV*1HhALPoBsi0;|6j7 diff --git a/extra/sqtt/examples/gfx1200/profile_empty_run_1.pkl b/extra/sqtt/examples/gfx1200/profile_empty_run_1.pkl index 6a9ae97e854be6a3eeb933bf597f480973dcbef6..01a9ddac0ac4807b4be272fdc06f10f1c03fff43 100644 GIT binary patch delta 4809 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 ChYMZ+ diff --git a/extra/sqtt/examples/gfx1200/profile_gemm_run_0.pkl b/extra/sqtt/examples/gfx1200/profile_gemm_run_0.pkl index c726b9581fb0458d72448f4db1cf3de74493345e..043c730e80c5b57fac2d3a3bda589d6493494610 100644 GIT binary patch literal 117135 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 CqHKTw literal 117405 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 z

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 Uyf6kJvUMa7y9Pw7PR#ZH1Edo}cK`qY literal 116221 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 I!*SRD4@J9rU;qFB diff --git a/extra/sqtt/examples/gfx1200/profile_plus_run_0.pkl b/extra/sqtt/examples/gfx1200/profile_plus_run_0.pkl index 81c064609ba8d0c08262c88f9e51eff89cd02561..9d1204ca0b25c0da328ed5660f9886e19649e2e6 100644 GIT binary patch delta 6482 zcmc&2TWlQFb!O}sJB#DjuDxDAvQGS30+X4!^CX0<s;j!$O18VO`*(_sRB+}km1e#7|djLQf;Vs(wX zwa+agji?53OM=54hU;s4yInKLgs7-fkhU5TfgNmxpV!8^9Q71Mk$FK5P)|_|32sle z!J4|LN3BXSPY5YhM^OoZ-}JS?*Xo+OUD+zpctJ0qu69>6RpQZVG5Bp=w8zz4(F~0j z3+?QBPE|yihqwD%fv>OYb|XPmB)L=*RkIC_W^IOJ_3=(;PgN6zV%b#_O>t~!#cE4(DwsY|oZaic**qN4IqI2&2n1Ix%{?VGN#zw-k8$}?W7M?`(Qr$wL%!-hJys~pW)PcXR~MqG7?weHCz_!{ZG9_@ z=plHvX&)PbmC+3QBwQcOv7_*DR45y%V4<`5F#9(+(Y%KZ=l{}N!Qzj%JNCi0mfbeG zYM5Opzj0z}A_uSSxYEXj4zUXrQ@0(y`Hra^oZ8UI)z#+3L^;>v9$8mD>j=84@+ulM zhH703^{dxbislblhFKu+M5Yz?t?ob#pXnO9WVGD;5#r&~=vu1h2dl5MH)q3e$T)%U z+a1@yi#=lwcKDGENe4Uxx39m<)yYX0gXp>xSgCNufTeJoWv43|rf)rZ+u_6U+oq=u z9E~5Hxb@(HJ93jXiOJd>lXbnl=5wf0YQWZ5wlrS5CV*p2B5`GID(8@Yx#w}Zia`tk zt6gEtdSQYoXLpqrxNBYWTGuItjDAP=-V?82$KllWJ6BBBTLJpNI^Nk>mx;LS+-`Eq5?aLSzA^Z-*5zgt(hJ3H z#5Jr;biv7}yUIo`Vc{2g$_cqI7L#tO%h=d?HOPm!m1K2c_;}+5y1l3ix`Isw`yq%Y zTjAC8O8DUFBebgFnjwf1n48v9$)Yania?6%pCbiVu-0MQp!NQZP0ec@5wanc#0Cn& zSR#1lHqeq08hSQP3#i_7Mb+)li@}4*Fzw_Ntzq9UEK;&AjoR|m<|bDiM5P zaZ7ubdsZwlTG3hEjU`P~s44evZE;O0X;^kj2VGP~(p0B_#^A?WBc7`y181C~p~91I z==QMNFc7xqOB6!{T_}l5h3K+90Hy~-+M6s&9p~B7mQPnSsHty?$}pxVb4}-FD1v*Q1gC=B~!WS8z#57cP-3b{4WN~$@KJCd+>4r&!x{eeo=AE6s=kg zW=6E{bQ|-(&n&S{t=BQP=|r{MO@=IJnugKdTyV3ZH^T0#o@DJJi!?f>99|a!xOFVQ zm>1Bt=kcy;yuxW%6(j}qE4Wv=cw&V`Mjro=d3&oEA}A2^RM9oeqWw zvdl~V{vH|yP(qPnL`jycis}>6y%9~UN!HP6^!W4*=5YS~y)RW)E|g789L%Lyc>bog zE?b6y8K?6FW2r3z(HahWI{f>lk(v~{u;PxdP9C^1cRfx&55aW@fqfJ{JlIe9Hcu#?M0i(E|r}ruUC+%?$L9?%FZFH6vmy zn3lB0nw@>ayK-ic%y^K@5r*}I!cQh!P?^^!JBpRLDv)u`XAIVc*xKy8x%0mf$8eq= z!Qy0F+^aXYhv>1&2Q!;TEMvuDDb_XUS-rIbT5b=O3aeOQO5fBfBNRnA7Z((g{dlFuZ`qizvZ!N$%$|g?{K_SkY)}Z zJ1+JK2T!x-A^85?-Qk>VUutH?dbO~KnQqrI_~L|9%<@icV5=5+i9qWK zewLC-f~@K)FE1}kh}UGiz&eeZT5(5-6*Gvzsj60z6jj#ni3(W^*|6tTb9cb1po+G? zO!k`mD<@X7bjGqC)MXu?#RVO&rI9T)6)3mTti_Kxj_$&yvkO1ioXmO)N9W20gi>YG z<^-;|qa6y81$>gmcXI1~Yxokl&zIodg7JndS=<|Z?y}G4cJ88hhsGBbYxf9S11-5V zwcZpdEA)zHiQedoUh(;&Jqa4R%DT>@aM7{RI?qOoBdEwA*mMllz}pXwR=DqFKDoQ^ vGIDEVCGPtGyAF1oY_75Qr;{qaA&VfKY$LuP*RmyobnB_c84IUxIKcl08Bhqy delta 6529 zcmc&&YitzP6`mPC@FT`vytdbGV~nvAXSjFXwTH$kFs zRq79=ABoEs2OAA4D;Yce1)V4=%$hNnD=ULDr5U?_Cw6+9b)s6bk-6J9Rwrnz$tYZJ zszMD7nePsa)`_m?G8*|N%tm9dqoSiDut(LHY-Si5yvnkuObwW>s)Z{Rb;~{5Orlt_ zZmA1>ViHS5pVUH2q@mrHriv*eKa}=8Yf_cT(9>H7ry@0ha;mAamCG7awG>EKH^FZs zHJ!fgriO9N!f59FS+pj2gM5 z(Zx>EI4_u8Qq$(0muXDP9XVzZAU#dMDx>~sEr#l;kxRWr42)DGyja=pxsnp1Q`u58 zT3n1t`Yp ze07bNG|1B(B@3fUnQ2;H@y6iq)qY7K-$Ku1=CL1HOd6+IG{8Vjy_aGXGZ+t*8LCiP zho#jG(A8H8Gc_Y(1WICC@-9uaLRx8sL@X}$z&~R|8oUY1YY&On;CkIQu_X1^+CtI$ zL13VM8>b(J8};2Tw{(X%Re1dILkEr>Pr|g`CfzJgy|Xf3@)MIWRSUW+?~-1PQ|2T% z)_5&9Dcam7-V3aGop=dOHTN&-$+v$h3Ig1YEptqIt?O&PNswUEfkkWNEu0>K)vaqh z?hbfo)!n`wf#cEhvX;~F%=FvAvPETkpNfwj-UB*Mq+4+^^@nna683hKvT!a0*VvO--zM#FJv%doW<4ei-hw|`ga1?7;rp;@ zWYuF37o0#&CxD{WS9qgRETS9Cf>X&BxUu>h0govJCf2Ovj#ezgG!S$w)W}yb$}eKS zxxS{hlfMR;mSxiH`U_SVPG7?v;r-oiKXW!P9KBf{3O5)|Z*7Fvx}z(ccFCnpBeyhD zaA=@*96bN(u366Gg&UZL>N5a^$4B766nElp>Z$gvH!-V}oYtEN+wfd&H@?slbD@=D zAs>f(X1DaLHwpGv7>zW-t)9R;Ce;|tX}(FFZtnq{ZELIfctG`(Q8mZl{|^}`iQ38qP^ z*N-l$K?s5nab8z(USLu;drH?;`lm&nmSb8u(o74IXXm>5RxewTubT^Xs{}KX_B6uJ z*H!Y4g&I^96LTS&b5<MaW%uB0S-B`-h~yoLo-b7hJ_|+ z7)qYZAFQtml1C>b2V_J&4(8^uYTpnIl2fOcA`3?fiW@2klIN)nwZ1zIRWW2WSGWvS zbEXr=7Qfk0>!$-k3q5CgS_-i=nC)?z>XTv_ywSI|ChFW@?16kiuvg=M9d-}?Kez;L z^&J&Oi1#;%`S4=@J)#9a>o;qfx%Ad~(v_*=fj30AL&N4lCO!$z4{k2J85Ji6viTLVqeM$CD>^jji+VPuL?&9g{Z;B=IJ# zSe8PGQ%rDe_)RbLma1sZO~iojZlV5#r+Di%(Hl%eCq^!qjuFyKgCVG|&AcitZ@lPU zw48N|Fs$hLSdFhxXSf)!Y1^wS79*P0nT7vMRo0a-)%*p6P(x<0eYy!&ZjS`=CRV#_ zWFYo3Pmzh|mlYV9ZbbRYWv+G;;i{Z5wgO>}q9WT@YVPasR>Bk}D;X6YE?~YIo`DZc zp4ep%rm9EYFN4wPO6VRbIJdu`!;v-c=$gq?>=W6C@fMg&Ot^dh&=PwU=EYROvE5^P z_awiLaOfx1zEgnf($?Xm{XL`xMf>~i<5lM&**|a}uQ`u=`*r6r zVP9|`7h&{3bs@#nupNC3_kUqsLxPyCOmUUv9awq?$|kau)#D+bInZ_odITxkD9ttM z-v^r3@Dt|uZCN{%(_f>qeAX?wcyced^po5v!j?nzg-m6#(j(mE9*K;x0KnAtdHPGCs-$I5#BYyO29x zDR8z!yCm5ikTW4k_JrJ!Bzr?{NX~_1d|x0i7n1S)0e5^Zq~l`&dnP2wfsh-L#16S3 zNe%|wcu3BLWc*MdFvrPpe*E}jAv+|=;eb06lH~D_8)5|b+F6l%je#}>qjtSD$(%XqSkAvYR$Nj~`Oh}RwJ~zEosLB__ z3d)lz%)_?e_hKh8{lDQ~LC?ubxHWlKo;cS9pG-7J!>8fn=Xd69{;(u<@C8kR*^wei z6d-Z7S(+Jx$mu5OrPdTZ{U=G9TMyU2*(_cF`rJU_`_4cRaY(gq^QV)+@Y1Jbj81>S zB!($dum1Rm`!H;Xh4z*_thRY2C)!uwv*$X+tC`hywVR(KJf%}@s7WLPkUrU;D*5&k zVykdLa->3`&=qcpzJjvtwc<=ymNNcB5Qfj7Hy)M#yECq~0zLi1)YuD_=a438!tuxo z_{&SNyMB+>OxmGug2`=C10hld2oHS2FJugHg*@)@3`2Lm#?8Yl*slx&;c;+l;f@?y z;K*U*AZm*!D&EqVieIBlS=ANq@?}5dE|-VPhOF!S>X(qOu;C$m;7GG893IE45u^t5PS~Tk;v+}rTRvWvo$DDaJ>PI& zs6qOi8r&;5-oPA78t)Gk#ByV zLG$?<>UpU%@RH!E$#Mx|RlHg74>QhN#ZFj#zK$bjj(>5*L9w{f87lJ6>MP>bbI^;p a(&W~!45fY7`qKO&$fZ^HmVaW`Uim+T?H97h9*L0CbX1RG@rG)>zI+9VKSWo(l+4WtGQr2R7(d$CQh?tI^UCGlm5 z4rx)8dvd<-JNKO5d46~L8TS3B+1iPkncvTxseOeFho8G}eQkGxD5;9b8@wh6<@?Jc z5csUY( zXlEld*SDa6N~9^uX5GVr%&DsCcNkwe-J2u_A82q7cDV;Nfinc(gBsBnUhYXev@`9z z(9>2&og`mvb=lT72DgN}9Tf$E=Q&kWs#O$ZgNOI~+TrzZa<#3OC z;&?dIl7h}ia+SLu-)bm&wRBN3;AC$Hlp-yTD#+3}(O0-4id2=~MUoCgqN3>j5J{o~ zQ4-|lXjhZ1j3gpBewIqI#&fa&ANHl-!RCx(EV4yTk$sHC6`fOo+0+JqXpVO^IxkQJ zJWy?`r0Ir@eG+ofm}3Ges&l&Ld%_SbFDC(_t2><+7_za@X2&*FkyH-WB+~FnH0A)R zqVfy3J5i4@DMBvZ4kNL)tdk?Es>{{Ns~Uzm4Y(vc8w)$&s0Ql3AkrKZbU_t31>VW0 zfQ`G6qiO;|=9dZvuWOtJ??l^RPdw&Cjv=B?{P%0OM5hHUVd|=1)ZmK5 z>u_mfJN!Li!$NqNP(I~_tVp5_OQ9vz<%*YNtVh*BNe*a+ZEDks26(Y$Hxq|&>qzkI z)Jn)?R>Fza!_4*Yk5)c7T*tsw$pg$skWb&h#3~;o>lpi=b+EPV2Adv&f4BA8^d0a> znqwp3$}iRi*-p#X_)b|uUoQ?C!j~P`n^vr01X#DCk2wo3W(QD%OWAI!!8gS(I~u^n z&NHq8#cM}g1@bF%t^yOvRjvXq9I`@F%TEQ>K(y0tMgwB$X?88y1&If-lO3M3R-n!!o!{KM)*V z!oV-}!OIQ7t2{LnOkv-QG$ftVFzG+O?p3;5!fq>IWyg*P=V#LJ!Mb}~z9ASyakzVZ z4-Ek<3@VRhZ9#FMAwXAjo`gUfyth6@+X-Q6vg%W)=!!~87;SL*TzoYNB+5pxs{Kk= zuvID`WK-~sT-)7Dqht6l}wb zhaOZ%Qxwr@(6jkg>THXR23JiNWJNV3xEO7Rf8|q-wK}gWoKiK(;ci{Pno6R$4R-a$ ztV&MUlJA5;S5W+$xej=yH_`2wq|1xrz(GM*Fkx+UYBq!&^>vM32z9qu`lZQ){qt6XK+Mq49sH7x0;K*)wQc8K}k@tv50W0B@JU69Zis@ z_~VExhD;mu&o(A(y)mZ@bVgM%BeFF?rbAJBlhynQPbXtbRXxEKTq6P508?1w#J;rU@SF@5OfhPJf(oo5+(d6LKmY|zysr?rBk6&CXB4Ucs;3cRjM zL_zE{^U}-Vi&!;u8S|@mst*9l5vKH+~^uxs3se#!6}B9gZ55^$6-Lz zh){vDWQkW*G<4q9WkfIJYq-^(*{acq0GE=p8?H${9TX|2p%RB}9_XG1V z92!gX?#d7CESrzk;y}V~FO<#4kQ!vn$F0XKd9daa*5g~`QDdGZj|uZh>+uwvzdcbW zVDy+oV*0wzEo(TyEEFbM!rmRb;xdFyED|PJ!fv{K)ny0^u=6!*L(JZ~y`zCzSkph! zJ6wj3%~T5UqR=oDn&AoiP{@1=bhCZ*VFb$dVQ4DUKO}Crd0_Jn8}u6T|3cU^CWW1` zU|%SE(vnRedkVg5w(njbyq*dl-n@PLWl9fHa~dGgc;n%UB=> z%-8V0-XeT>Y!!1Du9;lVW?qMbldB_vJhi(1>z4vCq_EnaI^M~K2jIfwK;_c$8=00& z-QMvTCQuj+lxA&mB2ZWchwqJ#&smH&2LpwnKx1HOnEW;b4&Kx?T`DfI&T)a#oJ~#y zO2v@HMRLv~i}fDYBQr}~?yN^<8eH!9tVd^-x$Iew%rv^(qDRhoWUnmw*ZW}+^)=#g_CS&X?G<~*_(_qZNe98b9HS&z)LcwCRn zw0c~R%p_fI(Ie+PvY2u<6cqGuJ35%f-)A2$&87D4r-3nmUTt%CnYgPVFfcvJ=GgOl z0!vS$qpj87mWpX-TWQuKGwlwya8DqPF&J1=9g|sjY4;Mga2_rmUlC-^ad7&0nk}4w zn@b5eP}&^K-P>51yH93uTZm<5;pE8`!N8BU!I|UfAhRtC7f#*}Z{OFtgekt4kc-7D9 zVCMY%W32p}3qk$ll@LFkbJFjnT(zm4?6!f*g~>-5w(u@ySqvr~Tz2K`D=gXR<>{)0 z2llVJxq{^v4sb0WVW#X4VcpwFn3LV3NVKWFsIioc?+$ZG$}OJR6roW$wi)b zFLEH$MVuByoC@0E(6Pw4#l~qJzY=QmCIgpmko%$4)hUu&tB@Q)4o++lQB+h}lT;pu z8NA!t1F*TvS`K^58Yd{cHQKP|jg{C#D;RoZ6ZoJ8;=HePk(x#e|q(g@?j+<{XE zmdl;^z%j&ZCOkT~Mv)o}9yMwYLng!%WIr7iAsqtu|h1rUwc$Da!;hnbNuI$1@$BJuZMj`^^qoju=D4OV1nYGAQEh UnPjUqd=nXl?tFeadh0&!Kc{;FTL1t6 delta 6477 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 rEFFu+;&IQEMUG{A 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 literal 62238 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 Ax&QzG diff --git a/extra/sqtt/examples/gfx950/profile_empty_run_1.pkl b/extra/sqtt/examples/gfx950/profile_empty_run_1.pkl index 1c0ef9543a25a6fd7afc73eb226b75f83cf6e0d1..3b94e906985419cc2bbe292fe7683aa16e734784 100644 GIT binary patch literal 61359 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 B9~b}t literal 57604 zcmeHw37lM2neXi-NoVObBqSj~8Mf+}+^&7WBy`egLa20S=>|c-o7+{lyQ)*0wItmM zyCjBiC5#j*BaYE0i24u&R1_H*a2!XTZ{+9le$I@*@Ed#%B4*~H7}oclt?J%;?ybJn zohGf*m0$YQJ?nSA^Zmc`o$s7;>&C{rPP`!C&ow2d+Ez%U$47Eb$9R9b}&yQ}!mJN=a?JY@l}+1Zg>?l;U;jg29{|O{7O6 z%6KLBqF5rIP0HgE&ZW*#QrW^d6xySV=S!VxLry7_`qlcvP|4|3*L1}*DW&Tp@_sql z70twyE=HQ>i;~V~a$bdcxQzk=Wtq-FbR^> zxyG>yQNF74!cqbH;Exn7<_npWv`5LMl_Y9BGO8}XDYQe2WygBQAfXLM zIo+MO`g6OA`CL~rG1QeEFT^uxujux471N0VD%};8^9t@uU%lEYMdf625Tg4O$QdiC z%M!zm6#nk)bR_bQbf)0w&!iPhczi|Q{(4|wFUzbYc^8ncmNL1q=i2OiZ zjFU-4lAOm4mg4IRkfAuF*5?Z)bzV$~CQ@<|zHO%8?kuS-py7o8k-TQ?uHvLtZJ~+8J-_ zkGDIW@eaU$eDP#qA72{T6F*%IX<(~s$tkaK43DMPC*{;oOm;{YIxgFu6@gcKoSmIl zxvs$sThZ57A3wteOhMx8L-f5u%+xU#UuzDgxT|k@UEEzWJmNl6RK$akj(EsI#zAVY zh_6EuiUl}+5fj$;VK@?pt~Z`GxEe4@|iCMkW@WN{vwYi6a8%?~F*hNi6f z|D2@I=MjV9u$dJ4d}6>{3f0EJt^HS);!W!5Ib~lCW?aW`Cg;dU<4VjCl_4l;Wj*Y2 z``w}^9O7C540r>gD@0QavVII2XwSl2rsVc2$n20~azWNt?e@9+q9@3AAnf*egU~gi z+T$iww_To4_Bpnuv&DjA3)pONQZt=4pnM=8hRC#`#U~^Ly<#9>j!#5$Yr2>kQgV($ zTyYdL*}ReBU{DMPDP0=ihus0U2l^5)1wLkmBIl9`n7$p9?Z&DDzOd-`dU!s2Ty7Z6 zkk_*6g(C{8RZb@M8wStg@_I!V>#mkwj~nRq`m6_USu~T*7gNBBl$>=WVA4m{dt!K8 z&k?A{Cx*0SvoU~_uo$K~(qsr*z|u~RTULuC*h|@|Bi!S6iJ>a>Ei}6&gPZ($CRPsuz@K)m>)tO6Z!K5K>mDw zYx!$VCQ^xl1F9TGYbPBPp)hbXNDCvTlzANp1z;s$DIup}xD3i8BLH%|4C4nf=yC&J zsg&tB9&`mozsI`v4ni$RpQDg*z|tmX6vLp$CHg}e!l?}x_Jmv>G2pkB?Pgf-0YAu6 ziSnb|>ktqYG#ky38;QNOaJS}^R0i}CtdJZ9dBn))kjEps{hErKiOCuEggw9{OE$M- zHb?NXPOFy6y@d*(w;Dc_yAt+-Dzpa6;*A(Aq-wVRt0+kx-mQc;oUK#lwf-nb_8(o8NB_Xwrdj@MP zLrLdQVgx6V1&TqKXgU3|J9E8^gtPRJ#~P%VM&I>xjIib})`; zsqPe-CaX_D-U&%b8e8SG_I|D167tsnQ0$zZ@T^oCP`+5gAI@USd z4w(HV^sss3;6@Rq5`%XDW){4zAJ(ntHJ#{NP^Zpg(~o*NQopQE&ehb3!6GW1bgnLB zBw7lbD6x!G%z}vkgH@0V`SpfpG9K?UThGEgRZzwX;1j{3wo{#xK#TK|x`GjI;6HUn z07KqF3|US`$)bBpBS~1|^%&IJ=tfk@RMgh!W~iZWW8-Kqs>zNL z8odPN{Bu(}qkV|#Y1B8PJD`Ec&e5Hyomp)HK4H-9+L?@L(*Hh-ZqO!Pw+N#+U`ad02 zoG3f^2MXZ+DC9aFN-_@{6{`*mr?12N6$kW%uUoaou}4J5K+2w#*+q@16J=H{%&G-A ze4*P|aN$Lb+stn8xx!*FV7aVO&&(Hx@`Xg92>Xb{M_twqoQvA)3wT9XCRNr>%rOod zQ6VuLrmL!|+NZ;;mGTlQ-Vs@;E|Kuo5^|nO;AAY|b5!69et$KS1?d}fm<#QW(!*R( z+1o^mtT(OEsq@mJ3f8aUsar)g(lokXXV)>a>lo~t;m?Ro+aZ{+*XIjXEC#(T5k^~y zmVQ;W8Sj&Ag42qQjRS+4HB8X&3wvBHaMx-!->{OvDQ>suW9J=sC82hpE%tE-+SyCN zAybEb`ySWegWZ32te{LXNePQywqt8jcXKi$!}$oh>1!m}?-O0-B>RC!?7VTJ%Xp}(+UElCtup&JlYMls)6tm-1I0erEBDc}o0UU2xIvFs40`D|)KIo6&Ac{lbuo!Zgi9#5TKLx4`+|p!bADq8IhZGX&m@?*w6~?oQkt1O^ ztPt`TZ8vDy?EE!((PS8#hZAX#WaPtthFXV@jt)eoKWT2ho zTqfxl2EH5U^@X9lDU)GBsvPw(p|`EPVlj(g9zD(p&~ag{3t>vFZOx1_n20S6XDG&8CVa0VH!Ryg6LJ-f02 zX%N31QtvE9n(?9QmU1GNzLGj;^B_neDtPI;@QDa&2G}oK zKwJY`)596aOHW`osS7lusSD&WIJHfLx>Ie90sp09UXie}%9n0c7a>DFp~NImwdjIJ zGYXMSj}3gd>MVVyi$j!xLo>n$QS~Z_;jj!nTYwKR>{Az@;RL@kKE<#u zn;W^%0XJyS;0|P!DELq`!|jyw;3CWeYtV6aXb&7W_%=YKL2W_00ImSVU{O|x!f8!(!kV~<-fU18CFT9& zaH0-pDd7_t=q3r+aJliT+}AikEY~=oDbgRjy`5`BXHM|>RXFJZ`7T7~RFH2O)o&<) zIq(T}4%Vk7wHIf{wlXjm%D}yuf^!#UIO+q)ALw1U-$5H7S1&N5aUnQFl<(B=_9+#g zIb>ejlDbk!K&|Xq%x1DqSEq<;rP~M{aA;gbrF)vdrz)@}#rOr*DQ{Cum5pME<;XrTvfN=m0B((WX%m(XgJ{VY) zZL6u@?U_9RW_If1&t=yG3~)bq7rCRc!2oQR`oP&>eo;bybu7OBoBqbzznca@8bG5Z%DbqX69rWTeG0%AQ*|X!alDYudJyIc-7=~K}y=t8c zdr44qcASr%17<#$=V0tsE;)`q1UeMd@IvIfcC6jtz-k$JW?DiaR|sy|!1h1*Gc-Q6 zW|rWCTPN(+!{J&gg<8QgpgYJwT0_l&Q>MJwf?7vg8bQe~rre;mtdSkG7o$7TgwO!T zc}tsicL>4_z1uFXudC~Z8t|tkc;!zw{kFS>eAzxn5W0nsFdzQ52`$20h(=|* zNirAyiB`tKCYldLvo>jzF6f4K(1(T482+GgI0-e3K1)f!Le>!$YRjP_-3v(m?$!D* zORIU3wrec+5H0u6g(M>jX|W2=D4q3?V5dFSF5}CtmkKe=Pn&eIvDyjc7)uyUc0$w^ z`X53Bn}m`M-Kj==iEAk7RSO z_$a0e!o4Co*M7&h#gSa5n3eL%2y!G#!-+9ix#YpOBYYE=gPF8mf1_SF^sSFx>%C{!o2Y*DAJvc2%s!alUI8&x zkfeAb3vYHv#H6qs^SFjw!*0dziVnNXN=_lJeWJ1tLWlm6J~w?2hG_QxEDvU7U{(fd zmH}pS97l>AJ_|`8ETbVar;Z_I4Wmi(+5ClFUGNYu4vAp;ckPm6N+yl116T;aIhw9ya&Kxa*!iQd zqvXhCqHE#Ovgmer{63%00e8$p9@!0dqg{&Et9XM^->^3t4al+KupIEf;XdzhXjpM~ z3fsULtK=?3s{zNhZJQ|>4rf;~12?&IQdTa+k*8P6!x@=4SRT1-3f`e2!}YylHVc

`H2*^8;QxHr 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 EKP(vPZvX%Q diff --git a/extra/sqtt/examples/gfx950/profile_gemm_run_0.pkl b/extra/sqtt/examples/gfx950/profile_gemm_run_0.pkl index 6431be7b5a64cccc75fa57f358dd257ccde90be2..6ae6664043273c8cf0f50fa43778fb7a88394702 100644 GIT binary patch literal 219814 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 literal 229333 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 w6!4wh5!Hn literal 228081 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 diff --git a/extra/sqtt/examples/gfx950/profile_plus_run_0.pkl b/extra/sqtt/examples/gfx950/profile_plus_run_0.pkl index c6e491de0d48dbbb36099dfd2f8482a157cb3f7a..c816dc509b587a07ee926f87c9fe07879c6be2bb 100644 GIT binary patch literal 69998 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 PVxk7aqMbf!E=l}9zdWgd literal 69804 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 Upz^{yiAV)D8QgB(hh^LU0%GV$c>n+a diff --git a/tinygrad/viz/serve.py b/tinygrad/viz/serve.py index ececf638b0..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]] = {} From a908f447d55913d2f2665d503471281e8a247edf Mon Sep 17 00:00:00 2001 From: chenyu Date: Mon, 2 Feb 2026 08:34:45 -0500 Subject: [PATCH 30/32] remove disk special case in mstack_early_shrink [pr] (#14494) --- tinygrad/schedule/multi.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/tinygrad/schedule/multi.py b/tinygrad/schedule/multi.py index b9a41c3f77..5539967eb2 100644 --- a/tinygrad/schedule/multi.py +++ b/tinygrad/schedule/multi.py @@ -94,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)) From 6e958dbfd4362b2b089e5479393033cb5603efb0 Mon Sep 17 00:00:00 2001 From: George Hotz <72895+geohot@users.noreply.github.com> Date: Mon, 2 Feb 2026 21:35:59 +0800 Subject: [PATCH 31/32] assembly/amd: add RDNA4 support to emulator (#14341) * start new rdna4 * work * plus works * more pass * rdna4 * assembly/amd: fix RDNA4 emulator for float16 and VOP3 clamp * stale * rev * rr * rdna4 emu tests * cleanup * cleanup * simp * works * better factorizaion * hacks * fix mockgpu * guard both * cleaner * gate * bug fix and a few tests * all test_tiny --- .github/workflows/test.yml | 2 + extra/assembly/amd/emu.py | 293 +++++++++++++--------- extra/assembly/amd/pcode.py | 3 + extra/assembly/amd/test/test_rdna4_emu.py | 98 ++++++++ test/mockgpu/amd/amddriver.py | 35 ++- test/mockgpu/amd/amdgpu.py | 11 +- test/mockgpu/helpers.py | 5 +- 7 files changed, 305 insertions(+), 142 deletions(-) create mode 100644 extra/assembly/amd/test/test_rdna4_emu.py 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/extra/assembly/amd/emu.py b/extra/assembly/amd/emu.py index ad19119299..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) @@ -482,14 +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 == SOPPOp.S_NOP: return UOp.sink(*ctx.inc_pc()) # S_NOP is a no-op + 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)) @@ -501,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 @@ -553,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 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) @@ -573,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) @@ -587,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) @@ -608,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 @@ -639,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) @@ -658,12 +687,12 @@ def _compile_vop3(inst: VOP3, ctx: _Ctx) -> UOp: # 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) @@ -673,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 @@ -731,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'] @@ -764,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 @@ -813,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) @@ -835,49 +865,55 @@ 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: @@ -928,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 @@ -986,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, } # ═══════════════════════════════════════════════════════════════════════════════ @@ -999,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') @@ -1030,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}>" @@ -1097,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 @@ -1127,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 @@ -1143,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 e618046384..166f2c5e48 100644 --- a/extra/assembly/amd/pcode.py +++ b/extra/assembly/amd/pcode.py @@ -271,6 +271,9 @@ _FUNCS: dict[str, Callable[..., UOp]] = { # 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')]: 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/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 From 61ca19ff242c3a3396b4763f79965cedad90fa51 Mon Sep 17 00:00:00 2001 From: chenyu Date: Mon, 2 Feb 2026 10:19:05 -0500 Subject: [PATCH 32/32] after with empty src is self [pr] (#14496) --- tinygrad/codegen/late/devectorizer.py | 3 +-- tinygrad/uop/ops.py | 6 ++---- 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/tinygrad/codegen/late/devectorizer.py b/tinygrad/codegen/late/devectorizer.py index 62c2a8c624..dbf4fd3ae6 100644 --- a/tinygrad/codegen/late/devectorizer.py +++ b/tinygrad/codegen/late/devectorizer.py @@ -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) diff --git a/tinygrad/uop/ops.py b/tinygrad/uop/ops.py index 1075290688..6c5ed761be 100644 --- a/tinygrad/uop/ops.py +++ b/tinygrad/uop/ops.py @@ -414,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):