#ifndef COMPILER_SCHEDULER_H #define COMPILER_SCHEDULER_H #include "compiler/common.h" typedef int (*LatencyFunc)(PCode *instr); typedef void (*InitializeFunc)(void); typedef int (*CanIssueFunc)(PCode *instr); typedef void (*IssueFunc)(PCode *instr); typedef void (*AdvanceClockFunc)(void); typedef int (*SerializesFunc)(PCode *instr); typedef int (*UsesVPermuteUnitFunc)(PCode *instr); #ifdef __MWERKS__ #pragma options align=mac68k #endif typedef struct MachineInfo { int x0; int x4; int x8; LatencyFunc latency; InitializeFunc initialize; CanIssueFunc can_issue; IssueFunc issue; AdvanceClockFunc advance_clock; SerializesFunc serializes; UsesVPermuteUnitFunc uses_vpermute_unit; } MachineInfo; #ifdef __MWERKS__ #pragma options align=reset #endif extern MachineInfo machine601; extern MachineInfo machine603; extern MachineInfo machine603e; extern MachineInfo machine604; extern MachineInfo machine7400; extern MachineInfo machine7450; extern MachineInfo machine750; extern MachineInfo machine821; extern int is_same_operand(PCodeArg *a, PCodeArg *b); extern void scheduleinstructions(Boolean flag); extern int is_dependent(PCode *a, PCode *b, char rclass); extern int uses_vpermute_unit(PCode *instr); extern int default_uses_vpermute_unit(PCode *instr); #endif