ScoreboardHazardRecognizer.cpp (226890) | ScoreboardHazardRecognizer.cpp (235633) |
---|---|
1//===----- ScoreboardHazardRecognizer.cpp - Scheduler Support -------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 126 unchanged lines hidden (view full) --- 135 assert((StageCycle - Stalls) < (int)RequiredScoreboard.getDepth() && 136 "Scoreboard depth exceeded!"); 137 // This stage was stalled beyond pipeline depth, so cannot conflict. 138 break; 139 } 140 141 unsigned freeUnits = IS->getUnits(); 142 switch (IS->getReservationKind()) { | 1//===----- ScoreboardHazardRecognizer.cpp - Scheduler Support -------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// --- 126 unchanged lines hidden (view full) --- 135 assert((StageCycle - Stalls) < (int)RequiredScoreboard.getDepth() && 136 "Scoreboard depth exceeded!"); 137 // This stage was stalled beyond pipeline depth, so cannot conflict. 138 break; 139 } 140 141 unsigned freeUnits = IS->getUnits(); 142 switch (IS->getReservationKind()) { |
143 default: 144 assert(0 && "Invalid FU reservation"); | |
145 case InstrStage::Required: 146 // Required FUs conflict with both reserved and required ones 147 freeUnits &= ~ReservedScoreboard[StageCycle]; 148 // FALLTHROUGH 149 case InstrStage::Reserved: 150 // Reserved FUs can conflict only with required ones. 151 freeUnits &= ~RequiredScoreboard[StageCycle]; 152 break; --- 36 unchanged lines hidden (view full) --- 189 // stage is occupied. FIXME it would be more accurate to reserve 190 // the same unit free in all the cycles. 191 for (unsigned int i = 0; i < IS->getCycles(); ++i) { 192 assert(((cycle + i) < RequiredScoreboard.getDepth()) && 193 "Scoreboard depth exceeded!"); 194 195 unsigned freeUnits = IS->getUnits(); 196 switch (IS->getReservationKind()) { | 143 case InstrStage::Required: 144 // Required FUs conflict with both reserved and required ones 145 freeUnits &= ~ReservedScoreboard[StageCycle]; 146 // FALLTHROUGH 147 case InstrStage::Reserved: 148 // Reserved FUs can conflict only with required ones. 149 freeUnits &= ~RequiredScoreboard[StageCycle]; 150 break; --- 36 unchanged lines hidden (view full) --- 187 // stage is occupied. FIXME it would be more accurate to reserve 188 // the same unit free in all the cycles. 189 for (unsigned int i = 0; i < IS->getCycles(); ++i) { 190 assert(((cycle + i) < RequiredScoreboard.getDepth()) && 191 "Scoreboard depth exceeded!"); 192 193 unsigned freeUnits = IS->getUnits(); 194 switch (IS->getReservationKind()) { |
197 default: 198 assert(0 && "Invalid FU reservation"); | |
199 case InstrStage::Required: 200 // Required FUs conflict with both reserved and required ones 201 freeUnits &= ~ReservedScoreboard[cycle + i]; 202 // FALLTHROUGH 203 case InstrStage::Reserved: 204 // Reserved FUs can conflict only with required ones. 205 freeUnits &= ~RequiredScoreboard[cycle + i]; 206 break; --- 36 unchanged lines hidden --- | 195 case InstrStage::Required: 196 // Required FUs conflict with both reserved and required ones 197 freeUnits &= ~ReservedScoreboard[cycle + i]; 198 // FALLTHROUGH 199 case InstrStage::Reserved: 200 // Reserved FUs can conflict only with required ones. 201 freeUnits &= ~RequiredScoreboard[cycle + i]; 202 break; --- 36 unchanged lines hidden --- |