← back

api_reflection

n kernels with deliberately parameter-rich signatures (nested constant buffers, arrays, textures, samplers) so that walking each compiled program's layout — the reflection query pattern every API client uses to build binding tables — has realistic work per program. Used with the driver's --reflect option, which walks the layout after each compile.

bucket: api_overhead  ·  compile mode: api  ·  flags: (none)  ·  default N: 40

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.

Across releases

api_reflection — Across releases (median ms) api_reflection 0.94× 0.0 1206 2412 25.12 25.13 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 26.12 26.13 26.13.1 26.14 26.14.1 26.16 26.16.1 api_reflection — apiCreateGlobalSession api_reflection — apiCreateSession api_reflection — apiLoadModule api_reflection — apiFindEntryPoint api_reflection — apiComposite api_reflection — apiLink api_reflection — apiGetCode api_reflection — apiReflection api_reflection — apiTotal (self) phase buckets apiCreateGlobalSession apiCreateSession apiLoadModule apiFindEntryPoint apiComposite apiSpecialize apiLink apiGetCode apiReflection apiTotal (self)

Daily tip-of-tree (last 30 days)

api_reflection — Daily tip-of-tree (last 30 days) (median ms) api_reflection 0.96× 0.0 319 638 07-30 07-31 08-01 08-02 08-03 08-04 08-05 08-06 08-07 08-08 08-09 08-10 08-11 08-12 08-13 08-14 08-15 08-15 08-18 08-19 08-20 08-21 08-22 08-23 08-24 08-25 08-26 08-27 08-28 08-29 api_reflection — apiCreateGlobalSession api_reflection — apiCreateSession api_reflection — apiLoadModule api_reflection — apiFindEntryPoint api_reflection — apiComposite api_reflection — apiLink api_reflection — apiGetCode api_reflection — apiReflection api_reflection — apiTotal (self) phase buckets apiCreateGlobalSession apiCreateSession apiLoadModule apiFindEntryPoint apiComposite apiSpecialize apiLink apiGetCode apiReflection apiTotal (self)

Daily window progress

Overall apiTotal: 590.3 → 564.1 ms  -4.4%  (2026-07-30 7c58a326b → 2026-08-29 28c755b09)

Contributors — the mutually-exclusive phase buckets (named leaves + (self) residuals) that tile apiTotal; the pp column sums to the overall %. Buckets moving the total by ≥0.2% are listed, the rest fold into the remainder row. Below them, every other reported counter (nested/overlapping, e.g. serialized-module reads — own change only):

counterΔown %of total
apiGetCode-17.6 ms-7.7%-3.0pp
apiTotal (self)-3.7 ms-48.0%-0.6pp
apiCreateGlobalSession-2.9 ms-2.9%-0.5pp
apiLoadModule-1.9 ms-0.7%-0.3pp
(remaining 5 buckets)-0.1 ms-0.0pp

Largest day steps (≥5% of the previous day, both directions; bisect with git log <c0>..<c1> -- source/):

boundary% vs prev daycommitstop buckets (own %)
none

Reproduce

Run from the slang repo root. This regenerates the sources below and re-runs this workload's measurement; --gen-dir keeps the generated files (they go to a tempdir and are deleted otherwise).

python3 tools/compile-perf/bench.py --slangc /path/to/slangc --only api_reflection --label repro --gen-dir repro-api_reflection

Compiled Slang source

the complete compiled source (N = 40), shown in full

kernel_000.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_0
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_0
{
    Inner_0 inner[3];
    float4x4 xf;
    uint flags;
    float blend[2];
}

ConstantBuffer<Params_0> cb_0;
StructuredBuffer<float4> inBuf_0;
RWStructuredBuffer<float4> outBuf_0;
Texture2D tex_0;
SamplerState samp_0;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_0[tid.x];
    v += tex_0.SampleLevel(samp_0, v.xy, 0);
    v *= mul(cb_0.xf, v);
    v.x += cb_0.inner[tid.x % 3].a.x + cb_0.blend[0];
    outBuf_0[tid.x] = v;
}

kernel_001.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_1
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_1
{
    Inner_1 inner[3];
    float4x4 xf;
    uint flags;
    float blend[3];
}

ConstantBuffer<Params_1> cb_1;
StructuredBuffer<float4> inBuf_1;
RWStructuredBuffer<float4> outBuf_1;
Texture2D tex_1;
SamplerState samp_1;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_1[tid.x];
    v += tex_1.SampleLevel(samp_1, v.xy, 0);
    v *= mul(cb_1.xf, v);
    v.x += cb_1.inner[tid.x % 3].a.x + cb_1.blend[0];
    outBuf_1[tid.x] = v;
}

kernel_002.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_2
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_2
{
    Inner_2 inner[3];
    float4x4 xf;
    uint flags;
    float blend[4];
}

ConstantBuffer<Params_2> cb_2;
StructuredBuffer<float4> inBuf_2;
RWStructuredBuffer<float4> outBuf_2;
Texture2D tex_2;
SamplerState samp_2;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_2[tid.x];
    v += tex_2.SampleLevel(samp_2, v.xy, 0);
    v *= mul(cb_2.xf, v);
    v.x += cb_2.inner[tid.x % 3].a.x + cb_2.blend[0];
    outBuf_2[tid.x] = v;
}

kernel_003.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_3
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_3
{
    Inner_3 inner[3];
    float4x4 xf;
    uint flags;
    float blend[5];
}

ConstantBuffer<Params_3> cb_3;
StructuredBuffer<float4> inBuf_3;
RWStructuredBuffer<float4> outBuf_3;
Texture2D tex_3;
SamplerState samp_3;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_3[tid.x];
    v += tex_3.SampleLevel(samp_3, v.xy, 0);
    v *= mul(cb_3.xf, v);
    v.x += cb_3.inner[tid.x % 3].a.x + cb_3.blend[0];
    outBuf_3[tid.x] = v;
}

kernel_004.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_4
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_4
{
    Inner_4 inner[3];
    float4x4 xf;
    uint flags;
    float blend[6];
}

ConstantBuffer<Params_4> cb_4;
StructuredBuffer<float4> inBuf_4;
RWStructuredBuffer<float4> outBuf_4;
Texture2D tex_4;
SamplerState samp_4;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_4[tid.x];
    v += tex_4.SampleLevel(samp_4, v.xy, 0);
    v *= mul(cb_4.xf, v);
    v.x += cb_4.inner[tid.x % 3].a.x + cb_4.blend[0];
    outBuf_4[tid.x] = v;
}

kernel_005.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_5
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_5
{
    Inner_5 inner[3];
    float4x4 xf;
    uint flags;
    float blend[2];
}

ConstantBuffer<Params_5> cb_5;
StructuredBuffer<float4> inBuf_5;
RWStructuredBuffer<float4> outBuf_5;
Texture2D tex_5;
SamplerState samp_5;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_5[tid.x];
    v += tex_5.SampleLevel(samp_5, v.xy, 0);
    v *= mul(cb_5.xf, v);
    v.x += cb_5.inner[tid.x % 3].a.x + cb_5.blend[0];
    outBuf_5[tid.x] = v;
}

kernel_006.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_6
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_6
{
    Inner_6 inner[3];
    float4x4 xf;
    uint flags;
    float blend[3];
}

ConstantBuffer<Params_6> cb_6;
StructuredBuffer<float4> inBuf_6;
RWStructuredBuffer<float4> outBuf_6;
Texture2D tex_6;
SamplerState samp_6;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_6[tid.x];
    v += tex_6.SampleLevel(samp_6, v.xy, 0);
    v *= mul(cb_6.xf, v);
    v.x += cb_6.inner[tid.x % 3].a.x + cb_6.blend[0];
    outBuf_6[tid.x] = v;
}

kernel_007.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_7
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_7
{
    Inner_7 inner[3];
    float4x4 xf;
    uint flags;
    float blend[4];
}

ConstantBuffer<Params_7> cb_7;
StructuredBuffer<float4> inBuf_7;
RWStructuredBuffer<float4> outBuf_7;
Texture2D tex_7;
SamplerState samp_7;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_7[tid.x];
    v += tex_7.SampleLevel(samp_7, v.xy, 0);
    v *= mul(cb_7.xf, v);
    v.x += cb_7.inner[tid.x % 3].a.x + cb_7.blend[0];
    outBuf_7[tid.x] = v;
}

kernel_008.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_8
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_8
{
    Inner_8 inner[3];
    float4x4 xf;
    uint flags;
    float blend[5];
}

ConstantBuffer<Params_8> cb_8;
StructuredBuffer<float4> inBuf_8;
RWStructuredBuffer<float4> outBuf_8;
Texture2D tex_8;
SamplerState samp_8;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_8[tid.x];
    v += tex_8.SampleLevel(samp_8, v.xy, 0);
    v *= mul(cb_8.xf, v);
    v.x += cb_8.inner[tid.x % 3].a.x + cb_8.blend[0];
    outBuf_8[tid.x] = v;
}

kernel_009.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_9
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_9
{
    Inner_9 inner[3];
    float4x4 xf;
    uint flags;
    float blend[6];
}

ConstantBuffer<Params_9> cb_9;
StructuredBuffer<float4> inBuf_9;
RWStructuredBuffer<float4> outBuf_9;
Texture2D tex_9;
SamplerState samp_9;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_9[tid.x];
    v += tex_9.SampleLevel(samp_9, v.xy, 0);
    v *= mul(cb_9.xf, v);
    v.x += cb_9.inner[tid.x % 3].a.x + cb_9.blend[0];
    outBuf_9[tid.x] = v;
}

kernel_010.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_10
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_10
{
    Inner_10 inner[3];
    float4x4 xf;
    uint flags;
    float blend[2];
}

ConstantBuffer<Params_10> cb_10;
StructuredBuffer<float4> inBuf_10;
RWStructuredBuffer<float4> outBuf_10;
Texture2D tex_10;
SamplerState samp_10;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_10[tid.x];
    v += tex_10.SampleLevel(samp_10, v.xy, 0);
    v *= mul(cb_10.xf, v);
    v.x += cb_10.inner[tid.x % 3].a.x + cb_10.blend[0];
    outBuf_10[tid.x] = v;
}

kernel_011.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_11
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_11
{
    Inner_11 inner[3];
    float4x4 xf;
    uint flags;
    float blend[3];
}

ConstantBuffer<Params_11> cb_11;
StructuredBuffer<float4> inBuf_11;
RWStructuredBuffer<float4> outBuf_11;
Texture2D tex_11;
SamplerState samp_11;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_11[tid.x];
    v += tex_11.SampleLevel(samp_11, v.xy, 0);
    v *= mul(cb_11.xf, v);
    v.x += cb_11.inner[tid.x % 3].a.x + cb_11.blend[0];
    outBuf_11[tid.x] = v;
}

kernel_012.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_12
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_12
{
    Inner_12 inner[3];
    float4x4 xf;
    uint flags;
    float blend[4];
}

ConstantBuffer<Params_12> cb_12;
StructuredBuffer<float4> inBuf_12;
RWStructuredBuffer<float4> outBuf_12;
Texture2D tex_12;
SamplerState samp_12;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_12[tid.x];
    v += tex_12.SampleLevel(samp_12, v.xy, 0);
    v *= mul(cb_12.xf, v);
    v.x += cb_12.inner[tid.x % 3].a.x + cb_12.blend[0];
    outBuf_12[tid.x] = v;
}

kernel_013.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_13
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_13
{
    Inner_13 inner[3];
    float4x4 xf;
    uint flags;
    float blend[5];
}

ConstantBuffer<Params_13> cb_13;
StructuredBuffer<float4> inBuf_13;
RWStructuredBuffer<float4> outBuf_13;
Texture2D tex_13;
SamplerState samp_13;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_13[tid.x];
    v += tex_13.SampleLevel(samp_13, v.xy, 0);
    v *= mul(cb_13.xf, v);
    v.x += cb_13.inner[tid.x % 3].a.x + cb_13.blend[0];
    outBuf_13[tid.x] = v;
}

kernel_014.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_14
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_14
{
    Inner_14 inner[3];
    float4x4 xf;
    uint flags;
    float blend[6];
}

ConstantBuffer<Params_14> cb_14;
StructuredBuffer<float4> inBuf_14;
RWStructuredBuffer<float4> outBuf_14;
Texture2D tex_14;
SamplerState samp_14;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_14[tid.x];
    v += tex_14.SampleLevel(samp_14, v.xy, 0);
    v *= mul(cb_14.xf, v);
    v.x += cb_14.inner[tid.x % 3].a.x + cb_14.blend[0];
    outBuf_14[tid.x] = v;
}

kernel_015.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_15
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_15
{
    Inner_15 inner[3];
    float4x4 xf;
    uint flags;
    float blend[2];
}

ConstantBuffer<Params_15> cb_15;
StructuredBuffer<float4> inBuf_15;
RWStructuredBuffer<float4> outBuf_15;
Texture2D tex_15;
SamplerState samp_15;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_15[tid.x];
    v += tex_15.SampleLevel(samp_15, v.xy, 0);
    v *= mul(cb_15.xf, v);
    v.x += cb_15.inner[tid.x % 3].a.x + cb_15.blend[0];
    outBuf_15[tid.x] = v;
}

kernel_016.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_16
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_16
{
    Inner_16 inner[3];
    float4x4 xf;
    uint flags;
    float blend[3];
}

ConstantBuffer<Params_16> cb_16;
StructuredBuffer<float4> inBuf_16;
RWStructuredBuffer<float4> outBuf_16;
Texture2D tex_16;
SamplerState samp_16;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_16[tid.x];
    v += tex_16.SampleLevel(samp_16, v.xy, 0);
    v *= mul(cb_16.xf, v);
    v.x += cb_16.inner[tid.x % 3].a.x + cb_16.blend[0];
    outBuf_16[tid.x] = v;
}

kernel_017.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_17
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_17
{
    Inner_17 inner[3];
    float4x4 xf;
    uint flags;
    float blend[4];
}

ConstantBuffer<Params_17> cb_17;
StructuredBuffer<float4> inBuf_17;
RWStructuredBuffer<float4> outBuf_17;
Texture2D tex_17;
SamplerState samp_17;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_17[tid.x];
    v += tex_17.SampleLevel(samp_17, v.xy, 0);
    v *= mul(cb_17.xf, v);
    v.x += cb_17.inner[tid.x % 3].a.x + cb_17.blend[0];
    outBuf_17[tid.x] = v;
}

kernel_018.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_18
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_18
{
    Inner_18 inner[3];
    float4x4 xf;
    uint flags;
    float blend[5];
}

ConstantBuffer<Params_18> cb_18;
StructuredBuffer<float4> inBuf_18;
RWStructuredBuffer<float4> outBuf_18;
Texture2D tex_18;
SamplerState samp_18;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_18[tid.x];
    v += tex_18.SampleLevel(samp_18, v.xy, 0);
    v *= mul(cb_18.xf, v);
    v.x += cb_18.inner[tid.x % 3].a.x + cb_18.blend[0];
    outBuf_18[tid.x] = v;
}

kernel_019.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_19
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_19
{
    Inner_19 inner[3];
    float4x4 xf;
    uint flags;
    float blend[6];
}

ConstantBuffer<Params_19> cb_19;
StructuredBuffer<float4> inBuf_19;
RWStructuredBuffer<float4> outBuf_19;
Texture2D tex_19;
SamplerState samp_19;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_19[tid.x];
    v += tex_19.SampleLevel(samp_19, v.xy, 0);
    v *= mul(cb_19.xf, v);
    v.x += cb_19.inner[tid.x % 3].a.x + cb_19.blend[0];
    outBuf_19[tid.x] = v;
}

kernel_020.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_20
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_20
{
    Inner_20 inner[3];
    float4x4 xf;
    uint flags;
    float blend[2];
}

ConstantBuffer<Params_20> cb_20;
StructuredBuffer<float4> inBuf_20;
RWStructuredBuffer<float4> outBuf_20;
Texture2D tex_20;
SamplerState samp_20;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_20[tid.x];
    v += tex_20.SampleLevel(samp_20, v.xy, 0);
    v *= mul(cb_20.xf, v);
    v.x += cb_20.inner[tid.x % 3].a.x + cb_20.blend[0];
    outBuf_20[tid.x] = v;
}

kernel_021.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_21
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_21
{
    Inner_21 inner[3];
    float4x4 xf;
    uint flags;
    float blend[3];
}

ConstantBuffer<Params_21> cb_21;
StructuredBuffer<float4> inBuf_21;
RWStructuredBuffer<float4> outBuf_21;
Texture2D tex_21;
SamplerState samp_21;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_21[tid.x];
    v += tex_21.SampleLevel(samp_21, v.xy, 0);
    v *= mul(cb_21.xf, v);
    v.x += cb_21.inner[tid.x % 3].a.x + cb_21.blend[0];
    outBuf_21[tid.x] = v;
}

kernel_022.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_22
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_22
{
    Inner_22 inner[3];
    float4x4 xf;
    uint flags;
    float blend[4];
}

ConstantBuffer<Params_22> cb_22;
StructuredBuffer<float4> inBuf_22;
RWStructuredBuffer<float4> outBuf_22;
Texture2D tex_22;
SamplerState samp_22;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_22[tid.x];
    v += tex_22.SampleLevel(samp_22, v.xy, 0);
    v *= mul(cb_22.xf, v);
    v.x += cb_22.inner[tid.x % 3].a.x + cb_22.blend[0];
    outBuf_22[tid.x] = v;
}

kernel_023.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_23
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_23
{
    Inner_23 inner[3];
    float4x4 xf;
    uint flags;
    float blend[5];
}

ConstantBuffer<Params_23> cb_23;
StructuredBuffer<float4> inBuf_23;
RWStructuredBuffer<float4> outBuf_23;
Texture2D tex_23;
SamplerState samp_23;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_23[tid.x];
    v += tex_23.SampleLevel(samp_23, v.xy, 0);
    v *= mul(cb_23.xf, v);
    v.x += cb_23.inner[tid.x % 3].a.x + cb_23.blend[0];
    outBuf_23[tid.x] = v;
}

kernel_024.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_24
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_24
{
    Inner_24 inner[3];
    float4x4 xf;
    uint flags;
    float blend[6];
}

ConstantBuffer<Params_24> cb_24;
StructuredBuffer<float4> inBuf_24;
RWStructuredBuffer<float4> outBuf_24;
Texture2D tex_24;
SamplerState samp_24;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_24[tid.x];
    v += tex_24.SampleLevel(samp_24, v.xy, 0);
    v *= mul(cb_24.xf, v);
    v.x += cb_24.inner[tid.x % 3].a.x + cb_24.blend[0];
    outBuf_24[tid.x] = v;
}

kernel_025.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_25
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_25
{
    Inner_25 inner[3];
    float4x4 xf;
    uint flags;
    float blend[2];
}

ConstantBuffer<Params_25> cb_25;
StructuredBuffer<float4> inBuf_25;
RWStructuredBuffer<float4> outBuf_25;
Texture2D tex_25;
SamplerState samp_25;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_25[tid.x];
    v += tex_25.SampleLevel(samp_25, v.xy, 0);
    v *= mul(cb_25.xf, v);
    v.x += cb_25.inner[tid.x % 3].a.x + cb_25.blend[0];
    outBuf_25[tid.x] = v;
}

kernel_026.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_26
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_26
{
    Inner_26 inner[3];
    float4x4 xf;
    uint flags;
    float blend[3];
}

ConstantBuffer<Params_26> cb_26;
StructuredBuffer<float4> inBuf_26;
RWStructuredBuffer<float4> outBuf_26;
Texture2D tex_26;
SamplerState samp_26;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_26[tid.x];
    v += tex_26.SampleLevel(samp_26, v.xy, 0);
    v *= mul(cb_26.xf, v);
    v.x += cb_26.inner[tid.x % 3].a.x + cb_26.blend[0];
    outBuf_26[tid.x] = v;
}

kernel_027.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_27
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_27
{
    Inner_27 inner[3];
    float4x4 xf;
    uint flags;
    float blend[4];
}

ConstantBuffer<Params_27> cb_27;
StructuredBuffer<float4> inBuf_27;
RWStructuredBuffer<float4> outBuf_27;
Texture2D tex_27;
SamplerState samp_27;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_27[tid.x];
    v += tex_27.SampleLevel(samp_27, v.xy, 0);
    v *= mul(cb_27.xf, v);
    v.x += cb_27.inner[tid.x % 3].a.x + cb_27.blend[0];
    outBuf_27[tid.x] = v;
}

kernel_028.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_28
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_28
{
    Inner_28 inner[3];
    float4x4 xf;
    uint flags;
    float blend[5];
}

ConstantBuffer<Params_28> cb_28;
StructuredBuffer<float4> inBuf_28;
RWStructuredBuffer<float4> outBuf_28;
Texture2D tex_28;
SamplerState samp_28;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_28[tid.x];
    v += tex_28.SampleLevel(samp_28, v.xy, 0);
    v *= mul(cb_28.xf, v);
    v.x += cb_28.inner[tid.x % 3].a.x + cb_28.blend[0];
    outBuf_28[tid.x] = v;
}

kernel_029.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_29
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_29
{
    Inner_29 inner[3];
    float4x4 xf;
    uint flags;
    float blend[6];
}

ConstantBuffer<Params_29> cb_29;
StructuredBuffer<float4> inBuf_29;
RWStructuredBuffer<float4> outBuf_29;
Texture2D tex_29;
SamplerState samp_29;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_29[tid.x];
    v += tex_29.SampleLevel(samp_29, v.xy, 0);
    v *= mul(cb_29.xf, v);
    v.x += cb_29.inner[tid.x % 3].a.x + cb_29.blend[0];
    outBuf_29[tid.x] = v;
}

kernel_030.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_30
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_30
{
    Inner_30 inner[3];
    float4x4 xf;
    uint flags;
    float blend[2];
}

ConstantBuffer<Params_30> cb_30;
StructuredBuffer<float4> inBuf_30;
RWStructuredBuffer<float4> outBuf_30;
Texture2D tex_30;
SamplerState samp_30;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_30[tid.x];
    v += tex_30.SampleLevel(samp_30, v.xy, 0);
    v *= mul(cb_30.xf, v);
    v.x += cb_30.inner[tid.x % 3].a.x + cb_30.blend[0];
    outBuf_30[tid.x] = v;
}

kernel_031.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_31
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_31
{
    Inner_31 inner[3];
    float4x4 xf;
    uint flags;
    float blend[3];
}

ConstantBuffer<Params_31> cb_31;
StructuredBuffer<float4> inBuf_31;
RWStructuredBuffer<float4> outBuf_31;
Texture2D tex_31;
SamplerState samp_31;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_31[tid.x];
    v += tex_31.SampleLevel(samp_31, v.xy, 0);
    v *= mul(cb_31.xf, v);
    v.x += cb_31.inner[tid.x % 3].a.x + cb_31.blend[0];
    outBuf_31[tid.x] = v;
}

kernel_032.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_32
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_32
{
    Inner_32 inner[3];
    float4x4 xf;
    uint flags;
    float blend[4];
}

ConstantBuffer<Params_32> cb_32;
StructuredBuffer<float4> inBuf_32;
RWStructuredBuffer<float4> outBuf_32;
Texture2D tex_32;
SamplerState samp_32;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_32[tid.x];
    v += tex_32.SampleLevel(samp_32, v.xy, 0);
    v *= mul(cb_32.xf, v);
    v.x += cb_32.inner[tid.x % 3].a.x + cb_32.blend[0];
    outBuf_32[tid.x] = v;
}

kernel_033.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_33
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_33
{
    Inner_33 inner[3];
    float4x4 xf;
    uint flags;
    float blend[5];
}

ConstantBuffer<Params_33> cb_33;
StructuredBuffer<float4> inBuf_33;
RWStructuredBuffer<float4> outBuf_33;
Texture2D tex_33;
SamplerState samp_33;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_33[tid.x];
    v += tex_33.SampleLevel(samp_33, v.xy, 0);
    v *= mul(cb_33.xf, v);
    v.x += cb_33.inner[tid.x % 3].a.x + cb_33.blend[0];
    outBuf_33[tid.x] = v;
}

kernel_034.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_34
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_34
{
    Inner_34 inner[3];
    float4x4 xf;
    uint flags;
    float blend[6];
}

ConstantBuffer<Params_34> cb_34;
StructuredBuffer<float4> inBuf_34;
RWStructuredBuffer<float4> outBuf_34;
Texture2D tex_34;
SamplerState samp_34;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_34[tid.x];
    v += tex_34.SampleLevel(samp_34, v.xy, 0);
    v *= mul(cb_34.xf, v);
    v.x += cb_34.inner[tid.x % 3].a.x + cb_34.blend[0];
    outBuf_34[tid.x] = v;
}

kernel_035.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_35
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_35
{
    Inner_35 inner[3];
    float4x4 xf;
    uint flags;
    float blend[2];
}

ConstantBuffer<Params_35> cb_35;
StructuredBuffer<float4> inBuf_35;
RWStructuredBuffer<float4> outBuf_35;
Texture2D tex_35;
SamplerState samp_35;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_35[tid.x];
    v += tex_35.SampleLevel(samp_35, v.xy, 0);
    v *= mul(cb_35.xf, v);
    v.x += cb_35.inner[tid.x % 3].a.x + cb_35.blend[0];
    outBuf_35[tid.x] = v;
}

kernel_036.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_36
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_36
{
    Inner_36 inner[3];
    float4x4 xf;
    uint flags;
    float blend[3];
}

ConstantBuffer<Params_36> cb_36;
StructuredBuffer<float4> inBuf_36;
RWStructuredBuffer<float4> outBuf_36;
Texture2D tex_36;
SamplerState samp_36;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_36[tid.x];
    v += tex_36.SampleLevel(samp_36, v.xy, 0);
    v *= mul(cb_36.xf, v);
    v.x += cb_36.inner[tid.x % 3].a.x + cb_36.blend[0];
    outBuf_36[tid.x] = v;
}

kernel_037.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_37
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_37
{
    Inner_37 inner[3];
    float4x4 xf;
    uint flags;
    float blend[4];
}

ConstantBuffer<Params_37> cb_37;
StructuredBuffer<float4> inBuf_37;
RWStructuredBuffer<float4> outBuf_37;
Texture2D tex_37;
SamplerState samp_37;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_37[tid.x];
    v += tex_37.SampleLevel(samp_37, v.xy, 0);
    v *= mul(cb_37.xf, v);
    v.x += cb_37.inner[tid.x % 3].a.x + cb_37.blend[0];
    outBuf_37[tid.x] = v;
}

kernel_038.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_38
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_38
{
    Inner_38 inner[3];
    float4x4 xf;
    uint flags;
    float blend[5];
}

ConstantBuffer<Params_38> cb_38;
StructuredBuffer<float4> inBuf_38;
RWStructuredBuffer<float4> outBuf_38;
Texture2D tex_38;
SamplerState samp_38;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_38[tid.x];
    v += tex_38.SampleLevel(samp_38, v.xy, 0);
    v *= mul(cb_38.xf, v);
    v.x += cb_38.inner[tid.x % 3].a.x + cb_38.blend[0];
    outBuf_38[tid.x] = v;
}

kernel_039.slang (32 lines)

// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
struct Inner_39
{
    float4 a;
    float3 b;
    int2 c[4];
}

struct Params_39
{
    Inner_39 inner[3];
    float4x4 xf;
    uint flags;
    float blend[6];
}

ConstantBuffer<Params_39> cb_39;
StructuredBuffer<float4> inBuf_39;
RWStructuredBuffer<float4> outBuf_39;
Texture2D tex_39;
SamplerState samp_39;

[shader("compute")]
[numthreads(8,8,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
    float4 v = inBuf_39[tid.x];
    v += tex_39.SampleLevel(samp_39, v.xy, 0);
    v *= mul(cb_39.xf, v);
    v.x += cb_39.inner[tid.x % 3].a.x + cb_39.blend[0];
    outBuf_39[tid.x] = v;
}