How to model unusual calling convention in backend?

In MMIX there are 256 general purpose registers $0$255, the function call instruction PUSHJ $X,callee, in a simplified situation, will push the first X general purpose registers to stack, and let registers $X+1, $X+2… be the new $0, $1… It brings difficulties to implement the CallLowering interface, because the value of X cannot be determined in this stage until register allocation. So, is it possible in LLVM to model this unusual calling convention?
Thanks in advance!