MWCC/includes/compiler/Scheduler.h

49 lines
1.3 KiB
C

#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