|  | #!/usr/bin/python | 
|  | import argparse, isl, os | 
|  | import json | 
|  |  | 
|  | def printDomain(scop): | 
|  |  | 
|  | domain = isl.USet('{}') | 
|  |  | 
|  | for statement in scop['statements']: | 
|  | domain = domain.union(isl.USet(statement['domain'])) | 
|  |  | 
|  | print "D :=", | 
|  | print str(domain) + ";" | 
|  |  | 
|  | def printAccesses(scop): | 
|  |  | 
|  | read = isl.UMap('{}') | 
|  |  | 
|  | for statement in scop['statements']: | 
|  | for access in statement['accesses']: | 
|  | if access['kind'] == 'read': | 
|  | read = read.union(isl.UMap(access['relation'])) | 
|  |  | 
|  | print "R :=", | 
|  | print str(read) + ";" | 
|  |  | 
|  | write = isl.UMap('{}') | 
|  |  | 
|  | for statement in scop['statements']: | 
|  | for access in statement['accesses']: | 
|  | if access['kind'] == 'write': | 
|  | write = write.union(isl.UMap(access['relation'])) | 
|  |  | 
|  | print "W :=", | 
|  | print str(write) + ";" | 
|  |  | 
|  | def printSchedule(scop): | 
|  |  | 
|  | schedule = isl.UMap('{}') | 
|  |  | 
|  | for statement in scop['statements']: | 
|  | schedule = schedule.union(isl.UMap(statement['schedule'])) | 
|  |  | 
|  | print "S :=", | 
|  | print str(schedule) + ";" | 
|  |  | 
|  | 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) | 
|  |  | 
|  | printDomain(scop) | 
|  | printAccesses(scop) | 
|  | printSchedule(scop) | 
|  |  | 
|  | print 'R := R * D;' | 
|  | print 'W := W * D;' | 
|  | print 'Dep := (last W before R under S)[0];' | 
|  | print 'schedule D respecting Dep minimizing Dep;' | 
|  |  | 
|  |  | 
|  | __main__() | 
|  |  |