Files
SAPFOR/projects/dvm/fdvm/trunk/Sage/lib/include/dependence.h
2025-03-25 21:09:12 +03:00

118 lines
3.4 KiB
C

/*********************************************************************/
/* pC++/Sage++ Copyright (C) 1993 */
/* Indiana University University of Oregon University of Rennes */
/*********************************************************************/
/* declaration for the dependencies computation and use in the toolbox */
/* on declare de macro d'acces aux dependence de donnee */
#define BIF_DEP_STRUCT1(NODE) ((NODE)->entry.Template.dep_ptr1)
#define BIF_DEP_STRUCT2(NODE) ((NODE)->entry.Template.dep_ptr2)
#define FIRST_DEP_IN_PROJ(X) ((X)->head_dep)
/* decription d'une dependance */
#define DEP_ID(DEP) ((DEP)->id)
#define DEP_NEXT(DEP) ((DEP)->thread)
#define DEP_TYPE(DEP) ((DEP)->type)
#define DEP_DIRECTION(DEP) ((DEP)->direct)
#define DEP_SYMB(DEP) ((DEP)->symbol)
#define DEP_FROM_BIF(DEP) (((DEP)->from).stmt)
#define DEP_FROM_LL(DEP) (((DEP)->from).refer)
#define DEP_TO_BIF(DEP) (((DEP)->to).stmt)
#define DEP_TO_LL(DEP) (((DEP)->to).refer)
#define DEP_FROM_FWD(DEP) ((DEP)->from_fwd)
#define DEP_FROM_BACK(DEP) ((DEP)->from_back)
#define DEP_TO_FWD(DEP) ((DEP)->to_fwd)
#define DEP_TO_BACK(DEP) ((DEP)->to_back)
/* la forme normale de dependence de donnee est le vecteur de direction */
/* on rappel temporairement la forme des dep (sets.h)
struct dep { data dependencies
int id; identification for reading/writing
PTR_DEP thread;
char type; flow-, output-, or anti-dependence
char direct[MAX_DEP]; direction/distance vector
PTR_SYMB symbol; symbol table entry
struct ref from; tail of dependence
struct ref to; head of dependence
PTR_DEP from_fwd, from_back; list of dependencies going to tail
PTR_DEP to_fwd, to_back; list of dependencies going to head
} ;
*/
/* pour la gestion memoire */
struct chaining
{
char *zone;
struct chaining *list;
};
typedef struct chaining *ptchaining;
struct stack_chaining
{
ptchaining first;
ptchaining last;
struct stack_chaining *prev;
struct stack_chaining *next;
int level;
};
typedef struct stack_chaining *ptstack_chaining;
/* structure pour les graphes de dependence */
#define MAXSUC 100
struct graph
{
int id; /* identificateur */
int linenum;
int mark;
int order;
PTR_BFND stmt;
PTR_LLND expr;
PTR_LLND from_expr[MAXSUC];
PTR_LLND to_expr[MAXSUC];
PTR_DEP dep_struct[MAXSUC];
char *dep_vect[MAXSUC];
char type[MAXSUC];
struct graph *suc[MAXSUC]; /* next */
struct graph *pred[MAXSUC]; /* next */
struct graph *list; /* chaine les noeuds d'un graphe */
};
typedef struct graph *PTR_GRAPH;
#define CHAIN_LIST(NODE) ((NODE)->list)
#define GRAPH_ID(NODE) ((NODE)->id)
#define GRAPH_ORDER(NODE) ((NODE)->order)
#define GRAPH_MARK(NODE) ((NODE)->mark)
#define GRAPH_LINE(NODE) ((NODE)->linenum)
#define GRAPH_BIF(NODE) ((NODE)->stmt)
#define GRAPH_LL(NODE) ((NODE)->expr)
#define GRAPH_DEP(NODE) (((NODE)->dep_struct))
#define GRAPH_VECT(NODE) (((NODE)->dep_vect))
#define GRAPH_TYPE(NODE) ((NODE)->type)
#define GRAPH_SUC(NODE) (((NODE)->suc))
#define GRAPH_PRED(NODE) (((NODE)->pred))
#define GRAPH_LL_FROM(NODE) (((NODE)->from_expr))
#define GRAPH_LL_TO(NODE) (((NODE)->to_expr))
#define NOT_ORDERED -1