[PATCH][Peephole] Rewrite copies to avoid cross register banks copies.

Quentin Colombet qcolombet at apple.com
Fri Aug 23 13:21:23 PDT 2013


Hi Shuxin,

On Aug 23, 2013, at 1:13 PM, Shuxin Yang <shuxin.llvm at gmail.com> wrote:

> Hi, Quentin:
> 
>    Shouldn't copy-propagation is supposed to already xform the code in the way you want?
No, not at the MI level.
Basically, the problem appears after instruction selection because of a combination of bit cast, vector extract and such.
Generally the MI IR is in good shape but in some (rare) cases, we end up with such things.

Thanks for the feedback.

-Quentin 

> 
> Shuxin 
> 
> 
> On 8/23/13 1:04 PM, Quentin Colombet wrote:
>> Hi,
>> 
>> Here is a patch to rewrite copies to avoid cross register banks copies when possible.
>> Thanks for your reviews.
>> 
>> ** Context **
>> 
>> By definition copies across register bank are not coalescable. Still, it may be possible to get rid of such a copy when the value is available in another register of the same register file.
>> Consider the following example, where capital and lower letters denote different register file:
>> b = copy A <-- cross-bank copy
>>>> C = copy b <-- cross-bank copy
>> 
>> This could have been optimized this way:
>> b = copy A  <-- cross-bank copy
>>>> C = copy A <-- same-bank copy
>> 
>> Note: b and C's definitions may be in different basic blocks.
>> 
>> 
>> ** Proposed Solution **
>> 
>> Add a peephole optimization that looks through a chain of copies leading to a cross-bank copy and reuses a source that is on the same register file if available.
>> 
>> This solution could also be used to get rid of some copies (e.g., A could have been used instead of C). However, we do not do so because:
>> - It may over constrain the coloring of the source register for coalescing.
>> - The register allocator may not be able to find a nice split point for the longer live-range, leading to more spill.
>> 
>> 
>> ** Testcase?! **
>> 
>> This patch does not include a test case, because it is very difficult to reproduce this behavior with a reasonably small input.
>> 
>> Cheers,
>> -Quentin
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130823/75f902d1/attachment.html>


More information about the llvm-commits mailing list