I got a little carried away and checked a few more variants. It also supports "L" and "UL" in all case combinations. Not sure if we need to support that right away, but seems harmless to have it.
While "L" part looks meaningless, "U" does for unsigned constant type. You can check that like this:
``` float4 func(int i) { return float4(1, 0, 0, 0); }
float4 func(uint i) { return float4(2, 0, 0, 0); }
float4 main() : sv_target { return func(1u); } ```
It's unable to find correct overload with "1" or "1L" though.