[polly] r312715 - [PPCGCodeGen] Document pre-composition with Zero in getExtent. [NFC]
Siddharth Bhat via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 7 04:57:34 PDT 2017
Author: bollu
Date: Thu Sep 7 04:57:33 2017
New Revision: 312715
URL: http://llvm.org/viewvc/llvm-project?rev=312715&view=rev
Log:
[PPCGCodeGen] Document pre-composition with Zero in getExtent. [NFC]
It's weird at first glance that we do this, so I wrote up some
documentation on why we need to perform this process.
Modified:
polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp
Modified: polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp
URL: http://llvm.org/viewvc/llvm-project/polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp?rev=312715&r1=312714&r2=312715&view=diff
==============================================================================
--- polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp (original)
+++ polly/trunk/lib/CodeGen/PPCGCodeGeneration.cpp Thu Sep 7 04:57:33 2017
@@ -2922,6 +2922,32 @@ public:
isl_pw_aff *Bound = Array->getDimensionSizePw(i).release();
auto LS = isl_pw_aff_get_domain_space(Bound);
auto Aff = isl_multi_aff_zero(LS);
+
+ // We need types to work out, which is why we perform this weird dance
+ // with `Aff` and `Bound`. Consider this example:
+
+ // LS: [p] -> { [] }
+ // Zero: [p] -> { [] } | Implicitly, is [p] -> { ~ -> [] }.
+ // This `~` is used to denote a "null space" (which is different from
+ // a *zero dimensional* space), which is something that ISL does not
+ // show you when pretty printing.
+
+ // Bound: [p] -> { [] -> [(10p)] } | Here, the [] is a *zero dimensional*
+ // space, not a "null space" which does not exist at all.
+
+ // When we pullback (precompose) `Bound` with `Zero`, we get:
+ // Bound . Zero =
+ // ([p] -> { [] -> [(10p)] }) . ([p] -> {~ -> [] }) =
+ // [p] -> { ~ -> [(10p)] } =
+ // [p] -> [(10p)] (as ISL pretty prints it)
+ // Bound Pullback: [p] -> { [(10p)] }
+
+ // We want this kind of an expression for Bound, without a
+ // zero dimensional input, but with a "null space" input for the types
+ // to work out later on, as far as I (Siddharth Bhat) understand.
+ // I was unable to find a reference to this in the ISL manual.
+ // References: Tobias Grosser.
+
Bound = isl_pw_aff_pullback_multi_aff(Bound, Aff);
Bounds.push_back(Bound);
}
More information about the llvm-commits
mailing list