llvm-6502/include/llvm/CodeGen/InstrScheduling.h
Chris Lattner 69db8da023 Checkin changes to:
1. Clean up the TargetMachine structure.  No more wierd pointers that have to
   be cast around and taken care of by the target.
2. Instruction Scheduling now takes the schedinfo as an argument.  The same
   should be done with the instinfo, it just isn't now.
3. Sparc.h is now just a factory method.  Eventually this file will dissapear,
   but probably not until we have more than one backend.  :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@564 91177308-0d34-0410-b5e6-96231b3b80d8
2001-09-14 04:32:38 +00:00

73 lines
2.2 KiB
C++

// $Id$ -*- C++ -*-
//***************************************************************************
// File:
// InstrScheduling.h
//
// Purpose:
//
// History:
// 7/23/01 - Vikram Adve - Created
//***************************************************************************
#ifndef LLVM_CODEGEN_INSTR_SCHEDULING_H
#define LLVM_CODEGEN_INSTR_SCHEDULING_H
#include "llvm/Support/CommandLine.h"
#include "llvm/CodeGen/MachineInstr.h"
class Method;
class SchedulingManager;
class TargetMachine;
class MachineSchedInfo;
// Debug option levels for instruction scheduling
enum SchedDebugLevel_t {
Sched_NoDebugInfo,
Sched_PrintMachineCode,
Sched_PrintSchedTrace,
Sched_PrintSchedGraphs,
};
extern cl::Enum<SchedDebugLevel_t> SchedDebugLevel;
//---------------------------------------------------------------------------
// 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,
const MachineSchedInfo &schedInfo);
//---------------------------------------------------------------------------
// 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