# RUN: %stinkytofu-opt --arch gfx1250 %s --StinkyBuildImplicitDependencyPass --ds-read-order=AscendingCache --StinkyDAGSchedulerPass --print-output # # AscendingCache zigzag: AABB → ABBA across WMMA groups. # Original: A0A0 A1A1 B0B0 B1B1. A0+B0 feed WMMA0, A1+B1 feed WMMA1. # Zigzag alternates direction: group 0 ascending (A0 B0), group 1 descending (B1 A1). # Result: A0A0 B0B0 B1B1 A1A1 — B0 and B1 adjacent for cache reuse. # # CHECK: v[8:11]{{.*}}ds_load_b128 # CHECK: v[12:15]{{.*}}ds_load_b128 # CHECK: v[60:63]{{.*}}ds_load_b128 # CHECK: v[64:67]{{.*}}ds_load_b128 # CHECK: v[68:71]{{.*}}ds_load_b128 # CHECK: v[72:75]{{.*}}ds_load_b128 # CHECK: v[16:19]{{.*}}ds_load_b128 # CHECK: v[20:23]{{.*}}ds_load_b128 st.func @test() { ^entry: v[8:11] = "st.ds_load_b128"(v100) { issueCycles = 1, latencyCycles = 56, mod.ds = { na = 1, offset = 0, gds = false }, mod.memtoken = { tokens = [0] } } v[12:15] = "st.ds_load_b128"(v100) { issueCycles = 1, latencyCycles = 56, mod.ds = { na = 1, offset = 32, gds = false }, mod.memtoken = { tokens = [0] } } v[16:19] = "st.ds_load_b128"(v100) { issueCycles = 1, latencyCycles = 56, mod.ds = { na = 1, offset = 8192, gds = false }, mod.memtoken = { tokens = [0] } } v[20:23] = "st.ds_load_b128"(v100) { issueCycles = 1, latencyCycles = 56, mod.ds = { na = 1, offset = 8224, gds = false }, mod.memtoken = { tokens = [0] } } v[60:63] = "st.ds_load_b128"(v101) { issueCycles = 1, latencyCycles = 56, mod.ds = { na = 1, offset = 0, gds = false }, mod.memtoken = { tokens = [0] } } v[64:67] = "st.ds_load_b128"(v101) { issueCycles = 1, latencyCycles = 56, mod.ds = { na = 1, offset = 32, gds = false }, mod.memtoken = { tokens = [0] } } v[68:71] = "st.ds_load_b128"(v101) { issueCycles = 1, latencyCycles = 56, mod.ds = { na = 1, offset = 256, gds = false }, mod.memtoken = { tokens = [0] } } v[72:75] = "st.ds_load_b128"(v101) { issueCycles = 1, latencyCycles = 56, mod.ds = { na = 1, offset = 288, gds = false }, mod.memtoken = { tokens = [0] } } v[0:7] = "st.v_wmma_f32_16x16x16_bf16"(v[8:15], v[60:67], v[0:7]) { mod.mfma = { reuseA = false, reuseB = false } } v[0:7] = "st.v_wmma_f32_16x16x16_bf16"(v[16:23], v[68:75], v[0:7]) { mod.mfma = { reuseA = false, reuseB = false } } }