parent
3122c82089
commit
2c00b5098a
|
@ -111,38 +111,38 @@ class InstrItineraryData {
|
||||||
public:
|
public:
|
||||||
const InstrStage *Stages; ///< Array of stages selected
|
const InstrStage *Stages; ///< Array of stages selected
|
||||||
const unsigned *OperandCycles; ///< Array of operand cycles selected
|
const unsigned *OperandCycles; ///< Array of operand cycles selected
|
||||||
const InstrItinerary *Itineratries; ///< Array of itineraries selected
|
const InstrItinerary *Itineraries; ///< Array of itineraries selected
|
||||||
|
|
||||||
/// Ctors.
|
/// Ctors.
|
||||||
///
|
///
|
||||||
InstrItineraryData() : Stages(0), OperandCycles(0), Itineratries(0) {}
|
InstrItineraryData() : Stages(0), OperandCycles(0), Itineraries(0) {}
|
||||||
InstrItineraryData(const InstrStage *S, const unsigned *OS,
|
InstrItineraryData(const InstrStage *S, const unsigned *OS,
|
||||||
const InstrItinerary *I)
|
const InstrItinerary *I)
|
||||||
: Stages(S), OperandCycles(OS), Itineratries(I) {}
|
: Stages(S), OperandCycles(OS), Itineraries(I) {}
|
||||||
|
|
||||||
/// isEmpty - Returns true if there are no itineraries.
|
/// isEmpty - Returns true if there are no itineraries.
|
||||||
///
|
///
|
||||||
bool isEmpty() const { return Itineratries == 0; }
|
bool isEmpty() const { return Itineraries == 0; }
|
||||||
|
|
||||||
/// isEndMarker - Returns true if the index is for the end marker
|
/// isEndMarker - Returns true if the index is for the end marker
|
||||||
/// itinerary.
|
/// itinerary.
|
||||||
///
|
///
|
||||||
bool isEndMarker(unsigned ItinClassIndx) const {
|
bool isEndMarker(unsigned ItinClassIndx) const {
|
||||||
return ((Itineratries[ItinClassIndx].FirstStage == ~0U) &&
|
return ((Itineraries[ItinClassIndx].FirstStage == ~0U) &&
|
||||||
(Itineratries[ItinClassIndx].LastStage == ~0U));
|
(Itineraries[ItinClassIndx].LastStage == ~0U));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// beginStage - Return the first stage of the itinerary.
|
/// beginStage - Return the first stage of the itinerary.
|
||||||
///
|
///
|
||||||
const InstrStage *beginStage(unsigned ItinClassIndx) const {
|
const InstrStage *beginStage(unsigned ItinClassIndx) const {
|
||||||
unsigned StageIdx = Itineratries[ItinClassIndx].FirstStage;
|
unsigned StageIdx = Itineraries[ItinClassIndx].FirstStage;
|
||||||
return Stages + StageIdx;
|
return Stages + StageIdx;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// endStage - Return the last+1 stage of the itinerary.
|
/// endStage - Return the last+1 stage of the itinerary.
|
||||||
///
|
///
|
||||||
const InstrStage *endStage(unsigned ItinClassIndx) const {
|
const InstrStage *endStage(unsigned ItinClassIndx) const {
|
||||||
unsigned StageIdx = Itineratries[ItinClassIndx].LastStage;
|
unsigned StageIdx = Itineraries[ItinClassIndx].LastStage;
|
||||||
return Stages + StageIdx;
|
return Stages + StageIdx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -174,8 +174,8 @@ public:
|
||||||
if (isEmpty())
|
if (isEmpty())
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
unsigned FirstIdx = Itineratries[ItinClassIndx].FirstOperandCycle;
|
unsigned FirstIdx = Itineraries[ItinClassIndx].FirstOperandCycle;
|
||||||
unsigned LastIdx = Itineratries[ItinClassIndx].LastOperandCycle;
|
unsigned LastIdx = Itineraries[ItinClassIndx].LastOperandCycle;
|
||||||
if ((FirstIdx + OperandIdx) >= LastIdx)
|
if ((FirstIdx + OperandIdx) >= LastIdx)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
|
@ -187,7 +187,7 @@ public:
|
||||||
bool isMicroCoded(unsigned ItinClassIndx) const {
|
bool isMicroCoded(unsigned ItinClassIndx) const {
|
||||||
if (isEmpty())
|
if (isEmpty())
|
||||||
return false;
|
return false;
|
||||||
return Itineratries[ItinClassIndx].NumMicroOps != 1;
|
return Itineraries[ItinClassIndx].NumMicroOps != 1;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -1453,7 +1453,7 @@ ARMBaseInstrInfo::getNumMicroOps(const MachineInstr *MI,
|
||||||
|
|
||||||
const TargetInstrDesc &Desc = MI->getDesc();
|
const TargetInstrDesc &Desc = MI->getDesc();
|
||||||
unsigned Class = Desc.getSchedClass();
|
unsigned Class = Desc.getSchedClass();
|
||||||
unsigned UOps = ItinData->Itineratries[Class].NumMicroOps;
|
unsigned UOps = ItinData->Itineraries[Class].NumMicroOps;
|
||||||
if (UOps)
|
if (UOps)
|
||||||
return UOps;
|
return UOps;
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ TargetInstrInfo::getNumMicroOps(const MachineInstr *MI,
|
||||||
return 1;
|
return 1;
|
||||||
|
|
||||||
unsigned Class = MI->getDesc().getSchedClass();
|
unsigned Class = MI->getDesc().getSchedClass();
|
||||||
unsigned UOps = ItinData->Itineratries[Class].NumMicroOps;
|
unsigned UOps = ItinData->Itineraries[Class].NumMicroOps;
|
||||||
if (UOps)
|
if (UOps)
|
||||||
return UOps;
|
return UOps;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue