mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-24 08:33:39 +00:00
69db8da023
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
73 lines
2.2 KiB
C++
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
|