#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #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 intrinsicF; extern std::set intrinsicDoubleT; extern std::set intrinsicFloatT; extern std::set intrinsicInt4T; extern std::map SpecialSymbols; extern std::vector RTC_FCall; extern std::vector RTC_FArgs; extern std::vector RTC_FKernelArgs; extern std::vector newVars; extern const char *funcDvmhConvXYname; extern int number_of_loop_line; extern std::stack 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 };