search for: livephysregs

Displaying 20 results from an estimated 25 matches for "livephysregs".

2016 Nov 21
2
Conditional jump or move depends on uninitialised value(s)
...efactored the code into a minimal (noinline) function that still triggers the problem. xfunc2() and xfunc3() are also noinline. The problem goes away if either isReg() or isDef() is marked noinline. void xfuncx(const MachineOperand &MO, const TargetRegisterInfo *TRI, BitVector &LivePhysRegs) { if (MO.isReg() && // <<<<------ problem reported here MO.isDef()) { xfunc2(MO, TRI, LivePhysRegs); } else { xfunc3(MO, LivePhysRegs); } } The asm is below. Maybe I've been staring too long but I don't see the problem Valgrind is talking...
2010 Apr 14
2
[LLVMdev] Default behavior of DeadMachineInstructionElim deletes all instructions
...= TRI->getAllocatableSet(MF); (In my case all registers defined in RegisterInfo.td) This function loops through all registers classes and sets all registers in the bitset that are allocatable. It then inverts the registers that are set to get the NonAllocatable registers and assigns that to the LivePhysRegs for each basic block in a function. The function then loops through all instructions in a basic block and checks to see if it is a dead instruction. The check is whether it is a physical register or not with the check: TargetRegisterInfo::isPhysicalRegister(reg) ? LivePhysRegs[Reg] : !MRI->use_...
2017 Aug 03
2
Re-computing Live-in/Live-out Physical Registers for Basic Blocks Using LivePhysRegs
...h as cmp, add, etc.) is always in the same basic block? Is it true that APSR is never assumed to live across basic block boundaries? Thank you! Ming Zhang >On Aug 2, 2017, at 9:07 AM, Matthias Braun via llvm-dev llvm-dev at lists.llvm.org llvm-dev at lists.llvm.org>> wrote: >Yes LivePhysRegs can do that for you. It has addLiveIns() and addLiveOuts() functions to get the live-in or live-out set for a basic block (make the set is empty when you call these functions). >Yes APSR is marked as a reserved register by the ARM target, this means we do not track liveness for it. >- Matth...
2016 Nov 22
2
Conditional jump or move depends on uninitialised value(s)
...t >> still triggers the problem. xfunc2() and xfunc3() are also noinline. >> The problem goes away if either isReg() or isDef() is marked noinline. >> >> void xfuncx(const MachineOperand &MO, >> const TargetRegisterInfo *TRI, >> BitVector &LivePhysRegs) { >> if (MO.isReg() && // <<<<------ problem reported here >> MO.isDef()) { >> xfunc2(MO, TRI, LivePhysRegs); >> } else { >> xfunc3(MO, LivePhysRegs); >> } >> } >> >> The asm is below. Maybe I've b...
2010 Apr 14
0
[LLVMdev] Default behavior of DeadMachineInstructionElim deletes all instructions
...getAllocatableSet(MF); (In my case all registers defined in RegisterInfo.td) > > This function loops through all registers classes and sets all registers in the bitset that are allocatable. It then inverts the registers that are set to get the NonAllocatable registers and assigns that to the LivePhysRegs for each basic block in a function. The function then loops through all instructions in a basic block and checks to see if it is a dead instruction. The check is whether it is a physical register or not with the check: > > TargetRegisterInfo::isPhysicalRegister(reg) ? LivePhysRegs[Reg] : !M...
2010 Apr 14
2
[LLVMdev] Default behavior of DeadMachineInstructionElim deletes all instructions
Dale, Yeah that is correct, so that isn't the problem, not sure why I was thinking it is. The !MRI->use_no_dbg_empty(Reg) seems to be correct and the problem is LivePhysRegs[Reg] always returning false. I've looked into this more and there is a part where I'm working with physical registers. If there is a function call, there is a copy from virtual register space to the functions that are expected to be passed into the register. So it looks something like this:...
2010 Apr 29
0
[LLVMdev] Default behavior of DeadMachineInstructionElim deletes all instructions
...:28 PM To: llvmdev at cs.uiuc.edu Subject: Re: [LLVMdev] Default behavior of DeadMachineInstructionElim deletes all instructions Dale, Yeah that is correct, so that isn't the problem, not sure why I was thinking it is. The !MRI->use_no_dbg_empty(Reg) seems to be correct and the problem is LivePhysRegs[Reg] always returning false. I've looked into this more and there is a part where I'm working with physical registers. If there is a function call, there is a copy from virtual register space to the functions that are expected to be passed into the register. So it looks something like this:...
2017 Jan 21
3
Spare Register at one Machine Instruction
I'm not sure exactly what you're after. I was under the impression that you want to know which register is live at a specific point (an instruction). If that's the case, how do one of the two suggested solutions not suffice? If a register is live-in to a block and not killed before your instruction or it has a def and no kill within the block, it is live. Otherwise it is dead and
2014 Oct 14
2
[LLVMdev] Thoughts on maintaining liveness information for stackmaps
...ould like to go with, but so > far in my very limited testing it seems to be ok and at least things don't > crash. What do you guys think? > > > The %RIP problem is a straightforward bug resulting from the X86 target > lying to LLVM about RIP being a register. The fix is that LivePhysRegs > should not track reserved regs. But before fixing that, we have to be > careful about which registers stackmap clients are expected to preserve "no > matter what", and the rest of the LLVM reserved regs (e.g. base pointer) > should just be unconditionally added to the live s...
2014 Oct 14
2
[LLVMdev] Thoughts on maintaining liveness information for stackmaps
Hi all, I've run into a couple bugs recently that affected stackmap liveness analysis in various ways: http://llvm.org/bugs/show_bug.cgi?id=19224 - function arguments stay live unnecessarily http://llvm.org/bugs/show_bug.cgi?id=21265 - eflags can end up as a live out http://llvm.org/bugs/show_bug.cgi?id=21266 - %rip can end up as a live out The first two have nothing to do with stackmaps
2017 Jan 19
2
Spare Register at one Machine Instruction
There is also the LivePhysReg facility that I would recomment if you just want to query for a free register and do not need the full feature set of the RegisterScavenger. - Matthias > On Jan 19, 2017, at 5:50 AM, Nemanja Ivanovic via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > I believe what you're after is the register scavenger. > It's in:
2017 Feb 16
2
Print Register Liveness Information
Note that this only works for targets that say TargetRegisterInfo::trackLivenessAfterRegAlloc()== true. > On Feb 16, 2017, at 1:21 PM, Quentin Colombet via llvm-dev <llvm-dev at lists.llvm.org> wrote: > > Hi Anitha, > > The liveness information is usually dropped after regalloc. > Therefore the short answer is no, this information is not available before producing
2018 Sep 20
2
Liveness Analysis
Where is the liveness analysis pass? I have been looking for days but cannot find anything. I just want to know transfer variables in and out of basic blocks, that are calculated using simple data flow equations. Thanks! -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180920/529bce15/attachment.html>
2017 Feb 16
2
Print Register Liveness Information
Hi, Is there a way to print the register liveness information into the assembly file or as some intermediate listing? To be more precise, I am looking at figuring out the following information in an assembly file/listing. Say, for simplicity, our register set is only { rsp, rbp, eax } subq $16, %rsp // rsp is killed here, eax and rbp are live movl $0, -4(%rbp) // rbp is killed here,
2018 Feb 13
2
Undef physical registers?
Hi, I'm a bit unsure of the semantics of undef physical registers. The explanations I've seen in the code and in the langref seems to pertain more to constant values and virtual registers. What I really want to achieve is a push-pop of a register to have a temporary to work with, without having to check if this register is defined or not. However, whenever the reg is not defined before
2016 May 28
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
...rograms that uses library function ( for a library function register allocation is not done by LLVM so this optimization will simply skip them) Study and Other: ============= I have learned following things in LLVM, how it stores reg clobbering information? how it is used by Reg allocators through LivePhysRegs, LiveRegMatrix and other related passes? How to schedule a pass using TargetPassConfig and TargetMachine? What are called callee saved registers? What is an Immutable Pass? Apart from that I have also learned how to use phabricator to send review request. I have also read some related literatures....
2018 Sep 26
2
Liveness Analysis
So what is the status about LiveVariables. Is there a plan to remove it? After searching in old lvm-dev-mails it is mentioned that LiveVariable still exists due to one pass needing it. And a comment in TargetPassConfig.cpp indicates that the pass in question is TwoAddressInstruction: // FIXME: Once TwoAddressInstruction pass no longer uses kill flags, // LiveVariables can be removed
2017 Jan 19
2
Spare Register at one Machine Instruction
Hi All, Given a machine instruction, is it possible to tell which register(s) is still not in use? For example, given one instruction A, if the one follows it (say B) defines register rax, then I can tell rax should spare at instruction A. The purpose is to use the spare register to replace registers used by A, for instrumentation purpose. Regards, Hu Hong -------------- next part
2017 Aug 17
3
callee saved regs list
Hi, It has been discovered recently that it is needed for the SystemZ backend to add super-regs to the callee saved regs list like: def CSR_SystemZ : CalleeSavedRegs<(add (sequence "R%dD", 6, 15), - (sequence "F%dD", 8, 15))>; + [R6Q, R8Q, R10Q, R12Q, R14Q], +
2016 Jun 12
2
[GSoC 2016] [Weekly Status] Interprocedural Register Allocation
...t;> register allocation is not done by LLVM so this optimization will simply >> skip them) >> >> Study and Other: >> ============= >> I have learned following things in LLVM, how it stores reg clobbering >> information? how it is used by Reg allocators through LivePhysRegs, >> LiveRegMatrix and other related passes? How to schedule a pass using >> TargetPassConfig and TargetMachine? What are called callee saved registers? >> What is an Immutable Pass? Apart from that I have also learned how to use >> phabricator to send review request. I have...