mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-14 15:46:32 +00:00
[Polly] Fix typos discovered by codespell (#124545)
Patch created using the following command line: ```bash codespell polly --skip="*.pdf,polly/lib/External/*" --write-changes \ --ignore-words-list=couter,createor,distribues,doble,identty,indention,indx,olt,ore,padd,sais,te,theses ```
This commit is contained in:
parent
62340ff8d8
commit
5aafc6d58f
@ -27,7 +27,7 @@ executed in the so-called **Inliner cycle**, This is again a set of **Scalar
|
||||
Simplification** passes, a set of **Simple Loop Optimizations**, and the
|
||||
**Inliner** itself. Even though these passes make up the majority of the LLVM
|
||||
pass pipeline, the primary goal of these passes is still canonicalization
|
||||
without loosing semantic information that complicates later analysis. As part of
|
||||
without losing semantic information that complicates later analysis. As part of
|
||||
the inliner cycle, the LLVM inliner step-by-step tries to inline functions, runs
|
||||
canonicalization passes to exploit newly exposed simplification opportunities,
|
||||
and then tries to inline the further simplified functions. Some simple loop
|
||||
|
@ -1066,7 +1066,7 @@ HTML_STYLESHEET =
|
||||
# defined cascading style sheet that is included after the standard style sheets
|
||||
# created by doxygen. Using this option one can overrule certain style aspects.
|
||||
# This is preferred over using HTML_STYLESHEET since it does not replace the
|
||||
# standard style sheet and is therefor more robust against future updates.
|
||||
# standard style sheet and is therefore more robust against future updates.
|
||||
# Doxygen will copy the style sheet file to the output directory. For an example
|
||||
# see the documentation.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
@ -1950,7 +1950,7 @@ PREDEFINED =
|
||||
EXPAND_AS_DEFINED =
|
||||
|
||||
# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
|
||||
# remove all refrences to function-like macros that are alone on a line, have an
|
||||
# remove all references to function-like macros that are alone on a line, have an
|
||||
# all uppercase name, and do not end with a semicolon. Such function macros are
|
||||
# typically used for boiler-plate code, and will confuse the parser if not
|
||||
# removed.
|
||||
|
@ -118,7 +118,7 @@ private:
|
||||
|
||||
/// Call fflush
|
||||
///
|
||||
/// @parma Builder The builder used to insert the code.
|
||||
/// @param Builder The builder used to insert the code.
|
||||
static void createFlush(PollyIRBuilder &Builder);
|
||||
};
|
||||
} // namespace polly
|
||||
|
@ -211,7 +211,7 @@ struct DependenceAnalysis final : public AnalysisInfoMixin<DependenceAnalysis> {
|
||||
|
||||
/// Invalidate the dependence information and recompute it when needed
|
||||
/// again.
|
||||
/// May be required when the underlaying Scop was changed in a way that
|
||||
/// May be required when the underlying Scop was changed in a way that
|
||||
/// would add new dependencies (e.g. between new statement instances
|
||||
/// insierted into the SCoP) or intentionally breaks existing ones. It is
|
||||
/// not required when updating the schedule that conforms the existing
|
||||
@ -251,7 +251,7 @@ public:
|
||||
const Dependences &recomputeDependences(Dependences::AnalysisLevel Level);
|
||||
|
||||
/// Invalidate the dependence information and recompute it when needed again.
|
||||
/// May be required when the underlaying Scop was changed in a way that would
|
||||
/// May be required when the underlying Scop was changed in a way that would
|
||||
/// add new dependencies (e.g. between new statement instances insierted into
|
||||
/// the SCoP) or intentionally breaks existing ones. It is not required when
|
||||
/// updating the schedule that conforms the existing dependencies.
|
||||
|
@ -1494,7 +1494,7 @@ public:
|
||||
/// @param Access The access to add.
|
||||
/// @param Prepend If true, will add @p Access before all other instructions
|
||||
/// (instead of appending it).
|
||||
void addAccess(MemoryAccess *Access, bool Preprend = false);
|
||||
void addAccess(MemoryAccess *Access, bool Prepend = false);
|
||||
|
||||
/// Remove a MemoryAccess from this statement.
|
||||
///
|
||||
|
@ -50,7 +50,7 @@ public:
|
||||
/// Check an <nsw> AddRec for the loop @p L is cached.
|
||||
bool hasNSWAddRecForLoop(llvm::Loop *L) const;
|
||||
|
||||
/// Return the LoopInfo used by thi object.
|
||||
/// Return the LoopInfo used by the object.
|
||||
llvm::LoopInfo *getLI() const { return &LI; }
|
||||
|
||||
private:
|
||||
|
@ -83,7 +83,7 @@ using RecordedAssumptionsTy = llvm::SmallVector<Assumption, 8>;
|
||||
///
|
||||
/// This function will add the assumption to the RecordedAssumptions. This
|
||||
/// collection will be added (@see addAssumption) to the assumed context once
|
||||
/// all paramaters are known and the context is fully built.
|
||||
/// all parameters are known and the context is fully built.
|
||||
///
|
||||
/// @param RecordedAssumption container which keeps all recorded assumptions.
|
||||
/// @param Kind The assumption kind describing the underlying cause.
|
||||
@ -132,7 +132,7 @@ using BoxedLoopsSetTy = llvm::SetVector<const llvm::Loop *>;
|
||||
/// isNull(), isInstruction(), isLoad(), isStore(), ..., isMemTransferInst(),
|
||||
/// operator bool(), operator!()
|
||||
///
|
||||
/// The functions isa, cast, cast_or_null, dyn_cast are modeled te resemble
|
||||
/// The functions isa, cast, cast_or_null, dyn_cast are modeled to resemble
|
||||
/// those from llvm/Support/Casting.h. Partial template function specialization
|
||||
/// is currently not supported in C++ such that those cannot be used directly.
|
||||
/// (llvm::isa could, but then llvm:cast etc. would not have the expected
|
||||
|
@ -2522,7 +2522,7 @@ combineReductionType(MemoryAccess::ReductionType RT0,
|
||||
return MemoryAccess::RT_NONE;
|
||||
}
|
||||
|
||||
/// True if @p AllAccs intersects with @p MemAccs execpt @p LoadMA and @p
|
||||
/// True if @p AllAccs intersects with @p MemAccs except @p LoadMA and @p
|
||||
/// StoreMA
|
||||
bool hasIntersectingAccesses(isl::set AllAccs, MemoryAccess *LoadMA,
|
||||
MemoryAccess *StoreMA, isl::set Domain,
|
||||
|
@ -71,7 +71,7 @@ static Statistic RejectStatistics[] = {
|
||||
SCOP_STAT(LoopOnlySomeLatches, "Not all loop latches in scop"),
|
||||
SCOP_STAT(FuncCall, "Function call with side effects"),
|
||||
SCOP_STAT(NonSimpleMemoryAccess,
|
||||
"Compilated access semantics (volatile or atomic)"),
|
||||
"Complicated access semantics (volatile or atomic)"),
|
||||
SCOP_STAT(Alias, "Base address aliasing"),
|
||||
SCOP_STAT(Other, ""),
|
||||
SCOP_STAT(IntToPtr, "Integer to pointer conversions"),
|
||||
|
@ -1159,7 +1159,7 @@ bool IslNodeBuilder::preloadInvariantEquivClass(
|
||||
// For an equivalence class of invariant loads we pre-load the representing
|
||||
// element with the unified execution context. However, we have to map all
|
||||
// elements of the class to the one preloaded load as they are referenced
|
||||
// during the code generation and therefor need to be mapped.
|
||||
// during the code generation and therefore need to be mapped.
|
||||
const MemoryAccessList &MAs = IAClass.InvariantAccesses;
|
||||
if (MAs.empty())
|
||||
return true;
|
||||
|
@ -46,7 +46,7 @@ static BasicBlock *splitEdge(BasicBlock *Prev, BasicBlock *Succ,
|
||||
// llvm::SplitCriticalEdge is more efficient than
|
||||
// llvm::SplitBlockPredecessors, which is more general. In the future we might
|
||||
// either modify llvm::SplitCriticalEdge to allow skipping the critical edge
|
||||
// check; or Copy&Pase it here.
|
||||
// check; or Copy&Paste it here.
|
||||
BasicBlock *MiddleBlock = SplitBlockPredecessors(
|
||||
Succ, ArrayRef<BasicBlock *>(Prev), Suffix, DT, LI);
|
||||
|
||||
|
@ -502,7 +502,7 @@ PWACtx SCEVAffinator::visitUDivExpr(const SCEVUDivExpr *Expr) {
|
||||
}
|
||||
|
||||
// TODO: One can represent the dividend as piece-wise function to be more
|
||||
// precise but therefor a heuristic is needed.
|
||||
// precise but therefore a heuristic is needed.
|
||||
|
||||
// Assume a non-negative dividend.
|
||||
takeNonNegativeAssumption(DividendPWAC, RecordedAssumptions);
|
||||
|
@ -456,7 +456,7 @@ private:
|
||||
|
||||
// FIXME: This emits a SCEV for GenSE (since GenLRepl will refer to the
|
||||
// induction variable of a generated loop), so we should not use SCEVVisitor
|
||||
// with it. Howver, it still contains references to the SCoP region.
|
||||
// with it. However, it still contains references to the SCoP region.
|
||||
return visit(Evaluated);
|
||||
}
|
||||
///}
|
||||
|
@ -1290,7 +1290,7 @@ public:
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check for more than one element acces per statement instance.
|
||||
// Check for more than one element access per statement instance.
|
||||
// Currently we expect write accesses to be functional, eg. disallow
|
||||
//
|
||||
// { Stmt[0] -> [i] : 0 <= i < 2 }
|
||||
|
@ -149,7 +149,7 @@ private:
|
||||
// transformed in innermost-first order.
|
||||
isl::schedule Result;
|
||||
|
||||
/// Check wether a schedule after a transformation is legal. Return the old
|
||||
/// Check whether a schedule after a transformation is legal. Return the old
|
||||
/// schedule without the transformation.
|
||||
isl::schedule
|
||||
checkDependencyViolation(llvm::MDNode *LoopMD, llvm::Value *CodeRegion,
|
||||
|
@ -1759,7 +1759,7 @@ static bool isTCPattern(isl::schedule_node Node, const Dependences *D,
|
||||
//
|
||||
// For example, this covers the matrix multiplication pattern after a full
|
||||
// run of -polly-optree and -polly-delicm, where the write access is not
|
||||
// through the original memory access, but trough a PHI node that was
|
||||
// through the original memory access, but through a PHI node that was
|
||||
// delicmed. Subsequently, such band nodes will be replaced by a single band
|
||||
// node.
|
||||
//
|
||||
|
@ -771,7 +771,7 @@ static void runIslScheduleOptimizer(
|
||||
return;
|
||||
}
|
||||
|
||||
// Apply ISL's algorithm only if not overriden by the user. Note that
|
||||
// Apply ISL's algorithm only if not overridden by the user. Note that
|
||||
// post-rescheduling optimizations (tiling, pattern-based, prevectorization)
|
||||
// rely on the coincidence/permutable annotations on schedule tree bands that
|
||||
// are added by the rescheduling analyzer. Therefore, disabling the
|
||||
|
@ -572,13 +572,13 @@ public:
|
||||
isl::schedule_node_band Band = RootBand;
|
||||
isl::ctx Ctx = Band.ctx();
|
||||
|
||||
// Do not merge permutable band to avoid loosing the permutability property.
|
||||
// Do not merge permutable band to avoid losing the permutability property.
|
||||
// Cannot collapse even two permutable loops, they might be permutable
|
||||
// individually, but not necassarily across.
|
||||
if (unsignedFromIslSize(Band.n_member()) > 1u && Band.permutable())
|
||||
return getBase().visitBand(Band);
|
||||
|
||||
// Find collapsable bands.
|
||||
// Find collapsible bands.
|
||||
SmallVector<isl::schedule_node_band> Nest;
|
||||
int NumTotalLoops = 0;
|
||||
isl::schedule_node Body;
|
||||
@ -884,10 +884,10 @@ public:
|
||||
collectPotentiallyFusableBands(Child, Bands, Child);
|
||||
}
|
||||
|
||||
// Direct children that had at least one of its decendants fused.
|
||||
// Direct children that had at least one of its descendants fused.
|
||||
SmallDenseSet<isl_schedule_node *, 4> ChangedDirectChildren;
|
||||
|
||||
// Fuse neigboring bands until reaching the end of candidates.
|
||||
// Fuse neighboring bands until reaching the end of candidates.
|
||||
int i = 0;
|
||||
while (i + 1 < (int)Bands.size()) {
|
||||
isl::schedule Fused =
|
||||
|
@ -1,4 +1,4 @@
|
||||
; This test checks that we do not accidently mutate the debug info when
|
||||
; This test checks that we do not accidentally mutate the debug info when
|
||||
; inserting loop parallel metadata.
|
||||
; RUN: opt %loadNPMPolly < %s -S -polly -passes=polly-codegen -polly-ast-detect-parallel | FileCheck %s
|
||||
; CHECK-NOT: !7 = !{!7}
|
||||
|
@ -6,7 +6,7 @@
|
||||
; RegionPassManager. -polly-codegen must not reuse the -polly-ast analysis the
|
||||
; was created for the first -polly-scops pass.
|
||||
; The current solution is that only the first -polly-codegen is allowed to
|
||||
; generate code, the second detects it is re-using an IslAst that belongs to a
|
||||
; generate code, the second detects it is reusing an IslAst that belongs to a
|
||||
; different ScopInfo.
|
||||
;
|
||||
; int a, b, c;
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
; We explicitly check here that the second scop is not code generated. Later
|
||||
; improvements may make this possible (e.g., Polly gaining support for
|
||||
; parameteric conditional expressions or a changed code generation order).
|
||||
; parametric conditional expressions or a changed code generation order).
|
||||
; However, in case this happens, we want to ensure this test case is been
|
||||
; reasoned about and updated accordingly.
|
||||
|
||||
|
@ -88,7 +88,7 @@ if.end: ; preds = %if.then, %for.end
|
||||
declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1) nounwind
|
||||
|
||||
; This is a negative test. We can prove that RED[0] in the conditional after
|
||||
; the loop is dereferencable and consequently expand the SCoP from the
|
||||
; the loop is dereferenceable and consequently expand the SCoP from the
|
||||
; loop to include the conditional. However, during SCoP generation we realize
|
||||
; that, while RED[0] is invariant, it is written to as part of the same scop
|
||||
; and can consequently not be hoisted. Hence, we invalidate the scop.
|
||||
|
@ -2,7 +2,7 @@
|
||||
; RUN: -passes=polly-codegen -S < %s | FileCheck %s
|
||||
|
||||
; This test ensures that the expression N + 1 that is stored in the phi-node
|
||||
; alloca, is directly computed and not incorrectly transfered through memory.
|
||||
; alloca, is directly computed and not incorrectly transferred through memory.
|
||||
|
||||
; CHECK: store i64 [[REG:%.*]], ptr %res.phiops
|
||||
; CHECK: [[REG]] = add i64 %N, 1
|
||||
|
@ -2,7 +2,7 @@
|
||||
;
|
||||
; Check that we do not crash as described here: http://llvm.org/PR21167
|
||||
;
|
||||
; In case the pieceweise affine function used to create an isl_ast_expr
|
||||
; In case the piecewise affine function used to create an isl_ast_expr
|
||||
; had empty cases (e.g., with contradicting constraints on the
|
||||
; parameters), it was possible that the condition of the isl_ast_expr
|
||||
; select was not a comparison but a constant (thus of type i64).
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: opt %loadNPMPolly '-passes=print<polly-delicm>' -disable-output < %s | FileCheck %s
|
||||
|
||||
; When %b is 0, %for.body13 is an infite loop. In this case the loaded
|
||||
; When %b is 0, %for.body13 is an infinite loop. In this case the loaded
|
||||
; value %1 is not used anywhere.
|
||||
; This is a problem when DeLICM tries to map %1 to %arrayidx16 because
|
||||
; %1 has no corresponding when %b == 0 and therefore hat no location
|
||||
|
@ -4,7 +4,7 @@
|
||||
;
|
||||
; This test case has an InvalidContext such that part of the predecessors
|
||||
; of for.body.us.i lie within the invalid context. This causes a
|
||||
; consistency check withing the invalid context of PR41656 to fail.
|
||||
; consistency check within the invalid context of PR41656 to fail.
|
||||
;
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
;
|
||||
; PHI predecessors of statement instances can only be reliably derived in defined behaviour situations. In this case, the inner loop's counter would overflow when its upper bound (%call24) is lower than its lower bound (2). However, due to the nsw flag, this would be undefined behavior and therefore not added to any runtime-check context, but to the defined-behaviour context.
|
||||
;
|
||||
; Dereived from test case pr41656.ll
|
||||
; Derived from test case pr41656.ll
|
||||
;
|
||||
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
|
||||
|
@ -66,7 +66,7 @@ return:
|
||||
; CHECK: maximal number of operations exceeded during zone analysis
|
||||
|
||||
; Check that even if the quota was exceeded in DeLICM, DependenceInfo is still
|
||||
; successfull since it uses a different operations counter.
|
||||
; successful since it uses a different operations counter.
|
||||
;
|
||||
; DEP: RAW dependences:
|
||||
; DEP-NOT: n/a
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print<polly-ast>' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
|
||||
;
|
||||
; Verify that the outer dimension doesnt't carry reduction dependences
|
||||
; Verify that the outer dimension doesn't carry reduction dependences
|
||||
;
|
||||
; CHECK-NOT:#pragma known-parallel reduction
|
||||
; CHECK: #pragma known-parallel
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print<polly-ast>' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
|
||||
;
|
||||
; Verify that the outer dimension doesnt't carry reduction dependences
|
||||
; Verify that the outer dimension doesn't carry reduction dependences
|
||||
;
|
||||
; CHECK-NOT:#pragma known-parallel reduction
|
||||
; CHECK: #pragma known-parallel
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: opt %loadNPMPolly '-passes=polly-import-jscop,print<polly-ast>' -polly-ast-detect-parallel -disable-output < %s | FileCheck %s
|
||||
;
|
||||
; Verify that the outer dimension doesnt't carry reduction dependences
|
||||
; Verify that the outer dimension doesn't carry reduction dependences
|
||||
;
|
||||
; CHECK-NOT:#pragma known-parallel reduction
|
||||
; CHECK: #pragma known-parallel
|
||||
|
@ -7,7 +7,7 @@
|
||||
|
||||
; Check that the pattern matching detects the matrix multiplication pattern
|
||||
; after a full run of -polly-optree and -polly-delicm, where the write access
|
||||
; is not through the original memory access, but trough a PHI node that was
|
||||
; is not through the original memory access, but through a PHI node that was
|
||||
; delicmed. This test covers the polybench 2mm and 3mm cases.
|
||||
;
|
||||
; This test case generates the following schedule, which contains filters:
|
||||
|
@ -5,7 +5,7 @@
|
||||
;
|
||||
; Check that the pattern matching detects the tensor contraction pattern
|
||||
; after a full run of -polly-delicm. This test case generates the following
|
||||
; schedule, which contans two band nodes. Without DeLICM two statement are
|
||||
; schedule, which contains two band nodes. Without DeLICM two statement are
|
||||
; generated.
|
||||
;
|
||||
; domain: "{ Stmt5[i0, i1, i2, i3, i4, i5] : 0 <= i0 <= 31 and 0 <= i1 <= 31 and
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: opt %loadNPMPolly '-passes=print<polly-detect>' < %s
|
||||
|
||||
; This test case helps to determine wether SCEVRemoveMax::remove produces
|
||||
; This test case helps to determine whether SCEVRemoveMax::remove produces
|
||||
; an infinite loop and a segmentation fault, if it processes, for example,
|
||||
; '((-1 + (-1 * %b1)) umax {(-1 + (-1 * %yStart)),+,-1}<%.preheader>)'.
|
||||
;
|
||||
|
@ -1,7 +1,7 @@
|
||||
; XFAIL: *
|
||||
|
||||
; The test case stopped making sense after r310940 that added infinite loops to
|
||||
; the PostDominatorTree. Infinite loops are postdominated ony by the virtual
|
||||
; the PostDominatorTree. Infinite loops are postdominated only by the virtual
|
||||
; root, which causes them not to appear in regions in ScopDetection anymore.
|
||||
|
||||
; RUN: opt %loadNPMPolly -pass-remarks-missed="polly-detect" -polly-allow-nonaffine-loops '-passes=print<polly-detect>' -disable-output < %s 2>&1 | FileCheck %s
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops '-passes=print<polly-detect>,print<polly-function-scops>' -disable-output < %s 2>&1 | FileCheck %s
|
||||
; RUN: opt %loadNPMPolly -polly-allow-nonaffine -polly-allow-nonaffine-branches -polly-allow-nonaffine-loops -polly-unprofitable-scalar-accs=true -polly-process-unprofitable=false '-passes=print<polly-detect>,print<polly-function-scops>' -disable-output < %s 2>&1 | FileCheck %s --check-prefix=PROFIT
|
||||
;
|
||||
; Verify that we over approximate the read acces of A[j] in the last statement as j is
|
||||
; Verify that we over approximate the read access of A[j] in the last statement as j is
|
||||
; computed in a non-affine loop we do not model.
|
||||
;
|
||||
; CHECK: Function: f
|
||||
|
@ -28,7 +28,7 @@
|
||||
; CODE-RTC-NEXT: br i1 %{{[a-zA-Z0-9\.]*}}, label %polly.preload.exec, label %polly.preload.merge
|
||||
|
||||
; Check that we don't generate a runtime check because we treat all
|
||||
; parameters as dereferencable.
|
||||
; parameters as dereferenceable.
|
||||
; CODE-NOT: polly.preload.cond: ; preds = %polly.preload.begin
|
||||
; CODE-NOT: br i1 %{{r1:[a-zA-Z0-9]*}}, label %polly.preload.exec, label %polly.preload.merge
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt %loadNPMPolly '-passes=print<polly-function-scops>' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s
|
||||
;
|
||||
; Verify that we only have one parameter and one invariant load for all
|
||||
; three loads that occure in the region but actually access the same
|
||||
; three loads that occur in the region but actually access the same
|
||||
; location. Also check that the execution context is the most generic
|
||||
; one, e.g., here the universal set.
|
||||
;
|
||||
|
@ -1,7 +1,7 @@
|
||||
; RUN: opt %loadNPMPolly '-passes=print<polly-function-scops>' -polly-invariant-load-hoisting=true -disable-output < %s 2>&1 | FileCheck %s
|
||||
;
|
||||
; Verify that we only have one parameter and one invariant load for all
|
||||
; three loads that occure in the region but actually access the same
|
||||
; three loads that occur in the region but actually access the same
|
||||
; location. Also check that the execution context is the most generic
|
||||
; one, e.g., here the universal set.
|
||||
;
|
||||
|
@ -1,6 +1,6 @@
|
||||
; RUN: opt %loadNPMPolly '-passes=print<polly-function-scops>' -disable-output < %s 2>&1 | FileCheck %s
|
||||
;
|
||||
; Verfy that we do not use the GetElementPtr information to delinearize A
|
||||
; Verify that we do not use the GetElementPtr information to delinearize A
|
||||
; because of the cast in-between. Use the single-dimensional modeling instead.
|
||||
;
|
||||
; void f(short A[][2]) {
|
||||
|
@ -28,7 +28,7 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
||||
; This test case verifies that the construction of the assumed context finishes
|
||||
; successfully. Depending on how constrained are accumulated in the assumed
|
||||
; context, this test case can take even for a smaller number of arrays over a
|
||||
; minute to complete. With the unrolling choosen in this test, an inefficient
|
||||
; minute to complete. With the unrolling chosen in this test, an inefficient
|
||||
; formulation of the assumption tracking cause LLVM to crash due to excessive
|
||||
; memory usage due to an overly large number of disjuncts being formed.
|
||||
|
||||
|
@ -109,7 +109,7 @@ return: ; preds = %for.cond
|
||||
; It is not possible to have a scop which accesses a scalar element that is
|
||||
; a global variable. All global variables are pointers containing possibly
|
||||
; a single element. Hence they do not need to be handled anyways.
|
||||
; Please note that this is still required when scalar to array rewritting is
|
||||
; Please note that this is still required when scalar to array rewriting is
|
||||
; disabled.
|
||||
|
||||
; CHECK-LABEL: Function: use_after_scop
|
||||
|
@ -8,7 +8,7 @@
|
||||
; }
|
||||
; }
|
||||
;
|
||||
; FIXME: The truncated value should be a paramter.
|
||||
; FIXME: The truncated value should be a parameter.
|
||||
; CHECK: Assumed Context:
|
||||
; CHECK-NEXT: [N, tmp, M] -> { : }
|
||||
; CHECK-NEXT: Invalid Context:
|
||||
|
@ -12,7 +12,7 @@ opt -correlated-propagation -mem2reg -instcombine -loop-simplify -indvars \
|
||||
-instnamer ${LLFILE} -S -o ${LLFILE_TMP}
|
||||
|
||||
# Insert a header into the new testcase containing a sample RUN line a FIXME and
|
||||
# an XFAIL. Then insert the formated C code and finally the LLVM-IR without
|
||||
# an XFAIL. Then insert the formatted C code and finally the LLVM-IR without
|
||||
# attributes, the module ID or the target triple.
|
||||
echo '; RUN: opt %loadPolly -S < %s | FileCheck %s' > ${LLFILE}
|
||||
echo ';' >> ${LLFILE}
|
||||
|
@ -72,7 +72,7 @@ class IslObject:
|
||||
if hasattr(self.__class__, "initialized"):
|
||||
return
|
||||
|
||||
self.__class__.initalized = True
|
||||
self.__class__.initialized = True
|
||||
self.get_isl_method("read_from_str").argtypes = [Context, c_char_p, c_int]
|
||||
self.get_isl_method("copy").argtypes = [self.__class__]
|
||||
self.get_isl_method("copy").restype = c_int
|
||||
@ -204,7 +204,7 @@ class Dim(IslObject):
|
||||
if hasattr(self.__class__, "initialized"):
|
||||
return
|
||||
|
||||
self.__class__.initalized = True
|
||||
self.__class__.initialized = True
|
||||
self.get_isl_method("copy").argtypes = [self.__class__]
|
||||
self.get_isl_method("copy").restype = c_int
|
||||
self.get_isl_method("free").argtypes = [self.__class__]
|
||||
|
@ -40,7 +40,7 @@ interface.</li>
|
||||
<li>Run-time alias checks</li>
|
||||
<li>Computation of no-alias information for later LLVM optimizations
|
||||
(vectorizer, LICM, ...)</li>
|
||||
<li>Support for multi-dimensional arrays of parameteric size (still tested)</li>
|
||||
<li>Support for multi-dimensional arrays of parametric size (still tested)</li>
|
||||
<li>New assumption tracking framework</li>
|
||||
<ul>
|
||||
<li>Accesses to multi-dimensional arrays of fixed size are within bounds</li>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<div id="content">
|
||||
|
||||
<h1>Building and Installing Polly</h1>
|
||||
You can build Polly with <a href="https://cmake.org/">cmake</a> and your preferred geneator (e.g. Ninja, make, Visual Studio, etc.).
|
||||
You can build Polly with <a href="https://cmake.org/">cmake</a> and your preferred generator (e.g. Ninja, make, Visual Studio, etc.).
|
||||
|
||||
<h3 id="source">Get the code</h3>
|
||||
|
||||
|
@ -90,7 +90,7 @@
|
||||
while issues like the generation of the correct loop structure and loop
|
||||
bounds will be taken care of by our AST generator.
|
||||
<li><b>Polyhedral unrolling:</b> We discuss techniques that allow the
|
||||
unrolling of non-trivial loops in the context of parameteric loop bounds,
|
||||
unrolling of non-trivial loops in the context of parametric loop bounds,
|
||||
complex tile shapes and conditionally executed statements. Such unrolling
|
||||
support enables the generation of predicated code e.g. in the context of
|
||||
GPGPU computing.
|
||||
@ -110,7 +110,7 @@
|
||||
<a href="https://www.grosser.es#pub-polyhedral-AST-generation">
|
||||
<em>Polyhedral AST generation is more than scanning polyhedra</em></a><br />
|
||||
Tobias Grosser, Sven Verdoolaege, Albert Cohen<br />
|
||||
ACM Transations on Programming Languages and Systems (TOPLAS), 37(4),
|
||||
ACM Transactions on Programming Languages and Systems (TOPLAS), 37(4),
|
||||
July 2015
|
||||
|
||||
<br>
|
||||
@ -356,13 +356,13 @@ research tool.<br \>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><p>Februar</p></td>
|
||||
<td><p>February</p></td>
|
||||
<td><p>pollycc - a script to automatically compile with
|
||||
polyhedral optimizations </p></td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td><p> Januar</p></td>
|
||||
<td><p> January</p></td>
|
||||
<td><p> Basic OpenMP support, Alias analysis integration,
|
||||
Pluto/POCC support </p></td>
|
||||
</tr>
|
||||
|
@ -42,7 +42,7 @@
|
||||
to bring features of Polly to standard -O3 optimizations.
|
||||
|
||||
<h3>Register tiling to obtain fast BLAS kernels with Polly</h3>
|
||||
Even though Polly is already able to speep up compute kernels significantly,
|
||||
Even though Polly is already able to speed up compute kernels significantly,
|
||||
when comparing to the best BLAS routines we still are at least one order of
|
||||
magnitude off. In this project you will investigate what is needed to close
|
||||
this performance gap. Earlier investigations have shown that register tiling
|
||||
|
@ -60,7 +60,7 @@ Parallel Processing Letters 2012 22:04<br />
|
||||
<ul>
|
||||
<li><em>Polyhedral AST generation is more than scanning polyhedra</em><br />
|
||||
Tobias Grosser, Sven Verdoolaege, Albert Cohen<br />
|
||||
ACM Transations on Programming Languages and Systems (TOPLAS), 37(4), July
|
||||
ACM Transactions on Programming Languages and Systems (TOPLAS), 37(4), July
|
||||
2015<br />
|
||||
<a href="https://www.grosser.es#pub-polyhedral-AST-generation">Paper</a>
|
||||
</li>
|
||||
|
Loading…
x
Reference in New Issue
Block a user