search for: vni

Displaying 20 results from an estimated 33 matches for "vni".

Did you mean: vmi
2007 Sep 25
2
[LLVMdev] Coalescing and VNInfo
I've hit a bug in a refactored version of coalescing and I'm trying to understand what is going on. In particular, I'm curious about this line in SimpleRegisterCoalescing.cpp: 00710 LHSValsDefinedFromRHS[VNI] = RHS.getLiveRangeContaining(VNI->def-1)->valno; Why VNI->def-1? The bug I'm seeing is that RHS returns a NULL LiveRange because it doesn't contain VNI->def-1: %reg1093,0 = [5750,5754:2)[5754,5782:1)[5782,5858:0)[5868,5870:0) 0 at 5782-(5858 5870) 1 at 5754-(5778) 2 at 57...
2007 Sep 25
0
[LLVMdev] Coalescing and VNInfo
...uesday 25 September 2007 10:49, David Greene wrote: > I've hit a bug in a refactored version of coalescing and I'm trying to > understand what is going on. In particular, I'm curious about this > line in SimpleRegisterCoalescing.cpp: > > 00710 LHSValsDefinedFromRHS[VNI] = > RHS.getLiveRangeContaining(VNI->def-1)->valno; > > Why VNI->def-1? The bug I'm seeing is that RHS returns a NULL > LiveRange because it doesn't contain VNI->def-1: > > %reg1093,0 = [5750,5754:2)[5754,5782:1)[5782,5858:0)[5868,5870:0) > 0 at 5782-(5858...
2007 Sep 25
2
[LLVMdev] Coalescing and VNInfo
LLVM is assuming this: struct InstrSlots { enum { LOAD = 0, USE = 1, DEF = 2, STORE = 3, NUM = 4 }; So VNI->def is always modulo 2. For coalescing, it's checking if the RHS is live at the "use" cycle. So it's checking VNI->def-1. Evan On Sep 25, 2007, at 8:55 AM, David Greene wrote: > On Tuesday 25 September 2007 10:49, David Greene wrote: >> I've hit a bug in a...
2014 Nov 21
2
[LLVMdev] InlineSpiller.cpp bug?
Hi Quentin, I have tried to find a test case for an official target, but failed. It seems to be a rare case. To do it, I added the 'else' clause in the following: ... if (VNI->def == OrigVNI->def) { DEBUG(dbgs() << "orig phi value\n"); SVI->second.DefByOrigPHI = true; SVI->second.AllDefsAreReloads = false; propagateSiblingValue(SVI); continue; } // check if the valno is actually an orig PHI, but is not OrigVNI else { LiveInt...
2014 Nov 18
3
[LLVMdev] InlineSpiller.cpp bug?
...7 8 PHI COPY of valno 5 COPY of valno 0 PHI 0 COPY of valno 6 /\ OrigVNI Tracing sibling values, valno 6 is the original valno: Valno 0 is a copy from 6. Valno 6 is a copy from 5. Valno 5 is a phi. Is it OrigVNI? NO! 'Therefore it is not an original phi.' WRONG! The search continues past it, assuming that it is a newly inserted PHI, done during splitting. My c...
2014 Dec 09
2
[LLVMdev] InlineSpiller.cpp bug?
...gt; BB3: //joining BB2 and BB15 >> @1472 // PHI value that should have been detected as part of OrigLI. >> @1520 identity COPY 122 to 122 >> … >> BB4: >> … >> BB5: >> @1764 // This is where vreg111 is split and tracing of vreg121 begins. OrigVNI passed is @1520. >> >> // Exits with two edges into two one-block loops, with one exit block each, which are joined in BB12. >> // Succs BB6, BB8 >> >> BB6: >> {} // Single block nested loop >> BB7: // pred BB6, succ BB12 >> @2948 sibling CO...
2014 Dec 05
2
[LLVMdev] InlineSpiller.cpp bug?
...o blocks further down @1764. Outer loop { BB2: ... BB15: ... BB3: //joining BB2 and BB15 @1472 // PHI value that should have been detected as part of OrigLI. @1520 identity COPY 122 to 122 ... BB4: ... BB5: @1764 // This is where vreg111 is split and tracing of vreg121 begins. OrigVNI passed is @1520. // Exits with two edges into two one-block loops, with one exit block each, which are joined in BB12. // Succs BB6, BB8 BB6: {} // Single block nested loop BB7: // pred BB6, succ BB12 @2948 sibling COPY 121 to 122 BB8: // pred BB5 {} // Single block nested loop BB9: //...
2016 Dec 22
5
Understanding SlotIndexes
...d 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 defined at /// Slot_EarlyCLobber interferes with normal...
2016 Dec 22
1
Spill hoisting on RAL: looking for some debugging ideas
...ing to understand why spill hoisting do such things in mine case. I found InlineSpiller::eliminateRedundantSpills that seems to be in charge. I traced code down to problem. First time it hoists vreg19 ok. Second time it sees MI, created first time, sees slot index, but then on line: if (LI->getVNInfoAt(Idx) != VNI) continue; it continues. (gdb) p *VNI $21 = {id = 4, def = {lie = {Value = 260284292}}} (gdb) p *LI->getVNInfoAt(Idx) $22 = {id = 0, def = {lie = {Value = 260282980}}} I do not clearly understand this LI/VNI mechanics. How to look where everything gone wrong? Where shall I lo...
2008 May 29
1
Problem with .C()
I've been trying to get my head around using matrices in calls to .C(). As an exercise I wrote some code to calculate the product of two matrices. (Well, it makes it easy to check if one is getting the right answer!) After obtaining some advice from a Certain Very Wise Person at Oxford, (to find out how to deal with array indexing in C functions called from elsewhere) I wrote the following
2007 Sep 25
0
[LLVMdev] Coalescing and VNInfo
On Tuesday 25 September 2007 12:25, Evan Cheng wrote: > LLVM is assuming this: > struct InstrSlots { > enum { > LOAD = 0, > USE = 1, > DEF = 2, > STORE = 3, > NUM = 4 > }; > > So VNI->def is always modulo 2. For coalescing, it's checking if the > RHS is live at the "use" cycle. So it's checking VNI->def-1. But why is it looking at a use slot in this case, where the coalescer is trying to get the vaue number for the def of the RHS register so it can u...
2007 Sep 25
1
[LLVMdev] Coalescing and VNInfo
On Tuesday 25 September 2007 13:28, David Greene wrote: > > So VNI->def is always modulo 2. For coalescing, it's checking if the > > RHS is live at the "use" cycle. So it's checking VNI->def-1. > > But why is it looking at a use slot in this case, where the coalescer is > trying to get the vaue number for the def of the RHS r...
2008 May 28
3
[LLVMdev] Possible VirtRegMap Bug
...ng at, linear scan spills an interval and one of the intervals created (%reg1631) gets mark as rematerializable by LiveIntervals: 00984 if (CreatedNewVReg) { 00985 if (DefIsReMat) { 00986 vrm.setVirtIsReMaterialized(NewVReg, ReMatDefMI/*, CanDelete*/); 00987 if (ReMatIds[VNI->id] == VirtRegMap::MAX_STACK_SLOT) { 00988 // Each valnum may have its own remat id. 00989 ReMatIds[VNI->id] = vrm.assignVirtReMatId(NewVReg); Linear scan dutifully assigns %reg1631 to AL. Then SimpleSpiller runs and does this: 00261 unsigned VirtReg = MO....
2016 Nov 27
5
Extending Register Rematerialization
...n in consideration) upto depth 6 (arbitrarily taken for testing) to check if value can be rematerialized with the sequence of instruction or not. Here is the code: //New function added for checking complex multi-instruction-sequence rematerializable bool LiveRangeEdit::checkComplexRematerializable(VNInfo *VNI, const MachineInstr *DefMI, unsigned int depth, AliasAnalysis *aa) { if(TII.isReMaterializablePossible(*DefMI, aa)) return false; DEBUG(dbgs() << &quot...
2011 Nov 14
2
[LLVMdev] llvm-gcc-i686-pc-linux-gnu-cross-arm-eabi-soft-float
...le and file a PR ? Thanks, - Devang cc1: /opt/buildslave/osuosl/slave/llvm-gcc-i686-pc-linux-gnu-cross-arm-eabi-soft-float/llvm.src/lib/CodeGen/LiveIntervalAnalysis.cpp:713: bool llvm::LiveIntervals::shrinkToUses(llvm::LiveInterval*, llvm::SmallVectorImpl<llvm::MachineInstr*>*): Assertion `ExtVNI == VNI && "Unexpected existing value number"' failed. ../../../llvm-gcc.src/libiberty/cplus-dem.c:4717: internal compiler error: Aborted Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://llvm.org/bugs/> for instructions. ---------...
2017 Sep 26
2
[MachineCopyPropagation] Issue with register forwarding/allocation/verifier in out-of-tree target
...file, just after the greedy allocator runs, the segment of %vreg77 from the def at 312B to the use at 380B seems to be separable from the other segments. The reason the above verification failure is not hit at that point seems to be related to the FIXME in the following snippet from ConnectedVNInfoEqClasses::Classify(): // Normal value defined by an instruction. Check for two-addr redef. // FIXME: This could be coincidental. Should we really check for a tied // operand constraint? // Note that VNI->def may be a use slot for an early clobber def. if (...
2012 Sep 20
2
[LLVMdev] InlineSpiller Questions
...come from the same value 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
2013 Jan 19
2
PriorityInheritance doesn't work (tinc 1.0.19)
...! I'd like to use PriorityInheritance option, despite it is still experimental. (Why it could be experimental, when it looks quite simple feature, no?) But this option doesn't change the TOS field of outgoing UDP packet. I just do tcpdump on outgoing interface from vty1: $ sudo tcpdump -vni eth0 udp dst port 655 And from vty2 I do ping with setting of tos field to EF(0xb8). $ ping -c1 <remote-ip-addr-on-tap-device> -Q 0xb8 And on outgoing interface I can only see the folowing from tcpdump: IP(tos 0x0, ttl 64, id 0, offset 0, flags[DF], proto UDP(17), length 136 So the TOS fie...
2011 Nov 15
1
[LLVMdev] llvm-gcc-i686-pc-linux-gnu-cross-arm-eabi-soft-float
Devang, I see the cause for confusion. Your message from this morning was specifically referring to this assert: Assertion `ExtVNI == VNI && "Unexpected existing value number"' failed. That assertion was fixed in the r144547. The PR shows this assert: Assertion failed: (isMetadata() && "Wrong MachineOperand accessor"), function Bisect fails until the beginning of time (or really r12514...
2008 May 30
0
[LLVMdev] Possible VirtRegMap Bug
...one of the intervals created (%reg1631) gets mark as > rematerializable by > LiveIntervals: > > 00984 if (CreatedNewVReg) { > 00985 if (DefIsReMat) { > 00986 vrm.setVirtIsReMaterialized(NewVReg, ReMatDefMI/*, > CanDelete*/); > 00987 if (ReMatIds[VNI->id] == VirtRegMap::MAX_STACK_SLOT) { > 00988 // Each valnum may have its own remat id. > 00989 ReMatIds[VNI->id] = vrm.assignVirtReMatId(NewVReg); > > Linear scan dutifully assigns %reg1631 to AL. Then SimpleSpiller > runs and > does this: > > 0...