From: | George Neuner <gneuner2@comcast.net> |
Newsgroups: | comp.compilers |
Date: | Fri, 04 Nov 2011 13:27:43 -0400 |
Organization: | A noiseless patient Spider |
References: | 11-10-019 11-11-004 11-11-005 11-11-014 11-11-018 |
Keywords: | optimize |
Posted-Date: | 04 Nov 2011 16:06:03 EDT |
On Thu, 3 Nov 2011 03:20:32 +0000 (UTC), Kaz Kylheku <kaz@kylheku.com>
wrote:
>On 2011-11-02, George Neuner <gneuner2@comcast.net> wrote:
>> Yes. But the compiler can't count on register renaming ... it can see
>> only the architectural named registers. If the code in question had
>> copied Rx-> Ry then renaming would have been possible, but instead the
>> code performed a constant load to each register. No possibility of
>> rename sharing there.
>
>If the register holds a value that is used, but not clobbered, then renaming is
>moot. The two blocks of code both depend on rx being zero, and so nothing is
>achieved by splitting the instruction set register into two physical registers.
Yes. But the original question involve 2 registers both being loaded
with the same constant value. The OP asked why use a 2nd register. I
gave a couple of reasons why that might be, and then Glen brought up
renaming.
We haven't seen the actual code, but from the description it appears
that the compiler could have reused the original register but instead
chose to use a different one. We also don't know what CPU, but
regardless, renaming only might have been done if the compiler had
used a copy instruction. With the use of constant loads there was no
possibility of renaming being performed.
George
Return to the
comp.compilers page.
Search the
comp.compilers archives again.