n differentiable functions arranged in bounded-depth groups, each group differentiated in both forward and reverse mode, plus a differentiable generic. Stresses the autodiff IR transform (inside linkAndOptimizeIR) and the front-end checking of [Differentiable]. Scales by breadth. Scaling null: n scales group breadth with depth bounded by _GROUP_DEPTH, so ideal autodiff cost is O(n).
bucket: autodiff · compile mode: target · flags: -target spirv -emit-spirv-directly · default N: 200
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.
Overall compileInner: 793.2 → 765.1 ms -3.5% (2026-07-30 7c58a326b → 2026-08-29 28c755b09)
Contributors — the mutually-exclusive phase buckets (named leaves + (self) residuals) that tile compileInner; 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 |
|---|---|---|---|
| linkAndOptimizeIR (self) | -10.2 ms | -17.9% | -1.3pp |
| generateOutput (self) | -5.6 ms | -2.0% | -0.7pp |
| specializeModule | -2.7 ms | -1.1% | -0.3pp |
| legalizeResourceTypes | -2.5 ms | -33.9% | -0.3pp |
| legalizeExistentialTypeLayout | -2.5 ms | -28.4% | -0.3pp |
| SemanticChecking | -2.0 ms | -2.7% | -0.3pp |
| (remaining 9 buckets) | -2.6 ms | – | -0.3pp |
| loadBuiltinModule | -6.8 ms | -6.5% | – |
| readSerializedModuleAST | -4.2 ms | -12.3% | – |
| readSerializedModuleIR | -2.9 ms | -5.5% | – |
Largest day steps (≥5% of the previous day, both directions; bisect with git log <c0>..<c1> -- source/):
| boundary | % vs prev day | commits | top buckets (own %) |
|---|---|---|---|
| none | |||
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 autodiff --label repro --gen-dir repro-autodiff
the complete compiled source (N = 200), shown in full
// AUTO-GENERATED by perf-suite/workloads.py - do not edit by hand.
RWStructuredBuffer<float> outBuf;
[Differentiable]
float leaf(float x) { return x * x + sin(x) * cos(x); }
[Differentiable]
float chain_0(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_1(float x) { return chain_0(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_2(float x) { return chain_1(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_3(float x) { return chain_2(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_4(float x) { return chain_3(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_5(float x) { return chain_4(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_6(float x) { return chain_5(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_7(float x) { return chain_6(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_8(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_9(float x) { return chain_8(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_10(float x) { return chain_9(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_11(float x) { return chain_10(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_12(float x) { return chain_11(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_13(float x) { return chain_12(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_14(float x) { return chain_13(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_15(float x) { return chain_14(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_16(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_17(float x) { return chain_16(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_18(float x) { return chain_17(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_19(float x) { return chain_18(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_20(float x) { return chain_19(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_21(float x) { return chain_20(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_22(float x) { return chain_21(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_23(float x) { return chain_22(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_24(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_25(float x) { return chain_24(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_26(float x) { return chain_25(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_27(float x) { return chain_26(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_28(float x) { return chain_27(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_29(float x) { return chain_28(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_30(float x) { return chain_29(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_31(float x) { return chain_30(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_32(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_33(float x) { return chain_32(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_34(float x) { return chain_33(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_35(float x) { return chain_34(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_36(float x) { return chain_35(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_37(float x) { return chain_36(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_38(float x) { return chain_37(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_39(float x) { return chain_38(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_40(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_41(float x) { return chain_40(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_42(float x) { return chain_41(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_43(float x) { return chain_42(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_44(float x) { return chain_43(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_45(float x) { return chain_44(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_46(float x) { return chain_45(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_47(float x) { return chain_46(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_48(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_49(float x) { return chain_48(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_50(float x) { return chain_49(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_51(float x) { return chain_50(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_52(float x) { return chain_51(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_53(float x) { return chain_52(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_54(float x) { return chain_53(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_55(float x) { return chain_54(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_56(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_57(float x) { return chain_56(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_58(float x) { return chain_57(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_59(float x) { return chain_58(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_60(float x) { return chain_59(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_61(float x) { return chain_60(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_62(float x) { return chain_61(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_63(float x) { return chain_62(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_64(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_65(float x) { return chain_64(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_66(float x) { return chain_65(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_67(float x) { return chain_66(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_68(float x) { return chain_67(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_69(float x) { return chain_68(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_70(float x) { return chain_69(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_71(float x) { return chain_70(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_72(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_73(float x) { return chain_72(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_74(float x) { return chain_73(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_75(float x) { return chain_74(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_76(float x) { return chain_75(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_77(float x) { return chain_76(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_78(float x) { return chain_77(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_79(float x) { return chain_78(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_80(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_81(float x) { return chain_80(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_82(float x) { return chain_81(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_83(float x) { return chain_82(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_84(float x) { return chain_83(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_85(float x) { return chain_84(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_86(float x) { return chain_85(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_87(float x) { return chain_86(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_88(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_89(float x) { return chain_88(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_90(float x) { return chain_89(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_91(float x) { return chain_90(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_92(float x) { return chain_91(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_93(float x) { return chain_92(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_94(float x) { return chain_93(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_95(float x) { return chain_94(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_96(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_97(float x) { return chain_96(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_98(float x) { return chain_97(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_99(float x) { return chain_98(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_100(float x) { return chain_99(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_101(float x) { return chain_100(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_102(float x) { return chain_101(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_103(float x) { return chain_102(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_104(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_105(float x) { return chain_104(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_106(float x) { return chain_105(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_107(float x) { return chain_106(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_108(float x) { return chain_107(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_109(float x) { return chain_108(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_110(float x) { return chain_109(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_111(float x) { return chain_110(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_112(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_113(float x) { return chain_112(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_114(float x) { return chain_113(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_115(float x) { return chain_114(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_116(float x) { return chain_115(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_117(float x) { return chain_116(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_118(float x) { return chain_117(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_119(float x) { return chain_118(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_120(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_121(float x) { return chain_120(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_122(float x) { return chain_121(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_123(float x) { return chain_122(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_124(float x) { return chain_123(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_125(float x) { return chain_124(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_126(float x) { return chain_125(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_127(float x) { return chain_126(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_128(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_129(float x) { return chain_128(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_130(float x) { return chain_129(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_131(float x) { return chain_130(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_132(float x) { return chain_131(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_133(float x) { return chain_132(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_134(float x) { return chain_133(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_135(float x) { return chain_134(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_136(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_137(float x) { return chain_136(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_138(float x) { return chain_137(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_139(float x) { return chain_138(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_140(float x) { return chain_139(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_141(float x) { return chain_140(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_142(float x) { return chain_141(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_143(float x) { return chain_142(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_144(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_145(float x) { return chain_144(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_146(float x) { return chain_145(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_147(float x) { return chain_146(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_148(float x) { return chain_147(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_149(float x) { return chain_148(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_150(float x) { return chain_149(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_151(float x) { return chain_150(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_152(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_153(float x) { return chain_152(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_154(float x) { return chain_153(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_155(float x) { return chain_154(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_156(float x) { return chain_155(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_157(float x) { return chain_156(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_158(float x) { return chain_157(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_159(float x) { return chain_158(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_160(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_161(float x) { return chain_160(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_162(float x) { return chain_161(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_163(float x) { return chain_162(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_164(float x) { return chain_163(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_165(float x) { return chain_164(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_166(float x) { return chain_165(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_167(float x) { return chain_166(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_168(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_169(float x) { return chain_168(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_170(float x) { return chain_169(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_171(float x) { return chain_170(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_172(float x) { return chain_171(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_173(float x) { return chain_172(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_174(float x) { return chain_173(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_175(float x) { return chain_174(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_176(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_177(float x) { return chain_176(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_178(float x) { return chain_177(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_179(float x) { return chain_178(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_180(float x) { return chain_179(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_181(float x) { return chain_180(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_182(float x) { return chain_181(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_183(float x) { return chain_182(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_184(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_185(float x) { return chain_184(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_186(float x) { return chain_185(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_187(float x) { return chain_186(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_188(float x) { return chain_187(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_189(float x) { return chain_188(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_190(float x) { return chain_189(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_191(float x) { return chain_190(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_192(float x) { return leaf(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_193(float x) { return chain_192(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_194(float x) { return chain_193(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_195(float x) { return chain_194(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_196(float x) { return chain_195(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_197(float x) { return chain_196(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_198(float x) { return chain_197(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
float chain_199(float x) { return chain_198(x) * 1.0009 + sin(x) * 0.5 - cos(x) * 0.25; }
[Differentiable]
T poly<T : IDifferentiable & IFloat>(T x) { return x * x * x + x; }
[shader("compute")]
[numthreads(1,1,1)]
void computeMain(uint3 tid : SV_DispatchThreadID)
{
float x = outBuf[tid.x];
float acc = 0.0;
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_7)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_7)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_15)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_15)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_23)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_23)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_31)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_31)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_39)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_39)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_47)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_47)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_55)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_55)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_63)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_63)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_71)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_71)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_79)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_79)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_87)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_87)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_95)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_95)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_103)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_103)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_111)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_111)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_119)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_119)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_127)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_127)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_135)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_135)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_143)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_143)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_151)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_151)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_159)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_159)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_167)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_167)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_175)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_175)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_183)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_183)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_191)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_191)(diffPair(x, 1.0)).d; }
{ var dp = diffPair(x, 1.0);
bwd_diff(chain_199)(dp, 1.0); acc += dp.d;
acc += fwd_diff(chain_199)(diffPair(x, 1.0)).d; }
acc += fwd_diff(poly<float>)(diffPair(x, 1.0)).d;
outBuf[0] = acc;
}