[Polly] Add support for -polly-export with NPM.

The JSONExporter pass was already ported to the NPM, the pass builder
jsut had to add it to the pass pipeline when requested.
This commit is contained in:
Michael Kruse 2022-10-26 16:50:50 -05:00
parent ec273d3e3a
commit bb90d7ee39
2 changed files with 61 additions and 2 deletions

View File

@ -550,8 +550,7 @@ static void buildCommonPollyPipeline(FunctionPassManager &PM,
}
if (ExportJScop)
llvm::report_fatal_error("Option -polly-export not supported with NPM",
false);
SPM.addPass(JSONExportPass());
if (!EnableForOpt)
return;

View File

@ -0,0 +1,60 @@
; RUN: rm -rf %t
; RUN: mkdir -p %t
; RUN: opt %loadNPMPolly -polly-import-jscop-dir=%t -enable-new-pm=1 -polly -O2 -polly-export -S < %s
; RUN: FileCheck %s -input-file %t/exportjson___%entry.split---%return.jscop
;
; for (int j = 0; j < n; j += 1) {
; A[0] = 42.0;
; }
;
define void @exportjson(i32 %n, double* noalias nonnull %A) {
entry:
br label %for
for:
%j = phi i32 [0, %entry], [%j.inc, %inc]
%j.cmp = icmp slt i32 %j, %n
br i1 %j.cmp, label %body, label %exit
body:
store double 42.0, double* %A
br label %inc
inc:
%j.inc = add nuw nsw i32 %j, 1
br label %for
exit:
br label %return
return:
ret void
}
; CHECK: {
; CHECK-NEXT: "arrays": [
; CHECK-NEXT: {
; CHECK-NEXT: "name": "MemRef_A",
; CHECK-NEXT: "sizes": [
; CHECK-NEXT: "*"
; CHECK-NEXT: ],
; CHECK-NEXT: "type": "double"
; CHECK-NEXT: }
; CHECK-NEXT: ],
; CHECK-NEXT: "context": "[n] -> { : -2147483648 <= n <= 2147483647 }",
; CHECK-NEXT: "name": "%entry.split---%return",
; CHECK-NEXT: "statements": [
; CHECK-NEXT: {
; CHECK-NEXT: "accesses": [
; CHECK-NEXT: {
; CHECK-NEXT: "kind": "write",
; CHECK-NEXT: "relation": "[n] -> { Stmt_body_lr_ph[] -> MemRef_A[0] }"
; CHECK-NEXT: }
; CHECK-NEXT: ],
; CHECK-NEXT: "domain": "[n] -> { Stmt_body_lr_ph[] : n > 0 }",
; CHECK-NEXT: "name": "Stmt_body_lr_ph",
; CHECK-NEXT: "schedule": "[n] -> { Stmt_body_lr_ph[] -> [] }"
; CHECK-NEXT: }
; CHECK-NEXT: ]
; CHECK-NEXT: }