← all workloads

diagnostics_clean

N functions with distinct compile-time constants, no errors.

bucket: diagnostics  ·  compile mode: target  ·  flags: -target spirv -emit-spirv-directly  ·  default N: 400

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.

diagnostics_clean — full phase breakdown across releases (median ms) diagnostics_clean 0.96× 0.0 35 71 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 diagnostics_clean — parseTranslationUnit diagnostics_clean — SemanticChecking diagnostics_clean — generateIR diagnostics_clean — frontEndExecute (self) diagnostics_clean — specializeModule diagnostics_clean — simplifyIR diagnostics_clean — linkIR diagnostics_clean — unrollLoopsInModule diagnostics_clean — legalizeResourceTypes diagnostics_clean — legalizeExistentialTypeLayout diagnostics_clean — performMandatoryEarlyInlining diagnostics_clean — performForceInlining diagnostics_clean — linkAndOptimizeIR (self) diagnostics_clean — generateOutput (self) diagnostics_clean — 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 = 400); long files show the first 40 lines, the area around computeMain (±40), and the last 40 lines (gaps elided)

diagnostics_clean.slang

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

static const float k_0 = 0.0;
float ok_0(float x) { return x + k_0 * 1.0; }
static const float k_1 = 1.0;
float ok_1(float x) { return x + k_1 * 2.0; }
static const float k_2 = 2.0;
float ok_2(float x) { return x + k_2 * 3.0; }
static const float k_3 = 3.0;
float ok_3(float x) { return x + k_3 * 4.0; }
static const float k_4 = 4.0;
float ok_4(float x) { return x + k_4 * 5.0; }
static const float k_5 = 5.0;
float ok_5(float x) { return x + k_5 * 1.0; }
static const float k_6 = 6.0;
float ok_6(float x) { return x + k_6 * 2.0; }
static const float k_7 = 0.0;
float ok_7(float x) { return x + k_7 * 3.0; }
static const float k_8 = 1.0;
float ok_8(float x) { return x + k_8 * 4.0; }
static const float k_9 = 2.0;
float ok_9(float x) { return x + k_9 * 5.0; }
static const float k_10 = 3.0;
float ok_10(float x) { return x + k_10 * 1.0; }
static const float k_11 = 4.0;
float ok_11(float x) { return x + k_11 * 2.0; }
static const float k_12 = 5.0;
float ok_12(float x) { return x + k_12 * 3.0; }
static const float k_13 = 6.0;
float ok_13(float x) { return x + k_13 * 4.0; }
static const float k_14 = 0.0;
float ok_14(float x) { return x + k_14 * 5.0; }
static const float k_15 = 1.0;
float ok_15(float x) { return x + k_15 * 1.0; }
static const float k_16 = 2.0;
float ok_16(float x) { return x + k_16 * 2.0; }
static const float k_17 = 3.0;
float ok_17(float x) { return x + k_17 * 3.0; }
static const float k_18 = 4.0;

// … 726 lines omitted …

float ok_381(float x) { return x + k_381 * 2.0; }
static const float k_382 = 4.0;
float ok_382(float x) { return x + k_382 * 3.0; }
static const float k_383 = 5.0;
float ok_383(float x) { return x + k_383 * 4.0; }
static const float k_384 = 6.0;
float ok_384(float x) { return x + k_384 * 5.0; }
static const float k_385 = 0.0;
float ok_385(float x) { return x + k_385 * 1.0; }
static const float k_386 = 1.0;
float ok_386(float x) { return x + k_386 * 2.0; }
static const float k_387 = 2.0;
float ok_387(float x) { return x + k_387 * 3.0; }
static const float k_388 = 3.0;
float ok_388(float x) { return x + k_388 * 4.0; }
static const float k_389 = 4.0;
float ok_389(float x) { return x + k_389 * 5.0; }
static const float k_390 = 5.0;
float ok_390(float x) { return x + k_390 * 1.0; }
static const float k_391 = 6.0;
float ok_391(float x) { return x + k_391 * 2.0; }
static const float k_392 = 0.0;
float ok_392(float x) { return x + k_392 * 3.0; }
static const float k_393 = 1.0;
float ok_393(float x) { return x + k_393 * 4.0; }
static const float k_394 = 2.0;
float ok_394(float x) { return x + k_394 * 5.0; }
static const float k_395 = 3.0;
float ok_395(float x) { return x + k_395 * 1.0; }
static const float k_396 = 4.0;
float ok_396(float x) { return x + k_396 * 2.0; }
static const float k_397 = 5.0;
float ok_397(float x) { return x + k_397 * 3.0; }
static const float k_398 = 6.0;
float ok_398(float x) { return x + k_398 * 4.0; }
static const float k_399 = 0.0;
float ok_399(float x) { return x + k_399 * 5.0; }

[shader("compute")]
[numthreads(1,1,1)]
void computeMain()
{
    float acc = 0.0;
    for (int i = 0; i < 400; ++i) acc += ok_0(float(i));
    outBuf[0] = acc;
}