Displaying 20 results from an estimated 1000 matches similar to: "[LLVMdev] [PATCH] RegScavenger::scavengeRegister"
2013 Mar 25
0
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
On Mar 25, 2013, at 12:04 PM, Akira Hatanaka <ahatanak at gmail.com> wrote:
> This patch adds parameter "EliminateFI" to RegScavenger::scavengeRegister, which tells register scavenger not to eliminate frame index of the emergency spill slot if set to false.
>
> I have pseudo load, store and copy instructions which are generated during register allocation and expanded
2013 Mar 25
3
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
Hi Jakob,
I believe Hal is trying to enable register scavenger to find two (or more)
registers that can be used as temporaries.
One problem I see with this approach is that, if you use register scavenger
during PEI, you will have to pessimistically set aside two emergency spill
slots before you call scavengeRegister, even if it turns out you only need
one. Having an extra stack slot might not be
2013 Mar 25
0
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
On Mar 25, 2013, at 1:41 PM, Akira Hatanaka <ahatanak at gmail.com> wrote:
> Hi Jakob,
>
> I believe Hal is trying to enable register scavenger to find two (or more) registers that can be used as temporaries.
>
> One problem I see with this approach is that, if you use register scavenger during PEI, you will have to pessimistically set aside two emergency spill slots before
2013 Apr 06
0
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
On Apr 6, 2013, at 12:42 AM, Hal Finkel <hfinkel at anl.gov> wrote:
> ----- Original Message -----
>> From: "Jakob Stoklund Olesen" <stoklund at 2pi.dk>
>> To: "Akira Hatanaka" <ahatanak at gmail.com>
>> Cc: "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu>, "Hal Finkel" <hfinkel at anl.gov>
>>
2013 Apr 06
3
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
----- Original Message -----
> From: "Jakob Stoklund Olesen" <stoklund at 2pi.dk>
> To: "Akira Hatanaka" <ahatanak at gmail.com>
> Cc: "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu>, "Hal Finkel" <hfinkel at anl.gov>
> Sent: Tuesday, March 26, 2013 12:40:44 PM
> Subject: Re: [LLVMdev] [PATCH]
2013 Mar 26
0
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
On Mar 26, 2013, at 10:29 AM, Akira Hatanaka <ahatanak at gmail.com> wrote:
> The size of general purpose integer registers for mips32 is 32-bit and accumulators are 64-bit registers consisting of 32-bit hi/lo register pairs. So you will need two instructions to copy two 32-bit GPR registers to a 64-bit accumulator register. If spilling to multiple registers is unsupported, perhaps I can
2013 Mar 26
2
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
On Mon, Mar 25, 2013 at 4:02 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk>wrote:
>
> On Mar 25, 2013, at 2:51 PM, Akira Hatanaka <ahatanak at gmail.com> wrote:
>
> > Yes, it sounds like it will solve the problem.
> >
> > Using the following example where live ranges of accumulators $vreg_acc0
> and $vreg_acc1 conflict,
> >
> > MULT
2013 Mar 25
2
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
On Mon, Mar 25, 2013 at 2:07 PM, Jakob Stoklund Olesen <stoklund at 2pi.dk>wrote:
>
> On Mar 25, 2013, at 1:41 PM, Akira Hatanaka <ahatanak at gmail.com> wrote:
>
> > Hi Jakob,
> >
> > I believe Hal is trying to enable register scavenger to find two (or
> more) registers that can be used as temporaries.
> >
> > One problem I see with this
2017 Aug 15
2
Problem of getting two unused registers in eliminateFrameIndex()
Hello all,
For my custom processor backend I am trying add some instruction using
BuildMI() inside eliminateFrameIndex().
I tried RegScavenger like this:
unsigned RegUnused0 = RS->FindUnusedReg(&LASER::GNPRegsRegClass);
if (!RegUnused0)
RegUnused0 = RS->scavengeRegister(&LASER::GNPRegsRegClass, II, SPAdj);
assert(RegUnused0 && "Register scavenger failed");
2013 Oct 09
4
[LLVMdev] Subregister liveness tracking
On Oct 8, 2013, at 2:06 PM, Akira Hatanaka <ahatanak at gmail.com> wrote:
> What I didn't mention in r192119 is that mthi/lo clobbers the other sub-register only if the contents of hi and lo are produced by mult or other arithmetic instructions (div, madd, etc.) It doesn't have this side-effect if it is produced by another mthi/lo. So I don't think making mthi/lo clobber the
2013 Oct 08
2
[LLVMdev] Subregister liveness tracking
Currently it will always spill / restore the whole vreg but only
spilling the parts that are actually live would be a nice addition in
the future.
Looking at r192119': if "mtlo" writes to $LO and sets $HI to an
unpredictable value, then it should just have an additional (dead) def
operand for $hi, shouldn't it?
Greetings
Matthias
Am 10/8/13, 11:03 AM, schrieb Akira
2013 Oct 08
0
[LLVMdev] Subregister liveness tracking
What I didn't mention in r192119 is that mthi/lo clobbers the other
sub-register only if the contents of hi and lo are produced by mult or
other arithmetic instructions (div, madd, etc.) It doesn't have this
side-effect if it is produced by another mthi/lo. So I don't think making
mthi/lo clobber the other half would work.
For example, this is an illegal sequence of instructions,
2013 Apr 09
1
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
Is there a way to force or increase the likelihood of rematerialization of
condition registers, instead of copying or spilling?
mips isa doesn't have a handy instruction which enables reading or writing
condition registers in one or two cycles (you need several shift and
masking operations), so it makes more sense to rematerialize, if that's
possible.
On Sat, Apr 6, 2013 at 9:56 AM,
2013 Mar 25
0
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
On Mar 25, 2013, at 2:51 PM, Akira Hatanaka <ahatanak at gmail.com> wrote:
> Yes, it sounds like it will solve the problem.
>
> Using the following example where live ranges of accumulators $vreg_acc0 and $vreg_acc1 conflict,
>
> MULT $vreg_acc0, $vreg_gpr0, $vreg_gpr1
> MULT $vreg_acc1, $vreg_gpr2, $vreg_gpr3
>
> (consumer of $vreg_acc1)
> (consumer of
2013 Apr 07
1
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
----- Original Message -----
> From: "Jakob Stoklund Olesen" <stoklund at 2pi.dk>
> To: "Hal Finkel" <hfinkel at anl.gov>
> Cc: "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu>, "Akira Hatanaka" <ahatanak at gmail.com>
> Sent: Saturday, April 6, 2013 11:56:28 AM
> Subject: Re: [LLVMdev] [PATCH]
2013 Feb 06
2
[LLVMdev] register scavenging
So what I realized is that you can't use the simple scavenger trick
where you create the virtual register and use the more advanced features.
This is because you can't call forward() in any form if there are
virtual registers being used by any of the instructions in the basic
block. This will cause forward to fail.
Maybe this is a bug in forward()
On 02/05/2013 02:51 PM, Reed Kotler
2013 Feb 05
2
[LLVMdev] register scavenging
I ran into a case in Mips16 where I need two registers.
The problem arises from the fact that SP is not a mips16 register.
You can implicitly use it in load/store and, move it to/from a mips16
register and add small immediate values to it but that's it.
It's not in general a problem for me because there are a bunch of mips32
registers that are hard to use in mips16 so at this time, I
2013 Feb 06
0
[LLVMdev] register scavenging
No. forward() is working correctly. All virtual register references must be resolved before calling it.
-Jim
On Feb 5, 2013, at 4:05 PM, Reed Kotler <rkotler at mips.com> wrote:
> So what I realized is that you can't use the simple scavenger trick where you create the virtual register and use the more advanced features.
>
> This is because you can't call forward() in any
2010 Feb 26
3
[LLVMdev] Patch - big stackframes on SPU
Chris Lattner skrev:
> On Feb 22, 2010, at 6:08 AM, Kalle.Raiskila at nokia.com wrote:
>> currently the SPU backend does not handle big stack frames (>16*511
>> bytes) nicely. llc asserts on malformed machine instructions.
>> (Assertion `MI->getOperand(OpNo).isImm() && "printDFormAddr first
>> operand is not immediate")
>
> Sounds fine
2013 Feb 05
0
[LLVMdev] register scavenging
Does not seem that anyone is using the more advanced features of
RegScavenger
On 02/05/2013 01:09 PM, reed kotler wrote:
> I ran into a case in Mips16 where I need two registers.
>
> The problem arises from the fact that SP is not a mips16 register.
> You can implicitly use it in load/store and, move it to/from a mips16
> register and add small immediate values to it but