[pixel shader] float a; float4 main() : sv_target { float res = 0; for (int i = 0; i < 10; ++i) { res += a; // The temp copy of 'a' must reserve its registers for the rest of the loop. // It shall not be overwritten. } return res; } [test] uniform 0 float 5.0 todo(sm>=6) draw quad probe all rgba (50.0, 50.0, 50.0, 50.0) [pixel shader] float a; float4 main() : sv_target { float res = 0; for (int i = 0; i < 10; ++i) { res += a; // The temp copy of 'a' must reserve its registers for the rest of the loop. // It shall not be overwritten. i++; } return res; } [test] uniform 0 float 4.0 todo(sm>=6) draw quad probe all rgba (20.0, 20.0, 20.0, 20.0) [pixel shader] float a; float4 main() : sv_target { int i = 0; float res = a; while (i < 10) { if (i == 5) { res += 0.1f; break; } res += 1.0f; i++; if (i == 2) continue; res += 100.f; } return res; } [test] uniform 0 float 4.0 todo(sm>=6) draw quad probe all rgba (409.1, 409.1, 409.1, 409.1) [pixel shader] float a; float4 main() : sv_target { int i = 0; float res = a; do { res += 1.0f; if (i == 5) { res += 0.1f; break; } i++; if (i == 2) continue; res += 100.f; } while (i < 10); return res; } [test] uniform 0 float 4.0 todo(sm>=6) draw quad probe all rgba (410.1, 410.1, 410.1, 410.1)