fixed paths

This commit is contained in:
2025-03-12 14:22:11 +03:00
parent a4c8785e66
commit 18f561925b
774 changed files with 4558 additions and 4558 deletions

View File

@@ -0,0 +1,157 @@
#pragma once
struct BasicBlock
{
int index;
SgStatement* head;
SgStatement* tail;
std::vector<int> in, out;// blocks this block takes control from / passes control to
std::set<SgStatement*> INrd, OUTrd, INae, OUTae;// reaching definitions and extended available expressions
std::map<SgExpression*, std::set<SgExpression*> > INss;// safe substitutes (expression propagation)
BasicBlock() : index(-1), head(NULL), tail(NULL) {}
};
class Access;
class Array;
class Loop;
class Access
{
private:
int blockIndex;
SgExpression* expr;
std::string str;
Array* array;
int* alignment;
public:
int getBlockIndex() const { return blockIndex; }
SgExpression* getSubscripts() { return expr; }
int* getAlignment() const { return alignment; }
Access(SgExpression* subscripts, std::string s, Array* array, int blockIndex) : expr(subscripts), str(s), array(array), blockIndex(blockIndex), alignment(NULL) {}
void analyze();
void getReferences(SgExpression* expr, std::set<SgExpression*>& references, std::map<SgExpression*, std::string>& unparsedRefs, std::map<std::string, SgExpression*>& refs) const;
~Access() { delete [] alignment; }
};
struct TfmInfo
{
std::vector<int> transformDims;
std::vector<std::pair<std::string, std::string> > exprs;
std::vector<SgSymbol*> coefficients;
std::vector<SgExpression*> first;
std::vector<SgExpression*> second;
std::vector<SgStatement*> zeroSt;
std::map<SgStatement*, std::vector<SgFunctionCallExp*> > ifCalls;
std::map<SgStatement*, std::vector<SgFunctionCallExp*> > elseCalls;
};
class Array
{
private:
SgSymbol* symbol;
int dimension;
Loop* loop;
std::map<std::string, Access*> accesses;
int* alignment;
std::vector<int> acrossDims;
int acrossType;
TfmInfo tfmInfo;
public:
SgSymbol* getSymbol() const { return symbol; }
Loop* getLoop() const { return loop; }
int getDimension() const { return dimension; }
int getAcrossType() const { return acrossType; }
void setAcrossType(const int acrossType) { this->acrossType = acrossType; }
std::vector<int>& getAcrossDims() { return acrossDims; }
int* getAlignment() const { return alignment; }
std::map<std::string, Access*>& getAccesses() { return accesses; }
TfmInfo& getTfmInfo() { return tfmInfo; }
Array(SgSymbol* symbol, int dimension, Loop* loop) : symbol(symbol), dimension(dimension), loop(loop), alignment(NULL), acrossDims(dimension, -1), acrossType(0) {}
void analyze();
void analyzeTransformDimensions();
SgSymbol* findAccess(SgExpression* subscripts, std::string& expr);
void addCoefficient(SgExpression* subscripts, std::string& expr, SgSymbol* symbol);
void generateAssigns(SgVarRefExp* offsetX, SgVarRefExp* offsetY, SgVarRefExp* Rx, SgVarRefExp* Ry, SgVarRefExp* slash);
~Array()
{
delete [] alignment;
for (std::map<std::string, Access*>::iterator it = accesses.begin(); it != accesses.end(); ++it)
delete it->second;
}
};
class Loop
{
private:
bool enable_opt;
bool irregular_acc_opt;
bool do_irreg_opt;
std::vector<BasicBlock> blocks;
std::map<SgStatement*, int> blockIn;
enum { ENTRY, EXIT };
SgStatement* loop_body;
int dimension;
std::map<SgSymbol*, Array*> arrays;
std::set<SgSymbol*> redArrays;
int* acrossDims;
int acrossType;
std::vector<SgSymbol*> symbols;
std::set<SgSymbol*> privateList;
bool IsTargetable(SgStatement* stmt) const;
void analyzeAcrossClause();
void analyzeAcrossType();
void analyzeAssignments(int blockIndex, SgStatement* stmt);
void buildCFG();
void setupSubstitutes();
void analyzeAssignments(SgExpression* ex, const int blockIndex);
void analyzeInderectAccess();
public:
const std::vector<BasicBlock>& getBlocks() const { return blocks; }
const std::map<SgStatement*, int>& getBlockIn() const { return blockIn; }
const std::vector<SgSymbol*>& getSymbols() const { return symbols; }
int getDimension() const { return dimension; }
int getAcrossType() const { return acrossType; }
std::map<SgSymbol*, Array*>& getArrays() { return arrays; }
std::set<SgSymbol*>& getPrivateList() { return privateList; }
Loop(SgStatement* loop_body, bool enable_opt, bool irreg_access = false);
// only for RD/AE analyses, which can be later performed only on statements in loop_body
// usage: Loop* loop = new Loop(loop_body_stmt); RDs = loop->RDsAt(stmtI); AEs = loop->AEsAt(stmtJ);
// note: only one loop object can exist at a time (lhs, rhs, unparsedLhs, unparsedRhs are global for all methods for simplicity,
// probably can be added to Loop class and transferred to Array/Access by pointer/reference, and this constraint will be solved)
Loop(SgStatement* loop_body);
// get defining statements which reach stmt
std::set<SgStatement*> RDsAt(SgStatement* stmt) const;
// get statements, rhss of which are available at stmt
std::set<SgStatement*> AEsAt(SgStatement* stmt) const;
void getRPN(SgExpression* expr, std::list<SgExpression*>& rpn) const;
void unrollRPN(std::list<SgExpression*>& rpn, std::map<SgExpression*, int>& arity) const;
void optimizeRPN(std::list<SgExpression*>& rpn, std::map<SgExpression*, int>& arity, bool unrolled) const;
SgExpression* simplify(SgExpression* expr) const;
void visualize(const char* scriptName) const;
bool irregularAnalysisIsOn() const;
~Loop()
{
delete [] acrossDims;
for (std::map<SgSymbol*, Array*>::iterator it = arrays.begin(); it != arrays.end(); ++it)
delete it->second;
}
};

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,76 @@
#pragma once
#include <cstdio>
#include <cstdlib>
#include <ctype.h>
#include <cmath>
#include <cstring>
#include <climits>
#include <iostream>
#include <list>
#include <vector>
#include <stack>
#include <set>
#include <map>
#include <queue>
#include <deque>
#include <string>
#include <iterator>
#include <algorithm>
#include "dvm.h"
#include "acc_across_analyzer.h"
extern bool READ;
extern bool WRITE;
extern bool dontGenConvertXY;
extern bool oneCase;
extern int ACROSS_MOD_IN_KERNEL;
extern int DVM_DEBUG_LVL;
extern const int rtTypes[];
extern std::set<std::string> intrinsicF;
extern std::set<std::string> intrinsicDoubleT;
extern std::set<std::string> intrinsicFloatT;
extern std::set<std::string> intrinsicInt4T;
extern std::map<char, const char*> SpecialSymbols;
extern std::vector <SgFunctionCallExp* > RTC_FCall;
extern std::vector<SgExpression* > RTC_FArgs;
extern std::vector<SgFunctionCallExp* > RTC_FKernelArgs;
extern std::vector<SgSymbol*> newVars;
extern const char *funcDvmhConvXYname;
extern int number_of_loop_line;
extern std::stack<SgStatement*> CopyOfBody;
extern Loop *currentLoop;
extern unsigned countKernels;
extern SgType *indexType_int, *indexType_long, *indexType_llong;
extern SgSymbol *s_indexType_int, *s_indexType_long, *s_indexType_llong;
extern const char *declaration_cmnt;
extern int loc_el_num;
extern SgStatement *cur_in_mod, *cur_in_kernel;
extern SgStatement *dvm_parallel_dir, *loop_body;
extern SgStatement *kernel_st;
extern SgExpression *private_list, *uses_list, *kernel_index_var_list, *formal_red_grid_list;
extern struct local_part_list *lpart_list;
extern SgSymbol *kernel_symb, *s_overall_blocks;
extern SgType *t_dim3;
extern SgSymbol *s_threadidx, *s_blockidx, *s_blockdim, *s_griddim, *s_blocks_k;
//------ C ----------
extern SgStatement *block_C, *block_C_Cuda, *info_block;
extern SgSymbol *s_DvmhLoopRef, *s_cudaStream, *s_cmplx, *s_dcmplx;
enum ACROSS_ANALYZE { RIGHT, LEFT, RESTORE, ADD, ACROSS_TYPE, NON_ACROSS_TYPE };
enum rt_TYPES { rt_INT, rt_LONG, rt_LLONG };
enum { _NUL_, _READ_, _WRITE_, _READ_WRITE_ };
enum VAR_TYPES { EMPTY, INTENT_IN, INTENT_OUT, INTENT_INOUT, INTENT_LOCAL, INTENT_INLOCAL };
enum { ZERO_, HANDLER_TYPE_PARALLEL, HANDLER_TYPE_MASTER };
enum RED_TYPES { red_NULL, red_SUM, red_PROD, red_MAX, red_MIN, red_AND, red_OR,
red_NEQ, red_EQ, red_MAXL, red_MINL, red_SUM_N, red_PROD_N,
red_MAX_N, red_MIN_N, red_AND_N, red_OR_N, red_NEQ_N, red_EQ_N };

View File

@@ -0,0 +1,136 @@
#pragma once
#include <vector>
class Access;
class Array;
class Loop;
class AllLoops;
class Access
{
public:
Access(SgExpression *_exp, Array *_parent);
~Access() { }
void setExp(char* _exp);
void setExp(SgExpression *_exp);
char* getExpChar();
SgExpression* getExp();
void incOperW();
void incOperR();
Array* getParentArray();
void setParentArray(Array *_parent);
std::vector<int>* getAlignOnLoop();
void matchLoopIdxs(std::vector<SgSymbol*> &symbols);
private:
char *expAcc;
SgExpression *exp;
int operation[2];
Array *parentArray;
std::vector<int> alignOnLoop;
bool matchRecursion(SgExpression *_exp, SgSymbol *symb);
};
class Array
{
public:
Array(int _dim, char *_name, Loop *_parent);
Array(char *_name, Loop *_parent);
~Array() { }
void setDimNum(int _num);
int getDimNum();
std::vector<int>* getAcrDims();
std::vector<int>* getAlignOnLoop();
void addTfmDim(int _dim);
std::vector<int> *getTfmDims();
void addAccess(Access* _newAccess);
Access* getAccess(char* _expAcc);
std::vector<Access*>* getAccesses();
Loop* getParentLoop();
void setParentLoop(Loop *_loop);
void setArrayName(char* _name);
char* getArrayName();
int getAcrType();
void setAcrType(int _type);
std::vector<SgFunctionCallExp*>* getIfCals();
std::vector<SgFunctionCallExp*>* getElseCals();
std::vector<SgStatement*>* getZeroSt();
std::vector<SgSymbol* >* getCoefInAccess();
void analyzeAcrDims();
void analyzeAlignOnLoop();
void analyzeTrDims();
// diagTransform
SgSymbol* findAccess(SgExpression *_exp, char *&_charEx);
void addNewCoef(SgExpression *_exp, char *_charEx, SgSymbol *_symb);
void generateAssigns(SgVarRefExp *offsetX, SgVarRefExp *offsetY, SgVarRefExp *Rx, SgVarRefExp *Ry, SgVarRefExp *slash);
private:
int dimNum;
int acrossType;
std::vector<int> acrossDims;
std::vector<int> alignOnLoop;
std::vector<int> transformDims;
std::vector<Access*> accesses;
char *name;
Loop *parentLoop;
// diagTransform
std::vector<SgSymbol* > coefInAccess;
std::vector<SgExpression*> firstEx;
std::vector<SgExpression*> secondEx;
std::vector<char*> charEx;
std::vector<SgStatement*> zeroSt;
std::vector<SgFunctionCallExp*> ifCalls;
std::vector<SgFunctionCallExp*> elseCalls;
};
class Loop
{
public:
Loop(int _line, SgStatement *_body, bool withAnalyze);
Loop(int _acrType, int _line, SgStatement *_body);
Loop(int _line, SgStatement *_body);
Loop(int _line);
~Loop() {};
void setLine(int _line);
int getLine();
void setAcrType(int _type);
int getAcrType();
std::vector<Array*>* getArrays();
void addArray(Array *_array);
Array* getArray(char *name, int *_idx);
Array* getArray(char *name);
std::vector<SgSymbol*>* getSymbols();
int getLoopDim();
void analyzeLoopBody();
void analyzeAcrossType();
bool isArrayInPrivate(char *name);
void unroll(int level); // TODO
private:
int loopDim;
std::vector<SgSymbol*> symbols;
int line;
int acrossType;
std::vector<Array*> arrays;
SgStatement* loopBody;
std::vector<char*> privateList;
std::vector<int> acrDims;
void analyzeAssignOp(SgExpression *_exp, int oper);
};
// ---------------------------------------------------------------------- // AllLoops
class AllLoops
{
public:
AllLoops() {}
~AllLoops() {}
void addLoop(Loop *_loop) { loops.push_back(_loop); }
std::vector<Loop*>* getLoops() { return &loops; }
private:
std::vector<Loop*> loops;
};

View File

@@ -0,0 +1,207 @@
#pragma once
#include "acc_data.h"
struct SageSymbols
{
SageSymbols()
{
across_left = across_right = 0;
len = -1;
symb = NULL;
}
SageSymbols(SgSymbol* symb, int len, int across_left, int across_right) :
symb(symb), len(len), across_left(across_left), across_right(across_right)
{ }
SgSymbol *symb;
int len;
int across_left;
int across_right;
};
struct SageArrayIdxs
{
std::vector<SageSymbols> symb;
int dim;
int read_write;
SgExpression *array_expr;
};
struct SageAcrossInfo
{
std::vector<SageArrayIdxs> idxs;
};
struct ArgsForKernel
{
SgStatement *st_header;
std::vector<SageSymbols> symb;
std::vector<SageSymbols> nSymb;
std::vector<SgSymbol*> sizeVars;
std::vector<SgSymbol*> acrossS;
std::vector<SgSymbol*> notAcrossS;
std::vector<SgSymbol*> idxAcross;
std::vector<SgSymbol*> idxNotAcross;
std::vector<SgSymbol*> otherVars;
std::vector<char*> arrayNames;
std::vector<SgSymbol*> otherVarsForOneTh;
std::vector<SgSymbol*> baseIdxsInKer;
SgSymbol *cond_;
std::vector<SgSymbol*> steps;
};
/*struct GetXYInfo
{
std::vector<SgExpression*> AllExp;
SgSymbol *varName;
char *arrayName;
long type;
int placeF;
int placeS;
};*/
/*struct TransformInfo
{
std::vector<char *> arrayNames;
std::vector<int> firstIdxs;
std::vector<int> secondIdxs;
bool exist(char *name);
bool find_in_exprs(SgSymbol*, SgSymbol*, char*, SgExpression*);
bool find_add(SgSymbol*, SgSymbol*, char*);
void getIdxs(char*, int&, int&);
};*/
struct ParamsForAllVariants
{
SgSymbol *s_adapter;
SgSymbol *s_kernel_symb;
int loopV;
int acrossV;
int allDims;
std::vector<SageSymbols> loopSymb;
std::vector<SageSymbols> loopAcrossSymb;
char *nameOfNewSAdapter;
char *nameOfNewKernelSymb;
int type;
};
struct Bound
{
int L;
int R;
bool exL;
bool exR;
bool ifDdot;
SgExpression *additionalExpr;
};
struct BestPattern
{
std::vector<int> what;
std::vector<Bound> bounds;
SgExpression *bestPatt;
int count_of_pattern;
};
struct Pattern
{
int count_read_op;
int count_write_op;
SgExpression *symbs;
};
struct AnalyzeStat
{
SgSymbol *replaceSymbol;
int ifHasDim;
SgSymbol *name_of_array;
SgExpression *ex_name_of_array;
std::vector<Pattern> patterns;
};
// <for oprimization>
struct acrossInfo
{
char *nameOfArray;
SgSymbol *symbol;
int allDim;
int acrossPos;
int widthL;
int widthR;
int acrossNum;
std::vector<int> dims;
std::vector<SgSymbol*> symbs;
};
struct newInfo
{
SgSymbol *newArray;
std::vector<int> dimSize;
std::vector<SgStatement*> loadsBeforePlus;
std::vector<SgStatement*> loadsInForPlus;
std::vector<SgStatement*> loadsBeforeMinus;
std::vector<SgStatement*> loadsInForMinus;
std::vector<SgStatement*> stores;
std::vector<SgStatement*> swapsDown;
std::vector<SgStatement*> swapsUp;
};
// end <for oprimization>
// block <gpuO1 lvl 2>
struct Group
{
char *strOfmain; //
SgExpression *mainPattern;
std::vector<SgExpression*> inGroup;
std::vector<int> len;
std::vector<int> sortLen;
newInfo replaceInfo; // replace info with all needed loads and swaps for optimization
};
struct PositionGroup
{
std::map<std::string, SgExpression*> tableReplace; // table of mapping new private variables to distributed arrays for replacing in loop body
std::map<std::string, SgSymbol*> tableNewVars; // table of new private variables that is needed to add in cuda kernel
int position; // position of fixed variable in distributed loop, index 0 corresponds to the first variable.
SgExpression *idxInPos; //
std::vector<Group> allPosGr; // all groups of array access patterns with fixed loop variables, which is distributed
};
struct ArrayGroup
{
SgSymbol *arrayName; // name of distribute array
std::vector<PositionGroup> allGroups; // all groups, where one loop variable is fixed
};
// end of block <gpuO1 lvl 2>
struct LoopInfo
{
std::vector<SgSymbol*> loopSymbols;
std::vector<SgExpression*> lowBounds;
std::vector<SgExpression*> highBounds;
std::vector<SgExpression*> steps;
int lineNumber;
};
struct ArrayIntents
{
std::vector<SgSymbol*> arrayList;
std::vector<int> intent;
};
struct AnalyzeReturnGpuO1
{
std::vector<AnalyzeStat> allStat;
std::vector<BestPattern> bestPatterns;
std::vector<ArrayGroup> allArrayGroup;
};
// functions
SgExpression* findDirect(SgExpression*, int);
SageAcrossInfo GetLoopsWithParAndAcrDir();
std::vector<SageSymbols> GetSymbInParalell(SgExpression*);
int GetIdxPlaceInParDir(SageSymbols*, SgSymbol*);

View File

@@ -0,0 +1,74 @@
#pragma once
#ifdef __SPF
extern "C" void addToCollection(const int line, const char *file, void *pointer, int type);
extern "C" void removeFromCollection(void *pointer);
#endif
struct graph_node {
int id; //a number of node
graph_node *next;
graph_node *next_header_node; //???
graph_node *Inext;
graph_node *same_name_next;
SgFile *file;
int file_id;
int header_id;
SgStatement *st_header;
SgStatement *st_last;
SgStatement *st_copy;
SgStatement *st_copy_first;
SgStatement *st_interface;
SgSymbol *symb; //??? st_header->symbol()
char *name;
struct edge *to_called; //outcoming
struct edge *from_calling; //incoming
int type; //flag - type of procedure: 1-external,2-internal,3-module
int split; //flag
int tmplt; //flag
int visited; //flag for partition algorithm
int clone; //flag is clone node
int count; //counter of inline expansions or calls
int is_routine;// has ROUTINE attribute - 1, else - 0
int samenamed; // flag - there is samenamed symbol
struct argument_numbers *arg_numbs;
#if __SPF
graph_node() { addToCollection(__LINE__, __FILE__, this, 1); }
~graph_node() { removeFromCollection(this); }
#endif
};
struct graph_node_list {
graph_node_list *next;
graph_node *node;
#if __SPF
graph_node_list() { addToCollection(__LINE__, __FILE__, this, 1); }
~graph_node_list() { removeFromCollection(this); }
#endif
};
struct edge {
edge *next;
graph_node *from;
graph_node *to;
int inlined; //1 - inlined, 0 - not inlined
#if __SPF
edge() { addToCollection(__LINE__, __FILE__, this, 1); }
~edge() { removeFromCollection(this); }
#endif
};
struct edge_list {
edge_list *next;
edge *edg;
#if __SPF
edge_list() { addToCollection(__LINE__, __FILE__, this, 1); }
~edge_list() { removeFromCollection(this); }
#endif
};

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,160 @@
#define HPF_TEMPLATE_STAT 296
#define HPF_ALIGN_STAT 297
#define HPF_PROCESSORS_STAT 298
#define DVM_DISTRIBUTE_DIR 277
#define DVM_REDISTRIBUTE_DIR 299
#define DVM_PARALLEL_ON_DIR 211
#define DVM_SHADOW_START_DIR 212
#define DVM_SHADOW_GROUP_DIR 213
#define DVM_SHADOW_WAIT_DIR 214
#define DVM_REDUCTION_START_DIR 215
#define DVM_REDUCTION_GROUP_DIR 216
#define DVM_REDUCTION_WAIT_DIR 217
#define DVM_DYNAMIC_DIR 218
#define DVM_ALIGN_DIR 219
#define DVM_REALIGN_DIR 220
#define DVM_REALIGN_NEW_DIR 221
#define DVM_REMOTE_ACCESS_DIR 222
#define HPF_INDEPENDENT_DIR 223
#define DVM_SHADOW_DIR 224
#define DVM_NEW_VALUE_DIR 247
#define DVM_VAR_DECL 248
#define DVM_POINTER_DIR 249
#define DVM_DEBUG_DIR 146
#define DVM_ENDDEBUG_DIR 147
#define DVM_TRACEON_DIR 148
#define DVM_TRACEOFF_DIR 149
#define DVM_INTERVAL_DIR 128
#define DVM_ENDINTERVAL_DIR 129
#define DVM_TASK_REGION_DIR 605
#define DVM_END_TASK_REGION_DIR 606
#define DVM_ON_DIR 607
#define DVM_END_ON_DIR 608
#define DVM_TASK_DIR 609
#define DVM_MAP_DIR 610
#define DVM_PARALLEL_TASK_DIR 611
#define DVM_INHERIT_DIR 612
#define DVM_INDIRECT_GROUP_DIR 613
#define DVM_INDIRECT_ACCESS_DIR 614
#define DVM_REMOTE_GROUP_DIR 615
#define DVM_RESET_DIR 616
#define DVM_PREFETCH_DIR 617
#define DVM_OWN_DIR 618
#define DVM_HEAP_DIR 619
#define DVM_ASYNCID_DIR 620
#define DVM_ASYNCHRONOUS_DIR 621
#define DVM_ENDASYNCHRONOUS_DIR 622
#define DVM_ASYNCWAIT_DIR 623
#define DVM_F90_DIR 624
#define DVM_BARRIER_DIR 625
#define FORALL_STAT 626
#define DVM_CONSISTENT_GROUP_DIR 627
#define DVM_CONSISTENT_START_DIR 628
#define DVM_CONSISTENT_WAIT_DIR 629
#define DVM_CONSISTENT_DIR 630
#define DVM_CHECK_DIR 631
#define DVM_IO_MODE_DIR 632
#define DVM_LOCALIZE_DIR 633
#define DVM_SHADOW_ADD_DIR 634
#define DVM_CP_CREATE_DIR 635
#define DVM_CP_LOAD_DIR 636
#define DVM_CP_SAVE_DIR 637
#define DVM_CP_WAIT_DIR 638
#define DVM_EXIT_INTERVAL_DIR 639
#define DVM_TEMPLATE_CREATE_DIR 640
#define DVM_TEMPLATE_DELETE_DIR 641
#define PRIVATE_AR_DECL 642
#define BLOCK_OP 705
#define NEW_SPEC_OP 706
#define REDUCTION_OP 707
#define SHADOW_RENEW_OP 708
#define SHADOW_START_OP 709
#define SHADOW_WAIT_OP 710
#define DIAG_OP 711
#define REMOTE_ACCESS_OP 712
#define TEMPLATE_OP 713
#define PROCESSORS_OP 714
#define DYNAMIC_OP 715
#define ALIGN_OP 716
#define DISTRIBUTE_OP 717
#define SHADOW_OP 718
#define INDIRECT_ACCESS_OP 719
#define ACROSS_OP 720
#define NEW_VALUE_OP 721
#define SHADOW_COMP_OP 722
#define STAGE_OP 723
#define FORALL_OP 724
#define CONSISTENT_OP 725
#define PARALLEL_OP 737
#define INDIRECT_OP 738
#define DERIVED_OP 739
#define DUMMY_REF 740
#define COMMON_OP 741
#define SHADOW_NAMES_OP 742
#define SHADOW_GROUP_NAME 523
#define REDUCTION_GROUP_NAME 524
#define REF_GROUP_NAME 525
#define ASYNC_ID 526
#define CONSISTENT_GROUP_NAME 527
#define ACC_REGION_DIR 900 /* ACC Fortran */
#define ACC_END_REGION_DIR 901 /* ACC Fortran */
#define ACC_CALL_STMT 907 /* ACC Fortran */
#define ACC_KERNEL_HEDR 908 /* ACC Fortran */
#define ACC_GET_ACTUAL_DIR 909 /* ACC Fortran */
#define ACC_ACTUAL_DIR 910 /* ACC Fortran */
#define ACC_CHECKSECTION_DIR 911 /* ACC Fortran */
#define ACC_END_CHECKSECTION_DIR 912 /* ACC Fortran */
#define ACC_ROUTINE_DIR 913 /* ACC Fortran */
#define ACC_DECLARE_DIR 914 /* ACC Fortran */
#define ACC_TIE_OP 930 /* ACC Fortran */
#define ACC_INLOCAL_OP 931 /* ACC Fortran */
#define ACC_INOUT_OP 932 /* ACC Fortran */
#define ACC_IN_OP 933 /* ACC Fortran */
#define ACC_OUT_OP 934 /* ACC Fortran */
#define ACC_LOCAL_OP 935 /* ACC Fortran */
#define ACC_PRIVATE_OP 936 /* ACC Fortran */
#define ACC_DEVICE_OP 937 /* ACC Fortran */
#define ACC_CUDA_OP 938 /* ACC Fortran */
#define ACC_HOST_OP 939 /* ACC Fortran */
#define ACC_GLOBAL_OP 940 /* ACC Fortran */
#define ACC_ATTRIBUTES_OP 941 /* ACC Fortran */
#define ACC_VALUE_OP 942 /* ACC Fortran */
#define ACC_SHARED_OP 943 /* ACC Fortran */
#define ACC_CONSTANT_OP 944 /* ACC Fortran */
#define ACC_USES_OP 945 /* ACC Fortran */
#define ACC_CALL_OP 946 /* ACC Fortran */
#define ACC_CUDA_BLOCK_OP 947 /* ACC Fortran */
#define ACC_TARGETS_OP 948 /* ACC Fortran */
#define ACC_ASYNC_OP 949 /* ACC Fortran */
#define SPF_ANALYSIS_DIR 950 /* SAPFOR */
#define SPF_PARALLEL_DIR 951 /* SAPFOR */
#define SPF_TRANSFORM_DIR 952 /* SAPFOR */
#define SPF_NOINLINE_OP 953 /* SAPFOR */
#define SPF_PARALLEL_REG_DIR 954 /* SAPFOR */
#define SPF_END_PARALLEL_REG_DIR 955 /* SAPFOR */
#define SPF_REGION_NAME 956 /* SAPFOR */
#define SPF_EXPAND_OP 957 /* SAPFOR */
#define SPF_FISSION_OP 958 /* SAPFOR */
#define SPF_SHRINK_OP 959 /* SAPFOR */
#define SPF_CHECPOINT_DIR 960 /* SAPFOR */
#define SPF_TYPE_OP 961 /* SAPFOR */
#define SPF_VARLIST_OP 962 /* SAPFOR */
#define SPF_EXCEPT_OP 963 /* SAPFOR */
#define SPF_FILES_COUNT_OP 964 /* SAPFOR */
#define SPF_INTERVAL_OP 965 /* SAPFOR */
#define SPF_TIME_OP 966 /* SAPFOR */
#define SPF_ITER_OP 967 /* SAPFOR */
#define SPF_FLEXIBLE_OP 968 /* SAPFOR */
#define SPF_PARAMETER_OP 969 /* SAPFOR */
#define SPF_CODE_COVERAGE_OP 970 /* SAPFOR */
#define SPF_UNROLL_OP 971 /* SAPFOR */
#define SPF_COVER_OP 972 /* SAPFOR */
#define SPF_MERGE_OP 973 /* SAPFOR */
#define SPF_PROCESS_PRIVATE_OP 974 /* SAPFOR */
#define SPF_WEIGHT_OP 975 /* SAPFOR */

View File

@@ -0,0 +1,58 @@
/*********************************************************************/
/* pC++/Sage++ Copyright (C) 1993 */
/* Indiana University University of Oregon University of Rennes */
/*********************************************************************/
#include "db.h"
extern char *infname;
extern char yytext[];
extern int yyleng;
extern int errline;
extern int needkwd;
extern int implkwd;
extern int optkwd;
extern int opt_kwd_;
extern int opt_in_out;
extern int as_op_kwd_;
extern int opt_kwd_hedr;
extern int opt_kwd_r;
extern int optcorner;
extern int optcall;
extern int opt_l_s;
extern int colon_flag;
extern int inioctl;
extern int shiftcase;
extern int nowarnflag;
extern int nwarn;
extern int errcnt;
extern int yylineno;
extern int mod_offset;
extern int num_files;
extern int parstate;
extern int procclass;
extern long procleng;
extern int nentry;
extern int blklevel;
extern int undeftype;
extern int dorange;
extern char intonly;
extern PTR_TYPE global_unknown;
extern PTR_FNAME head_file, cur_thread_file;
extern PTR_FILE fi;
char *copyn(), *copys();
#define INLOOP(x) ((LOOP_NODE <= x) && (x <= WHILE_NODE))
#define NEW_SCOPE(x) ((x->variant == FORALL_NODE)|| \
(x->variant == CDOALL_NODE)|| \
(x->variant == SDOALL_NODE)|| \
(x->variant == DOACROSS_NODE)|| \
(x->variant == CDOACROSS_NODE)|| \
(x->variant == FOR_NODE))
extern int is_openmp_stmt; /*OMP*/
extern int operator_slash; /*OMP*/
#define BIT_OPENMP 1024*128*128 /* OpenMP Fortran */

View File

@@ -0,0 +1,74 @@
/*********************************************************************/
/* pC++/Sage++ Copyright (C) 1993 */
/* Indiana University University of Oregon University of Rennes */
/*********************************************************************/
/* The following 16 different options are used to
declare variables are as follows:
( stored in symptr->attr ) */
#define ALLOCATABLE_BIT 1
#define DIMENSION_BIT 2
#define INHERIT_BIT 4
#define EXTERNAL_BIT 8
#define IN_BIT 16
#define INOUT_BIT 32
#define INTRINSIC_BIT 64
#define OPTIONAL_BIT 128
#define OUT_BIT 256
#define PARAMETER_BIT 512
#define POINTER_BIT 1024
#define PRIVATE_BIT 2048
#define PUBLIC_BIT 4096
#define SAVE_BIT 8192
#define SEQUENCE_BIT 16384
#define RECURSIVE_BIT 32768
#define TARGET_BIT 65536
#define PROCESSORS_BIT 131072
#define TEMPLATE_BIT 262144
#define DISTRIBUTE_BIT 524288
#define ALIGN_BIT 1048576
#define HEAP_BIT 2097152
#define DYNAMIC_BIT 4194304
#define SHADOW_BIT 8388608
#define DVM_POINTER_BIT 16777216
#define COMMON_BIT 33554432
#define INDIRECT_BIT 67108864
#define POSTPONE_BIT 134217728
#define DO_VAR_BIT 268435456
#define DATA_BIT 536870912
#define TASK_BIT 1073741824
#define EQUIVALENCE_BIT 16384
#define ALIGN_BASE_BIT 67108864
#define CONSISTENT_BIT 268435456
#define ELEMENTAL_BIT 2097152
#define PURE_BIT 33554432
/* This constant is used in HPF unparser */
#define DVM_POINTER_ARRAY_BIT 268435456
/*2147483648 */
#define ALREADY_DISTRIBUTE_BIT 524288
#define ALREADY_ALIGN_BIT 1048576
#define ALREADY_TEMPLATE_BIT 262144
#define ALREADY_DYNAMIC_BIT 4194304
#define ALREADY_PROCESSORS_BIT 131072
#define ALREADY_SHADOW_BIT 8388608
#define ALREADY_TASK_BIT 1073741824
#define ALREADY_INHERIT_BIT 67108864
#define ALREADY_DVM_POINTER_BIT 16777216
#define ALREADY_TASK_BIT 1073741824
/*ACC*/
#define USE_IN_BIT 8
#define USE_OUT_BIT 32768
#define USER_PROCEDURE_BIT 512
/* This constant is used in analyzer */
#define ASSOCIATION_BIT 2097152

View File

@@ -0,0 +1 @@
#define COMPILER_VERSION "4.1 (06.03.2025)"

View File

@@ -0,0 +1,11 @@
/*********************************************************************/
/* pC++/Sage++ Copyright (C) 1993 */
/* Indiana University University of Oregon University of Rennes */
/*********************************************************************/
#include <stdio.h>
#include "defs.h"
#include "bif.h"
#include "ll.h"
#include "symb.h"
#include "sets.h"

View File

@@ -0,0 +1,18 @@
#pragma once
#ifdef _WIN32
#ifdef _DEBUG
#define _CRTDBG_MAP_ALLOC
#include <stdlib.h>
#include <crtdbg.h>
#ifdef _DEBUG
#ifndef DBG_NEW
#define DBG_NEW new ( _NORMAL_BLOCK , __FILE__ , __LINE__ )
#define new DBG_NEW
#endif
#endif
#endif
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,341 @@
name_dvm[CLFDVM] = "clfdvm"; //fortran subroutine closing all opened files
name_dvm[RTLINI] = "linit";
name_dvm[RTLEXI] = "lexit";
name_dvm[GETAM] = "getam";
name_dvm[GETVM] = "getps";
name_dvm[BEGBL] = "begbl";
name_dvm[ENDBL] = "endbl";
name_dvm[CRTAMV] = "crtamv";
name_dvm[DISAM] = "distr";
name_dvm[CRTDA] = "crtda";
name_dvm[ALGNDA] = "align";
name_dvm[REDVAR] = "crtred";
name_dvm[REDVARF] = "crtrdf";
name_dvm[CRTRG] = "crtrg";
name_dvm[INSRV] = "insred";
name_dvm[SAVERV] = "saverv";
name_dvm[STARTR] = "strtrd";
name_dvm[WAITR] = "waitrd";
name_dvm[DELRG] = "delrg";
name_dvm[CRTSHG] = "crtshg";
name_dvm[DATOSHG] = "inssh";
name_dvm[STARTSH] = "strtsh";
name_dvm[WAITSH] = "waitsh";
name_dvm[DELSHG] = "delshg";
name_dvm[CRTPLP] = "crtpl";
name_dvm[BEGPLP] = "mappl";
name_dvm[ENDPLP] = "endpl";
name_dvm[BFIRST] = "exfrst";
name_dvm[BLAST] = "imlast";
name_dvm[DOLOOP] = "dopl";
name_dvm[GETADR] = "getadr";
name_dvm[GETAI] = "getai";
name_dvm[GETAL] = "getal";
name_dvm[GETAF] = "getaf";
name_dvm[GETAD] = "getad";
name_dvm[GETAC] = "getac";
name_dvm[GETACH] = "getach";
name_dvm[TSTIOP] = "tstio";
name_dvm[GETRNK] = "getrnk";
name_dvm[GETSIZ] = "getsiz";
name_dvm[ARRCPY] = "arrcpy";
name_dvm[SRMEM] = "srmem";
name_dvm[RDISAM] = "redis";
name_dvm[REALGN] = "realn";
name_dvm[RWELM] = "rwelm";
name_dvm[RWELMF] = "rwelmf";
name_dvm[DELOBJ] = "delobj";
name_dvm[TSTELM] = "tstelm";
name_dvm[DLOADV] = "dldv";
name_dvm[DSTORV] = "dstv";
name_dvm[DPRSTV] = "dprstv";
name_dvm[DINOUT] = "dinout";
name_dvm[DRMBUF] = "drmbuf";
name_dvm[DITER] = "diter";
name_dvm[DBEGPL] = "dbegpl";
name_dvm[DBEGSL] = "dbegsl";
name_dvm[DENDL] = "dendl";
name_dvm[DSKPBL] = "dskpbl";
name_dvm[BINTER] = "binter";
name_dvm[EINTER] = "einter";
name_dvm[BSLOOP] = "bsloop";
name_dvm[BPLOOP] = "bploop";
name_dvm[ENLOOP] = "enloop";
name_dvm[BIOF] = "biof";
name_dvm[EIOF] = "eiof";
name_dvm[FNAME] = "fname";
name_dvm[LNUMB] = "lnumb";
name_dvm[ADDHDR] = "addhdr";
name_dvm[PSVIEW] = "psview";
name_dvm[CRTPS] = "crtps";
name_dvm[GETAMV] = "getamv";
name_dvm[GETAMR] = "getamr";
name_dvm[MAPAM] = "mapam";
name_dvm[RUNAM] = "runam";
name_dvm[STOPAM] = "stopam";
name_dvm[CRTBG] = "crtbg";
name_dvm[LOADBG] = "loadbg";
name_dvm[WAITBG] = "waitbg";
name_dvm[CRTRB] = "crtrbl";
name_dvm[CRTRBP] = "crtrbp";
name_dvm[LOADRB] = "loadrb";
name_dvm[WAITRB] = "waitrb";
name_dvm[INSRB] = "insrb";
name_dvm[CRTIG] = "crtig";
name_dvm[LOADIG] = "loadig";
name_dvm[WAITIG] = "waitig";
name_dvm[CRTIB] = "crtib";
name_dvm[LOADIB] = "loadib";
name_dvm[WAITIB] = "waitib";
name_dvm[INSIB] = "insib";
name_dvm[INSSHD] = "insshd";
name_dvm[SENDSH] = "sendsh";
name_dvm[RECVSH] = "recvsh";
name_dvm[TRON] = "tron";
name_dvm[TROFF] = "troff";
name_dvm[DBEGTR] = "dbegtr";
name_dvm[GENBLI] = "genbli";
name_dvm[TPCNTR] = "tpcntr";
name_dvm[RMKIND] = "rmkind";
name_dvm[SETELW] = "setelw";
name_dvm[DLOAD2] = "dldv2";
name_dvm[DREADA] = "dreada";
name_dvm[DREAD] = "dread";
name_dvm[LINDTP] = "lindtp";
name_dvm[DVMRM] = "acrecv";
name_dvm[DVMSM] = "acsend";
name_dvm[AARRCP] = "aarrcp";
name_dvm[WAITCP] = "waitcp";
name_dvm[ACROSS] = "across";
name_dvm[DVMLF] = "dvmlf";
name_dvm[ADDBND] = "addbnd";
name_dvm[INCSH] = "incsh";
name_dvm[INCSHD] = "incshd";
name_dvm[DRARR] = "drarr";
name_dvm[BARRIER] = "bsynch";
name_dvm[DINSRD] = "dinsrf";
name_dvm[DCRRG] = "dcrtrg";
name_dvm[DSAVRG] = "dsavrg";
name_dvm[DCLCRG] = "dclcrg";
name_dvm[DDLRG] = "ddelrg";
name_dvm[ADDSHD] = "addshd";
name_dvm[CRTRDA] = "crtraf";
name_dvm[STRTAC] = "strtac";
name_dvm[WAITAC] = "waitac";
name_dvm[CRTCG] = "crtcg";
name_dvm[INSCG] = "inscg";
name_dvm[STRTCG] = "strtcg";
name_dvm[WAITCG] = "waitcg";
name_dvm[DELCG] = "delcg";
name_dvm[CONSDA] = "consda";
name_dvm[INCLCG] = "inclcg";
name_dvm[RSTRDA] = "rstrda";
name_dvm[RSTCG] = "rstcg";
name_dvm[CRTRA9] = "crtra9";
name_dvm[CRTDA9] = "crtda9";
name_dvm[FTCNTR] = "ftcntr";
name_dvm[DACSUM] = "dacsum";
name_dvm[ARCSF] = "arcsf";
name_dvm[BLKDIV] = "blkdiv";
name_dvm[DOPLMB] = "doplmb";
name_dvm[DOSL] = "dosl";
name_dvm[DVTR] = "dvtr";
name_dvm[DOPLSEQ] = "doplmbseq";
name_dvm[INIMPI] = "linit";
name_dvm[DVMH_INIT] = "dvmh_init2";
name_dvm[DVMH_FINISH] = "dvmh_finish";
name_dvm[DVMH_EXIT] = "dvmh_exit";
name_dvm[INIT_CUDA] = "init_cuda";
name_dvm[REG_CREATE] = "region_create";
name_dvm[REG_CREATE_2] = "dvmh_region_create";
name_dvm[REG_END] = "region_end";
name_dvm[REG_END_2] = "dvmh_region_end";
name_dvm[REG_DEVICES] = "region_execute_on_targets";
name_dvm[REG_DEVICES_2] = "dvmh_region_execute_on_targets";
name_dvm[REG_START] = "region_inner_start";
name_dvm[RGSTR_ARRAY_2] = "dvmh_region_register_array";
name_dvm[RGSTR_SUBARRAY_2] = "dvmh_region_register_subarray";
name_dvm[RGSTR_SCALAR_2] = "dvmh_region_register_scalar";
name_dvm[RGSTR_ARRAY] = "region_register_array";
name_dvm[RGSTR_SUBARRAY] = "region_register_subarray";
name_dvm[RGSTR_SCALAR] = "region_register_scalar";
name_dvm[SET_NAME_ARRAY] = "region_set_name_array";
name_dvm[SET_NAME_VAR] = "region_set_name_variable";
name_dvm[BEFORE_LOADRB] = "dvmh_remote_access";
name_dvm[REG_WAITRB] = "region_after_waitrb";
name_dvm[REG_DESTROY_RB] = "region_destroy_rb";
name_dvm[GET_ACTUAL_EDGES] = "dvmh_get_actual_edges";
name_dvm[SHADOW_RENEW] = "dvmh_shadow_renew";
name_dvm[SHADOW_RENEW_2] = "dvmh_shadow_renew2";
name_dvm[INDIRECT_SH_RENEW]= "dvmh_indirect_shadow_renew";
name_dvm[LOOP_CREATE] = "loop_create";
name_dvm[LOOP_CREATE_2] = "dvmh_loop_create";
name_dvm[REG_HANDLER] = "loop_register_handler";
name_dvm[REG_HANDLER_2] = "dvmh_loop_register_handler";
name_dvm[HANDLER_FUNC] = "dvmh_handler_func";
name_dvm[LOOP_START] = "loop_start";
name_dvm[LOOP_END] = "loop_end";
name_dvm[LOOP_PERFORM] = "loop_perform";
name_dvm[LOOP_PERFORM_2] = "dvmh_loop_perform";
name_dvm[CUDA_BLOCK] = "loop_set_cuda_block";
name_dvm[CUDA_BLOCK_2] = "dvmh_loop_set_cuda_block";
name_dvm[LOOP_INSRED] = "loop_insred";
name_dvm[LOOP_RED] = "dvmh_loop_reduction";
name_dvm[SHADOW_COMPUTE] = "loop_shadow_compute";
name_dvm[SHADOW_COMPUTE_AR]= "dvmh_loop_shadow_compute_array";
name_dvm[SHADOW_COMPUTE_2] = "dvmh_loop_shadow_compute";
name_dvm[CORRESPONDENCE] = "dvmh_loop_array_correspondence";
name_dvm[GET_ACTUAL_ALL] = "dvmh_get_actual_all";
name_dvm[GET_ACTUAL_ALL_2] = "dvmh_get_actual_all2";
name_dvm[GET_ACTUAL_ARRAY] = "dvmh_get_actual_array";
name_dvm[GET_ACTUAL_ARR_2] = "dvmh_get_actual_array2";
name_dvm[GET_ACTUAL_SUBARRAY]= "dvmh_get_actual_subarray";
name_dvm[GET_ACTUAL_SUBARR_2]= "dvmh_get_actual_subarray2";
name_dvm[GET_ACTUAL_SCALAR] = "dvmh_get_actual_variable";
name_dvm[GET_ACTUAL_SCALAR_2]= "dvmh_get_actual_variable2";
name_dvm[GET_ACTUAL_SUBVAR] = "dvmh_get_actual_subvariable";
name_dvm[GET_ACTUAL_SUBVAR_2]= "dvmh_get_actual_subvariable2";
name_dvm[ACTUAL_ARRAY] = "dvmh_actual_array";
name_dvm[ACTUAL_ARRAY_2] = "dvmh_actual_array2";
name_dvm[ACTUAL_SUBARRAY] = "dvmh_actual_subarray";
name_dvm[ACTUAL_SUBARRAY_2]= "dvmh_actual_subarray2";
name_dvm[ACTUAL_SCALAR] = "dvmh_actual_variable";
name_dvm[ACTUAL_SCALAR_2] = "dvmh_actual_variable2";
name_dvm[ACTUAL_SUBVAR] = "dvmh_actual_subvariable";
name_dvm[ACTUAL_SUBVAR_2] = "dvmh_actual_subvariable2";
name_dvm[ACTUAL_ALL] = "dvmh_actual_all";
name_dvm[ACTUAL_ALL_2] = "dvmh_actual_all2";
name_dvm[DVMH_REDISTRIBUTE]= "dvmh_redistribute";
name_dvm[DVMH_REALIGN] = "dvmh_realign";
name_dvm[DESTROY_ARRAY] = "dvmh_destroy_array";
name_dvm[DESTROY_SCALAR] = "dvmh_destroy_variable";
name_dvm[HANDLE_CONSIST] = "region_handle_consistent";
name_dvm[LOOP_ACROSS] = "loop_across";
name_dvm[LOOP_ACROSS_2] = "dvmh_loop_across";
name_dvm[DVMH_SET_STAGE] = "dvmh_loop_set_stage";
name_dvm[GET_STAGE] = "dvmh_get_next_stage";
name_dvm[MAP_TASKS] = "map_tasks";
name_dvm[DATA_ENTER] = "dvmh_data_enter";
name_dvm[DATA_EXIT] = "dvmh_data_exit";
name_dvm[DELETE_OBJECT] = "dvmh_delete_object";
name_dvm[FORGET_HEADER] = "dvmh_forget_header";
name_dvm[SCOPE_START] = "dvmh_scope_start";
name_dvm[SCOPE_END] = "dvmh_scope_end";
name_dvm[SCOPE_INSERT] = "dvmh_scope_insert";
name_dvm[LOOP_MAP] = "dvmh_loop_map";
name_dvm[ALIGN_LINEAR] = "dvmh_alignment_linear";
name_dvm[REGISTER_ARR] = "dvmh_register_array";
name_dvm[GET_ADDR] = "dvmh_get_addr";
name_dvm[STRING] = "dvmh_string";
name_dvm[STRING_VAR] = "dvmh_string_var";
name_dvm[VAR_GEN_HDR] = "dvmh_variable_gen_header";
name_dvm[VAR_FILL_HDR] = "dvmh_variable_fill_header";
name_dvm[CP_CHECK_FILENAME]= "dvmh_cp_check_filename";
name_dvm[CP_NEXT_FILENAME] = "dvmh_cp_next_filename";
name_dvm[CP_SAVE_FILENAMES]= "dvmh_cp_save_filenames";
name_dvm[CP_WAIT] = "dvmh_cp_wait";
name_dvm[CP_SAVE_ASYNC_UNIT]="dvmh_cp_save_async_unit";
name_dvm[DVMH_LINE] = "dvmh_line";
name_dvm[CREATE_ARRAY] = "dvmh_array_create";
name_dvm[CREATE_TEMPLATE] = "dvmh_template_create";
name_dvm[DVMH_REPLICATED] = "dvmh_distribution_replicated";
name_dvm[DVMH_BLOCK] = "dvmh_distribution_block";
name_dvm[DVMH_WGTBLOCK] = "dvmh_distribution_wgtblock";
name_dvm[DVMH_GENBLOCK] = "dvmh_distribution_genblock";
name_dvm[DVMH_MULTBLOCK] = "dvmh_distribution_multblock";
name_dvm[DVMH_INDIRECT] = "dvmh_distribution_indirect";
name_dvm[DVMH_DERIVED] = "dvmh_distribution_derived";
name_dvm[DVMH_DISTRIBUTE] = "dvmh_distribute";
name_dvm[DVMH_REDISTR_2] = "dvmh_redistribute2";
name_dvm[DVMH_ALIGN] = "dvmh_align";
name_dvm[DVMH_REALIGN_2] = "dvmh_realign2";
name_dvm[DVMH_HAS_ELEMENT] = "dvmh_has_element";
name_dvm[CALC_LINEAR] = "dvmh_calc_linear";
name_dvm[LOCALIZE] = "dvmh_indirect_localize";
name_dvm[SHADOW_ADD] = "dvmh_indirect_shadow_add";
name_dvm[EXPR_IGNORE] = "dvmh_derived_rhs_expr_ignore";
name_dvm[EXPR_CONSTANT] = "dvmh_derived_rhs_expr_constant";
name_dvm[EXPR_SCAN] = "dvmh_derived_rhs_expr_scan";
name_dvm[DERIVED_RHS] = "dvmh_derived_rhs";
name_dvm[ARRAY_SLICE] = "dvmh_array_slice";
name_dvm[COPY_WHOLE] = "dvmh_array_copy_whole";
name_dvm[COPY_ARRAY] = "dvmh_array_copy";
name_dvm[SET_VALUE] = "dvmh_array_set_value";
name_dvm[LOOP_CONSISTENT] = "dvmh_loop_consistent";
name_dvm[DVMH_REMOTE2] = "dvmh_remote_access2";
name_dvm[LOOP_REMOTE] = "dvmh_loop_remote_access";
name_dvm[GET_REMOTE_BUF] = "dvmh_loop_get_remote_buf";
name_dvm[FTN_OPEN] = "dvmh_ftn_open"; /* IO */
name_dvm[FTN_CLOSE] = "dvmh_ftn_close"; /* IO */
name_dvm[FTN_READ] = "dvmh_ftn_read_unf"; /* IO */
name_dvm[FTN_WRITE] = "dvmh_ftn_write_unf"; /* IO */
name_dvm[FTN_ENDFILE] = "dvmh_ftn_endfile"; /* IO */
name_dvm[FTN_FLUSH] = "dvmh_ftn_flush"; /* IO */
name_dvm[FTN_REWIND] = "dvmh_ftn_rewind"; /* IO */
name_dvm[FTN_CONNECTED] = "dvmh_ftn_connected"; /* IO */
//--------------------- called from host-handler ------------
name_dvm[FILL_BOUNDS] = "loop_fill_bounds";
name_dvm[RED_INIT] = "loop_red_init";
name_dvm[RED_POST] = "loop_red_post";
name_dvm[SLOT_COUNT] = "loop_get_slot_count";
name_dvm[HAS_ELEMENT] = "loop_has_element";
name_dvm[HAS_ELEMENT_2] = "dvmh_loop_has_element";
name_dvm[FILL_LOCAL_PART] = "loop_fill_local_part";
name_dvm[OMP_STAT_BP] = "dvmh_perf_before_parallel";
name_dvm[OMP_STAT_AP] = "dvmh_perf_after_parallel";
name_dvm[OMP_STAT_BL] = "dvmh_perf_before_loop";
name_dvm[OMP_STAT_AL] = "dvmh_perf_after_loop";
name_dvm[OMP_STAT_BS] = "dvmh_perf_before_synchro";
name_dvm[OMP_STAT_AS] = "dvmh_perf_after_synchro";
//--------------------- called from cuda-handler ------------
name_dvm[GET_BASE] = "dvmh_get_natural_base";
name_dvm[GET_BASE_C] = "dvmh_get_natural_base_C";
name_dvm[FILL_HEADER] = "dvmh_fill_header_";
name_dvm[FILL_HEADER_2] = "dvmh_fill_header2_";
name_dvm[FILL_HEADER_EX] = "dvmh_fill_header_ex_";
name_dvm[FILL_HEADER_EX_2] = "dvmh_fill_header_ex2_";
name_dvm[DO_CUDA] = "loop_cuda_do";
name_dvm[RED_CUDA] = "loop_cuda_register_red";
name_dvm[RED_CUDA_C] = "dvmh_loop_cuda_register_red_C";
name_dvm[REGISTER_RED] = "loop_cuda_register_red_";
name_dvm[RED_INIT_C] = "loop_red_init_";
name_dvm[RED_INIT_2] = "dvmh_loop_red_init_";
name_dvm[CUDA_RED_INIT] = "loop_cuda_red_init";
name_dvm[CUDA_RED_INIT_2] = "dvmh_loop_cuda_red_init_C";
name_dvm[RED_PREPARE] = "loop_cuda_red_prepare";
name_dvm[RED_PREPARE_C] = "dvmh_loop_cuda_red_prepare_C";
name_dvm[RED_FINISH] = "loop_red_finish";
name_dvm[RED_FINISH_C] = "dvmh_loop_cuda_red_finish_C";
name_dvm[SHARED_NEEDED] = "loop_cuda_shared_needed_";
name_dvm[GET_DEVICE_ADDR] = "dvmh_get_device_addr";
name_dvm[GET_DEVICE_ADDR_C]= "dvmh_get_device_addr_C";
name_dvm[GET_LOCAL_PART] = "loop_cuda_get_local_part";
name_dvm[GET_LOCAL_PART_C] = "dvmh_loop_cuda_get_local_part_C";
name_dvm[GET_DEVICE_NUM] = "loop_get_device_num_";
name_dvm[GET_DEVICE_NUM_2] = "dvmh_loop_get_device_num_C";
name_dvm[GET_OVERALL_STEP] = "loop_cuda_get_red_step";
name_dvm[FILL_BOUNDS_C] = "loop_fill_bounds_";
name_dvm[FILL_BOUNDS_2] = "dvmh_loop_fill_bounds_";
name_dvm[RED_POST_C] = "loop_red_post_";
name_dvm[RED_POST_2] = "dvmh_loop_red_post_";
name_dvm[CUDA_REPLICATE] = "dvmh_cuda_replicate";
name_dvm[GET_DEP_MASK] = "loop_get_dependency_mask_";
name_dvm[GET_DEP_MASK_2] = "dvmh_loop_get_dependency_mask_";
name_dvm[GET_DEP_MASK_F] = "loop_get_dependency_mask";
name_dvm[CUDA_TRANSFORM] = "loop_cuda_transform_";
name_dvm[CUDA_AUTOTRANSFORM]="loop_cuda_autotransform";
name_dvm[LOOP_AUTOTRANSFORM]="dvmh_loop_autotransform_";
name_dvm[APPLY_OFFSET] = "dvmh_apply_offset";
name_dvm[GET_CONFIG] = "loop_cuda_get_config";
name_dvm[GET_CONFIG_C] = "dvmh_loop_cuda_get_config_C";
name_dvm[CHANGE_BOUNDS] = "dvmh_change_filled_bounds";
name_dvm[GUESS_INDEX_TYPE] = "loop_guess_index_type_";
name_dvm[GUESS_INDEX_TYPE_2]="dvmh_loop_guess_index_type_C";
name_dvm[RTC_SET_LANG] = "loop_cuda_rtc_set_lang";
name_dvm[GET_REMOTE_BUF_C] = "dvmh_loop_get_remote_buf_C";
name_dvm[GET_DEVICE_PROP] = "loop_cuda_get_device_prop";
name_dvm[GET_MAX_BLOCKS] = "loop_cuda_get_max_blocks";
name_dvm[GET_PRIVATE_ARR] = "loop_cuda_get_private_array";
name_dvm[DISPOSE_PRIVATE_AR]="loop_cuda_dispose_private_array";
name_dvm[GET_WARP_SIZE] = "dvmh_get_warp_size";

View File

@@ -0,0 +1,341 @@
enum {
CLFDVM,
RTLINI,
RTLEXI,
GETAM,
GETVM,
BEGBL,
ENDBL,
CRTAMV,
DISAM,
CRTDA,
ALGNDA,
REDVAR,
REDVARF,
CRTRG,
INSRV,
SAVERV,
STARTR,
WAITR,
DELRG,
CRTSHG,
DATOSHG,
STARTSH,
WAITSH,
DELSHG,
CRTPLP,
BEGPLP,
ENDPLP,
BFIRST,
BLAST,
DOLOOP,
GETADR,
GETAI,
GETAL,
GETAF,
GETAD,
GETAC,
GETACH,
TSTIOP,
GETRNK,
GETSIZ,
ARRCPY,
SRMEM,
RDISAM,
REALGN,
RWELM,
RWELMF,
DELOBJ,
TSTELM,
DLOADV,
DSTORV,
DPRSTV,
DINOUT,
DRMBUF,
DITER,
DBEGPL,
DBEGSL,
DENDL,
DSKPBL,
BINTER,
EINTER,
BSLOOP,
BPLOOP,
ENLOOP,
BIOF,
EIOF,
FNAME,
LNUMB,
ADDHDR,
PSVIEW,
CRTPS,
GETAMV,
GETAMR,
MAPAM,
RUNAM,
STOPAM,
CRTBG,
LOADBG,
WAITBG,
CRTRB,
CRTRBP,
LOADRB,
WAITRB,
INSRB,
CRTIG,
LOADIG,
WAITIG,
CRTIB,
LOADIB,
WAITIB,
INSIB,
INSSHD,
SENDSH,
RECVSH,
TRON,
TROFF,
DBEGTR,
GENBLI,
TPCNTR,
RMKIND,
SETELW,
DLOAD2,
DREADA,
DREAD,
LINDTP,
DVMRM,
DVMSM,
AARRCP,
WAITCP,
ACROSS,
DVMLF,
ADDBND,
INCSH,
INCSHD,
DRARR,
BARRIER,
DINSRD,
DCRRG,
DSAVRG,
DCLCRG,
DDLRG,
ADDSHD,
CRTRDA,
STRTAC,
WAITAC,
CRTCG,
INSCG,
STRTCG,
WAITCG,
DELCG,
CONSDA,
INCLCG,
RSTRDA,
RSTCG,
CRTRA9,
CRTDA9,
FTCNTR,
DACSUM,
ARCSF,
BLKDIV,
DOPLMB,
DOSL,
DVTR,
DOPLSEQ,
INIMPI,
DVMH_INIT,
DVMH_FINISH,
DVMH_EXIT,
INIT_CUDA,
REG_CREATE,
REG_CREATE_2,
REG_END,
REG_END_2,
REG_DEVICES,
REG_DEVICES_2,
REG_START,
RGSTR_ARRAY_2,
RGSTR_SUBARRAY_2,
RGSTR_SCALAR_2,
RGSTR_ARRAY,
RGSTR_SUBARRAY,
RGSTR_SCALAR,
SET_NAME_ARRAY,
SET_NAME_VAR,
BEFORE_LOADRB,
REG_WAITRB,
REG_DESTROY_RB,
GET_ACTUAL_EDGES,
SHADOW_RENEW,
SHADOW_RENEW_2,
INDIRECT_SH_RENEW,
LOOP_CREATE,
LOOP_CREATE_2,
REG_HANDLER,
REG_HANDLER_2,
HANDLER_FUNC,
LOOP_START,
LOOP_END,
LOOP_PERFORM,
LOOP_PERFORM_2,
CUDA_BLOCK,
CUDA_BLOCK_2,
LOOP_INSRED,
LOOP_RED,
SHADOW_COMPUTE,
SHADOW_COMPUTE_AR,
SHADOW_COMPUTE_2,
CORRESPONDENCE,
GET_ACTUAL_ALL,
GET_ACTUAL_ALL_2,
GET_ACTUAL_ARRAY,
GET_ACTUAL_ARR_2,
GET_ACTUAL_SUBARRAY,
GET_ACTUAL_SUBARR_2,
GET_ACTUAL_SCALAR,
GET_ACTUAL_SCALAR_2,
GET_ACTUAL_SUBVAR,
GET_ACTUAL_SUBVAR_2,
ACTUAL_ARRAY,
ACTUAL_ARRAY_2,
ACTUAL_SUBARRAY,
ACTUAL_SUBARRAY_2,
ACTUAL_SCALAR,
ACTUAL_SCALAR_2,
ACTUAL_SUBVAR,
ACTUAL_SUBVAR_2,
ACTUAL_ALL,
ACTUAL_ALL_2,
DVMH_REDISTRIBUTE,
DVMH_REALIGN,
DESTROY_ARRAY,
DESTROY_SCALAR,
HANDLE_CONSIST,
LOOP_ACROSS,
LOOP_ACROSS_2,
DVMH_SET_STAGE,
GET_STAGE,
MAP_TASKS,
DATA_ENTER,
DATA_EXIT,
DELETE_OBJECT,
FORGET_HEADER,
SCOPE_START,
SCOPE_END,
SCOPE_INSERT,
LOOP_MAP,
ALIGN_LINEAR,
REGISTER_ARR,
GET_ADDR,
STRING,
STRING_VAR,
VAR_GEN_HDR,
VAR_FILL_HDR,
CP_NEXT_FILENAME,
CP_CHECK_FILENAME,
CP_SAVE_FILENAMES,
CP_WAIT,
CP_SAVE_ASYNC_UNIT,
DVMH_LINE,
CREATE_ARRAY,
CREATE_TEMPLATE,
DVMH_REPLICATED,
DVMH_BLOCK,
DVMH_WGTBLOCK,
DVMH_GENBLOCK,
DVMH_MULTBLOCK,
DVMH_INDIRECT,
DVMH_DERIVED,
DVMH_DISTRIBUTE,
DVMH_REDISTR_2,
DVMH_ALIGN,
DVMH_REALIGN_2,
DVMH_HAS_ELEMENT,
CALC_LINEAR,
LOCALIZE,
SHADOW_ADD,
EXPR_IGNORE,
EXPR_CONSTANT,
EXPR_SCAN,
DERIVED_RHS,
ARRAY_SLICE,
COPY_WHOLE,
COPY_ARRAY,
SET_VALUE,
LOOP_CONSISTENT,
DVMH_REMOTE2,
LOOP_REMOTE,
GET_REMOTE_BUF,
FTN_OPEN,
FTN_CLOSE,
FTN_READ,
FTN_WRITE,
FTN_ENDFILE,
FTN_FLUSH,
FTN_REWIND,
FTN_CONNECTED,
FILL_BOUNDS,
RED_INIT,
RED_POST,
SLOT_COUNT,
HAS_ELEMENT,
HAS_ELEMENT_2,
FILL_LOCAL_PART,
OMP_STAT_BP,
OMP_STAT_AP,
OMP_STAT_BL,
OMP_STAT_AL,
OMP_STAT_BS,
OMP_STAT_AS,
GET_BASE,
GET_BASE_C,
FILL_HEADER,
FILL_HEADER_2,
FILL_HEADER_EX,
FILL_HEADER_EX_2,
DO_CUDA,
RED_CUDA,
RED_CUDA_C,
REGISTER_RED,
RED_INIT_C,
RED_INIT_2,
CUDA_RED_INIT,
CUDA_RED_INIT_2,
RED_PREPARE,
RED_PREPARE_C,
RED_FINISH,
RED_FINISH_C,
SHARED_NEEDED,
GET_DEVICE_ADDR,
GET_DEVICE_ADDR_C,
GET_LOCAL_PART,
GET_LOCAL_PART_C,
GET_DEVICE_NUM,
GET_DEVICE_NUM_2,
GET_OVERALL_STEP,
FILL_BOUNDS_C,
FILL_BOUNDS_2,
RED_POST_C,
RED_POST_2,
CUDA_REPLICATE,
GET_DEP_MASK,
GET_DEP_MASK_2,
GET_DEP_MASK_F,
CUDA_TRANSFORM,
CUDA_AUTOTRANSFORM,
LOOP_AUTOTRANSFORM,
APPLY_OFFSET,
GET_CONFIG,
GET_CONFIG_C,
CHANGE_BOUNDS,
GUESS_INDEX_TYPE,
GUESS_INDEX_TYPE_2,
RTC_SET_LANG,
GET_REMOTE_BUF_C,
GET_DEVICE_PROP,
GET_MAX_BLOCKS,
GET_PRIVATE_ARR,
DISPOSE_PRIVATE_AR,
GET_WARP_SIZE,
MAX_LIBFUN_NUM
};

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,47 @@
/*********************************************************************/
/* pC++/Sage++ Copyright (C) 1993 */
/* Indiana University University of Oregon University of Rennes */
/*********************************************************************/
#ifndef SAGEXXUSER_H
#define SAGEXXUSER_H 1
#define CPLUS_
#include "macro.h"
#undef CPLUS_
// For C/C++ parser internals
#include "vpc.h"
// For the fortran parser internals
#include "fdvm.h"
// All the "C" functions from the Rennes toolbox
#include "extcxx_low.h"
class SgProject;
class SgFile;
class SgStatement;
class SgExpression;
class SgLabel;
class SgSymbol;
class SgType;
class SgUnaryExp;
class SgClassSymb;
class SgVarDeclStmt;
class SgVarRefExp; /* ajm: I think they should all be here! @$!@ */
// All the externs (from libSage++.C) used in libSage++.h
#include "sage++extern.h"
#define SORRY Message("Sorry, not implemented yet",0)
// Prototype definitions for all the functions in libSage++.C
#include "sage++proto.h"
// dont delete needed in libSage++.h
#define USER
#include "libSage++.h"
#endif /* ndef SAGEXXUSER_H */