mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-24 15:06:06 +00:00
[Polly] Add -polly-isl-arg command line option.
The option is passed as argv to ISL's command line option parser. Polly's own own command line options take precedence over options passed as `-polly-isl-arg`. For instance, `-polly-isl-arg=--schedule-outer-coincidence` will be ignored in favor of `-polly-opt-outer-coincidence`. Reviewed By: grosser Differential Revision: https://reviews.llvm.org/D77303
This commit is contained in:
parent
880ec421dd
commit
4dded1a7cb
@ -11,3 +11,8 @@ In Polly 11 the following important changes have been incorporated.
|
||||
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.
|
||||
|
@ -157,6 +157,11 @@ static cl::opt<bool> PollyPrintInstructions(
|
||||
"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 @@ Scop::Scop(Region &R, ScalarEvolution &ScalarEvolution, LoopInfo &LI,
|
||||
: 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();
|
||||
|
36
polly/test/Isl/isl-args.ll
Normal file
36
polly/test/Isl/isl-args.ll
Normal file
@ -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
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user