search for: slotindex

Displaying 20 results from an estimated 93 matches for "slotindex".

2011 Jan 20
4
[LLVMdev] [LLVMDev] Live Intervals and Finding the next usage
I have a live interval, and I would like to find out what SlotIndex the next use the register will occur? Is there any way to map a live interval back into instructions or SlotIndexes or blocks used by? - Thanks Jeff Kunkel -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110...
2011 Jan 20
0
[LLVMdev] [LLVMDev] Live Intervals and Finding the next usage
I am looking for the slot index of a register around the given slot index Min. Is there a better way than the linear search: ... findDefUsesAroundIndex( LiveInterval* li, SlotIndex Min ) ... for( MachineOperand * mo = MRI->getRegUseDefListHead(li->reg); mo; mo = mo->getNextOperandForReg() ) { SlotIndex si = SI->getInstructionIndex( use.getOperand().getParent() ); if( Min.distance(si) >= 0 ) ... - Thanks Jeff Kunkel On Thu, Jan 20, 2011 at 8:3...
2013 May 03
1
[LLVMdev] slotindex:getIndex
HI Is there a public function equivalent of calling getIndex I would like to use some sort of starting slot info of a live interval in some pass. I need a way of comparing which virtual register is associated with an earlier source line without relying on any debug info. The relative order is preserved in my case. thanks shrey
2012 Aug 31
0
[LLVMdev] Assert in LiveInterval update
Lang, I think I am getting closer to understanding this. The findLastUseBefore() should probably look something like this: // Return the last use of reg between NewIdx and OldIdx. SlotIndex findLastUseBefore(unsigned Reg, SlotIndex OldIdx) { SlotIndex LastUse = NewIdx; if (TargetRegisterInfo::isPhysicalRegister(Reg)) { for (MCRegUnitRootIterator Roots(Reg, &TRI); Roots.isValid(); ++Roots) { unsigned Root = *Roots; for (MachineRegisterInfo::use...
2012 Aug 31
2
[LLVMdev] Assert in LiveInterval update
Hi Lang, Just one more quick question. in LiveIntervalAnalysis.cpp In SlotIndex findLastUseBefore(unsigned Reg, SlotIndex OldIdx) Did you really mean to use for (MachineRegisterInfo::use_nodbg_iterator UI = MRI.use_nodbg_begin(Reg), UE = MRI.use_nodbg_end(); UI != UE; UI.skipInstruction()) {} Aren't we currently dealing with...
2015 May 27
3
[LLVMdev] RFC: Separate machine IR from lib/CodeGen into lib/MIR
...e IR stuff from CodeGen to some other library: - Move the SplitCriticalEdge method from MachineBasicBlock ( http://reviews.llvm.org/D10064). - Move the UnpackMachineBundles and FinalizeMachineBundles passes from MachineInstrBundle.cpp. (http://reviews.llvm.org/D10070 + 1 upcoming patch). - Refactor SlotIndexes.h: keep the SlotIndexes pass and move the rest to SlotIndex.h. Introduce a new container class in SlotIndex.h that will extract the map between machine instructions and slot indexes from the SlotIndexes pass and remove the dependency on the pass from MachineBasicBlock's print method. - WinE...
2016 Dec 22
5
Understanding SlotIndexes
Hi all, I'm tracking down a register allocation problem and I'm trying to understand this piece of code in InlineSpiller::spillAroundUses: // Find the slot index where this instruction reads and writes OldLI. // This is usually the def slot, except for tied early clobbers. SlotIndex Idx = LIS.getInstructionIndex(*MI).getRegSlot(); if (VNInfo *VNI = OldLI.getVNInfoAt(Idx.getRegSlot(true))) if (SlotIndex::isSameInstr(Idx, VNI->def)) Idx = VNI->def; Comments in SlotIndexes.h have this to say: /// Early-clobber register use/def slot. A live range d...
2015 May 27
0
[LLVMdev] RFC: Separate machine IR from lib/CodeGen into lib/MIR
...m CodeGen to some other library: > - Move the SplitCriticalEdge method from MachineBasicBlock (http://reviews.llvm.org/D10064). > - Move the UnpackMachineBundles and FinalizeMachineBundles passes from MachineInstrBundle.cpp. (http://reviews.llvm.org/D10070 + 1 upcoming patch). > - Refactor SlotIndexes.h: keep the SlotIndexes pass and move the rest to SlotIndex.h. Introduce a new container class in SlotIndex.h that will extract the map > between machine instructions and slot indexes from the SlotIndexes pass and remove the dependency on the pass from MachineBasicBlock's print method. &...
2016 Dec 25
0
Understanding SlotIndexes
On 12/22/2016 4:02 PM, via llvm-dev wrote: > > /// Early-clobber register use/def slot. A live range defined at > /// Slot_EarlyCLobber interferes with normal live ranges killed at > /// Slot_Register. Also used as the kill slot for live ranges tied to an > /// early-clobber def. > Slot_EarlyClobber, > > What does this mean, exactly? My
2012 Sep 03
2
[LLVMdev] Assert in LiveInterval update
...at codeaurora.org> wrote: > Lang, **** > > ** ** > > I think I am getting closer to understanding this. The > findLastUseBefore() should probably look something like this:**** > > ** ** > > // Return the last use of reg between NewIdx and OldIdx.**** > > SlotIndex findLastUseBefore(unsigned Reg, SlotIndex OldIdx) {**** > > SlotIndex LastUse = NewIdx;**** > > ** ** > > if (TargetRegisterInfo::isPhysicalRegister(Reg)) {**** > > for (MCRegUnitRootIterator Roots(Reg, &TRI); Roots.isValid(); > ++Roots) {**** > >...
2015 May 27
1
[LLVMdev] RFC: Separate machine IR from lib/CodeGen into lib/MIR
...some other library: >> - Move the SplitCriticalEdge method from MachineBasicBlock (http://reviews.llvm.org/D10064). >> - Move the UnpackMachineBundles and FinalizeMachineBundles passes from MachineInstrBundle.cpp. (http://reviews.llvm.org/D10070 + 1 upcoming patch). >> - Refactor SlotIndexes.h: keep the SlotIndexes pass and move the rest to SlotIndex.h. Introduce a new container class in SlotIndex.h that will extract the map >> between machine instructions and slot indexes from the SlotIndexes pass and remove the dependency on the pass from MachineBasicBlock's print method...
2011 Jan 20
0
[LLVMdev] [LLVMDev] Live Intervals and Finding the next usage
On Jan 20, 2011, at 5:37 AM, Jeff Kunkel wrote: > I have a live interval, and I would like to find out what SlotIndex the next use the register will occur? Is there any way to map a live interval back into instructions or SlotIndexes or blocks used by? Not really, you have to use the use-def chain. See SplitAnalysis::analyzeUses(). /jakob -------------- next part -------------- A non-text attachment was scrubbe...
2014 Jan 03
2
[LLVMdev] How to update LiveInterval information of newly inserted machine basic block
...moveInterval firstly. Then I use LIS->createAndComputeVirtRegInterval() to update LiveInterval info of NewMBB. >> 4. Then I want to delete OldMBB in the current MachineFuncion. At the same time, delete LiveIntervals info of OldMBB. So, firstly, Use RemoveMachineInstrFromMaps() to erase SlotIndexes info of OldMBB. And, delete OldMBB from current CFG. Lastly, remove all registers' interval, create and recompute virtual register interval info. >> However, I get an unreachable error "Use not jointly dominated by defs" in LiveRangeCalc.cpp:188. >> So, comparing with...
2015 Jan 17
3
[LLVMdev] loop multiversioning
...plify -scalar-evolution -iv-users -loop-reduce -gc-lowering -unreachableblockelim -consthoist -partially-inline-libcalls -codegenprepare -rewrite-symbols -verify-di -stack-protector -verify -domtree -loops -branch-prob -machinedomtree -expand-isel-pseudos -tailduplication -opt-phis -machinedomtree -slotindexes -stack-coloring -localstackalloc -dead-mi-elimination -machinedomtree -machine-loops -machine-trace-metrics -early-ifcvt -machinelicm -machine-cse -machinepostdomtree -machine-block-freq -machine-sink -peephole-opts -dead-mi-elimination -processimpdefs -unreachable-mbb-elimination -livevars -mach...
2011 Sep 16
1
[LLVMdev] Linear scan is going away after 3.0
...rdSpiller class from Spiller.cpp as well as the code it depends on in LiveIntervalAnalysis. - Linear scan is using the deferred spill code insertion that StandardSpiller and VirtRegRewriter provides. This was originally designed to cope with a static instruction numbering, but today's dynamic SlotIndexes can handle new instructions. The new InlineSpiller inserts spill code immediately, and we can get rid of the deferred spill support. - With deferred spill support out of the way, we can get rid of the mysterious LOAD and STORE slots in SlotIndexes. The slot names come from an old linear scan p...
2010 Nov 04
0
[LLVMdev] slot-indexes, liveranges...
Hi, I am having a bit of a time trying to figure out the scheme behind the slotindexing / liverange design. There seems to be several indexes mapped to the same instruction. Why is this? I take it, that it will always be true that for a LiveRange includes instructions with slotindexes [i:j), based on calls to SlotIndexes::getInstructionIndex(MI) ? However, LiveRange.valno->de...
2012 Sep 20
2
[LLVMdev] InlineSpiller Questions
...e in the original live range from before live range splitting. Ok, that's exactly what I need. > The defining instruction may not exists any longer. It could have been > rematerialized somewhere else. It could also have been PHI. Ok, so in that case the traced-to VNInfo will have a def SlotIndex of Slot_Block or something? -David
2012 Aug 30
0
[LLVMdev] Assert in LiveInterval update
...t;<<<<<<<<< Needs to move above 28B > 96B %vreg37<def> = LDriw <fi#-8>, 0; mem:LD4[FixedStack-8] > IntRegs:%vreg37 > > In Hexagon %D1==%R0:R1 (double reg), %D2==%R2:R3 etc. > The MI move triggers liveness update, which first triggers SlotIndex > renumbering: > > *** Renumbered SlotIndexes 24-56 *** > > So my 48B becomes 56B, so after the update new live ranges look like this: > > R2 = [0B,56r:0)[352r,416r:5)... > R3 = [0B,56r:0)[368r,416r:5)... > R4 = [0B,48r:0)[384r,416r:4)... > R5 = [0B,48r:0)[400r,416r:4)...
2014 Jan 03
2
[LLVMdev] How to update LiveInterval information of newly inserted machine basic block
...rval firstly. Then I use LIS->createAndComputeVirtRegInterval() to update LiveInterval info of NewMBB. >>>> 4. Then I want to delete OldMBB in the current MachineFuncion. At the same time, delete LiveIntervals info of OldMBB. So, firstly, Use RemoveMachineInstrFromMaps() to erase SlotIndexes info of OldMBB. And, delete OldMBB from current CFG. Lastly, remove all registers' interval, create and recompute virtual register interval info. >>>> However, I get an unreachable error "Use not jointly dominated by defs" in LiveRangeCalc.cpp:188. >>>> So,...
2011 Mar 08
4
[LLVMdev] MSVC compiling issue
.... Best regards Olaf Krzikalla Index: lib/CodeGen/LiveInterval.cpp =================================================================== --- lib/CodeGen/LiveInterval.cpp (revision 127221) +++ lib/CodeGen/LiveInterval.cpp (working copy) @@ -39,6 +39,9 @@ bool operator()(const LiveRange &A, SlotIndex B) const { return A.end < B; } + bool operator()(const LiveRange &A, const LiveRange &B) const { + return A.end < B.end; + } }; }