Treat it like a storage class, not as a compiler hint

Register int X["R8"]
Or perhaps
Register int X[0] where [N] is the register file index. The issue is calling conventions. But allow the developer to shoot themselves in the foot if they choose.

#pragma register(RAX)
[[register:RAX]]

Etc etc