Hi All,
I have a function with two pointer arguments, as shown in LLVM IR. When running a custom pass, I am getting an unbounded optimum error.
I want to understand why am I getting bounds for MemRef9 but not MemRef8? Please let me know if you need additional details.
LLVM IR:
declare void @test(<4 x float>* nocapture %0, <4 x float>* nocapture %1)
Custom Pass:
scop.Arrays()
<4 x float> MemRef8[*]; // Element size 16
<4 x float> MemRef9[*]; // Element size 16
Code:
for (const ScopStmt &Stmt : scop) {
isl::set domain = Stmt.getDomain();
for (MemoryAccess *MA : Stmt) {
if (!MA->isScalarKind()) {
isl::set accessed;
accessed = MA->getAccessRelation().intersect_domain(domain).range();
accessed.dump()
accessed.lexmin_pw_multi_aff().dump()
}
}
}
Dump:
[p_0, p_1] -> { MemRef9[i0] : i0 <= 7 + 8p_0 + 8p_1 and i0 >= 8p_0 + 8p_1 }
[p_0, p_1] -> { MemRef9[(8p_0 + 8p_1)] }
[p_0, p_1] -> { MemRef8[i0] }
/llvm-project/polly/lib/External/isl/isl_tab_pip.c:703: unbounded optimum
Thanks,
Harish C