Subzero: Fix srem.i8/urem.i8 lowering for x86-64.

The problem was that the lowering sequence might lead to the rem result %ah being directly moved into an 8-bit register other than al/bl/cl/dl/ah/bh/ch/dh.  This is not encodable, and attempting to encode it leads to actually moving from %spl instead of %ah.

The machinery to handle this was already available - copy through a temporary with register class RCX86_IsAhRcvr.  So this was just a matter of hooking it up for srem/urem.

This CL also requires relaxing some checks in the register allocator for when the -reg-reserve option is used.

BUG= https://bugs.chromium.org/p/nativeclient/issues/detail?id=4370
R=jpp@chromium.org

Review URL: https://codereview.chromium.org/1909853002 .
4 files changed