diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/llvm/CodeGen/InstrScheduling.h | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/InstrScheduling.h b/include/llvm/CodeGen/InstrScheduling.h new file mode 100644 index 0000000..dbe9211 --- /dev/null +++ b/include/llvm/CodeGen/InstrScheduling.h @@ -0,0 +1,86 @@ +// $Id$ +//*************************************************************************** +// File: +// InstrScheduling.h +// +// Purpose: +// +// History: +// 7/23/01 - Vikram Adve - Created +//*************************************************************************** + +#ifndef LLVM_CODEGEN_INSTR_SCHEDULING_H +#define LLVM_CODEGEN_INSTR_SCHEDULING_H + + +//************************ User Include Files *****************************/ + +#include "llvm/Support/CommandLine.h" +#include "llvm/CodeGen/TargetMachine.h" + +//************************ Opaque Declarations*****************************/ + +class Method; +class SchedulingManager; + +//************************ Exported Data Types *****************************/ + +// Debug option levels for instruction scheduling +enum SchedDebugLevel_t { + Sched_NoDebugInfo, + Sched_PrintMachineCode, + Sched_PrintSchedTrace, + Sched_PrintSchedGraphs, +}; + +extern cl::Enum<SchedDebugLevel_t> SchedDebugLevel; + + +//************************** External Classes ******************************/ + + +//************************* External Functions *****************************/ + + +//--------------------------------------------------------------------------- +// Function: ScheduleInstructionsWithSSA +// +// Purpose: +// Entry point for instruction scheduling on SSA form. +// Schedules the machine instructions generated by instruction selection. +// Assumes that register allocation has not been done, i.e., operands +// are still in SSA form. +//--------------------------------------------------------------------------- + +bool ScheduleInstructionsWithSSA (Method* method, + const TargetMachine &Target); + + +//--------------------------------------------------------------------------- +// Function: ScheduleInstructions +// +// Purpose: +// Entry point for instruction scheduling on machine code. +// Schedules the machine instructions generated by instruction selection. +// Assumes that register allocation has been done. +//--------------------------------------------------------------------------- + +// Not implemented yet. +bool ScheduleInstructions (Method* method, + const TargetMachine &Target); + +//--------------------------------------------------------------------------- +// Function: instrIsFeasible +// +// Purpose: +// Used by the priority analysis to filter out instructions +// that are not feasible to issue in the current cycle. +// Should only be used during schedule construction.. +//--------------------------------------------------------------------------- + +bool instrIsFeasible (const SchedulingManager& S, + MachineOpCode opCode); + +//**************************************************************************/ + +#endif |