This validates and lowers arguments to inline asm nodes which have the constraints I, J & K, with the following semantics (equivalent to GCC):
I: Any 12-bit signed immediate.
J: Immediate integer zero only.
K: Any 5-bit unsigned immediate.
Note that GCC also implements 'f' for floating point register and 'A' for address-only operand. These are not implemented here because:
- It appears trivial to implement the floating point register constraint, however since floating point registers are not yet recognised by the calling convention the call to the inline asm node cannot be lowered.
- I'm not yet certain how to implement an 'address-only' operand and I'd rather get the above constraints done first and add it later.