`n` functions, each a cascade of cross-type conversions: scalar widening (int/uint -> float), splats, mixed initializer lists (per-element coercion), vector compose/truncate, and explicit narrowing. Stresses the coercion / conversion-cost engine in semantic checking rather than operator overloading.
bucket: typecheck · compile mode: module · flags: (none) · default N: 600
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.
exact compiled source (N = 600); long files show the first 40 lines, the area around computeMain (±40), and the last 40 lines (gaps elided)
// AUTO-GENERATED by perf-suite/workloads.py — do not edit by hand.
RWStructuredBuffer<float> outBuf;
float conv_0()
{
int i = 0; uint u = 0u; float f = 0.0;
float a = i;
float b = u;
float2 v2 = f;
float3 v3 = float3(i, u, f);
float4 v4 = float4(v3, a);
int2 iv = int2(v2);
float3 w = v4.xyz;
return a + b + v2.x + v3.y + v4.w + float(iv.x) + w.z;
}
float conv_1()
{
int i = 1; uint u = 1u; float f = 1.0;
float a = i;
float b = u;
float2 v2 = f;
float3 v3 = float3(i, u, f);
float4 v4 = float4(v3, a);
int2 iv = int2(v2);
float3 w = v4.xyz;
return a + b + v2.x + v3.y + v4.w + float(iv.x) + w.z;
}
float conv_2()
{
int i = 2; uint u = 2u; float f = 2.0;
float a = i;
float b = u;
float2 v2 = f;
float3 v3 = float3(i, u, f);
float4 v4 = float4(v3, a);
int2 iv = int2(v2);
float3 w = v4.xyz;
return a + b + v2.x + v3.y + v4.w + float(iv.x) + w.z;
}
float conv_3()
// … 7126 lines omitted …
}
float conv_597()
{
int i = 2; uint u = 2u; float f = 3.0;
float a = i;
float b = u;
float2 v2 = f;
float3 v3 = float3(i, u, f);
float4 v4 = float4(v3, a);
int2 iv = int2(v2);
float3 w = v4.xyz;
return a + b + v2.x + v3.y + v4.w + float(iv.x) + w.z;
}
float conv_598()
{
int i = 3; uint u = 3u; float f = 4.0;
float a = i;
float b = u;
float2 v2 = f;
float3 v3 = float3(i, u, f);
float4 v4 = float4(v3, a);
int2 iv = int2(v2);
float3 w = v4.xyz;
return a + b + v2.x + v3.y + v4.w + float(iv.x) + w.z;
}
float conv_599()
{
int i = 4; uint u = 4u; float f = 5.0;
float a = i;
float b = u;
float2 v2 = f;
float3 v3 = float3(i, u, f);
float4 v4 = float4(v3, a);
int2 iv = int2(v2);
float3 w = v4.xyz;
return a + b + v2.x + v3.y + v4.w + float(iv.x) + w.z;
}
[shader("compute")]
[numthreads(1,1,1)]
void computeMain()
{
float acc = 0.0;
acc += conv_0();
acc += conv_1();
acc += conv_2();
acc += conv_3();
acc += conv_4();
acc += conv_5();
acc += conv_6();
acc += conv_7();
acc += conv_8();
acc += conv_9();
acc += conv_10();
acc += conv_11();
acc += conv_12();
acc += conv_13();
acc += conv_14();
acc += conv_15();
acc += conv_16();
acc += conv_17();
acc += conv_18();
acc += conv_19();
acc += conv_20();
acc += conv_21();
acc += conv_22();
acc += conv_23();
acc += conv_24();
acc += conv_25();
acc += conv_26();
acc += conv_27();
acc += conv_28();
acc += conv_29();
acc += conv_30();
acc += conv_31();
acc += conv_32();
acc += conv_33();
acc += conv_34();
acc += conv_35();
acc += conv_36();
acc += conv_37();
acc += conv_38();
acc += conv_39();
acc += conv_40();
acc += conv_41();
acc += conv_42();
acc += conv_43();
acc += conv_44();
acc += conv_45();
acc += conv_46();
acc += conv_47();
acc += conv_48();
acc += conv_49();
acc += conv_50();
acc += conv_51();
acc += conv_52();
acc += conv_53();
acc += conv_54();
acc += conv_55();
acc += conv_56();
acc += conv_57();
acc += conv_58();
acc += conv_59();
acc += conv_60();
acc += conv_61();
acc += conv_62();
acc += conv_63();
outBuf[0] = acc;
}