This pass allows a user to dump a MIR function to a dot file and view it as a graph. It is targeted to provide a similar functionality as -dot-cfg pass on LLVM-IR. As of now the pass also support below flags: -dot-mcfg-only [optional][won't print instructions in the graph just block name] -mcfg-dot-filename-prefix [optional][prefix to add to output dot file] -mcfg-func-name [optional] [specify function name or it's substring, handy if mir file contains multiple functions and you need to see graph of just one] More flags and details can be introduced as per the requirements in future. This pass is inspired from -dot-cfg IR pass and APIs are written in almost identical format. Patch by Yashwant Singh <Yashwant.Singh@amd.com> (yassingh) Reviewed By: arsenm Differential Revision: https://reviews.llvm.org/D133709
25 lines
942 B
YAML
25 lines
942 B
YAML
# RUN: llc -mtriple=amdgcn-- -run-pass=dot-machine-cfg -mcfg-dot-filename-prefix=%t -mcfg-func-name=func2 -o - %s 2>&1 > /dev/null
|
|
# RUN: FileCheck %s -input-file=%t.func2.dot --check-prefix=MCFG
|
|
|
|
# MCFG-NOT: digraph "Machine CFG for 'func1' function"
|
|
name: func1
|
|
body: |
|
|
bb.0:
|
|
$sgpr0 = S_LOAD_DWORD_IMM $sgpr10_sgpr11, 0, 0
|
|
$sgpr1 = S_LOAD_DWORD_IMM $sgpr12_sgpr13, 0, 0
|
|
S_ENDPGM 0
|
|
...
|
|
|
|
# MCFG: digraph "Machine CFG for 'func2' function"
|
|
# MCFG-NEXT: label="Machine CFG for 'func2' function"
|
|
# MCFG: Node{{[0-9A-Za-z]*}} [shape=record,label="{%bb.0:bb.0:\l $sgpr0 = S_LOAD_DWORD_IMM $sgpr12_sgpr13, 0, 0\l $sgpr1 = S_LOAD_DWORD_IMM $sgpr6_sgpr7, 0, 0\l $sgpr2 = S_LOAD_DWORD_IMM $sgpr14_sgpr15, 0, 0\l S_ENDPGM 0\l}"];
|
|
---
|
|
name: func2
|
|
body: |
|
|
bb.0:
|
|
$sgpr0 = S_LOAD_DWORD_IMM $sgpr12_sgpr13, 0, 0
|
|
$sgpr1 = S_LOAD_DWORD_IMM $sgpr6_sgpr7, 0, 0
|
|
$sgpr2 = S_LOAD_DWORD_IMM $sgpr14_sgpr15, 0, 0
|
|
S_ENDPGM 0
|
|
...
|