| //===- ScopLib.h - ScopLib interface ----------------------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // Scoplib interface. |
| // |
| // The scoplib interface allows to import/export a scop using scoplib. |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef POLLY_SCOPLIB_H |
| #define POLLY_SCOPLIB_H |
| |
| #define SCOPLIB_INT_T_IS_MP |
| #include "isl/ctx.h" |
| |
| #include "scoplib/scop.h" |
| |
| #include <map> |
| |
| namespace llvm { |
| class Value; |
| } |
| |
| struct isl_constraint; |
| struct isl_basic_map; |
| struct isl_basic_set; |
| struct isl_map; |
| struct isl_set; |
| |
| namespace polly { |
| class Dependences; |
| class ScopStmt; |
| class Scop; |
| class ScopLib { |
| Scop *PollyScop; |
| scoplib_scop_p scoplib; |
| Dependences *D; |
| |
| std::map<const llvm::Value*, int> ArrayMap; |
| |
| void initializeArrays(); |
| void initializeParameters(); |
| void initializeScattering(); |
| void initializeStatements(); |
| scoplib_statement_p initializeStatement(ScopStmt *stmt); |
| void freeStatement(scoplib_statement_p stmt); |
| static int accessToMatrix_constraint(isl_constraint *c, void *user); |
| static int accessToMatrix_basic_map(isl_basic_map *bmap, void *user); |
| scoplib_matrix_p createAccessMatrix(ScopStmt *S, bool isRead); |
| static int domainToMatrix_constraint(isl_constraint *c, void *user); |
| static int domainToMatrix_basic_set(isl_basic_set *bset, void *user); |
| scoplib_matrix_p domainToMatrix(__isl_take isl_set *set); |
| static int scatteringToMatrix_constraint(isl_constraint *c, void *user); |
| static int scatteringToMatrix_basic_map(isl_basic_map *bmap, void *user); |
| scoplib_matrix_p scatteringToMatrix(__isl_take isl_map *map); |
| |
| public: |
| ScopLib(Scop *S); |
| ScopLib(Scop *S, FILE *F, Dependences *D); |
| ~ScopLib(); |
| void print(FILE *F); |
| bool updateScattering(); |
| |
| }; |
| } |
| |
| #endif /* POLLY_SCOPLIB_H */ |