This patch adds support for constraints f, l, I, K according
to [1]. The remain constraints (k, m, ZB, ZC) will be added
later as they are a little more complex than the others.
f: A floating-point register (if available).
l: A signed 16-bit constant.
I: A signed 12-bit constant (for arithmetic instructions).
K: An unsigned 12-bit constant (for logic instructions).
For now, no need to support register alias (e.g. $a0) in llvm as
clang will correctly decode the usage of register name aliases into
their official names. And AFAIK, the not yet upstreamed rustc for
LoongArch will always use official register names (e.g. $r4).
[1] https://gcc.gnu.org/onlinedocs/gccint/Machine-Constraints.html
Can't you just clip the $, upper-case and match against some table-gen'd names?