File: print-op-graph.mlir

package info (click to toggle)
llvm-toolchain-16 1%3A16.0.6-15~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,634,792 kB
  • sloc: cpp: 6,179,261; ansic: 1,216,205; asm: 741,319; python: 196,614; objc: 75,325; f90: 49,640; lisp: 32,396; pascal: 12,286; sh: 9,394; perl: 7,442; ml: 5,494; awk: 3,523; makefile: 2,723; javascript: 1,206; xml: 886; fortran: 581; cs: 573
file content (66 lines) | stat: -rw-r--r-- 3,205 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
// RUN: mlir-opt -allow-unregistered-dialect -mlir-elide-elementsattrs-if-larger=2 -view-op-graph %s -o %t 2>&1 | FileCheck -check-prefix=DFG %s
// RUN: mlir-opt -allow-unregistered-dialect -mlir-elide-elementsattrs-if-larger=2 -view-op-graph='print-data-flow-edges=false print-control-flow-edges=true' %s -o %t 2>&1 | FileCheck -check-prefix=CFG %s

// DFG-LABEL: digraph G {
//       DFG:   subgraph {{.*}} {
//       DFG:     subgraph {{.*}}
//       DFG:       label = "func.func{{.*}}merge_blocks
//       DFG:       subgraph {{.*}} {
//       DFG:         v[[ARG0:.*]] [label = "arg0"
//       DFG:         v[[CONST10:.*]] [label ={{.*}}10 : i32
//       DFG:         subgraph [[CLUSTER_MERGE_BLOCKS:.*]] {
//       DFG:           v[[ANCHOR:.*]] [label = " ", shape = plain]
//       DFG:           label = "test.merge_blocks
//       DFG:           subgraph {{.*}} {
//       DFG:             v[[TEST_BR:.*]] [label = "test.br
//       DFG:           }
//       DFG:           subgraph {{.*}} {
//       DFG:           }
//       DFG:         }
//       DFG:         v[[TEST_RET:.*]] [label = "test.return
//       DFG:   v[[ARG0]] -> v[[TEST_BR]]
//       DFG:   v[[CONST10]] -> v[[TEST_BR]]
//       DFG:   v[[ANCHOR]] -> v[[TEST_RET]] [{{.*}}, ltail = [[CLUSTER_MERGE_BLOCKS]]]
//       DFG:   v[[ANCHOR]] -> v[[TEST_RET]] [{{.*}}, ltail = [[CLUSTER_MERGE_BLOCKS]]]

// CFG-LABEL: digraph G {
//       CFG:   subgraph {{.*}} {
//       CFG:     subgraph {{.*}}
//       CFG:       label = "func.func{{.*}}merge_blocks
//       CFG:       subgraph {{.*}} {
//       CFG:         v[[C1:.*]] [label = "arith.constant
//       CFG:         v[[C2:.*]] [label = "arith.constant
//       CFG:         v[[C3:.*]] [label = "arith.constant
//       CFG:         v[[C4:.*]] [label = "arith.constant
//       CFG:         v[[TEST_FUNC:.*]] [label = "test.func
//       CFG:         subgraph [[CLUSTER_MERGE_BLOCKS:.*]] {
//       CFG:           v[[ANCHOR:.*]] [label = " ", shape = plain]
//       CFG:           label = "test.merge_blocks
//       CFG:           subgraph {{.*}} {
//       CFG:             v[[TEST_BR:.*]] [label = "test.br
//       CFG:           }
//       CFG:           subgraph {{.*}} {
//       CFG:           }
//       CFG:         }
//       CFG:         v[[TEST_RET:.*]] [label = "test.return
//       CFG:   v[[C1]] -> v[[C2]]
//       CFG:   v[[C2]] -> v[[C3]]
//       CFG:   v[[C3]] -> v[[C4]]
//       CFG:   v[[C4]] -> v[[TEST_FUNC]]
//       CFG:   v[[TEST_FUNC]] -> v[[ANCHOR]] [{{.*}}, lhead = [[CLUSTER_MERGE_BLOCKS]]]
//       CFG:   v[[ANCHOR]] -> v[[TEST_RET]] [{{.*}}, ltail = [[CLUSTER_MERGE_BLOCKS]]]

func.func @merge_blocks(%arg0: i32, %arg1 : i32) -> () {
  %0 = arith.constant dense<[[0, 1], [2, 3]]> : tensor<2x2xi32>
  %1 = arith.constant dense<1> : tensor<5xi32>
  %2 = arith.constant dense<[[0, 1]]> : tensor<1x2xi32>
  %a = arith.constant 10 : i32
  %b = "test.func"() : () -> i32
  %3:2 = "test.merge_blocks"() ({
  ^bb0:
     "test.br"(%arg0, %b, %a)[^bb1] : (i32, i32, i32) -> ()
  ^bb1(%arg3 : i32, %arg4 : i32, %arg5: i32):
     "test.return"(%arg3, %arg4) : (i32, i32) -> ()
  }) : () -> (i32, i32)
  "test.return"(%3#0, %3#1) : (i32, i32) -> ()
}