Changes in directory llvm/include/llvm/Target:
TargetInstrInfo.h updated: 1.80 -> 1.81 TargetInstrItineraries.h updated: 1.1 -> 1.2 TargetMachine.h updated: 1.57 -> 1.58 --- Log message: Allow itineraries to be passed through the Target Machine. --- Diffs of the changes: (+60 -1) TargetInstrInfo.h | 1 TargetInstrItineraries.h | 52 +++++++++++++++++++++++++++++++++++++++++++++++ TargetMachine.h | 8 +++++++ 3 files changed, 60 insertions(+), 1 deletion(-) Index: llvm/include/llvm/Target/TargetInstrInfo.h diff -u llvm/include/llvm/Target/TargetInstrInfo.h:1.80 llvm/include/llvm/Target/TargetInstrInfo.h:1.81 --- llvm/include/llvm/Target/TargetInstrInfo.h:1.80 Fri Sep 2 13:16:20 2005 +++ llvm/include/llvm/Target/TargetInstrInfo.h Tue Nov 1 14:07:00 2005 @@ -146,7 +146,6 @@ return get(Opcode).numOperands; } - InstrSchedClass getSchedClass(MachineOpCode Opcode) const { return get(Opcode).schedClass; } Index: llvm/include/llvm/Target/TargetInstrItineraries.h diff -u llvm/include/llvm/Target/TargetInstrItineraries.h:1.1 llvm/include/llvm/Target/TargetInstrItineraries.h:1.2 --- llvm/include/llvm/Target/TargetInstrItineraries.h:1.1 Thu Oct 27 13:18:05 2005 +++ llvm/include/llvm/Target/TargetInstrItineraries.h Tue Nov 1 14:07:00 2005 @@ -16,6 +16,8 @@ #ifndef LLVM_TARGET_TARGETINSTRITINERARIES_H #define LLVM_TARGET_TARGETINSTRITINERARIES_H +#include "llvm/Support/Debug.h" + namespace llvm { //===----------------------------------------------------------------------===// @@ -41,6 +43,56 @@ }; + +//===----------------------------------------------------------------------===// +// Instruction itinerary Data - Itinerary data supplied by a subtarget to be +// used by a target. +// +class InstrItineraryData { + InstrStage *Stages; // Array of stages selected + unsigned NStages; // Number of stages + InstrItinerary *Itineratries; // Array of itineraries selected + unsigned NItineraries; // Number of itineraries (actually classes) + +public: + + // + // Ctors. + // + InstrItineraryData() + : Stages(NULL), NStages(0), Itineratries(NULL), NItineraries(0) + {} + InstrItineraryData(InstrStage *S, unsigned NS, InstrItinerary *I, unsigned NI) + : Stages(S), NStages(NS), Itineratries(I), NItineraries(NI) + {} + + // + // isEmpty - Returns true if there are no itineraries. + // + inline bool isEmpty() const { return NItineraries == 0; } + + // + // begin - Return the first stage of the itinerary. + // + inline InstrStage *begin(unsigned ItinClassIndx) const { + assert(ItinClassIndx < NItineraries && "Itinerary index out of range"); + unsigned StageIdx = Itineratries[ItinClassIndx].First; + assert(StageIdx < NStages && "Stage index out of range"); + return Stages + StageIdx; + } + + // + // end - Return the last+1 stage of the itinerary. + // + inline InstrStage *end(unsigned ItinClassIndx) const { + assert(ItinClassIndx < NItineraries && "Itinerary index out of range"); + unsigned StageIdx = Itineratries[ItinClassIndx].Last; + assert(StageIdx < NStages && "Stage index out of range"); + return Stages + StageIdx; + } +}; + + } // End llvm namespace #endif Index: llvm/include/llvm/Target/TargetMachine.h diff -u llvm/include/llvm/Target/TargetMachine.h:1.57 llvm/include/llvm/Target/TargetMachine.h:1.58 --- llvm/include/llvm/Target/TargetMachine.h:1.57 Fri Aug 5 16:53:21 2005 +++ llvm/include/llvm/Target/TargetMachine.h Tue Nov 1 14:07:00 2005 @@ -15,6 +15,7 @@ #define LLVM_TARGET_TARGETMACHINE_H #include "llvm/Target/TargetData.h" +#include "llvm/Target/TargetInstrItineraries.h" #include <cassert> namespace llvm { @@ -122,6 +123,13 @@ /// otherwise return null. /// virtual TargetJITInfo *getJITInfo() { return 0; } + + /// getInstrItineraryData - Returns instruction itinerary data for the target + /// or specific subtarget. + /// + virtual const InstrItineraryData getInstrItineraryData() const { + return InstrItineraryData(); + } // These are deprecated interfaces. virtual const TargetSchedInfo *getSchedInfo() const { return 0; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits