search for: instrslots

Displaying 12 results from an estimated 12 matches for "instrslots".

2007 Jun 22
4
[LLVMdev] df_ext_iterator in LiveIntervalAnalysis
...mi != miEnd; ++mi) { bool inserted = mi2iMap_.insert(std::make_pair(mi, miIndex)).second; assert(inserted && "multiple MachineInstr -> index mappings"); i2miMap_.push_back(mi); miIndex += InstrSlots::NUM; } } this->maxInstrIndex_ = miIndex; //===--------------------------------------- // --> old code //===--------------------------------------- unsigned miIndex = 0; for (MachineFunction::iterator mbb = mf_->begin(), mbbEnd = mf_->end(); mbb != mbbEnd; ++m...
2007 Jun 22
0
[LLVMdev] df_ext_iterator in LiveIntervalAnalysis
...mi != miEnd; > ++mi) { > bool inserted = mi2iMap_.insert(std::make_pair(mi, > miIndex)).second; > assert(inserted && "multiple MachineInstr -> index mappings"); > i2miMap_.push_back(mi); > miIndex += InstrSlots::NUM; > } > } > this->maxInstrIndex_ = miIndex; > //===--------------------------------------- > // --> old code > //===--------------------------------------- > unsigned miIndex = 0; > for (MachineFunction::iterator mbb = mf_->begin(), mbbEnd = mf_-&g...
2007 Jun 22
0
[LLVMdev] df_ext_iterator in LiveIntervalAnalysis
...mi != > miEnd; > ++mi) { > bool inserted = mi2iMap_.insert(std::make_pair(mi, > miIndex)).second; > assert(inserted && "multiple MachineInstr -> index > mappings"); > i2miMap_.push_back(mi); > miIndex += InstrSlots::NUM; > } > } > this->maxInstrIndex_ = miIndex; > //===--------------------------------------- > // --> old code > //===--------------------------------------- > unsigned miIndex = 0; > for (MachineFunction::iterator mbb = mf_->begin(), mbbEnd = m...
2008 Apr 16
3
[LLVMdev] Possible bug in LiveIntervalAnalysis?
...chineBasicBlock::iterator I = MBB->begin(), E = MBB->end(); I != E; ++I) { bool inserted = mi2iMap_.insert(std::make_pair(I, MIIndex)).second; assert(inserted && "multiple MachineInstr -> index mappings"); i2miMap_.push_back(I); MIIndex += InstrSlots::NUM; } // Set the MBB2IdxMap entry for this MBB. MBB2IdxMap[MBB->getNumber()] = std::make_pair(StartIdx, MIIndex - 1); For empty MBBs, the last line would create a pair, where the end element is smaller than the start element, which is a bit counter-intuitive. This may lead to so...
2009 Jan 27
1
[LLVMdev] Get Maximum Instruction Index
...ometimes it would be good if I could get the maximum instruction index from the set of live intervals. In my local version I have added this method to LiveIntervals: /// Return the maximum index among the instruction indices. inline unsigned getMaxInstrIndex() const { return i2miMap_.size() * InstrSlots::NUM; } Is there something like this already in LiveIntervals? Do you guys think it could be added as a patch? All the best, Fernando
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,...
2008 Apr 16
0
[LLVMdev] Possible bug in LiveIntervalAnalysis?
...BB->begin(), E = MBB->end(); > I != E; ++I) { > bool inserted = mi2iMap_.insert(std::make_pair(I, > MIIndex)).second; > assert(inserted && "multiple MachineInstr -> index mappings"); > i2miMap_.push_back(I); > MIIndex += InstrSlots::NUM; > } > > // Set the MBB2IdxMap entry for this MBB. > MBB2IdxMap[MBB->getNumber()] = std::make_pair(StartIdx, MIIndex - > 1); > > For empty MBBs, the last line would create a pair, where the end > element is smaller than the start element, which is a b...
2008 Apr 18
1
[LLVMdev] Possible bug in LiveIntervalAnalysis?
...= MBB->end(); >> I != E; ++I) { >> bool inserted = mi2iMap_.insert(std::make_pair(I, >> MIIndex)).second; >> assert(inserted && "multiple MachineInstr -> index mappings"); >> i2miMap_.push_back(I); >> MIIndex += InstrSlots::NUM; >> } >> >> // Set the MBB2IdxMap entry for this MBB. >> MBB2IdxMap[MBB->getNumber()] = std::make_pair(StartIdx, MIIndex - >> 1); >> >> For empty MBBs, the last line would create a pair, where the end >> element is smaller than the s...
2007 Jun 22
2
[LLVMdev] df_ext_iterator in LiveIntervalAnalysis
...mi != miEnd; >> ++mi) { >> bool inserted = mi2iMap_.insert(std::make_pair(mi, >> miIndex)).second; >> assert(inserted && "multiple MachineInstr -> index mappings"); >> i2miMap_.push_back(mi); >> miIndex += InstrSlots::NUM; >> } >> } >> this->maxInstrIndex_ = miIndex; >> //===--------------------------------------- >> // --> old code >> //===--------------------------------------- >> unsigned miIndex = 0; >> for (MachineFunction::iterator mbb =...
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
2007 Sep 25
0
[LLVMdev] Coalescing and VNInfo
On Tuesday 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?
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&...