[PATCH] D33362: [Polly][WIP]JSCoP Importer: support for multi-valued schedules

Mike via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 1 11:43:10 PDT 2017


Mike_Jongen updated this revision to Diff 101055.
Mike_Jongen added a comment.

changed the order of importAccesses and importSchedule. Performing importSchedule before importAccesses gives an error, as importAccesses tries to import the accesses of scops which are not defined in the Jscop file. By changing the order this problem is avoided. I could not detect any problem with changing this order, but if there is a reason why the order was different, i can look for another (more complex) solution.

I also changed the domain of the newly created scops. These are not always the same as the old scops.

There is a problem with setting the schedule of the new scops. When using getschedule on a new schedule (after the schedule is set), no schedule is found. The problem is caused by:

Schedule = isl_union_map_intersect_domain(Schedule, isl_union_set_from_set(isl_set_copy(Domain)));

Schedule is empty when this is used on a copied statement (but not when used on a not copied statement). if we print the domain and the schedule, we can see that the domain is present is the schedule:

Domain:
{ Stmt_for_end_copy_no_2[i0] : 2 <= i0 <= 93 }

Schedule:
{ Stmt_for_inc29[i0, i1] -> [i0, 1, 0, 1, i1]; Stmt_for_cond1_preheader_copy_no_1[i0] -> [-1 + i0, 0, i0, 0, 0] : 2 <= i0 <= 94; Stmt_for_cond1_preheader_copy_no_1[i0 = 1] -> [1, 0, 1, 0, 0]; Stmt_for_cond17_preheader[i0] -> [i0, 1, 0, 0, 0]; Stmt_for_cond1_preheader_copy_no_2[i0] -> [i0, 0, i0, 0, 0] : 2 <= i0 <= 93; Stmt_for_inc[i0, i1] -> [0, 0, i0, 1, i1] : 0 <= i0 <= 1; Stmt_for_inc[i0, i1] -> [-2 + i0, 0, i0, 1, i1] : 2 <= i0 <= 95; Stmt_for_inc_copy_no_1[i0, i1] -> [-1 + i0, 0, i0, 1, i1] : 2 <= i0 <= 94; Stmt_for_inc_copy_no_1[i0 = 1, i1] -> [1, 0, 1, 1, i1]; Stmt_for_end31[i0] -> [i0, 1, 0, 2, 0]; Stmt_for_end_copy_no_1[i0] -> [-1 + i0, 0, i0, 2, 0] : 2 <= i0 <= 94; Stmt_for_end_copy_no_1[i0 = 1] -> [1, 0, 1, 2, 0]; Stmt_for_inc_copy_no_2[i0, i1] -> [i0, 0, i0, 1, i1] : 2 <= i0 <= 93; Stmt_for_end[i0] -> [0, 0, i0, 2, 0] : 0 <= i0 <= 1; Stmt_for_end[i0] -> [-2 + i0, 0, i0, 2, 0] : 2 <= i0 <= 95; Stmt_for_cond1_preheader[i0] -> [0, 0, i0, 0, 0] : 0 <= i0 <= 1; Stmt_for_cond1_preheader[i0] -> [-2 + i0, 0, i0, 0, 0] : 2 <= i0 <= 95; **Stmt_for_end_copy_no_2[i0] -> [i0, 0, i0, 2, 0] : 2 <= i0 <= 93** }

Is there another variable in the domain or schedule that might be not set or incorrectly set, such that it can cause the intersect to fail? Or is there a way to check why the intersect fails?


https://reviews.llvm.org/D33362

Files:
  include/polly/ScopInfo.h
  lib/Analysis/ScopInfo.cpp
  lib/Exchange/JSONExporter.cpp
  test/ScopDetect/double_convolution___%for.cond1.preheader---%for.end37.jscop.notbound
  test/ScopDetect/double_convolution___%for.cond1.preheader---%for.end37.jscop.recompute
  test/ScopDetect/recomputation.ll
  test/ScopDetect/recomputation_unbound.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D33362.101055.patch
Type: text/x-patch
Size: 28956 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20170601/0bbfb1cf/attachment.bin>


More information about the llvm-commits mailing list