Lines Matching refs:isl

33 static isl::schedule_node_band
34 applyBandMemberAttributes(isl::schedule_node_band Target, int TargetIdx, in applyBandMemberAttributes()
35 const isl::schedule_node_band &Source, in applyBandMemberAttributes()
42 Target = isl::manage(isl_schedule_node_band_member_set_ast_loop_type( in applyBandMemberAttributes()
44 .as<isl::schedule_node_band>(); in applyBandMemberAttributes()
49 Target = isl::manage(isl_schedule_node_band_member_set_isolate_ast_loop_type( in applyBandMemberAttributes()
51 .as<isl::schedule_node_band>(); in applyBandMemberAttributes()
59 static isl::schedule rebuildBand(isl::schedule_node_band OldBand, in rebuildBand()
60 isl::schedule Body, CbTy IncludeCb) { in rebuildBand()
76 isl::multi_union_pw_aff PartialSched = OldBand.get_partial_schedule(); in rebuildBand()
77 isl::multi_union_pw_aff NewPartialSched; in rebuildBand()
80 isl::union_pw_aff_list List = PartialSched.list(); in rebuildBand()
88 isl::space ParamSpace = PartialSched.get_space().params(); in rebuildBand()
89 isl::space NewScatterSpace = ParamSpace.add_unnamed_tuple(NewIdx); in rebuildBand()
90 NewPartialSched = isl::multi_union_pw_aff(NewScatterSpace, List); in rebuildBand()
97 isl::schedule_node_band NewBand = in rebuildBand()
101 .as<isl::schedule_node_band>(); in rebuildBand()
131 : RecursiveScheduleTreeVisitor<Derived, isl::schedule, Args...> {
137 isl::schedule visitDomain(isl::schedule_node_domain Node, Args... args) { in visitDomain()
142 isl::schedule visitBand(isl::schedule_node_band Band, Args... args) { in visitBand()
143 isl::schedule NewChild = in visitBand()
148 isl::schedule visitSequence(isl::schedule_node_sequence Sequence, in visitSequence()
151 isl::schedule Result = in visitSequence()
159 isl::schedule visitSet(isl::schedule_node_set Set, Args... args) { in visitSet()
161 isl::schedule Result = in visitSet()
164 Result = isl::manage( in visitSet()
172 isl::schedule visitLeaf(isl::schedule_node_leaf Leaf, Args... args) { in visitLeaf()
173 return isl::schedule::from_domain(Leaf.get_domain()); in visitLeaf()
176 isl::schedule visitMark(const isl::schedule_node &Mark, Args... args) { in visitMark()
178 isl::id TheMark = Mark.as<isl::schedule_node_mark>().get_id(); in visitMark()
179 isl::schedule_node NewChild = in visitMark()
187 isl::schedule visitExtension(isl::schedule_node_extension Extension, in visitExtension()
189 isl::union_map TheExtension = in visitExtension()
190 Extension.as<isl::schedule_node_extension>().get_extension(); in visitExtension()
191 isl::schedule_node NewChild = getDerived() in visitExtension()
195 isl::schedule_node NewExtension = in visitExtension()
196 isl::schedule_node::from_extension(TheExtension); in visitExtension()
200 isl::schedule visitFilter(isl::schedule_node_filter Filter, Args... args) { in visitFilter()
201 isl::union_set FilterDomain = in visitFilter()
202 Filter.as<isl::schedule_node_filter>().get_filter(); in visitFilter()
203 isl::schedule NewSchedule = in visitFilter()
208 isl::schedule visitNode(isl::schedule_node Node, Args... args) { in visitNode()
229 : ScheduleTreeRewriter<ExtensionNodeRewriter, const isl::union_set &,
230 isl::union_map &> {
232 const isl::union_set &, isl::union_map &>;
236 isl::schedule visitSchedule(isl::schedule Schedule) { in visitSchedule()
237 isl::union_map Extensions; in visitSchedule()
238 isl::schedule Result = in visitSchedule()
244 isl::schedule visitSequence(isl::schedule_node_sequence Sequence, in visitSequence()
245 const isl::union_set &Domain, in visitSequence()
246 isl::union_map &Extensions) { in visitSequence()
248 isl::schedule NewNode = visit(Sequence.first_child(), Domain, Extensions); in visitSequence()
250 isl::schedule_node OldChild = Sequence.child(i); in visitSequence()
251 isl::union_map NewChildExtensions; in visitSequence()
252 isl::schedule NewChildNode = visit(OldChild, Domain, NewChildExtensions); in visitSequence()
259 isl::schedule visitSet(isl::schedule_node_set Set, in visitSet()
260 const isl::union_set &Domain, in visitSet()
261 isl::union_map &Extensions) { in visitSet()
263 isl::schedule NewNode = visit(Set.first_child(), Domain, Extensions); in visitSet()
265 isl::schedule_node OldChild = Set.child(i); in visitSet()
266 isl::union_map NewChildExtensions; in visitSet()
267 isl::schedule NewChildNode = visit(OldChild, Domain, NewChildExtensions); in visitSet()
268 NewNode = isl::manage( in visitSet()
275 isl::schedule visitLeaf(isl::schedule_node_leaf Leaf, in visitLeaf()
276 const isl::union_set &Domain, in visitLeaf()
277 isl::union_map &Extensions) { in visitLeaf()
278 Extensions = isl::union_map::empty(Leaf.ctx()); in visitLeaf()
279 return isl::schedule::from_domain(Domain); in visitLeaf()
282 isl::schedule visitBand(isl::schedule_node_band OldNode, in visitBand()
283 const isl::union_set &Domain, in visitBand()
284 isl::union_map &OuterExtensions) { in visitBand()
285 isl::schedule_node OldChild = OldNode.first_child(); in visitBand()
286 isl::multi_union_pw_aff PartialSched = in visitBand()
287 isl::manage(isl_schedule_node_band_get_partial_schedule(OldNode.get())); in visitBand()
289 isl::union_map NewChildExtensions; in visitBand()
290 isl::schedule NewChild = visit(OldChild, Domain, NewChildExtensions); in visitBand()
293 OuterExtensions = isl::union_map::empty(NewChildExtensions.ctx()); in visitBand()
294 isl::union_map NewPartialSchedMap = isl::union_map::from(PartialSched); in visitBand()
296 for (isl::map Ext : NewChildExtensions.get_map_list()) { in visitBand()
301 isl::map BandSched = in visitBand()
302 Ext.project_out(isl::dim::in, 0, OuterDims).reverse(); in visitBand()
307 isl::map OuterSched = in visitBand()
308 Ext.project_out(isl::dim::in, OuterDims, BandDims); in visitBand()
312 isl::multi_union_pw_aff NewPartialSchedAsAsMultiUnionPwAff = in visitBand()
313 isl::multi_union_pw_aff::from_union_map(NewPartialSchedMap); in visitBand()
314 isl::schedule_node NewNode = in visitBand()
320 NewNode = isl::manage(isl_schedule_node_band_set_permutable( in visitBand()
324 NewNode = applyBandMemberAttributes(NewNode.as<isl::schedule_node_band>(), in visitBand()
330 isl::schedule visitFilter(isl::schedule_node_filter Filter, in visitFilter()
331 const isl::union_set &Domain, in visitFilter()
332 isl::union_map &Extensions) { in visitFilter()
333 isl::union_set FilterDomain = in visitFilter()
334 Filter.as<isl::schedule_node_filter>().get_filter(); in visitFilter()
335 isl::union_set NewDomain = Domain.intersect(FilterDomain); in visitFilter()
341 isl::schedule visitExtension(isl::schedule_node_extension Extension, in visitExtension()
342 const isl::union_set &Domain, in visitExtension()
343 isl::union_map &Extensions) { in visitExtension()
344 isl::union_map ExtDomain = in visitExtension()
345 Extension.as<isl::schedule_node_extension>().get_extension(); in visitExtension()
346 isl::union_set NewDomain = Domain.unite(ExtDomain.range()); in visitExtension()
347 isl::union_map ChildExtensions; in visitExtension()
348 isl::schedule NewChild = in visitExtension()
365 llvm::SmallVector<isl::union_set, 8> ASTBuildOptions;
367 void visitBand(isl::schedule_node_band Band) { in visitBand()
369 isl::manage(isl_schedule_node_band_get_ast_build_options(Band.get()))); in visitBand()
385 llvm::ArrayRef<isl::union_set> ASTBuildOptions;
387 ApplyASTBuildOptions(llvm::ArrayRef<isl::union_set> ASTBuildOptions) in ApplyASTBuildOptions()
390 isl::schedule visitSchedule(isl::schedule Schedule) { in visitSchedule()
392 isl::schedule Result = visit(Schedule).get_schedule(); in visitSchedule()
398 isl::schedule_node visitBand(isl::schedule_node_band Band) { in visitBand()
399 isl::schedule_node_band Result = in visitBand()
407 static bool containsExtensionNode(isl::schedule Schedule) { in containsExtensionNode()
435 static bool isMark(const isl::schedule_node &Node) { in isMark()
440 static bool isBand(const isl::schedule_node &Node) { in isBand()
446 static bool isBandWithSingleLoop(const isl::schedule_node &Node) { in isBandWithSingleLoop()
451 static bool isLeaf(const isl::schedule_node &Node) { in isLeaf()
456 static isl::id createGeneratedLoopAttr(isl::ctx Ctx, MDNode *FollowupLoopMD) { in createGeneratedLoopAttr()
473 static isl::schedule_node moveToBandMark(isl::schedule_node BandOrMark) { in moveToBandMark()
480 isl::schedule_node Mark = BandOrMark.parent(); in moveToBandMark()
488 static isl::schedule_node removeMark(isl::schedule_node MarkOrBand, in removeMark()
492 isl::schedule_node Band; in removeMark()
494 Attr = getLoopAttr(MarkOrBand.as<isl::schedule_node_mark>().get_id()); in removeMark()
495 Band = isl::manage(isl_schedule_node_delete(MarkOrBand.release())); in removeMark()
506 static isl::schedule_node removeMark(isl::schedule_node MarkOrBand) { in removeMark()
511 static isl::schedule_node insertMark(isl::schedule_node Band, isl::id Mark) { in insertMark()
525 static isl::basic_set isDivisibleBySet(isl::ctx &Ctx, long Factor, in isDivisibleBySet()
527 isl::val ValFactor{Ctx, Factor}; in isDivisibleBySet()
528 isl::val ValOffset{Ctx, Offset}; in isDivisibleBySet()
530 isl::space Unispace{Ctx, 0, 1}; in isDivisibleBySet()
531 isl::local_space LUnispace{Unispace}; in isDivisibleBySet()
532 isl::aff AffFactor{LUnispace, ValFactor}; in isDivisibleBySet()
533 isl::aff AffOffset{LUnispace, ValOffset}; in isDivisibleBySet()
535 isl::aff Id = isl::aff::var_on_domain(LUnispace, isl::dim::out, 0); in isDivisibleBySet()
536 isl::aff DivMul = Id.mod(ValFactor); in isDivisibleBySet()
537 isl::basic_map Divisible = isl::basic_map::from_aff(DivMul); in isDivisibleBySet()
538 isl::basic_map Modulo = Divisible.fix_val(isl::dim::out, 0, ValOffset); in isDivisibleBySet()
546 static isl::set addExtentConstraints(isl::set Set, int VectorWidth) { in addExtentConstraints()
549 isl::space Space = Set.get_space(); in addExtentConstraints()
550 isl::local_space LocalSpace = isl::local_space(Space); in addExtentConstraints()
551 isl::constraint ExtConstr = isl::constraint::alloc_inequality(LocalSpace); in addExtentConstraints()
553 ExtConstr = ExtConstr.set_coefficient_si(isl::dim::set, Dims - 1, 1); in addExtentConstraints()
555 ExtConstr = isl::constraint::alloc_inequality(LocalSpace); in addExtentConstraints()
557 ExtConstr = ExtConstr.set_coefficient_si(isl::dim::set, Dims - 1, -1); in addExtentConstraints()
570 isl::schedule visitBand(isl::schedule_node_band RootBand) { in visitBand()
571 isl::schedule_node_band Band = RootBand; in visitBand()
572 isl::ctx Ctx = Band.ctx(); in visitBand()
581 SmallVector<isl::schedule_node_band> Nest; in visitBand()
583 isl::schedule_node Body; in visitBand()
588 if (!Body.isa<isl::schedule_node_band>()) in visitBand()
590 Band = Body.as<isl::schedule_node_band>(); in visitBand()
610 isl::schedule NewBody = visit(Body); in visitBand()
613 isl::union_pw_aff_list PartScheds{Ctx, NumTotalLoops}; in visitBand()
614 for (isl::schedule_node_band Band : Nest) { in visitBand()
616 isl::multi_union_pw_aff BandScheds = Band.get_partial_schedule(); in visitBand()
620 isl::space ScatterSpace = isl::space(Ctx, 0, NumTotalLoops); in visitBand()
621 isl::multi_union_pw_aff PartSchedsMulti{ScatterSpace, PartScheds}; in visitBand()
623 isl::schedule_node_band CollapsedBand = in visitBand()
627 .as<isl::schedule_node_band>(); in visitBand()
631 for (isl::schedule_node_band Band : Nest) { in visitBand()
646 static isl::schedule collapseBands(isl::schedule Sched) { in collapseBands()
656 isl::schedule_node Node, in collectPotentiallyFusableBands()
657 SmallVectorImpl<std::pair<isl::schedule_node, isl::schedule_node>> in collectPotentiallyFusableBands()
659 const isl::schedule_node &DirectChild) { in collectPotentiallyFusableBands()
667 isl::schedule_node C = Node.first_child(); in collectPotentiallyFusableBands()
686 static isl::union_map remainingDepsFromPartialSchedule(isl::union_map PartSched, in remainingDepsFromPartialSchedule()
687 isl::union_map Deps) { in remainingDepsFromPartialSchedule()
692 isl::space ScatterSpace = in remainingDepsFromPartialSchedule()
693 ParamSpace.set_from_params().add_dims(isl::dim::set, NumDims); in remainingDepsFromPartialSchedule()
696 isl::union_map PartSchedRev = PartSched.reverse(); in remainingDepsFromPartialSchedule()
699 isl::map MaybeBefore = isl::map::lex_le(ScatterSpace); in remainingDepsFromPartialSchedule()
702 isl::union_map DomMaybeBefore = in remainingDepsFromPartialSchedule()
706 isl::union_map ChildRemainingDeps = Deps.intersect(DomMaybeBefore); in remainingDepsFromPartialSchedule()
713 static isl::union_map remainigDepsFromSequence(ArrayRef<isl::union_set> Domains, in remainigDepsFromSequence()
714 isl::union_map Deps) { in remainigDepsFromSequence()
715 isl::ctx Ctx = Deps.ctx(); in remainigDepsFromSequence()
716 isl::space ParamSpace = Deps.get_space().params(); in remainigDepsFromSequence()
720 isl::union_map PartialSchedules = isl::union_map::empty(Ctx); in remainigDepsFromSequence()
722 isl::val ExecTime = isl::val(Ctx, P.index()); in remainigDepsFromSequence()
723 isl::union_pw_aff DomSched{P.value(), ExecTime}; in remainigDepsFromSequence()
732 static bool canFuseOutermost(const isl::schedule_node_band &LHS, in canFuseOutermost()
733 const isl::schedule_node_band &RHS, in canFuseOutermost()
734 const isl::union_map &Deps) { in canFuseOutermost()
736 isl::union_map LHSPartSched = in canFuseOutermost()
740 isl::union_map RHSPartSched = in canFuseOutermost()
745 isl::union_map OrderedBySequence = in canFuseOutermost()
749 isl::space ParamSpace = OrderedBySequence.get_space().params(); in canFuseOutermost()
750 isl::space NewScatterSpace = ParamSpace.add_unnamed_tuple(1); in canFuseOutermost()
753 isl::map After = isl::map::lex_gt(NewScatterSpace); in canFuseOutermost()
760 isl::union_map MightBeAfterDoms = After.apply_domain(LHSPartSched.reverse()) in canFuseOutermost()
764 isl::union_map WithBefore = OrderedBySequence.intersect(MightBeAfterDoms); in canFuseOutermost()
770 static isl::schedule tryGreedyFuse(isl::schedule_node_band LHS, in tryGreedyFuse()
771 isl::schedule_node_band RHS, in tryGreedyFuse()
772 const isl::union_map &Deps) { in tryGreedyFuse()
786 isl::union_pw_aff LHSPartOuterSched = LHS.get_partial_schedule().get_at(0); in tryGreedyFuse()
787 isl::union_pw_aff RHSPartOuterSched = RHS.get_partial_schedule().get_at(0); in tryGreedyFuse()
791 isl::schedule LHSBody = Rewriter.visit(LHS.first_child()); in tryGreedyFuse()
792 isl::schedule RHSBody = Rewriter.visit(RHS.first_child()); in tryGreedyFuse()
799 isl::schedule LHSNewBody = in tryGreedyFuse()
801 isl::schedule RHSNewBody = in tryGreedyFuse()
805 isl::schedule NewCommonBody = LHSNewBody.sequence(RHSNewBody); in tryGreedyFuse()
809 isl::union_map NewCommonPartialSched = in tryGreedyFuse()
811 isl::schedule NewCommonSchedule = NewCommonBody.insert_partial_schedule( in tryGreedyFuse()
817 static isl::schedule tryGreedyFuse(isl::schedule_node LHS, in tryGreedyFuse()
818 isl::schedule_node RHS, in tryGreedyFuse()
819 const isl::union_map &Deps) { in tryGreedyFuse()
823 if (!LHS.isa<isl::schedule_node_band>()) in tryGreedyFuse()
825 if (!RHS.isa<isl::schedule_node_band>()) in tryGreedyFuse()
828 return tryGreedyFuse(LHS.as<isl::schedule_node_band>(), in tryGreedyFuse()
829 RHS.as<isl::schedule_node_band>(), Deps); in tryGreedyFuse()
837 : public ScheduleTreeRewriter<GreedyFusionRewriter, isl::union_map> {
839 using BaseTy = ScheduleTreeRewriter<GreedyFusionRewriter, isl::union_map>;
847 isl::schedule visitBand(isl::schedule_node_band Band, isl::union_map Deps) { in visitBand()
849 isl::union_map PartSched = in visitBand()
850 isl::union_map::from(Band.get_partial_schedule()); in visitBand()
853 isl::space ParamSpace = PartSched.get_space().params(); in visitBand()
856 isl::union_map PartSchedRev = PartSched.reverse(); in visitBand()
863 isl::union_map Unsequenced = PartSchedRev.apply_domain(PartSchedRev); in visitBand()
867 isl::union_map RemDeps = Deps.intersect(Unsequenced); in visitBand()
872 isl::schedule visitSequence(isl::schedule_node_sequence Sequence, in visitSequence()
873 isl::union_map Deps) { in visitSequence()
880 SmallVector<std::pair<isl::schedule_node, isl::schedule_node>> Bands; in visitSequence()
882 isl::schedule_node Child = Sequence.child(i); in visitSequence()
892 isl::schedule Fused = in visitSequence()
916 SmallVector<isl::union_set> SubDomains; in visitSequence()
926 isl::schedule Result; in visitSequence()
928 isl::schedule_node MaybeFused = P.first; in visitSequence()
929 isl::schedule_node DirectChild = P.second; in visitSequence()
945 isl::schedule InnerFused = visit(MaybeFused, SubRemainingDeps); in visitSequence()
960 bool polly::isBandMark(const isl::schedule_node &Node) { in isBandMark()
962 isLoopAttr(Node.as<isl::schedule_node_mark>().get_id()); in isBandMark()
965 BandAttr *polly::getBandAttr(isl::schedule_node MarkOrBand) { in getBandAttr()
970 return getLoopAttr(MarkOrBand.as<isl::schedule_node_mark>().get_id()); in getBandAttr()
973 isl::schedule polly::hoistExtensionNodes(isl::schedule Sched) { in hoistExtensionNodes()
987 isl::schedule NewSched = Rewriter.visitSchedule(Sched); in hoistExtensionNodes()
997 isl::schedule polly::applyFullUnroll(isl::schedule_node BandToUnroll) { in applyFullUnroll()
998 isl::ctx Ctx = BandToUnroll.ctx(); in applyFullUnroll()
1004 isl::multi_union_pw_aff PartialSched = isl::manage( in applyFullUnroll()
1006 assert(unsignedFromIslSize(PartialSched.dim(isl::dim::out)) == 1u && in applyFullUnroll()
1008 isl::union_pw_aff PartialSchedUAff = PartialSched.at(0); in applyFullUnroll()
1010 isl::union_set Domain = BandToUnroll.get_domain(); in applyFullUnroll()
1012 isl::union_map PartialSchedUMap = in applyFullUnroll()
1013 isl::union_map::from(isl::union_pw_multi_aff(PartialSchedUAff)); in applyFullUnroll()
1016 isl::union_set ScatterList = PartialSchedUMap.range(); in applyFullUnroll()
1020 SmallVector<isl::point, 16> Elts; in applyFullUnroll()
1021 ScatterList.foreach_point([&Elts](isl::point P) -> isl::stat { in applyFullUnroll()
1023 return isl::stat::ok(); in applyFullUnroll()
1027 llvm::sort(Elts, [](isl::point P1, isl::point P2) -> bool { in applyFullUnroll()
1028 isl::val C1 = P1.get_coordinate_val(isl::dim::set, 0); in applyFullUnroll()
1029 isl::val C2 = P2.get_coordinate_val(isl::dim::set, 0); in applyFullUnroll()
1034 isl::union_set_list List = isl::union_set_list(Ctx, Elts.size()); in applyFullUnroll()
1035 for (isl::point P : Elts) { in applyFullUnroll()
1037 isl::union_set DomainFilter = PartialSchedUMap.intersect_range(P).domain(); in applyFullUnroll()
1043 isl::schedule_node Body = in applyFullUnroll()
1044 isl::manage(isl_schedule_node_delete(BandToUnroll.release())); in applyFullUnroll()
1049 isl::schedule polly::applyPartialUnroll(isl::schedule_node BandToUnroll, in applyPartialUnroll()
1052 isl::ctx Ctx = BandToUnroll.ctx(); in applyPartialUnroll()
1059 isl::multi_union_pw_aff PartialSched = isl::manage( in applyPartialUnroll()
1063 isl::union_pw_aff PartialSchedUAff = PartialSched.at(0); in applyPartialUnroll()
1067 isl::union_pw_aff StridedPartialSchedUAff = in applyPartialUnroll()
1068 isl::union_pw_aff::empty(PartialSchedUAff.get_space()); in applyPartialUnroll()
1069 isl::val ValFactor{Ctx, Factor}; in applyPartialUnroll()
1071 &ValFactor](isl::pw_aff PwAff) -> isl::stat { in applyPartialUnroll()
1072 isl::space Space = PwAff.get_space(); in applyPartialUnroll()
1073 isl::set Universe = isl::set::universe(Space.domain()); in applyPartialUnroll()
1074 isl::pw_aff AffFactor{Universe, ValFactor}; in applyPartialUnroll()
1075 isl::pw_aff DivSchedAff = PwAff.div(AffFactor).floor().mul(AffFactor); in applyPartialUnroll()
1077 return isl::stat::ok(); in applyPartialUnroll()
1080 isl::union_set_list List = isl::union_set_list(Ctx, Factor); in applyPartialUnroll()
1083 isl::union_map UMap = in applyPartialUnroll()
1084 isl::union_map::from(isl::union_pw_multi_aff(PartialSchedUAff)); in applyPartialUnroll()
1087 isl::basic_set Divisible = isDivisibleBySet(Ctx, Factor, i); in applyPartialUnroll()
1090 isl::union_set UnrolledDomain = UMap.intersect_range(Divisible).domain(); in applyPartialUnroll()
1095 isl::schedule_node Body = in applyPartialUnroll()
1096 isl::manage(isl_schedule_node_delete(BandToUnroll.copy())); in applyPartialUnroll()
1098 isl::schedule_node NewLoop = in applyPartialUnroll()
1106 isl::id NewBandId = createGeneratedLoopAttr(Ctx, FollowupMD); in applyPartialUnroll()
1113 isl::set polly::getPartialTilePrefixes(isl::set ScheduleRange, in getPartialTilePrefixes()
1117 isl::set LoopPrefixes = in getPartialTilePrefixes()
1118 ScheduleRange.drop_constraints_involving_dims(isl::dim::set, Dims - 1, 1); in getPartialTilePrefixes()
1120 isl::set BadPrefixes = ExtentPrefixes.subtract(ScheduleRange); in getPartialTilePrefixes()
1121 BadPrefixes = BadPrefixes.project_out(isl::dim::set, Dims - 1, 1); in getPartialTilePrefixes()
1122 LoopPrefixes = LoopPrefixes.project_out(isl::dim::set, Dims - 1, 1); in getPartialTilePrefixes()
1126 isl::union_set polly::getIsolateOptions(isl::set IsolateDomain, in getIsolateOptions()
1134 isl::map IsolateRelation = isl::map::from_domain(IsolateDomain); in getIsolateOptions()
1135 IsolateRelation = IsolateRelation.move_dims(isl::dim::out, 0, isl::dim::in, in getIsolateOptions()
1137 isl::set IsolateOption = IsolateRelation.wrap(); in getIsolateOptions()
1138 isl::id Id = isl::id::alloc(IsolateOption.ctx(), "isolate", nullptr); in getIsolateOptions()
1140 return isl::union_set(IsolateOption); in getIsolateOptions()
1143 isl::union_set polly::getDimOptions(isl::ctx Ctx, const char *Option) { in getDimOptions()
1144 isl::space Space(Ctx, 0, 1); in getDimOptions()
1145 auto DimOption = isl::set::universe(Space); in getDimOptions()
1146 auto Id = isl::id::alloc(Ctx, Option, nullptr); in getDimOptions()
1148 return isl::union_set(DimOption); in getDimOptions()
1151 isl::schedule_node polly::tileNode(isl::schedule_node Node, in tileNode()
1155 auto Space = isl::manage(isl_schedule_node_band_get_space(Node.get())); in tileNode()
1156 auto Dims = Space.dim(isl::dim::set); in tileNode()
1157 auto Sizes = isl::multi_val::zero(Space); in tileNode()
1161 Sizes = Sizes.set_val(i, isl::val(Node.ctx(), tileSize)); in tileNode()
1164 auto TileLoopMarker = isl::id::alloc(Node.ctx(), TileLoopMarkerStr, nullptr); in tileNode()
1168 isl::manage(isl_schedule_node_band_tile(Node.release(), Sizes.release())); in tileNode()
1172 isl::id::alloc(Node.ctx(), PointLoopMarkerStr, nullptr); in tileNode()
1177 isl::schedule_node polly::applyRegisterTiling(isl::schedule_node Node, in applyRegisterTiling()
1182 return Node.as<isl::schedule_node_band>().set_ast_build_options( in applyRegisterTiling()
1183 isl::union_set(Ctx, "{unroll[x]}")); in applyRegisterTiling()
1188 collectFissionableStmts(isl::schedule_node Node, in collectFissionableStmts()
1189 SmallVectorImpl<isl::schedule_node> &ScheduleStmts) { in collectFissionableStmts()
1196 isl::schedule_node C = Node.first_child(); in collectFissionableStmts()
1206 isl::schedule polly::applyMaxFission(isl::schedule_node BandToFission) { in applyMaxFission()
1207 isl::ctx Ctx = BandToFission.ctx(); in applyMaxFission()
1209 isl::schedule_node BandBody = BandToFission.child(0); in applyMaxFission()
1211 SmallVector<isl::schedule_node> FissionableStmts; in applyMaxFission()
1216 isl::union_set_list DomList = isl::union_set_list(Ctx, N); in applyMaxFission()
1218 isl::schedule_node BodyPart = FissionableStmts[i]; in applyMaxFission()
1224 isl::schedule_node Fissioned = BandToFission.insert_sequence(DomList); in applyMaxFission()
1229 isl::schedule polly::applyGreedyFusion(isl::schedule Sched, in applyGreedyFusion()
1230 const isl::union_map &Deps) { in applyGreedyFusion()
1234 isl::schedule Result = Rewriter.visit(Sched, Deps); in applyGreedyFusion()