[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:
Christian Clauss 2025-01-27 16:18:47 +01:00 committed by GitHub
parent 62340ff8d8
commit 5aafc6d58f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
50 changed files with 60 additions and 60 deletions

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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.

View File

@ -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.
///

View File

@ -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:

View File

@ -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

View File

@ -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,

View File

@ -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"),

View File

@ -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;

View File

@ -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);

View File

@ -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);

View File

@ -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);
}
///}

View File

@ -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 }

View File

@ -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,

View File

@ -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.
//

View File

@ -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

View File

@ -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 =

View File

@ -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}

View File

@ -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;

View File

@ -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.

View File

@ -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.

View File

@ -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

View File

@ -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).

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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>)'.
;

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.
;

View File

@ -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.
;

View File

@ -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]) {

View File

@ -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.

View File

@ -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

View File

@ -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:

View File

@ -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}

View File

@ -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__]

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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

View File

@ -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>