For the record, the following shader: ```hlsl uniform float A, B, X;
float4 main() : sv_target { return smoothstep(A, B, X); } ```
results in the following instructions in the native compiler: ```hlsl // With // A = cb0[0].x // B = cb0[0].y // X = cb0[0].z
// r0.x = B - A // r0.y = X - A add r0.xy, -cb0[0].xxxx, cb0[0].yzyy
// r0.x = 1 / r0.x div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.x
// r0.x = saturate(r0.x * r0.y) mul_sat r0.x, r0.x, r0.y
// r0.y = 2 * r0.x - 3 mad r0.y, r0.x, l(-2.000000), l(3.000000)
// r0.x = r0.x * r0.x mul r0.x, r0.x, r0.x
// result = r0.x * r0.y mul o0.xyzw, r0.xxxx, r0.yyyy ```
which is what I try to replicate (we don't have `mul_sat` yet).