xref: /aosp_15_r20/system/extras/perf2cfg/doc/FSM.dot (revision 288bf5226967eb3dac5cce6c939ccc2a7f2b4fe5)
1*288bf522SAndroid Build Coastguard Workerdigraph finite_state_machine {
2*288bf522SAndroid Build Coastguard Worker    rankdir = "LR";
3*288bf522SAndroid Build Coastguard Worker
4*288bf522SAndroid Build Coastguard Worker    node [ shape = "doublecircle" ];
5*288bf522SAndroid Build Coastguard Worker    "End";
6*288bf522SAndroid Build Coastguard Worker
7*288bf522SAndroid Build Coastguard Worker    node [ shape = "point" ];
8*288bf522SAndroid Build Coastguard Worker    "Init";
9*288bf522SAndroid Build Coastguard Worker
10*288bf522SAndroid Build Coastguard Worker    node [ shape = "circle" ];
11*288bf522SAndroid Build Coastguard Worker    "Init" -> "Start";
12*288bf522SAndroid Build Coastguard Worker
13*288bf522SAndroid Build Coastguard Worker    "Start" -> "End" [ label = "EOF" ];
14*288bf522SAndroid Build Coastguard Worker    "Start" -> "Parse Method Name" [ label = "'begin_compilation'" ];
15*288bf522SAndroid Build Coastguard Worker    "Start" -> "Error" [ label = "NOT('begin_compilation')" ];
16*288bf522SAndroid Build Coastguard Worker
17*288bf522SAndroid Build Coastguard Worker    "Parse Method Name" -> "Skip to CFG"
18*288bf522SAndroid Build Coastguard Worker        [ label = "method_name IN analyzer.methods" ];
19*288bf522SAndroid Build Coastguard Worker    "Parse Method Name" -> "Skip Method"
20*288bf522SAndroid Build Coastguard Worker        [ label = "method_name NOT IN analyzer.methods" ];
21*288bf522SAndroid Build Coastguard Worker    "Parse Method Name" -> "Error" [ label = "EOF OR NOT('name')" ];
22*288bf522SAndroid Build Coastguard Worker
23*288bf522SAndroid Build Coastguard Worker    "Skip Method" -> "End" [ label = "EOF" ];
24*288bf522SAndroid Build Coastguard Worker    "Skip Method" -> "Parse Method Name" [ label = "'begin_compilation'" ];
25*288bf522SAndroid Build Coastguard Worker    "Skip Method" -> "Skip Method";
26*288bf522SAndroid Build Coastguard Worker
27*288bf522SAndroid Build Coastguard Worker    "Skip to CFG" -> "Start CFG" [ label = "'end_compilation'" ];
28*288bf522SAndroid Build Coastguard Worker    "Skip to CFG" -> "Skip to CFG";
29*288bf522SAndroid Build Coastguard Worker    "Skip to CFG" -> "Error" [ label = "EOF" ];
30*288bf522SAndroid Build Coastguard Worker
31*288bf522SAndroid Build Coastguard Worker    "Start CFG" -> "Is Disassembly Pass" [ label = "'begin_cfg'" ];
32*288bf522SAndroid Build Coastguard Worker    "Start CFG" -> "Error" [ label = "EOF OR NOT('begin_cfg')" ];
33*288bf522SAndroid Build Coastguard Worker
34*288bf522SAndroid Build Coastguard Worker    "Is Disassembly Pass" -> "Parse Flags"
35*288bf522SAndroid Build Coastguard Worker        [ label = "'name \"disassembly (after)\"'" ];
36*288bf522SAndroid Build Coastguard Worker    "Is Disassembly Pass" -> "Skip Pass"
37*288bf522SAndroid Build Coastguard Worker        [ label = "NOT('name \"disassembly (after)\"')" ];
38*288bf522SAndroid Build Coastguard Worker    "Is Disassembly Pass" -> "Error" [ label = "EOF OR NOT('name')" ];
39*288bf522SAndroid Build Coastguard Worker
40*288bf522SAndroid Build Coastguard Worker    "Skip Pass" -> "End CFG" [ label = "'end_cfg'" ];
41*288bf522SAndroid Build Coastguard Worker    "Skip Pass" -> "Skip Pass";
42*288bf522SAndroid Build Coastguard Worker    "Skip Pass" -> "Error" [ label = "EOF" ];
43*288bf522SAndroid Build Coastguard Worker
44*288bf522SAndroid Build Coastguard Worker    "Parse Flags" -> "Skip to HIR" [ label = "'flags'" ];
45*288bf522SAndroid Build Coastguard Worker    "Parse Flags" -> "Parse Flags";
46*288bf522SAndroid Build Coastguard Worker    "Parse Flags" -> "Error" [ label = "EOF" ];
47*288bf522SAndroid Build Coastguard Worker
48*288bf522SAndroid Build Coastguard Worker    "Skip to HIR" -> "HIR Instruction" [ label = "'begin_HIR'" ];
49*288bf522SAndroid Build Coastguard Worker    "Skip to HIR" -> "Skip to HIR";
50*288bf522SAndroid Build Coastguard Worker    "Skip to HIR" -> "Error" [ label = "EOF" ];
51*288bf522SAndroid Build Coastguard Worker
52*288bf522SAndroid Build Coastguard Worker    "HIR Instruction" -> "HIR Instruction" [ label = "'<|@'" ];
53*288bf522SAndroid Build Coastguard Worker    "HIR Instruction" -> "End HIR" [ label = "'end_HIR'" ];
54*288bf522SAndroid Build Coastguard Worker    "HIR Instruction" -> "Disassembly";
55*288bf522SAndroid Build Coastguard Worker    "HIR Instruction" -> "Error" [ label = "EOF" ];
56*288bf522SAndroid Build Coastguard Worker
57*288bf522SAndroid Build Coastguard Worker    "Disassembly" -> "HIR Instruction" [ label = "'<|@'" ];
58*288bf522SAndroid Build Coastguard Worker    "Disassembly" -> "Disassembly";
59*288bf522SAndroid Build Coastguard Worker    "Disassembly" -> "Error" [ label = "EOF" ];
60*288bf522SAndroid Build Coastguard Worker
61*288bf522SAndroid Build Coastguard Worker    "End HIR" -> "End Block" [ label = "'end_block'" ];
62*288bf522SAndroid Build Coastguard Worker    "End HIR" -> "Error" [ label = "EOF OR NOT('end_block')" ];
63*288bf522SAndroid Build Coastguard Worker
64*288bf522SAndroid Build Coastguard Worker    "End Block" -> "Parse Flags" [ label = "'begin_block'" ];
65*288bf522SAndroid Build Coastguard Worker    "End Block" -> "End CFG" [ label = "'end_cfg'" ];
66*288bf522SAndroid Build Coastguard Worker    "End Block" -> "Error" [ label = "EOF OR NOT('begin_block' OR 'end_cfg')" ];
67*288bf522SAndroid Build Coastguard Worker
68*288bf522SAndroid Build Coastguard Worker    "End CFG" -> "Is Disassembly Pass" [ label = "'begin_cfg'" ];
69*288bf522SAndroid Build Coastguard Worker    "End CFG" -> "Parse Method Name" [ label = "'begin_compilation'" ];
70*288bf522SAndroid Build Coastguard Worker    "End CFG" -> "End" [ label = "EOF" ];
71*288bf522SAndroid Build Coastguard Worker}
72