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