Re: How to eliminate redundant constant move instructions

George Neuner <gneuner2@comcast.net>
Fri, 04 Nov 2011 13:27:43 -0400

          From comp.compilers

Related articles
[7 earlier articles]
Re: How to eliminate redundant constant move instructions amker.cheng@gmail.com (amker) (2011-11-01)
Re: How to eliminate redundant constant move instructions amker.cheng@gmail.com (amker) (2011-11-01)
Re: How to eliminate redundant constant move instructions gneuner2@comcast.net (George Neuner) (2011-11-02)
Re: How to eliminate redundant constant move instructions acolvin@efunct.com (mac) (2011-11-03)
Re: How to eliminate redundant constant move instructions kaz@kylheku.com (Kaz Kylheku) (2011-11-03)
Re: How to eliminate redundant constant move instructions gah@ugcs.caltech.edu (glen herrmannsfeldt) (2011-11-03)
Re: How to eliminate redundant constant move instructions gneuner2@comcast.net (George Neuner) (2011-11-04)
Re: How to eliminate redundant constant move instructions gah@ugcs.caltech.edu (glen herrmannsfeldt) (2011-11-04)
Re: How to eliminate redundant constant move instructions gneuner2@comcast.net (George Neuner) (2011-11-04)
Re: How to eliminate redundant constant move instructions amker.cheng@gmail.com (amker) (2011-11-07)
Re: How to eliminate redundant constant move instructions chenwj@cs.NCTU.edu.tw (Wei-Jen Chen) (2011-11-10)
Re: How to eliminate redundant constant move instructions gneuner2@comcast.net (George Neuner) (2011-11-10)
| List of all articles for this month |

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



Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.