[polly] r203500 - Ported scoplib to use isl_val * instead of isl_int
Tobias Grosser
tobias at grosser.es
Mon Mar 10 15:03:30 PDT 2014
Author: grosser
Date: Mon Mar 10 17:03:30 2014
New Revision: 203500
URL: http://llvm.org/viewvc/llvm-project?rev=203500&view=rev
Log:
Ported scoplib to use isl_val * instead of isl_int
1) The isl_int -> isl_val changes are the ones Tobias suggested.
One additional isl_val_free is added (and needed)
2) Three scoplib_vector_free are added, maybe we would need even
more (and matrix_free) but it's hard to place them right.
3) Cleaned the includes (and removed 'extern C')
This fixes the broken compilation for the scoplib import and export.
Contributed-by: Johannes Doerfert <doerfert at cs.uni-saarland.de>
Modified:
polly/trunk/include/polly/ScopLib.h
polly/trunk/lib/Exchange/ScopLib.cpp
polly/trunk/lib/Pocc.cpp
Modified: polly/trunk/include/polly/ScopLib.h
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/include/polly/ScopLib.h?rev=203500&r1=203499&r2=203500&view=diff
==============================================================================
--- polly/trunk/include/polly/ScopLib.h (original)
+++ polly/trunk/include/polly/ScopLib.h Mon Mar 10 17:03:30 2014
@@ -15,7 +15,6 @@
#ifndef POLLY_SCOPLIB_H
#define POLLY_SCOPLIB_H
-#define SCOPLIB_INT_T_IS_MP
#include "isl/ctx.h"
#include "scoplib/scop.h"
Modified: polly/trunk/lib/Exchange/ScopLib.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Exchange/ScopLib.cpp?rev=203500&r1=203499&r2=203500&view=diff
==============================================================================
--- polly/trunk/lib/Exchange/ScopLib.cpp (original)
+++ polly/trunk/lib/Exchange/ScopLib.cpp Mon Mar 10 17:03:30 2014
@@ -19,13 +19,11 @@
#include "polly/ScopLib.h"
#include "polly/ScopInfo.h"
-#include "llvm/Support/CommandLine.h"
-#include "llvm/IR/Writer.h"
-
#include "stdio.h"
#include "isl/set.h"
#include "isl/map.h"
#include "isl/constraint.h"
+#include "isl/val_gmp.h"
using namespace llvm;
@@ -98,7 +96,7 @@ scoplib_statement_p ScopLib::initializeS
// Statement name
std::string entryName;
raw_string_ostream OS(entryName);
- WriteAsOperand(OS, stmt->getBasicBlock(), false);
+ stmt->getBasicBlock()->printAsOperand(OS, false);
entryName = OS.str();
Stmt->body = (char *)malloc(sizeof(char) * (entryName.size() + 1));
strcpy(Stmt->body, entryName.c_str());
@@ -186,30 +184,34 @@ int ScopLib::domainToMatrix_constraint(i
else
scoplib_vector_tag_inequality(vec);
- isl_int v;
- isl_int_init(v);
+ isl_val *v;
// Assign variables
for (int i = 0; i < nb_vars; ++i) {
- isl_constraint_get_coefficient(c, isl_dim_set, i, &v);
- isl_int_set(vec->p[i + 1], v);
+ v = isl_constraint_get_coefficient_val(c, isl_dim_set, i);
+ SCOPVAL_init(vec->p[i + 1]);
+ isl_val_get_num_gmp(v, vec->p[i + 1]);
+ isl_val_free(v);
}
// Assign parameters
for (int i = 0; i < nb_params; ++i) {
- isl_constraint_get_coefficient(c, isl_dim_param, i, &v);
- isl_int_set(vec->p[nb_vars + i + 1], v);
+ v = isl_constraint_get_coefficient_val(c, isl_dim_param, i);
+ SCOPVAL_init(vec->p[nb_vars + i + 1]);
+ isl_val_get_num_gmp(v, vec->p[nb_vars + i + 1]);
+ isl_val_free(v);
}
// Assign constant
- isl_constraint_get_constant(c, &v);
- isl_int_set(vec->p[nb_params + nb_vars + 1], v);
+ v = isl_constraint_get_constant_val(c);
+ SCOPVAL_init(vec->p[nb_params + nb_vars + 1]);
+ isl_val_get_num_gmp(v, vec->p[nb_params + nb_vars + 1]);
scoplib_matrix_insert_vector(m, vec, m->NbRows);
scoplib_vector_free(vec);
isl_constraint_free(c);
- isl_int_clear(v);
+ isl_val_free(v);
return 0;
}
@@ -274,32 +276,38 @@ int ScopLib::scatteringToMatrix_constrai
else
scoplib_vector_tag_inequality(vec);
- isl_int v;
- isl_int_init(v);
+ isl_val *v;
// Assign variables
for (int i = 0; i < nb_in; ++i) {
- isl_constraint_get_coefficient(c, isl_dim_in, i, &v);
- isl_int_set(vec->p[i + 1], v);
+ v = isl_constraint_get_coefficient_val(c, isl_dim_in, i);
+ SCOPVAL_init(vec->p[i + 1]);
+ isl_val_get_num_gmp(v, vec->p[i + 1]);
+ isl_val_free(v);
}
// Assign parameters
for (int i = 0; i < nb_params; ++i) {
- isl_constraint_get_coefficient(c, isl_dim_param, i, &v);
- isl_int_set(vec->p[nb_in + i + 1], v);
+ v = isl_constraint_get_coefficient_val(c, isl_dim_param, i);
+ SCOPVAL_init(vec->p[nb_in + i + 1]);
+ isl_val_get_num_gmp(v, vec->p[nb_in + i + 1]);
+ isl_val_free(v);
}
// Assign constant
- isl_constraint_get_constant(c, &v);
- isl_int_set(vec->p[nb_in + nb_params + 1], v);
+ v = isl_constraint_get_constant_val(c);
+ SCOPVAL_init(vec->p[nb_in + nb_params + 1]);
+ isl_val_get_num_gmp(v, vec->p[nb_in + nb_params + 1]);
scoplib_vector_p null = scoplib_vector_malloc(nb_params + nb_in + 2);
vec = scoplib_vector_sub(null, vec);
scoplib_matrix_insert_vector(m, vec, 0);
+ scoplib_vector_free(null);
+ scoplib_vector_free(vec);
isl_constraint_free(c);
- isl_int_clear(v);
+ isl_val_free(v);
return 0;
}
@@ -363,47 +371,53 @@ int ScopLib::accessToMatrix_constraint(i
scoplib_vector_p vec = scoplib_vector_malloc(nb_params + nb_in + 2);
- isl_int v;
- isl_int_init(v);
+ isl_val *v;
// The access dimension has to be one.
- isl_constraint_get_coefficient(c, isl_dim_out, 0, &v);
- assert((isl_int_is_one(v) || isl_int_is_negone(v)) &&
+ v = isl_constraint_get_coefficient_val(c, isl_dim_out, 0);
+ assert((isl_val_is_one(v) || isl_val_is_negone(v)) &&
"Access relations not supported in scoplib");
- bool inverse = isl_int_is_one(v);
+ bool inverse = isl_val_is_one(v);
+ isl_val_free(v);
// Assign variables
for (int i = 0; i < nb_in; ++i) {
- isl_constraint_get_coefficient(c, isl_dim_in, i, &v);
+ v = isl_constraint_get_coefficient_val(c, isl_dim_in, i);
if (inverse)
- isl_int_neg(v, v);
+ v = isl_val_neg(v);
- isl_int_set(vec->p[i + 1], v);
+ SCOPVAL_init(vec->p[i + 1]);
+ isl_val_get_num_gmp(v, vec->p[i + 1]);
+ isl_val_free(v);
}
// Assign parameters
for (int i = 0; i < nb_params; ++i) {
- isl_constraint_get_coefficient(c, isl_dim_param, i, &v);
+ v = isl_constraint_get_coefficient_val(c, isl_dim_param, i);
if (inverse)
- isl_int_neg(v, v);
+ v = isl_val_neg(v);
- isl_int_set(vec->p[nb_in + i + 1], v);
+ SCOPVAL_init(vec->p[nb_in + i + 1]);
+ isl_val_get_num_gmp(v, vec->p[nb_in + i + 1]);
+ isl_val_free(v);
}
// Assign constant
- isl_constraint_get_constant(c, &v);
+ v = isl_constraint_get_constant_val(c);
if (inverse)
- isl_int_neg(v, v);
+ v = isl_val_neg(v);
- isl_int_set(vec->p[nb_in + nb_params + 1], v);
+ SCOPVAL_init(vec->p[nb_in + nb_params + 1]);
+ isl_val_get_num_gmp(v, vec->p[nb_in + nb_params + 1]);
scoplib_matrix_insert_vector(m, vec, m->NbRows);
+ scoplib_vector_free(vec);
isl_constraint_free(c);
- isl_int_clear(v);
+ isl_val_free(v);
return 0;
}
@@ -446,7 +460,7 @@ scoplib_matrix_p ScopLib::createAccessMa
// Set the index of the memory access base element.
std::map<const Value *, int>::iterator BA =
ArrayMap.find((*MI)->getBaseAddr());
- isl_int_set_si(m->p[m->NbRows - 1][0], (*BA).second + 1);
+ SCOPVAL_set_si(m->p[m->NbRows - 1][0], (*BA).second + 1);
}
return m;
@@ -492,27 +506,36 @@ ScopLib::~ScopLib() {
/// @param Space An isl space object, describing how to spilt the dimensions.
///
/// @return An isl constraint representing this integer array.
-isl_constraint *constraintFromMatrixRow(isl_int *row,
+isl_constraint *constraintFromMatrixRow(mpz_t *row,
__isl_take isl_space *Space) {
isl_constraint *c;
+ isl_ctx *ctx;
+ ctx = isl_space_get_ctx(Space);
unsigned NbIn = isl_space_dim(Space, isl_dim_in);
unsigned NbParam = isl_space_dim(Space, isl_dim_param);
- if (isl_int_is_zero(row[0]))
+ if (SCOPVAL_zero_p(row[0]))
c = isl_equality_alloc(isl_local_space_from_space(Space));
else
c = isl_inequality_alloc(isl_local_space_from_space(Space));
unsigned current_column = 1;
- for (unsigned j = 0; j < NbIn; ++j)
- isl_constraint_set_coefficient(c, isl_dim_in, j, row[current_column++]);
+ isl_val *v;
+
+ for (unsigned j = 0; j < NbIn; ++j) {
+ v = isl_val_int_from_gmp(ctx, row[current_column++]);
+ c = isl_constraint_set_coefficient_val(c, isl_dim_in, j, v);
+ }
- for (unsigned j = 0; j < NbParam; ++j)
- isl_constraint_set_coefficient(c, isl_dim_param, j, row[current_column++]);
+ for (unsigned j = 0; j < NbParam; ++j) {
+ v = isl_val_int_from_gmp(ctx, row[current_column++]);
+ c = isl_constraint_set_coefficient_val(c, isl_dim_param, j, v);
+ }
- isl_constraint_set_constant(c, row[current_column]);
+ v = isl_val_int_from_gmp(ctx, row[current_column]);
+ c = isl_constraint_set_constant_val(c, v);
return c;
}
@@ -529,27 +552,15 @@ isl_map *mapFromMatrix(scoplib_matrix_p
for (unsigned i = 0; i < m->NbRows; ++i) {
isl_constraint *c;
-
c = constraintFromMatrixRow(m->p[i], isl_space_copy(Space));
-
- mpz_t minusOne;
- mpz_init(minusOne);
- mpz_set_si(minusOne, -1);
- isl_constraint_set_coefficient(c, isl_dim_out, i, minusOne);
-
+ c = isl_constraint_set_coefficient_si(c, isl_dim_out, i, -1);
bmap = isl_basic_map_add_constraint(bmap, c);
}
for (unsigned i = m->NbRows; i < scatteringDims; i++) {
isl_constraint *c;
-
c = isl_equality_alloc(isl_local_space_from_space(isl_space_copy(Space)));
-
- mpz_t One;
- mpz_init(One);
- mpz_set_si(One, 1);
- isl_constraint_set_coefficient(c, isl_dim_out, i, One);
-
+ c = isl_constraint_set_coefficient_si(c, isl_dim_out, i, 1);
bmap = isl_basic_map_add_constraint(bmap, c);
}
@@ -563,9 +574,10 @@ isl_map *mapFromMatrix(scoplib_matrix_p
/// @param Space An isl space object, describing how to spilt the dimensions.
///
/// @return An isl constraint representing this integer array.
-isl_constraint *constraintFromMatrixRowFull(isl_int *row,
+isl_constraint *constraintFromMatrixRowFull(mpz_t *row,
__isl_take isl_space *Space) {
isl_constraint *c;
+ isl_ctx *ctx = isl_space_get_ctx(Space);
unsigned NbOut = isl_space_dim(Space, isl_dim_out);
unsigned NbIn = isl_space_dim(Space, isl_dim_in);
@@ -573,23 +585,32 @@ isl_constraint *constraintFromMatrixRowF
isl_local_space *LSpace = isl_local_space_from_space(Space);
- if (isl_int_is_zero(row[0]))
+ if (SCOPVAL_zero_p(row[0]))
c = isl_equality_alloc(LSpace);
else
c = isl_inequality_alloc(LSpace);
unsigned current_column = 1;
- for (unsigned j = 0; j < NbOut; ++j)
- isl_constraint_set_coefficient(c, isl_dim_out, j, row[current_column++]);
+ isl_val *v;
- for (unsigned j = 0; j < NbIn; ++j)
- isl_constraint_set_coefficient(c, isl_dim_in, j, row[current_column++]);
+ for (unsigned j = 0; j < NbOut; ++j) {
+ v = isl_val_int_from_gmp(ctx, row[current_column++]);
+ c = isl_constraint_set_coefficient_val(c, isl_dim_out, j, v);
+ }
+
+ for (unsigned j = 0; j < NbIn; ++j) {
+ v = isl_val_int_from_gmp(ctx, row[current_column++]);
+ c = isl_constraint_set_coefficient_val(c, isl_dim_in, j, v);
+ }
- for (unsigned j = 0; j < NbParam; ++j)
- isl_constraint_set_coefficient(c, isl_dim_param, j, row[current_column++]);
+ for (unsigned j = 0; j < NbParam; ++j) {
+ v = isl_val_int_from_gmp(ctx, row[current_column++]);
+ c = isl_constraint_set_coefficient_val(c, isl_dim_param, j, v);
+ }
- isl_constraint_set_constant(c, row[current_column]);
+ v = isl_val_int_from_gmp(ctx, row[current_column]);
+ c = isl_constraint_set_constant_val(c, v);
return c;
}
Modified: polly/trunk/lib/Pocc.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/Pocc.cpp?rev=203500&r1=203499&r2=203500&view=diff
==============================================================================
--- polly/trunk/lib/Pocc.cpp (original)
+++ polly/trunk/lib/Pocc.cpp Mon Mar 10 17:03:30 2014
@@ -253,14 +253,14 @@ void Pocc::printScop(raw_ostream &OS) co
OS << "\n";
- if (error_code ec = MemoryBuffer::getFile(PlutoStdout, stdoutBuffer))
+ if (error_code ec = MemoryBuffer::getFile(PlutoStdout.str(), stdoutBuffer))
OS << "Could not open pocc stdout file: " + ec.message() << "\n";
else {
OS << "pocc stdout: " << stdoutBuffer->getBufferIdentifier() << "\n";
OS << stdoutBuffer->getBuffer() << "\n";
}
- if (error_code ec = MemoryBuffer::getFile(PlutoStderr, stderrBuffer))
+ if (error_code ec = MemoryBuffer::getFile(PlutoStderr.str(), stderrBuffer))
OS << "Could not open pocc stderr file: " + ec.message() << "\n";
else {
OS << "pocc stderr: " << PlutoStderr << "\n";
More information about the llvm-commits
mailing list