Lines Matching refs:isl
170 static isl::union_map computeReachingDefinition(isl::union_map Schedule, in computeReachingDefinition()
171 isl::union_map Writes, in computeReachingDefinition()
188 static isl::union_map computeScalarReachingDefinition(isl::union_map Schedule, in computeScalarReachingDefinition()
189 isl::union_set Writes, in computeScalarReachingDefinition()
193 isl::union_map Defs = isl::union_map::from_domain(Writes); in computeScalarReachingDefinition()
214 static isl::map computeScalarReachingDefinition(isl::union_map Schedule, in computeScalarReachingDefinition()
215 isl::set Writes, bool InclDef, in computeScalarReachingDefinition()
217 isl::space DomainSpace = Writes.get_space(); in computeScalarReachingDefinition()
218 isl::space ScatterSpace = getScatterSpace(Schedule); in computeScalarReachingDefinition()
221 isl::union_map UMap = computeScalarReachingDefinition( in computeScalarReachingDefinition()
222 Schedule, isl::union_set(Writes), InclDef, InclRedef); in computeScalarReachingDefinition()
224 isl::space ResultSpace = ScatterSpace.map_from_domain_and_range(DomainSpace); in computeScalarReachingDefinition()
228 isl::union_map polly::makeUnknownForDomain(isl::union_set Domain) { in makeUnknownForDomain()
229 return isl::union_map::from_domain(Domain); in makeUnknownForDomain()
239 static isl::map makeUnknownForDomain(isl::set Domain) { in makeUnknownForDomain()
240 return isl::map::from_domain(Domain); in makeUnknownForDomain()
246 static bool isMapToUnknown(const isl::map &Map) { in isMapToUnknown()
247 isl::space Space = Map.get_space().range(); in isMapToUnknown()
248 return Space.has_tuple_id(isl::dim::set).is_false() && in isMapToUnknown()
250 Space.dim(isl::dim::set).release() == 0; in isMapToUnknown()
253 isl::union_map polly::filterKnownValInst(const isl::union_map &UMap) { in filterKnownValInst()
254 isl::union_map Result = isl::union_map::empty(UMap.ctx()); in filterKnownValInst()
255 for (isl::map Map : UMap.get_map_list()) { in filterKnownValInst()
323 isl::union_set &IncompatibleElts, in collectIncompatibleElts()
324 isl::union_set &AllElts) { in collectIncompatibleElts()
334 isl::map AccRelMap = getAccessRelationFor(MA); in collectIncompatibleElts()
335 isl::union_map AccRel = AccRelMap; in collectIncompatibleElts()
339 auto ArrayElts = isl::set::universe(AccRelMap.get_space().range()); in collectIncompatibleElts()
402 isl::map LoadValInst = makeValInst( in addArrayReadAccess()
406 isl::map IncludeElement = AccRel.domain_map().curry(); in addArrayReadAccess()
409 isl::map EltLoadValInst = LoadValInst.apply_domain(IncludeElement); in addArrayReadAccess()
415 isl::union_map ZoneAlgorithm::getWrittenValue(MemoryAccess *MA, in getWrittenValue()
416 isl::map AccRel) { in getWrittenValue()
453 isl::map AccRel = intersectRange(getAccessRelationFor(MA), CompatibleElts); in addArrayWriteAccess()
462 isl::union_map WriteValInstance = getWrittenValue(MA, AccRel); in addArrayWriteAccess()
467 isl::map IncludeElement = AccRel.domain_map().curry(); in addArrayWriteAccess()
470 isl::union_map EltWriteValInst = in addArrayWriteAccess()
483 isl::map ZoneAlgorithm::computeUseToDefFlowDependency(ScopStmt *UseStmt, in computeUseToDefFlowDependency()
486 isl::map UseScatter = getScatterFor(UseStmt); in computeUseToDefFlowDependency()
489 isl::map ReachDefZone = getScalarReachingDefinition(DefStmt); in computeUseToDefFlowDependency()
492 isl::map ReachDefTimepoints = in computeUseToDefFlowDependency()
493 convertZoneToTimepoints(ReachDefZone, isl::dim::in, false, true); in computeUseToDefFlowDependency()
536 isl::union_map ZoneAlgorithm::computePerPHI(const ScopArrayInfo *SAI) { in computePerPHI()
548 isl::set DefinedContext = S->getDefinedBehaviorContext(); in computePerPHI()
555 isl::union_map PHIWriteScatter = makeEmptyUnionMap(); in computePerPHI()
559 isl::map Scatter = getScatterFor(MA); in computePerPHI()
564 isl::map PHIReadScatter = getScatterFor(S->getPHIRead(SAI)); in computePerPHI()
567 isl::map BeforeRead = beforeScatter(PHIReadScatter, true); in computePerPHI()
570 isl::set WriteTimes = singleton(PHIWriteScatter.range(), ScatterSpace); in computePerPHI()
573 isl::map PHIWriteTimes = BeforeRead.intersect_range(WriteTimes); in computePerPHI()
578 isl::map LastPerPHIWrites = PHIWriteTimes.lexmax(); in computePerPHI()
581 isl::union_map Result = in computePerPHI()
582 isl::union_map(LastPerPHIWrites).apply_range(PHIWriteScatter.reverse()); in computePerPHI()
590 isl::union_set ZoneAlgorithm::makeEmptyUnionSet() const { in makeEmptyUnionSet()
591 return isl::union_set::empty(ParamSpace.ctx()); in makeEmptyUnionSet()
594 isl::union_map ZoneAlgorithm::makeEmptyUnionMap() const { in makeEmptyUnionMap()
595 return isl::union_map::empty(ParamSpace.ctx()); in makeEmptyUnionMap()
604 isl::union_set AllElts = makeEmptyUnionSet(); in collectCompatibleElts()
605 isl::union_set IncompatibleElts = makeEmptyUnionSet(); in collectCompatibleElts()
615 isl::map ZoneAlgorithm::getScatterFor(ScopStmt *Stmt) const { in getScatterFor()
616 isl::space ResultSpace = in getScatterFor()
621 isl::map ZoneAlgorithm::getScatterFor(MemoryAccess *MA) const { in getScatterFor()
625 isl::union_map ZoneAlgorithm::getScatterFor(isl::union_set Domain) const { in getScatterFor()
629 isl::map ZoneAlgorithm::getScatterFor(isl::set Domain) const { in getScatterFor()
631 auto UDomain = isl::union_set(Domain); in getScatterFor()
638 isl::set ZoneAlgorithm::getDomainFor(ScopStmt *Stmt) const { in getDomainFor()
642 isl::set ZoneAlgorithm::getDomainFor(MemoryAccess *MA) const { in getDomainFor()
646 isl::map ZoneAlgorithm::getAccessRelationFor(MemoryAccess *MA) const { in getAccessRelationFor()
652 isl::map ZoneAlgorithm::getDefToTarget(ScopStmt *DefStmt, in getDefToTarget()
656 return isl::map::identity( in getDefToTarget()
659 isl::map &Result = DefToTargetCache[std::make_pair(TargetStmt, DefStmt)]; in getDefToTarget()
687 isl::set DefDomain = getDomainFor(DefStmt); in getDefToTarget()
688 isl::set TargetDomain = getDomainFor(TargetStmt); in getDefToTarget()
692 Result = isl::map::from_domain_and_range(DefDomain, TargetDomain); in getDefToTarget()
694 Result = Result.equate(isl::dim::in, i, isl::dim::out, i); in getDefToTarget()
706 isl::map ZoneAlgorithm::getScalarReachingDefinition(ScopStmt *Stmt) { in getScalarReachingDefinition()
718 isl::map ZoneAlgorithm::getScalarReachingDefinition(isl::set DomainDef) { in getScalarReachingDefinition()
727 isl::map ZoneAlgorithm::makeUnknownForDomain(ScopStmt *Stmt) const { in makeUnknownForDomain()
731 isl::id ZoneAlgorithm::makeValueId(Value *V) { in makeValueId()
739 Id = isl::id::alloc(IslCtx.get(), Name.c_str(), V); in makeValueId()
744 isl::space ZoneAlgorithm::makeValueSpace(Value *V) { in makeValueSpace()
746 return Result.set_tuple_id(isl::dim::set, makeValueId(V)); in makeValueSpace()
749 isl::set ZoneAlgorithm::makeValueSet(Value *V) { in makeValueSet()
751 return isl::set::universe(Space); in makeValueSet()
754 isl::map ZoneAlgorithm::makeValInst(Value *Val, ScopStmt *UserStmt, Loop *Scope, in makeValInst()
771 return isl::map::from_domain_and_range(DomainUse, ValSet); in makeValInst()
781 auto ScevId = isl::manage(isl_id_alloc(UseDomainSpace.ctx().get(), nullptr, in makeValInst()
784 auto ScevSpace = UseDomainSpace.drop_dims(isl::dim::set, 0, 0); in makeValInst()
785 ScevSpace = ScevSpace.set_tuple_id(isl::dim::set, ScevId); in makeValInst()
789 isl::map::identity(UseDomainSpace.map_from_domain_and_range(ScevSpace)); in makeValInst()
801 auto ValInstSet = isl::map::from_domain_and_range(DomainUse, ValSet); in makeValInst()
828 auto ValInstSet = isl::map::from_domain_and_range(DomainUse, ValSet); in makeValInst()
847 static isl::union_map normalizeValInst(isl::union_map Input, in normalizeValInst()
849 isl::union_map NormalizeMap) { in normalizeValInst()
850 isl::union_map Result = isl::union_map::empty(Input.ctx()); in normalizeValInst()
851 for (isl::map Map : Input.get_map_list()) { in normalizeValInst()
852 isl::space Space = Map.get_space(); in normalizeValInst()
853 isl::space RangeSpace = Space.range(); in normalizeValInst()
863 RangeSpace.unwrap().get_tuple_id(isl::dim::out).get_user())); in normalizeValInst()
872 isl::union_map Mapped = isl::union_map(Map).apply_range(NormalizeMap); in normalizeValInst()
879 isl::union_map ZoneAlgorithm::makeNormalizedValInst(llvm::Value *Val, in makeNormalizedValInst()
883 isl::map ValInst = makeValInst(Val, UserStmt, Scope, IsCertain); in makeNormalizedValInst()
884 isl::union_map Normalized = in makeNormalizedValInst()
926 isl::boolean ZoneAlgorithm::isNormalized(isl::map Map) { in isNormalized()
927 isl::space Space = Map.get_space(); in isNormalized()
928 isl::space RangeSpace = Space.range(); in isNormalized()
930 isl::boolean IsWrapping = RangeSpace.is_wrapping(); in isNormalized()
933 isl::space Unwrapped = RangeSpace.unwrap(); in isNormalized()
935 isl::id OutTupleId = Unwrapped.get_tuple_id(isl::dim::out); in isNormalized()
937 return isl::boolean(); in isNormalized()
942 isl::id InTupleId = Unwrapped.get_tuple_id(isl::dim::in); in isNormalized()
944 return isl::boolean(); in isNormalized()
953 isl::boolean ZoneAlgorithm::isNormalized(isl::union_map UMap) { in isNormalized()
954 isl::boolean Result = true; in isNormalized()
955 for (isl::map Map : UMap.get_map_list()) { in isNormalized()
1019 isl::union_map AllPHIMaps = makeEmptyUnionMap(); in computeNormalizedPHIs()
1038 isl::union_map PerPHI = computePerPHI(SAI); in computeNormalizedPHIs()
1043 isl::map PHIValInst = makeValInst(PHI, &Stmt, Stmt.getSurroundingLoop()); in computeNormalizedPHIs()
1046 isl::union_map IncomingValInsts = makeEmptyUnionMap(); in computeNormalizedPHIs()
1059 isl::map IncomingValInst = makeValInst( in computeNormalizedPHIs()
1066 isl::union_map PHIMap = in computeNormalizedPHIs()
1101 isl::union_map ZoneAlgorithm::computeKnownFromMustWrites() const { in computeKnownFromMustWrites()
1103 isl::union_map EltReachdDef = distributeDomain(WriteReachDefZone.curry()); in computeKnownFromMustWrites()
1106 isl::union_map AllKnownWriteValInst = filterKnownValInst(AllWriteValInst); in computeKnownFromMustWrites()
1112 isl::union_map ZoneAlgorithm::computeKnownFromLoad() const { in computeKnownFromLoad()
1114 isl::union_set AllAccessedElts = AllReads.range().unite(AllWrites.range()); in computeKnownFromLoad()
1117 isl::union_map EltZoneUniverse = isl::union_map::from_domain_and_range( in computeKnownFromLoad()
1118 AllAccessedElts, isl::set::universe(ScatterSpace)); in computeKnownFromLoad()
1124 isl::union_set NonReachDef = in computeKnownFromLoad()
1128 isl::union_map DefZone = in computeKnownFromLoad()
1129 WriteReachDefZone.unite(isl::union_map::from_domain(NonReachDef)); in computeKnownFromLoad()
1132 isl::union_map EltZoneElt = EltZoneUniverse.domain_map(); in computeKnownFromLoad()
1135 isl::union_map DefZoneEltDefId = EltZoneElt.range_product(DefZone); in computeKnownFromLoad()
1138 isl::union_map EltDefZone = DefZone.curry(); in computeKnownFromLoad()
1141 isl::union_map EltZoneEltDefid = distributeDomain(EltDefZone); in computeKnownFromLoad()
1144 isl::union_map Reads = AllReads.range_product(Schedule).reverse(); in computeKnownFromLoad()
1147 isl::union_map ReadsElt = EltZoneElt.range_product(Reads); in computeKnownFromLoad()
1150 isl::union_map ScatterKnown = ReadsElt.apply_range(AllReadValInst); in computeKnownFromLoad()
1153 isl::union_map DefidKnown = in computeKnownFromLoad()
1160 isl::union_map ZoneAlgorithm::computeKnown(bool FromWrite, in computeKnown()
1162 isl::union_map Result = makeEmptyUnionMap(); in computeKnown()