[PATCH] D77303: [Polly] Add -polly-isl-arg command line option.

Michael Kruse via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 6 07:00:51 PDT 2020


This revision was automatically updated to reflect the committed changes.
Closed by commit rG4dded1a7cb7c: [Polly] Add -polly-isl-arg command line option. (authored by Meinersbur).

Changed prior to commit:
  https://reviews.llvm.org/D77303?vs=254499&id=255318#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D77303/new/

https://reviews.llvm.org/D77303

Files:
  polly/docs/ReleaseNotes.rst
  polly/lib/Analysis/ScopInfo.cpp
  polly/test/Isl/isl-args.ll


Index: polly/test/Isl/isl-args.ll
===================================================================
--- /dev/null
+++ polly/test/Isl/isl-args.ll
@@ -0,0 +1,36 @@
+; RUN: opt %loadPolly -polly-scops -disable-output -polly-isl-arg=-V < %s | FileCheck %s -match-full-lines --check-prefix=VERSION
+; RUN: opt %loadPolly -polly-scops -disable-output -polly-isl-arg=-h < %s | FileCheck %s -match-full-lines --check-prefix=HELP
+; RUN: not opt %loadPolly -polly-scops -disable-output -polly-isl-arg=-asdf < %s 2>&1| FileCheck %s -match-full-lines --check-prefix=UNKNOWN
+; RUN: opt %loadPolly -polly-scops -disable-output -polly-isl-arg=--schedule-algorithm=feautrier < %s
+
+; VERSION: isl-{{.*}}-IMath-32
+; HELP: Usage: -polly-isl-arg [OPTION...]
+; UNKNOWN: -polly-isl-arg: unrecognized option: -asdf
+
+target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
+
+; Any valid SCoP causing the creation of a ScopInfo object.
+define void @foo_1d(float* %A) {
+bb:
+  br label %bb1
+
+bb1:                                              ; preds = %bb6, %bb
+  %i.0 = phi i64 [ 0, %bb ], [ %tmp7, %bb6 ]
+  %exitcond = icmp ne i64 %i.0, 1024
+  br i1 %exitcond, label %bb2, label %bb8
+
+bb2:                                              ; preds = %bb1
+  %tmp = sitofp i64 %i.0 to float
+  %tmp3 = getelementptr inbounds float, float* %A, i64 %i.0
+  %tmp4 = load float, float* %tmp3, align 4
+  %tmp5 = fadd float %tmp4, %tmp
+  store float %tmp5, float* %tmp3, align 4
+  br label %bb6
+
+bb6:                                              ; preds = %bb2
+  %tmp7 = add nuw nsw i64 %i.0, 1
+  br label %bb1
+
+bb8:                                              ; preds = %bb1
+  ret void
+}
Index: polly/lib/Analysis/ScopInfo.cpp
===================================================================
--- polly/lib/Analysis/ScopInfo.cpp
+++ polly/lib/Analysis/ScopInfo.cpp
@@ -157,6 +157,11 @@
     "polly-print-instructions", cl::desc("Output instructions per ScopStmt"),
     cl::Hidden, cl::Optional, cl::init(false), cl::cat(PollyCategory));
 
+static cl::list<std::string> IslArgs("polly-isl-arg",
+                                     cl::value_desc("argument"),
+                                     cl::desc("Option passed to ISL"),
+                                     cl::ZeroOrMore, cl::cat(PollyCategory));
+
 //===----------------------------------------------------------------------===//
 
 static isl::set addRangeBoundsToSet(isl::set S, const ConstantRange &Range,
@@ -1698,6 +1703,23 @@
     : IslCtx(isl_ctx_alloc(), isl_ctx_free), SE(&ScalarEvolution), DT(&DT),
       R(R), name(None), HasSingleExitEdge(R.getExitingBlock()), DC(DC),
       ORE(ORE), Affinator(this, LI), ID(ID) {
+  SmallVector<char *, 8> IslArgv;
+  IslArgv.reserve(1 + IslArgs.size());
+
+  // Substitute for program name.
+  IslArgv.push_back(const_cast<char *>("-polly-isl-arg"));
+
+  for (std::string &Arg : IslArgs)
+    IslArgv.push_back(const_cast<char *>(Arg.c_str()));
+
+  // Abort if unknown argument is passed.
+  // Note that "-V" (print isl version) will always call exit(0), so we cannot
+  // avoid ISL aborting the program at this point.
+  unsigned IslParseFlags = ISL_ARG_ALL;
+
+  isl_ctx_parse_options(IslCtx.get(), IslArgv.size(), IslArgv.data(),
+                        IslParseFlags);
+
   if (IslOnErrorAbort)
     isl_options_set_on_error(getIslCtx().get(), ISL_ON_ERROR_ABORT);
   buildContext();
Index: polly/docs/ReleaseNotes.rst
===================================================================
--- polly/docs/ReleaseNotes.rst
+++ polly/docs/ReleaseNotes.rst
@@ -11,3 +11,8 @@
   branch.
 
 - Change ...
+
+ * The LLVM option -polly-isl-arg was added to pass options to ISL's
+   command line option parser. For instance,
+   -polly-isl-arg=--schedule-algorithm=feautrier switches to the
+   Feautrier scheduling algorithm.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77303.255318.patch
Type: text/x-patch
Size: 3844 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200406/f661aecd/attachment.bin>


More information about the llvm-commits mailing list