[PATCH] D26648: Clarify semantic of reserved registers.

Matthias Braun via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 14 18:33:40 PST 2016


That would work.

Alternatively we could drop the super-reg being reserved as a hard rule and only recommend it. We could provide the verifier in a function that targets can optionally call, mips just wouldn’t do that then.

- Matthias

> On Nov 14, 2016, at 6:25 PM, Quentin Colombet <qcolombet at apple.com> wrote:
> 
> ARM has a similar problem and we solved it with “fancy” allocation order:
> commit 8927f6cd0f8d7614e8682a2da08f0a9769be9603
> Author: Tim Northover <tnorthover at apple.com <mailto:tnorthover at apple.com>>
> Date:   Mon Aug 3 17:20:10 2015 +0000
> 
>     ARM: prefer allocating VFP regs at stride 4 on Darwin.
>     
>     This is necessary for WatchOS support, where the compact unwind format assumes
>     this kind of layout. For now we only want this on Swift-like CPUs though, where
>     it's been the Xcode behaviour for ages. Also, since it can expand the prologue
>     we don't want it at -Oz.
>     
>     git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243884 <https://llvm.org/svn/llvm-project/llvm/trunk@243884> 91177308-0d34-0410-b5e6-96231b3b80d8
> 
>> On Nov 14, 2016, at 6:15 PM, Matthias Braun <matze at braunis.de <mailto:matze at braunis.de>> wrote:
>> 
>> MatzeB added a reviewer: sdardis.
>> MatzeB added a comment.
>> 
>> These new rules break existing use in Mips :-(
>> 
>> Mips has 32bit floatregs F0-F31, each pair forms a double reg (F0+https://reviews.llvm.org/F1=D0 <f0+https://reviews.llvm.org/F1=D0>, https://reviews.llvm.org/F2+https://reviews.llvm.org/F3=https://reviews.llvm.org/D1 <https://reviews.llvm.org/F2+https://reviews.llvm.org/F3=https://reviews.llvm.org/D1>, ...). There is an option in the mips backend that aims at disabling the odd F registers, so 32bit float values only end up in F0, https://reviews.llvm.org/F2 <https://reviews.llvm.org/F2>, https://reviews.llvm.org/F4 <https://reviews.llvm.org/F4>, ... In this case it is actually expected that the register allocator still assigns the D0-D15 as usual even though the would indirectly use https://reviews.llvm.org/F1,https://reviews.llvm.org/F3 <https://reviews.llvm.org/F1,https://reviews.llvm.org/F3>,...
>> 
>> Is there another way to handle this in the mips target?
>> 
>> 
>> Repository:
>>  rL LLVM
>> 
>> https://reviews.llvm.org/D26648 <https://reviews.llvm.org/D26648>
>> 
>> 
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161114/09d6b6a2/attachment.html>


More information about the llvm-commits mailing list