WRT the test, the general philosophy is to keep `arithmetic-float.shader_test` and `arithmetic-float-uniform.shader_test` synchronized, so that the correctness of the constant propagation pass is checked too. Actually, I got it backward: the test you wrote should go into `arithmetic-float-uniform.shader_test`, and the test I wrote should go to `arithmetic-float.shader_test`.
Shouldn't it all go to uniform.shader_test then if it's using uniforms?