search for: liveout

Displaying 19 results from an estimated 19 matches for "liveout".

Did you mean: liveouts
2010 Nov 05
4
[LLVMdev] Basic block liveouts
Is there an easy way to obtain all liveout variables of a basic block? Liveins can be found for each MachineBasicBlock, but I can only find liveouts for the whole function, at MachineRegisterInfo. Do I need to find them out manually?
2010 Nov 05
0
[LLVMdev] Basic block liveouts
...for giving a non-answer: An easy way to find if a virtual register is alive after the basic block is to While iterating over the virtual registers - Check to see if the virtual register's "next" value exists outside of the basic block. for instance: std::vector<unsigned> findLiveOut( MachineBasicBlock * mbb ) { std::vector<unsigned> liveout; for( MachineBasicBlock::iterator mbbi = mbb->begin(), mbbe = mbb->end(); mbbi != mbbe; ++mbbi ) { for( opi = 0, ope = mbbi->getNumOperands(); opi < ope; ++opi ) { MachineOperand & operand = mbbi->getO...
2009 May 30
4
[LLVMdev] Value liveout (uses)
Thank you. Is it possible to determine the liveout of the operands (see example bellow) ? %5 = add i32 %4, %3 For '%5': i can simply use " i->isUsedOutsideOfBlock() " For '%3' and '%4' : this is the question ... >From your answer, is it possible to determine *which* value is liveout ( in binary ins...
2009 May 30
0
[LLVMdev] Value liveout (uses)
I believe Dan has added a pass to compute livein / liveout values. Evan Sent from my iPhone On May 30, 2009, at 5:03 AM, Rotem Varon <varonrotem at gmail.com> wrote: > Thank you. > > Is it possible to determine the liveout of the operands (see example > bellow) ? > > %5 = add i32 %4, %3 > > For '%5': i ca...
2009 May 31
1
[LLVMdev] Value liveout (uses)
The pass you're referring to is in include/llvm/Analysis/LiveValues.h and lib/Analysis/LiveValues.cpp. It computes conservative approximations for specific liveness queries, rather than full livein/liveout information. It's intended to be used as a heuristic. Dan On May 30, 2009, at 3:51 PM, Evan Cheng wrote: > I believe Dan has added a pass to compute livein / liveout values. > > Evan > > Sent from my iPhone > > On May 30, 2009, at 5:03 AM, Rotem Varon <varonrotem at g...
2009 May 30
4
[LLVMdev] Value liveout (uses)
Hi, How can i know, if a value have uses outside of the current basic block (liveout), without iterating through all the basic block ? Thanks. -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090530/71681bc2/attachment.html>
2010 Nov 05
0
[LLVMdev] Basic block liveouts
...rand() if( vreg1 > .5 ) goto BB1; else goto BB2; BB1: vreg 2 = rand(); EAX = copy vreg2; Return BB2: vreg 3 = rand() * rand()' EAX = copy vreg3; Return On Fri, Nov 5, 2010 at 7:41 AM, s Last namerc <srcsrc84 at yahoo.com> wrote: > Is there an easy way to obtain all liveout variables of a basic block? > Liveins > can be found for each MachineBasicBlock, but I can only find liveouts for > the > whole function, at MachineRegisterInfo. Do I need to find them out > manually? > > > > > _______________________________________________ > LLVM...
2009 May 30
0
[LLVMdev] Value liveout (uses)
On May 29, 2009, at 11:37 PM, Rotem Varon wrote: > How can i know, if a value have uses outside of the current basic > block (liveout), without iterating through all the basic block ? If the value is created within the basic block in question, and the block doesn't loop to itself, then you can just iterate through the uses and note if the use is an instruction in a different block: bool isLiveOut(Instruction* I) { Basi...
2009 May 30
0
[LLVMdev] Value liveout (uses)
On May 30, 2009, at 5:03 AM, Rotem Varon wrote: > Is it possible to determine the liveout of the operands (see example > bellow) ? > > %5 = add i32 %4, %3 > > For '%5': i can simply use " i->isUsedOutsideOfBlock() " > For '%3' and '%4' : this is the question ... By definition, operands are live out if they're used in...
2009 May 31
1
[LLVMdev] Value liveout (uses)
" All of these answers are things you would do for an individual LLVM "Value". " I am sorry, but may be i am missing something here. In the previous email you suggested the function "bool isLiveOut(Instruction* I) ". So, if you please, explain how i can find out if a llvm::Value (not an llvm::Instruction) is live out or not. As i understand it, isLiveOut can help me ONLY if i have an llvm::Instruction (not a llvm:Value). Thanks. P.S I am truly grateful for your help. On Sat, May 30,...
2015 Jul 09
9
[LLVMdev] [RFC] New StackMap format proposal (StackMap v2)
...Cheers, Juergen Header v2 { uint8 : Stack Map Version (2) uint8 : Reserved [3] (0) uint32 : Constants Offset (bytes) uint32 : Frame Records Offset (bytes) uint32 : Frame Registers Offset (bytes) uint32 : StackMap Records Offset (bytes) uint32 : Locations Offset (bytes) uint32 : LiveOuts Offset (bytes) } align to 8 bytes Constants[] { uint64 : LargeConstant } align to 8 bytes FrameRecord[] { uint64 : Function Address uint32 : Function Size uint32 : Stack Size uint16 : Flags { bool : HasFrame bool : HasVariableSizeAlloca bool : HasStackRealignment bool :...
2018 Sep 20
2
Interest in fast BitVector?
Some time ago I developed a fast BitVector class to use in some research here. It uses expression templates to fuse operation loops and runs much faster than the existing BitVector for some important use-cases. It also has the ability to efficiently report if a BitVector's contents changed after some operation. For example: ETBitVector A = ... ETBitVector B = ... ETBitVector C = ... bool
2015 Jul 09
5
[LLVMdev] [RFC] New StackMap format proposal (StackMap v2)
...nt8 : Stack Map Version (2) > uint8 : Reserved [3] (0) > uint32 : Constants Offset (bytes) > uint32 : Frame Records Offset (bytes) > uint32 : Frame Registers Offset (bytes) > uint32 : StackMap Records Offset (bytes) > uint32 : Locations Offset (bytes) > uint32 : LiveOuts Offset (bytes) > } > > align to 8 bytes > Constants[] { > uint64 : LargeConstant > } > > align to 8 bytes > FrameRecord[] { > uint64 : Function Address > uint32 : Function Size > uint32 : Stack Size > uint16 : Flags { > bool : HasFrame >...
2010 Nov 10
0
[LLVMdev] Liveness analysis on MachineBasicBlock
Hi all, I am trying to compute the liveness information for each MachineInstr in each MachineBasicBlock. I am not sure if it is correct. Here is how I compute the info. For each MachineBasicBlock MBB compute the LiveOuts of MBB by unioning all the LiveIns of its successors for each MachineInstr MI = MBB->rbegin() to MBB->rend() compute the LiveOuts of each MI by LiveIn = Uses Union (LiveOuts - Defs) I am not sure that the LiveIns of each MachineBasicBlock are updated during each pass. Also,...
2015 Jul 08
4
[LLVMdev] New backend help request.
Hi all, I'm trying to continue an existing m68k backend for LLVM. I'm completely new to LLVM development so I've been muddling my way through mostly by trial and error and using existing back ends for reference. I'm trying to implement code to allow calling. I am compiling this C code -- typedef unsigned int uint32_t; typedef char int8_t; uint32_t foo(uint32_t x, int8_t y) {
2016 Aug 23
2
Help in understanding physreg LiveVariables
...rather than lowered to machine instructions. Why does LiveVariables assume physical registers are only live within a single basic block? I have confirmed that if I remove the allocatable check in runOnBlock() [if (!TRI->isInAllocatableClass(LI.PhysReg))] and instead add all successor live-ins to LiveOuts regardless of regclass allocatability, my copy is not marked dead and not subsequently eliminated. This seems consistent with the aforementioned comment, so I don't think it's a bug but I really don't understand the intention here. If anyone could shed some light on why allocatable liv...
2017 Aug 12
3
Mischeduler: Unknown reason for peak register pressure increase
I am working on a project where we are integrating an existing pre-RA scheduler into LLVM and we are trying to match our peak register pressure values with the machine instruction schedulers values while using X86. I am finding some mismatches in test cases like the one attached. The registers "AH" and "AL" are live-out but not live-in and I don't see that they are defined
2013 Feb 02
0
[LLVMdev] Moving return value registers from MRI to return instructions
...n functions calling builtin_eh_return(). The EH_RETURN pseudo-instruction has different return-value registers than normal return instructions. See PR14750 for the details. To fix this, I am going to remove the live-out lists from MachineRegisterInfo. These functions are going to be removed: - addLiveOut() - liveout_begin() - liveout_end() - isLiveOut() Instead of calling MRI.addLiveOut(), targets should add return value registers as implicit operands on return instructions. This is already how argument registers are passed to call instructions, making calls and returns work the same way. I'l...
2016 Aug 23
2
Help in understanding physreg LiveVariables
...rather than lowered to machine instructions. Why does LiveVariables assume physical registers are only live within a single basic block? I have confirmed that if I remove the allocatable check in runOnBlock() [if (!TRI->isInAllocatableClass(LI.PhysReg))] and instead add all successor live-ins to LiveOuts regardless of regclass allocatability, my copy is not marked dead and not subsequently eliminated. This seems consistent with the aforementioned comment, so I don't think it's a bug but I really don't understand the intention here. If anyone could shed some light on why allocatable liv...