xref: /llvm-project/mlir/test/Pass/pass-timing.mlir (revision 362aa434cc31ccca96749a6db8cd97f5b7d71206)
1// RUN: mlir-opt %s -mlir-disable-threading=true -verify-each=true -pass-pipeline='builtin.module(func.func(cse,canonicalize,cse))' -mlir-timing -mlir-timing-display=list 2>&1 | FileCheck -check-prefix=LIST %s
2// RUN: mlir-opt %s -mlir-disable-threading=true -verify-each=true -pass-pipeline='builtin.module(func.func(cse,canonicalize,cse))' -mlir-timing -mlir-timing-display=list -mlir-output-format=json 2>&1 | FileCheck -check-prefix=LIST-JSON %s
3// RUN: mlir-opt %s -mlir-disable-threading=true -verify-each=true -pass-pipeline='builtin.module(func.func(cse,canonicalize,cse))' -mlir-timing -mlir-timing-display=tree 2>&1 | FileCheck -check-prefix=PIPELINE %s
4// RUN: mlir-opt %s -mlir-disable-threading=true -verify-each=true -pass-pipeline='builtin.module(func.func(cse,canonicalize,cse))' -mlir-timing -mlir-timing-display=tree -mlir-output-format=json 2>&1 | FileCheck -check-prefix=PIPELINE-JSON %s
5// RUN: mlir-opt %s -mlir-disable-threading=false -verify-each=true -pass-pipeline='builtin.module(func.func(cse,canonicalize,cse))' -mlir-timing -mlir-timing-display=list 2>&1 | FileCheck -check-prefix=MT_LIST %s
6// RUN: mlir-opt %s -mlir-disable-threading=false -verify-each=true -pass-pipeline='builtin.module(func.func(cse,canonicalize,cse))' -mlir-timing -mlir-timing-display=tree 2>&1 | FileCheck -check-prefix=MT_PIPELINE %s
7// RUN: mlir-opt %s -mlir-disable-threading=true -verify-each=false -test-pm-nested-pipeline -mlir-timing -mlir-timing-display=tree 2>&1 | FileCheck -check-prefix=NESTED_PIPELINE %s
8
9// LIST: Execution time report
10// LIST: Total Execution Time:
11// LIST: Name
12// LIST-DAG: Canonicalizer
13// LIST-DAG: CSE
14// LIST-DAG: DominanceInfo
15// LIST: Total
16
17// LIST-JSON-NOT: Execution time report
18// LIST-JSON-NOT: Total Execution Time:
19// LIST-JSON-NOT: Name
20// LIST-JSON-DAG: "name": "Canonicalizer"}
21// LIST-JSON-DAG: "name": "CSE"}
22// LIST-JSON-DAG: "name": "(A) DominanceInfo"}
23// LIST-JSON: "name": "Total"}
24
25// PIPELINE: Execution time report
26// PIPELINE: Total Execution Time:
27// PIPELINE: Name
28// PIPELINE-NEXT: Parser
29// PIPELINE-NEXT: 'func.func' Pipeline
30// PIPELINE-NEXT:   CSE
31// PIPELINE-NEXT:     (A) DominanceInfo
32// PIPELINE-NEXT:   Canonicalizer
33// PIPELINE-NEXT:   CSE
34// PIPELINE-NEXT:     (A) DominanceInfo
35// PIPELINE-NEXT: Output
36// PIPELINE-NEXT: Rest
37// PIPELINE-NEXT: Total
38
39// PIPELINE-JSON-NOT: Execution time report
40// PIPELINE-JSON-NOT: Total Execution Time:
41// PIPELINE-JSON-NOT: Name
42// PIPELINE-JSON:      "name": "Parser", "passes": [
43// PIPELINE-JSON-NEXT: {}]},
44// PIPELINE-JSON-NEXT: "name": "'func.func' Pipeline", "passes": [
45// PIPELINE-JSON-NEXT: "name": "CSE", "passes": [
46// PIPELINE-JSON-NEXT: "name": "(A) DominanceInfo", "passes": [
47// PIPELINE-JSON-NEXT: {}]},
48// PIPELINE-JSON-NEXT: {}]},
49// PIPELINE-JSON-NEXT: "name": "Canonicalizer", "passes": [
50// PIPELINE-JSON-NEXT: {}]},
51// PIPELINE-JSON-NEXT: "name": "CSE", "passes": [
52// PIPELINE-JSON-NEXT: "name": "(A) DominanceInfo", "passes": [
53// PIPELINE-JSON-NEXT: {}]},
54// PIPELINE-JSON-NEXT: {}]},
55// PIPELINE-JSON-NEXT: {}]},
56// PIPELINE-JSON-NEXT: "name": "Output", "passes": [
57// PIPELINE-JSON-NEXT: {}]},
58// PIPELINE-JSON-NEXT: "name": "Rest"
59// PIPELINE-JSON-NEXT: "name": "Total"
60
61// MT_LIST: Execution time report
62// MT_LIST: Total Execution Time:
63// MT_LIST: Name
64// MT_LIST-DAG: Canonicalizer
65// MT_LIST-DAG: CSE
66// MT_LIST-DAG: DominanceInfo
67// MT_LIST: Total
68
69// MT_PIPELINE: Execution time report
70// MT_PIPELINE: Total Execution Time:
71// MT_PIPELINE: Name
72// MT_PIPELINE-NEXT: Parser
73// MT_PIPELINE-NEXT: 'func.func' Pipeline
74// MT_PIPELINE-NEXT:   CSE
75// MT_PIPELINE-NEXT:     (A) DominanceInfo
76// MT_PIPELINE-NEXT:   Canonicalizer
77// MT_PIPELINE-NEXT:   CSE
78// MT_PIPELINE-NEXT:     (A) DominanceInfo
79// MT_PIPELINE-NEXT: Output
80// MT_PIPELINE-NEXT: Rest
81// MT_PIPELINE-NEXT: Total
82
83// NESTED_PIPELINE: Execution time report
84// NESTED_PIPELINE: Total Execution Time:
85// NESTED_PIPELINE: Name
86// NESTED_PIPELINE-NEXT: Parser
87// NESTED_PIPELINE-NEXT: Pipeline Collection : ['builtin.module', 'func.func']
88// NESTED_PIPELINE-NEXT:   'func.func' Pipeline
89// NESTED_PIPELINE-NEXT:     TestFunctionPass
90// NESTED_PIPELINE-NEXT:   'builtin.module' Pipeline
91// NESTED_PIPELINE-NEXT:     TestModulePass
92// NESTED_PIPELINE-NEXT:     'func.func' Pipeline
93// NESTED_PIPELINE-NEXT:       TestFunctionPass
94// NESTED_PIPELINE-NEXT: Output
95// NESTED_PIPELINE-NEXT: Rest
96// NESTED_PIPELINE-NEXT: Total
97
98func.func @foo() {
99  return
100}
101
102func.func @bar() {
103  return
104}
105
106func.func @baz() {
107  return
108}
109
110func.func @foobar() {
111  return
112}
113
114module {
115  func.func @baz() {
116    return
117  }
118
119  func.func @foobar() {
120    return
121  }
122}
123