another mips16 puzzle

i'm trying to formulate the optimal way to do comparison testing for mips 16.

on mips32 there are no condition codes.

you can test a<b and place the result in a register in mip32.

on mips16 you can do the same, however, the register is always T8==24.

T8 is not directly accessible by most mips16 instructions, but can be directly
moved to a generally accessible mips16 register, and can also used in tests for a conditional
branch.

later you can conditionally branch based on this register

it's possible for me to make a pseudo instruction which needs a virtual register and always do something like:

T8 = a < b; VR = T8;

But that can be very inefficient.

if (a < b) ...

Does not need a virtual register since the condition branch is going to implicitly use T8.

Also, there is the problem of spilling T8.

Spilling these non directly accessible mips16 registers presents a problem because you need to move them to a generally accessible register first in order to do that.

Then there is the possibility of

b = a < b;
if (b)....

....
if (b) ...

possibly never storing b and just keep testing against T8.