Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.compilers > #321
| From | glen herrmannsfeldt <gah@ugcs.caltech.edu> |
|---|---|
| Newsgroups | comp.compilers |
| Subject | Re: How to eliminate redundant constant move instructions |
| Date | 2011-11-03 03:32 +0000 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <11-11-019@comp.compilers> (permalink) |
| References | <11-10-019@comp.compilers> <11-11-004@comp.compilers> <11-11-005@comp.compilers> <11-11-014@comp.compilers> |
George Neuner <gneuner2@comcast.net> wrote: (snip, then I wrote) >>That is what register renaming is for. Usually using more than >>the architecturally specified number of registers, the CPU >>internally remaps the registers such that it can keep one value >>in a register while an instruction is being executed out of order. > Yes. But the compiler can't count on register renaming ... it can see > only the architectural named registers. The comment came after a follow-up on out-of-order execution. Yes, you can't count on out-of-order, or register renaming, but for out-of-order to work you usually also need register renaming. What usually happens, though, is that a dynamic programming algorithm is used to select an optimal instruction sequence given the appropriate weights (costs) for each instruction sequence. On the other hand, if there is a tie then dynamic programming will choose one, which may look less than optimal to a human. There have been stories back to the first Fortran compiler on people being surprised to see optimized generated code better than the compiler writers might have written by hand. I remember a friend being assigned to write optimal assembly language code for a Fortran DO loop, and then I ran the loop through the Fortran H compiler which generated one fewer instruction. (It was a very small loop, where it might have been four instead of five instructions.) If you are selling programs, you usually don't compile for the exact processor, but some compromise. For personal use, you might know the exact processor, but even so, with modern processors and overlapped (or out-of-order) it is hard to choose the optimal instruction sequence. > 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. I know the IBM 360/91 would recognize loads from the same address, and use register renaming to avoid the second load, or load following store. (That is, if the first load or store was still in the appropriate buffer.) But then you shouldn't clear registers by loading zero from memory. -- glen
Back to comp.compilers | Previous | Next — Previous in thread | Next in thread | Find similar
How to eliminate redundant constant move instructions "Amker.Cheng" <amker.cheng@gmail.com> - 2011-10-31 17:53 +0800
Re: How to eliminate redundant constant move instructions Kaz Kylheku <kaz@kylheku.com> - 2011-10-31 17:08 +0000
Re: How to eliminate redundant constant move instructions amker <can.finner@gmail.com> - 2011-11-01 19:01 -0700
Re: How to eliminate redundant constant move instructions mac <acolvin@efunct.com> - 2011-11-03 02:20 +0000
Re: How to eliminate redundant constant move instructions George Neuner <gneuner2@comcast.net> - 2011-11-01 14:32 -0400
Re: How to eliminate redundant constant move instructions glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2011-11-01 22:35 +0000
Re: How to eliminate redundant constant move instructions amker <can.finner@gmail.com> - 2011-11-01 19:35 -0700
Re: How to eliminate redundant constant move instructions amker <amker.cheng@gmail.com> - 2011-11-01 21:04 -0700
Re: How to eliminate redundant constant move instructions George Neuner <gneuner2@comcast.net> - 2011-11-02 12:38 -0400
Re: How to eliminate redundant constant move instructions Kaz Kylheku <kaz@kylheku.com> - 2011-11-03 03:20 +0000
Re: How to eliminate redundant constant move instructions George Neuner <gneuner2@comcast.net> - 2011-11-04 13:27 -0400
Re: How to eliminate redundant constant move instructions glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2011-11-04 21:19 +0000
Re: How to eliminate redundant constant move instructions glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2011-11-03 03:32 +0000
Re: How to eliminate redundant constant move instructions amker <can.finner@gmail.com> - 2011-11-01 19:21 -0700
Re: How to eliminate redundant constant move instructions George Neuner <gneuner2@comcast.net> - 2011-11-04 17:26 -0400
Re: How to eliminate redundant constant move instructions amker <amker.cheng@gmail.com> - 2011-11-07 17:33 -0800
Re: How to eliminate redundant constant move instructions Wei-Jen Chen <chenwj@cs.NCTU.edu.tw> - 2011-11-10 08:04 +0000
Re: How to eliminate redundant constant move instructions George Neuner <gneuner2@comcast.net> - 2011-11-10 18:18 -0500
Re: How to eliminate redundant constant move instructions amker <amker.cheng@gmail.com> - 2011-11-01 20:58 -0700
csiph-web