search for: vreg_acc1

Displaying 7 results from an estimated 7 matches for "vreg_acc1".

Did you mean: vreg_acc0
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 $vreg_acc0) > > if the register can create new virtual registers $vreg_gpr4 and $vreg_gpr5, I think spilling can be avoided: > &...
2013 Mar 25
2
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
...tor, and > > - Create new virtual registers, possibly from different register classes. > > I think that functionality would solve your problems, right? > > 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 $vreg_acc0) if the register can create new virtual registers $vreg_gpr4 and $vreg_gpr5, I think spilling can be avoided: MULT $vreg_acc0, $vreg_gpr0, $vreg_gpr1 copy...
2013 Mar 26
2
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
...nd 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 $vreg_acc0, $vreg_gpr0, $vreg_gpr1 > > MULT $vreg_acc1, $vreg_gpr2, $vreg_gpr3 > > > > (consumer of $vreg_acc1) > > (consumer of $vreg_acc0) > > > > if the register can create new virtual registers $vreg_gpr4 and > $vreg_gpr5...
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 Mar 26
0
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
...ad requires two GPR-to-accumulator copy instructions while copying one accumulator to another requires four copy instructions (instruction set doesn't have any accumulator-to-accumulator copy instructions): > > copy $vreg_gpr0, $vreg_acc0:lo > copy $vreg_gpr1, $vreg_acc0:hi > copy $vreg_acc1:lo, $vreg_gpr0 > copy $vreg_acc1:hi, $vreg_gpr1 There is no way of preventing copies completely. Once you create a virtual register with some register class, you must support spilling, reloading, and copying of that register class. The cross class spilling feature can make these things less...
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 Apr 06
3
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
...ns while copying > > one accumulator to another requires four copy instructions > > (instruction set doesn't have any accumulator-to-accumulator copy > > instructions): > > > > copy $vreg_gpr0, $vreg_acc0:lo > > copy $vreg_gpr1, $vreg_acc0:hi > > copy $vreg_acc1:lo, $vreg_gpr0 > > copy $vreg_acc1:hi, $vreg_gpr1 > > There is no way of preventing copies completely. > > Once you create a virtual register with some register class, you must > support spilling, reloading, and copying of that register class. > > The cross class spill...