← all workloads

ir_builder

One enormous straight-line function: `n` trivial integer SSA ops, almost no semantic work. Stresses IR instruction construction / dedup / hash-cons and the SSA simplifier (the shared IRBuilder layer PR #9808 touched).

bucket: ir_infra  ·  compile mode: target  ·  flags: -target spirv -emit-spirv-directly  ·  default N: 4000

Phase composition across releases

Full sub-counter decomposition of compileInner — named leaf timers plus (self) residuals (a parent's time not covered by a named child, e.g. the autodiff transform in linkAndOptimizeIR (self)). Topmost band traces compileInner; hover a band for its phase.

ir_builder — full phase breakdown across releases (median ms) ir_builder 0.29× 0.0 2593 5185 daily → 25.14 25.15 25.16 25.17 25.18 25.19 25.20 25.21 25.22 25.23 25.24 26.1 26.2 26.3 26.4 26.5 26.7 26.8 26.9 26.10 26.11 06-25 06-26 ir_builder — parseTranslationUnit ir_builder — SemanticChecking ir_builder — generateIR ir_builder — frontEndExecute (self) ir_builder — specializeModule ir_builder — simplifyIR ir_builder — linkIR ir_builder — unrollLoopsInModule ir_builder — legalizeResourceTypes ir_builder — legalizeExistentialTypeLayout ir_builder — performMandatoryEarlyInlining ir_builder — performForceInlining ir_builder — linkAndOptimizeIR (self) ir_builder — generateOutput (self) ir_builder — compileInner (self) phase buckets parseTranslationUnit SemanticChecking generateIR frontEndExecute (self) specializeModule simplifyIR linkIR unrollLoopsInModule legalizeResourceTypes legalizeExistentialTypeLayout performMandatoryEarlyInlining performForceInlining linkAndOptimizeIR (self) emitEntryPointsSourceFromIR generateOutput (self) compileInner (self)

Compiled Slang source

exact compiled source (N = 4000); long files show the first 40 lines, the area around computeMain (±40), and the last 40 lines (gaps elided)

ir_builder.slang

// AUTO-GENERATED by perf-suite/workloads.py — do not edit by hand.
RWStructuredBuffer<float> outBuf;

[shader("compute")]
[numthreads(1,1,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    int acc = int(tid.x);
    acc = acc * 1;
    acc = acc + 2;
    acc = acc ^ 3;
    acc = acc * 4;
    acc = acc + 5;
    acc = acc ^ 6;
    acc = acc * 7;
    acc = acc + 8;
    acc = acc ^ 9;
    acc = acc * 10;
    acc = acc + 11;
    acc = acc ^ 12;
    acc = acc * 13;
    acc = acc + 1;
    acc = acc ^ 2;
    acc = acc * 3;
    acc = acc + 4;
    acc = acc ^ 5;
    acc = acc * 6;
    acc = acc + 7;
    acc = acc ^ 8;
    acc = acc * 9;
    acc = acc + 10;
    acc = acc ^ 11;
    acc = acc * 12;
    acc = acc + 13;
    acc = acc ^ 1;
    acc = acc * 2;
    acc = acc + 3;
    acc = acc ^ 4;
    acc = acc * 5;
    acc = acc + 6;
    acc = acc ^ 7;
    acc = acc * 8;
    acc = acc + 9;
    acc = acc ^ 10;
    acc = acc * 11;
    acc = acc + 12;

// … 3924 lines omitted …

    acc = acc ^ 11;
    acc = acc * 12;
    acc = acc + 13;
    acc = acc ^ 1;
    acc = acc * 2;
    acc = acc + 3;
    acc = acc ^ 4;
    acc = acc * 5;
    acc = acc + 6;
    acc = acc ^ 7;
    acc = acc * 8;
    acc = acc + 9;
    acc = acc ^ 10;
    acc = acc * 11;
    acc = acc + 12;
    acc = acc ^ 13;
    acc = acc * 1;
    acc = acc + 2;
    acc = acc ^ 3;
    acc = acc * 4;
    acc = acc + 5;
    acc = acc ^ 6;
    acc = acc * 7;
    acc = acc + 8;
    acc = acc ^ 9;
    acc = acc * 10;
    acc = acc + 11;
    acc = acc ^ 12;
    acc = acc * 13;
    acc = acc + 1;
    acc = acc ^ 2;
    acc = acc * 3;
    acc = acc + 4;
    acc = acc ^ 5;
    acc = acc * 6;
    acc = acc + 7;
    acc = acc ^ 8;
    acc = acc * 9;
    outBuf[0] = float(acc);
}