diff options
| -rwxr-xr-x | polly/utils/jscop2cloog.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/polly/utils/jscop2cloog.py b/polly/utils/jscop2cloog.py new file mode 100755 index 00000000000..668f08509e2 --- /dev/null +++ b/polly/utils/jscop2cloog.py @@ -0,0 +1,68 @@ +#!/usr/bin/python +import argparse, os +import json + +def getDomains(scop): + statements = scop['statements']; + numStatements = len(statements) + + output = "%s\n\n" % str(numStatements) + + for statement in scop['statements']: + output += "%s\n\n" % statement['domain'] + output += "0 0 0 # for future options\n\n" + + + return output + +def getSchedules(scop): + statements = scop['statements']; + numStatements = len(statements) + + output = "%s\n\n" % str(numStatements) + + for statement in scop['statements']: + output += "%s\n\n" % statement['schedule'] + + return output + +def writeCloog(scop): + template = """ +# ---------------------- CONTEXT ---------------------- +c # language is C + +# Context (no constraints on two parameters) +%s + +0 # We do not want to set manually the parameter names + +# --------------------- STATEMENTS -------------------- +%s + +0 # We do not want to set manually the iterator names + +# --------------------- SCATTERING -------------------- +%s + +0 # We do not want to set manually the scattering dimension names +""" + + context = scop['context'] + domains = getDomains(scop) + schedules = getSchedules(scop) + print template % (context, domains, schedules) + +def __main__(): + description = 'Translate JSCoP into iscc input' + parser = argparse.ArgumentParser(description) + parser.add_argument('inputFile', metavar='N', type=file, + help='The JSCoP file') + + args = parser.parse_args() + inputFile = args.inputFile + scop = json.load(inputFile) + + writeCloog(scop) + +__main__() + |

