search for: vreg_acc0

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

2013 Mar 25
2
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
...provided iterator, 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, $...
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 a...
2013 Mar 26
2
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
...: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 $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...
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 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 26
0
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
...that case, splitting might be worse than spilling since reload 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....
2013 Apr 06
3
[LLVMdev] [PATCH] RegScavenger::scavengeRegister
...since reload > > 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...