mirror of
https://git.wuffs.org/MWCC
synced 2025-12-21 02:39:17 +00:00
rename some stuff and use an enum for RegClass
This commit is contained in:
@@ -2,10 +2,8 @@
|
||||
#define COMPILER_COLORING_H
|
||||
|
||||
#include "compiler/common.h"
|
||||
#include "compiler/Registers.h"
|
||||
|
||||
//extern RegClass coloring_class;
|
||||
extern char coloring_class;
|
||||
extern RegClass coloring_class;
|
||||
|
||||
extern void colorinstructions(Object *proc);
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ typedef struct IAMnemonic {
|
||||
|
||||
typedef struct IARegister {
|
||||
char *name;
|
||||
char rclass;
|
||||
RegClass rclass;
|
||||
SInt32 num;
|
||||
Object *object;
|
||||
} IARegister;
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
#include "compiler/InlineAsm.h"
|
||||
|
||||
extern void InlineAsm_InitializeRegisters(void);
|
||||
extern void InlineAsm_InsertRegister(char *name, char rclass, short num, Object *object);
|
||||
extern void InlineAsm_InsertRegister(char *name, RegClass rclass, short num, Object *object);
|
||||
extern IARegister *InlineAsm_LookupRegister(char *name);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -4,15 +4,15 @@
|
||||
#include "compiler/common.h"
|
||||
|
||||
typedef struct LiveInfo {
|
||||
UInt32 *vec0; // use
|
||||
UInt32 *vec4; // def
|
||||
UInt32 *vec8; // in
|
||||
UInt32 *vecC; // out
|
||||
UInt32 *use;
|
||||
UInt32 *def;
|
||||
UInt32 *in;
|
||||
UInt32 *out;
|
||||
} LiveInfo;
|
||||
|
||||
extern LiveInfo *liveinfo;
|
||||
|
||||
extern void computelivevariables(Object *proc);
|
||||
extern int dead(PCode *instr, char rclass, UInt32 *vec);
|
||||
extern int dead(PCode *instr, RegClass rclass, UInt32 *vec);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -51,7 +51,7 @@ typedef enum {
|
||||
|
||||
struct PCodeArg {
|
||||
PCOpKind kind;
|
||||
unsigned char arg;
|
||||
RegClass arg;
|
||||
union {
|
||||
struct {
|
||||
unsigned short effect;
|
||||
@@ -79,33 +79,33 @@ struct PCodeArg {
|
||||
|
||||
#define PC_OP_IS_REGISTER(_op, _rclass, _reg) \
|
||||
((_op)->kind == PCOp_REGISTER && \
|
||||
(char) (_op)->arg == (_rclass) && \
|
||||
(_op)->arg == (_rclass) && \
|
||||
(_op)->data.reg.reg == (_reg))
|
||||
|
||||
#define PC_OP_IS_READ_REGISTER(_op, _rclass, _reg) \
|
||||
((_op)->kind == PCOp_REGISTER && \
|
||||
(char) (_op)->arg == (_rclass) && \
|
||||
(_op)->arg == (_rclass) && \
|
||||
(_op)->data.reg.reg == (_reg) && \
|
||||
((_op)->data.reg.effect & EffectRead))
|
||||
|
||||
#define PC_OP_IS_WRITE_REGISTER(_op, _rclass, _reg) \
|
||||
((_op)->kind == PCOp_REGISTER && \
|
||||
(char) (_op)->arg == (_rclass) && \
|
||||
(_op)->arg == (_rclass) && \
|
||||
(_op)->data.reg.reg == (_reg) && \
|
||||
((_op)->data.reg.effect & EffectWrite))
|
||||
|
||||
#define PC_OP_IS_ANY_REGISTER(_op, _rclass) \
|
||||
((_op)->kind == PCOp_REGISTER && \
|
||||
(char) (_op)->arg == (_rclass))
|
||||
(_op)->arg == (_rclass))
|
||||
|
||||
#define PC_OP_IS_READ_ANY_REGISTER(_op, _rclass) \
|
||||
((_op)->kind == PCOp_REGISTER && \
|
||||
(char) (_op)->arg == (_rclass) && \
|
||||
(_op)->arg == (_rclass) && \
|
||||
((_op)->data.reg.effect & EffectRead))
|
||||
|
||||
#define PC_OP_IS_WRITE_ANY_REGISTER(_op, _rclass) \
|
||||
((_op)->kind == PCOp_REGISTER && \
|
||||
(char) (_op)->arg == (_rclass) && \
|
||||
(_op)->arg == (_rclass) && \
|
||||
((_op)->data.reg.effect & EffectWrite))
|
||||
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@ typedef enum {
|
||||
} PCOpKind;
|
||||
|
||||
typedef enum {
|
||||
PCOpMemory0 = 0,
|
||||
PCOpMemory1 = 1
|
||||
} PCOpMemoryArg;
|
||||
|
||||
|
||||
@@ -12,12 +12,12 @@ extern short _CALLER_SP_;
|
||||
extern char *special_register_names[RegClassMax][RegisterMax];
|
||||
extern short spr_to_sysreg[4];
|
||||
|
||||
extern void asm_used_register(char rclass, short reg);
|
||||
extern void retain_register(Object *obj, char rclass, short reg);
|
||||
extern void asm_used_register(RegClass rclass, short reg);
|
||||
extern void retain_register(Object *obj, RegClass rclass, short reg);
|
||||
extern void retain_GPR_pair(Object *obj, short reg, short regHi);
|
||||
extern int is_register_object(Object *obj);
|
||||
extern int GetABIFirstNonVolatile(char rclass);
|
||||
extern char GetRegisterClassName(char rclass);
|
||||
extern int GetABIFirstNonVolatile(RegClass rclass);
|
||||
extern char GetRegisterClassName(RegClass rclass);
|
||||
extern void setup_diagnostic_reg_strings(void);
|
||||
extern void init_target_registers(void);
|
||||
extern void assign_register_by_type(Object *obj);
|
||||
@@ -27,9 +27,9 @@ extern void set_last_exception_registers(void);
|
||||
extern VarInfo *Registers_GetVarInfo(Object *obj);
|
||||
extern int used_vrstate_VRs(void);
|
||||
extern UInt32 colored_vrs_as_vrsave(PCodeBlock *block);
|
||||
extern void save_before_coloring_nonvolatile_registers(char rclass);
|
||||
extern void reset_nonvolatile_registers(char rclass);
|
||||
extern int is_nonvolatile_register(char rclass, int reg);
|
||||
extern void save_before_coloring_nonvolatile_registers(RegClass rclass);
|
||||
extern void reset_nonvolatile_registers(RegClass rclass);
|
||||
extern int is_nonvolatile_register(RegClass rclass, int reg);
|
||||
extern void init_endian(void);
|
||||
extern void update_asm_nonvolatile_registers(void);
|
||||
|
||||
|
||||
@@ -8,25 +8,6 @@ enum {
|
||||
Register2 = 2,
|
||||
RegisterMax = 32
|
||||
};
|
||||
/*const char RegClass_SPR = 0;
|
||||
const char RegClass_CRFIELD = 1;
|
||||
const char RegClass_VR = 2;
|
||||
const char RegClass_FPR = 3;
|
||||
const char RegClass_GPR = 4;
|
||||
const char RegClassMax = 5;
|
||||
const char RegClass_6 = 6;
|
||||
const char RegClass_DCR = 7;*/
|
||||
typedef enum RegClass {
|
||||
RegClass_Invalid = -1,
|
||||
RegClass_SPR = 0,
|
||||
RegClass_CRFIELD = 1,
|
||||
RegClass_VR = 2,
|
||||
RegClass_FPR = 3,
|
||||
RegClass_GPR = 4,
|
||||
RegClassMax = 5,
|
||||
RegClass_6 = 6,
|
||||
RegClass_DCR = 7
|
||||
} RegClass;
|
||||
|
||||
enum {
|
||||
RegState0 = 0,
|
||||
@@ -51,11 +32,11 @@ extern int coloring;
|
||||
extern int optimizing;
|
||||
|
||||
extern void init_registers(void);
|
||||
extern void assign_register_to_variable(Object *obj, char rclass);
|
||||
extern void retain_register_for_argument(Object *obj, char rclass, short reg);
|
||||
extern int available_registers(char rclass);
|
||||
extern UInt32 volatile_registers(char rclass);
|
||||
extern short obtain_nonvolatile_register(char rclass);
|
||||
extern void assign_register_to_variable(Object *obj, RegClass rclass);
|
||||
extern void retain_register_for_argument(Object *obj, RegClass rclass, short reg);
|
||||
extern int available_registers(RegClass rclass);
|
||||
extern UInt32 volatile_registers(RegClass rclass);
|
||||
extern short obtain_nonvolatile_register(RegClass rclass);
|
||||
extern void open_temp_registers(void);
|
||||
extern void check_temp_registers(void);
|
||||
extern void close_temp_registers(void);
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
#define COMPILER_USEDEFCHAINS_H
|
||||
|
||||
#include "compiler/common.h"
|
||||
#include "compiler/Registers.h"
|
||||
#include "compiler/PCodeInfo.h"
|
||||
|
||||
#ifdef __MWERKS__
|
||||
@@ -10,7 +9,7 @@
|
||||
#endif
|
||||
typedef struct TinyValue {
|
||||
PCOpKind kind;
|
||||
unsigned char arg;
|
||||
RegClass arg;
|
||||
union {
|
||||
short reg;
|
||||
Object *object;
|
||||
|
||||
@@ -10,8 +10,6 @@ typedef struct HashNameNode {
|
||||
char name[1];
|
||||
} HashNameNode;
|
||||
|
||||
typedef struct CPrepFileInfo CPrepFileInfo;
|
||||
|
||||
#ifdef __MWERKS__
|
||||
#pragma options align=mac68k
|
||||
#endif
|
||||
@@ -118,6 +116,7 @@ typedef struct CI_FuncData CI_FuncData;
|
||||
typedef struct CLabel CLabel;
|
||||
typedef struct ClassList ClassList;
|
||||
typedef struct CParams CParams;
|
||||
typedef struct CPrepFileInfo CPrepFileInfo;
|
||||
typedef struct DeclInfo DeclInfo;
|
||||
typedef struct DeclThing DeclThing; // rename me please
|
||||
typedef struct DefArgCtorInfo DefArgCtorInfo;
|
||||
@@ -307,6 +306,18 @@ enum {
|
||||
EXPORT_FLAGS_EXPORT = 0x40
|
||||
};
|
||||
|
||||
typedef enum RegClass {
|
||||
RegClass_Invalid = -1,
|
||||
RegClass_SPR = 0,
|
||||
RegClass_CRFIELD = 1,
|
||||
RegClass_VR = 2,
|
||||
RegClass_FPR = 3,
|
||||
RegClass_GPR = 4,
|
||||
RegClassMax = 5,
|
||||
RegClass_6 = 6,
|
||||
RegClass_DCR = 7
|
||||
} RegClass;
|
||||
|
||||
#ifdef __MWERKS__
|
||||
#pragma options align=mac68k
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user