Bernd Schmidt <ber...@codesourcery.com> writes:
> On 09/25/11 19:16, Richard Sandiford wrote:
>> The last bit is indirect, via a new HARD_REG_SET called operand_reg_set.
>> And this set is the reason why I'm sending the patch now.  The MIPS16 port
>> has always had a problem with the HI and LO registers: they can only be
>> set by multiplication and division instructions, and only read by MFHI
>> and MFLO.  Unlike normal MIPS, there are no MTHI and MTLO instructions.
> [...]
>  >  Now that we use pressure classes
>> instead (a good thing), I'm finally going to try to fix this "properly".
>> And that means (a) fixing HI and LO and (b) stopping them from being
>> treated as register operands.  (b) is important because if we start
>> out with this (valid) instruction before reload:
>
> The only slightly nonobvious thing about this is that mfhi/mflo can't
> have their operand represented using a register_operand. I haven't
> looked; I assume that's the case. Ok.

Right.  The follow-up MIPS patch (which I've been sitting on, I suppose
I should post it when I get home, sorry) removes HI and LO from the new
operand_reg_set and extends move_operand to explicitly allow LO.

A lot of the multiplication patterns need rejigging to expose LO early
when required, so it's not pretty...

Richard

Reply via email to