From 8f99c167cdccc628b281fdd163d54d67b35ab9dd Mon Sep 17 00:00:00 2001 From: Tobias Grosser Date: Tue, 15 Nov 2011 11:38:55 +0000 Subject: [PATCH] ScopInfo: Use names of simple parameters to name the isl parameter dimensions. Parameters can be complex SCEV expressions, but they can also be single scalar values. If a parameters is such a simple scalar value and the value is named, use this name to name the isl parameter dimensions. llvm-svn: 144641 --- polly/lib/Analysis/ScopInfo.cpp | 11 +++++- polly/test/CodeGen/loop_with_condition_2.ll | 4 +- polly/test/CodeGen/single_loop_param.ll | 4 +- .../2011-08-25-crash_in_vectorizer.ll | 14 +++---- .../20111108-Parameter-not-detected.ll | 2 +- polly/test/ScopInfo/loop_carry.ll | 38 +++++++++---------- 6 files changed, 41 insertions(+), 32 deletions(-) diff --git a/polly/lib/Analysis/ScopInfo.cpp b/polly/lib/Analysis/ScopInfo.cpp index 34e7ae352649..35c347246f60 100644 --- a/polly/lib/Analysis/ScopInfo.cpp +++ b/polly/lib/Analysis/ScopInfo.cpp @@ -870,7 +870,16 @@ __isl_give isl_id *Scop::getIdForParam(const SCEV *Parameter) const { if (IdIter == ParameterIds.end()) return NULL; - std::string ParameterName = "p" + convertInt(IdIter->second); + std::string ParameterName; + + if (const SCEVUnknown *ValueParameter = dyn_cast(Parameter)) { + Value *Val = ValueParameter->getValue(); + ParameterName = Val->getNameStr(); + } + + if (ParameterName == "" || ParameterName.substr(0, 2) == "p_") + ParameterName = "p_" + convertInt(IdIter->second); + return isl_id_alloc(getIslCtx(), ParameterName.c_str(), (void *) Parameter); } diff --git a/polly/test/CodeGen/loop_with_condition_2.ll b/polly/test/CodeGen/loop_with_condition_2.ll index cce3ab08dc1e..f42b714442c8 100644 --- a/polly/test/CodeGen/loop_with_condition_2.ll +++ b/polly/test/CodeGen/loop_with_condition_2.ll @@ -132,11 +132,11 @@ return: ; preds = %for.end35, %if.then declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind -; CHECK: for (c2=0;c2<=min(1023,M+1024);c2++) { +; CHECK: for (c2=0;c2<=min(1023,m+1024);c2++) { ; CHECK: Stmt_if_then(c2); ; CHECK: Stmt_if_end(c2); ; CHECK: } -; CHECK: for (c2=max(0,M+1025);c2<=1023;c2++) { +; CHECK: for (c2=max(0,m+1025);c2<=1023;c2++) { ; CHECK: Stmt_if_else(c2); ; CHECK: Stmt_if_end(c2); ; CHECK: } diff --git a/polly/test/CodeGen/single_loop_param.ll b/polly/test/CodeGen/single_loop_param.ll index 52e35272b32c..a438423f143b 100644 --- a/polly/test/CodeGen/single_loop_param.ll +++ b/polly/test/CodeGen/single_loop_param.ll @@ -70,8 +70,8 @@ bb9: ; preds = %bb8, %bb5 declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind -; CHECK: if (M >= 1) { -; CHECK: for (c2=0;c2<=M-1;c2++) { +; CHECK: if (n >= 1) { +; CHECK: for (c2=0;c2<=n-1;c2++) { ; CHECK: Stmt_bb2(c2); ; CHECK: } ; CHECK: } diff --git a/polly/test/ScheduleOptimizer/2011-08-25-crash_in_vectorizer.ll b/polly/test/ScheduleOptimizer/2011-08-25-crash_in_vectorizer.ll index 05beba12c220..11a9874f027f 100644 --- a/polly/test/ScheduleOptimizer/2011-08-25-crash_in_vectorizer.ll +++ b/polly/test/ScheduleOptimizer/2011-08-25-crash_in_vectorizer.ll @@ -29,18 +29,18 @@ bb2: ; preds = %bb2, %.lr.ph ret void } -; CHECK: if (M >= 1) { -; CHECK: for (c1=0;c1<=M-1;c1+=32) { -; CHECK: for (c2=c1;c2<=min(M-1,c1+31);c2++) { +; CHECK: if (p_0 >= 1) { +; CHECK: for (c1=0;c1<=p_0-1;c1+=32) { +; CHECK: for (c2=c1;c2<=min(c1+31,p_0-1);c2++) { ; CHECK: Stmt_bb2(c2); ; CHECK: } ; CHECK: } ; CHECK: } -; VECTOR: if (M >= 1) { -; VECTOR: for (c1=0;c1<=M-1;c1+=32) { -; VECTOR: for (c2=-4*floord(-c1,4);c2<=min(M-1,c1+31);c2+=4) { -; VECTOR: for (c3=c2;c3<=min(M-1,c2+3);c3++) { +; VECTOR: if (p_0 >= 1) { +; VECTOR: for (c1=0;c1<=p_0-1;c1+=32) { +; VECTOR: for (c2=-4*floord(-c1,4);c2<=min(c1+31,p_0-1);c2+=4) { +; VECTOR: for (c3=c2;c3<=min(c2+3,p_0-1);c3++) { ; VECTOR: Stmt_bb2(c3); ; VECTOR: } ; VECTOR: } diff --git a/polly/test/ScopInfo/20111108-Parameter-not-detected.ll b/polly/test/ScopInfo/20111108-Parameter-not-detected.ll index 18202c0b848d..7312347a6675 100644 --- a/polly/test/ScopInfo/20111108-Parameter-not-detected.ll +++ b/polly/test/ScopInfo/20111108-Parameter-not-detected.ll @@ -52,5 +52,5 @@ for.end7: ; preds = %for.cond } ; CHECK: Domain := -; CHECK: [p0] -> { Stmt_if_then[i0] : i0 >= 0 and i0 <= 1022 and i0 >= 1001 - p0 }; +; CHECK: [p_0] -> { Stmt_if_then[i0] : i0 >= 0 and i0 <= 1022 and i0 >= 1001 - p_0 }; diff --git a/polly/test/ScopInfo/loop_carry.ll b/polly/test/ScopInfo/loop_carry.ll index f7947727d386..509420b635c1 100644 --- a/polly/test/ScopInfo/loop_carry.ll +++ b/polly/test/ScopInfo/loop_carry.ll @@ -47,46 +47,46 @@ bb2: ; preds = %bb, %entry } ; CHECK: Context: -; CHECK: [p0] -> { : } +; CHECK: [n] -> { : } ; CHECK: Statements { ; CHECK: Stmt_bb_nph ; CHECK: Domain := -; CHECK: [p0] -> { Stmt_bb_nph[] : p0 >= 2 }; +; CHECK: [n] -> { Stmt_bb_nph[] : n >= 2 }; ; CHECK: Scattering := -; CHECK: [p0] -> { Stmt_bb_nph[] -> scattering[0, 0, 0] }; +; CHECK: [n] -> { Stmt_bb_nph[] -> scattering[0, 0, 0] }; ; CHECK: ReadAccess := -; CHECK: [p0] -> { Stmt_bb_nph[] -> MemRef_a[0] }; +; CHECK: [n] -> { Stmt_bb_nph[] -> MemRef_a[0] }; ; CHECK: WriteAccess := -; CHECK: [p0] -> { Stmt_bb_nph[] -> MemRef_k_05_reg2mem[0] }; +; CHECK: [n] -> { Stmt_bb_nph[] -> MemRef_k_05_reg2mem[0] }; ; CHECK: WriteAccess := -; CHECK: [p0] -> { Stmt_bb_nph[] -> MemRef__reg2mem[0] }; +; CHECK: [n] -> { Stmt_bb_nph[] -> MemRef__reg2mem[0] }; ; CHECK: Stmt_bb ; CHECK: Domain := -; CHECK: [p0] -> { Stmt_bb[i0] : i0 >= 0 and i0 <= -2 + p0 and p0 >= 2 }; +; CHECK: [n] -> { Stmt_bb[i0] : i0 >= 0 and i0 <= -2 + n and n >= 2 }; ; CHECK: Scattering := -; CHECK: [p0] -> { Stmt_bb[i0] -> scattering[1, i0, 0] }; +; CHECK: [n] -> { Stmt_bb[i0] -> scattering[1, i0, 0] }; ; CHECK: ReadAccess := -; CHECK: [p0] -> { Stmt_bb[i0] -> MemRef__reg2mem[0] }; +; CHECK: [n] -> { Stmt_bb[i0] -> MemRef__reg2mem[0] }; ; CHECK: ReadAccess := -; CHECK: [p0] -> { Stmt_bb[i0] -> MemRef_k_05_reg2mem[0] }; +; CHECK: [n] -> { Stmt_bb[i0] -> MemRef_k_05_reg2mem[0] }; ; CHECK: WriteAccess := -; CHECK: [p0] -> { Stmt_bb[i0] -> MemRef_a[1 + i0] }; +; CHECK: [n] -> { Stmt_bb[i0] -> MemRef_a[1 + i0] }; ; CHECK: ReadAccess := -; CHECK: [p0] -> { Stmt_bb[i0] -> MemRef_a[2 + 2i0] }; +; CHECK: [n] -> { Stmt_bb[i0] -> MemRef_a[2 + 2i0] }; ; CHECK: ReadAccess := -; CHECK: [p0] -> { Stmt_bb[i0] -> MemRef_a[4 + i0] }; +; CHECK: [n] -> { Stmt_bb[i0] -> MemRef_a[4 + i0] }; ; CHECK: WriteAccess := -; CHECK: [p0] -> { Stmt_bb[i0] -> MemRef_k_05_reg2mem[0] }; +; CHECK: [n] -> { Stmt_bb[i0] -> MemRef_k_05_reg2mem[0] }; ; CHECK: WriteAccess := -; CHECK: [p0] -> { Stmt_bb[i0] -> MemRef__reg2mem[0] }; +; CHECK: [n] -> { Stmt_bb[i0] -> MemRef__reg2mem[0] }; ; CHECK: FinalRead ; CHECK: Domain := -; CHECK: [p0] -> { FinalRead[0] }; +; CHECK: [n] -> { FinalRead[0] }; ; CHECK: Scattering := -; CHECK: [p0] -> { FinalRead[i0] -> scattering[200000000, o1, o2] }; +; CHECK: [n] -> { FinalRead[i0] -> scattering[200000000, o1, o2] }; ; CHECK: ReadAccess := -; CHECK: [p0] -> { FinalRead[i0] -> MemRef_a[o0] }; +; CHECK: [n] -> { FinalRead[i0] -> MemRef_a[o0] }; ; CHECK: ReadAccess := -; CHECK: [p0] -> { FinalRead[i0] -> MemRef_k_05_reg2mem[o0] }; +; CHECK: [n] -> { FinalRead[i0] -> MemRef_k_05_reg2mem[o0] }; ; CHECK: ReadAccess := ; CHECK: -> { FinalRead[i0] -> MemRef__reg2mem[o0] };