2022-11-20 05:07:22 +00:00
|
|
|
#ifndef COMPILER_SCHEDULER_H
|
|
|
|
#define COMPILER_SCHEDULER_H
|
|
|
|
|
|
|
|
#include "compiler/common.h"
|
|
|
|
|
2022-12-14 00:16:59 +00:00
|
|
|
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);
|
|
|
|
|
2022-11-20 05:07:22 +00:00
|
|
|
#endif
|