1[
2    {
3        "MetricExpr": "FETCH_BUBBLE / (4 * CPU_CYCLES)",
4        "PublicDescription": "Frontend bound L1 topdown metric",
5        "BriefDescription": "Frontend bound L1 topdown metric",
6        "MetricGroup": "TopDownL1",
7        "MetricName": "frontend_bound"
8    },
9    {
10        "MetricExpr": "(INST_SPEC - INST_RETIRED) / (4 * CPU_CYCLES)",
11        "PublicDescription": "Bad Speculation L1 topdown metric",
12        "BriefDescription": "Bad Speculation L1 topdown metric",
13        "MetricGroup": "TopDownL1",
14        "MetricName": "bad_speculation"
15    },
16    {
17        "MetricExpr": "INST_RETIRED / (CPU_CYCLES * 4)",
18        "PublicDescription": "Retiring L1 topdown metric",
19        "BriefDescription": "Retiring L1 topdown metric",
20        "MetricGroup": "TopDownL1",
21        "MetricName": "retiring"
22    },
23    {
24        "MetricExpr": "1 - (frontend_bound + bad_speculation + retiring)",
25        "PublicDescription": "Backend Bound L1 topdown metric",
26        "BriefDescription": "Backend Bound L1 topdown metric",
27        "MetricGroup": "TopDownL1",
28        "MetricName": "backend_bound"
29    },
30    {
31        "MetricExpr": "armv8_pmuv3_0@event\\=0x201d@ / CPU_CYCLES",
32        "PublicDescription": "Fetch latency bound L2 topdown metric",
33        "BriefDescription": "Fetch latency bound L2 topdown metric",
34        "MetricGroup": "TopDownL2",
35        "MetricName": "fetch_latency_bound"
36    },
37    {
38        "MetricExpr": "frontend_bound - fetch_latency_bound",
39        "PublicDescription": "Fetch bandwidth bound L2 topdown metric",
40        "BriefDescription": "Fetch bandwidth bound L2 topdown metric",
41        "MetricGroup": "TopDownL2",
42        "MetricName": "fetch_bandwidth_bound"
43    },
44    {
45        "MetricExpr": "(bad_speculation * BR_MIS_PRED) / (BR_MIS_PRED + armv8_pmuv3_0@event\\=0x2013@)",
46        "PublicDescription": "Branch mispredicts L2 topdown metric",
47        "BriefDescription": "Branch mispredicts L2 topdown metric",
48        "MetricGroup": "TopDownL2",
49        "MetricName": "branch_mispredicts"
50    },
51    {
52        "MetricExpr": "bad_speculation - branch_mispredicts",
53        "PublicDescription": "Machine clears L2 topdown metric",
54        "BriefDescription": "Machine clears L2 topdown metric",
55        "MetricGroup": "TopDownL2",
56        "MetricName": "machine_clears"
57    },
58    {
59        "MetricExpr": "(EXE_STALL_CYCLE - (MEM_STALL_ANYLOAD + armv8_pmuv3_0@event\\=0x7005@)) / CPU_CYCLES",
60        "PublicDescription": "Core bound L2 topdown metric",
61        "BriefDescription": "Core bound L2 topdown metric",
62        "MetricGroup": "TopDownL2",
63        "MetricName": "core_bound"
64    },
65    {
66        "MetricExpr": "(MEM_STALL_ANYLOAD + armv8_pmuv3_0@event\\=0x7005@) / CPU_CYCLES",
67        "PublicDescription": "Memory bound L2 topdown metric",
68        "BriefDescription": "Memory bound L2 topdown metric",
69        "MetricGroup": "TopDownL2",
70        "MetricName": "memory_bound"
71    },
72    {
73        "MetricExpr": "(((L2I_TLB - L2I_TLB_REFILL) * 15) + (L2I_TLB_REFILL * 100)) / CPU_CYCLES",
74        "PublicDescription": "Idle by itlb miss L3 topdown metric",
75        "BriefDescription": "Idle by itlb miss L3 topdown metric",
76        "MetricGroup": "TopDownL3",
77        "MetricName": "idle_by_itlb_miss"
78    },
79    {
80        "MetricExpr": "(((L2I_CACHE - L2I_CACHE_REFILL) * 15) + (L2I_CACHE_REFILL * 100)) / CPU_CYCLES",
81        "PublicDescription": "Idle by icache miss L3 topdown metric",
82        "BriefDescription": "Idle by icache miss L3 topdown metric",
83        "MetricGroup": "TopDownL3",
84        "MetricName": "idle_by_icache_miss"
85    },
86    {
87        "MetricExpr": "(BR_MIS_PRED * 5) / CPU_CYCLES",
88        "PublicDescription": "BP misp flush L3 topdown metric",
89        "BriefDescription": "BP misp flush L3 topdown metric",
90        "MetricGroup": "TopDownL3",
91        "MetricName": "bp_misp_flush"
92    },
93    {
94        "MetricExpr": "(armv8_pmuv3_0@event\\=0x2013@ * 5) / CPU_CYCLES",
95        "PublicDescription": "OOO flush L3 topdown metric",
96        "BriefDescription": "OOO flush L3 topdown metric",
97        "MetricGroup": "TopDownL3",
98        "MetricName": "ooo_flush"
99    },
100    {
101        "MetricExpr": "(armv8_pmuv3_0@event\\=0x1001@ * 5) / CPU_CYCLES",
102        "PublicDescription": "Static predictor flush L3 topdown metric",
103        "BriefDescription": "Static predictor flush L3 topdown metric",
104        "MetricGroup": "TopDownL3",
105        "MetricName": "sp_flush"
106    },
107    {
108        "MetricExpr": "armv8_pmuv3_0@event\\=0x1010@ / BR_MIS_PRED",
109        "PublicDescription": "Indirect branch L3 topdown metric",
110        "BriefDescription": "Indirect branch L3 topdown metric",
111        "MetricGroup": "TopDownL3",
112        "MetricName": "indirect_branch"
113    },
114    {
115        "MetricExpr": "(armv8_pmuv3_0@event\\=0x1014@ + armv8_pmuv3_0@event\\=0x1018@) / BR_MIS_PRED",
116        "PublicDescription": "Push branch L3 topdown metric",
117        "BriefDescription": "Push branch L3 topdown metric",
118        "MetricGroup": "TopDownL3",
119        "MetricName": "push_branch"
120    },
121    {
122        "MetricExpr": "armv8_pmuv3_0@event\\=0x100c@ / BR_MIS_PRED",
123        "PublicDescription": "Pop branch L3 topdown metric",
124        "BriefDescription": "Pop branch L3 topdown metric",
125        "MetricGroup": "TopDownL3",
126        "MetricName": "pop_branch"
127    },
128    {
129        "MetricExpr": "(BR_MIS_PRED - armv8_pmuv3_0@event\\=0x1010@ - armv8_pmuv3_0@event\\=0x1014@ - armv8_pmuv3_0@event\\=0x1018@ - armv8_pmuv3_0@event\\=0x100c@) / BR_MIS_PRED",
130        "PublicDescription": "Other branch L3 topdown metric",
131        "BriefDescription": "Other branch L3 topdown metric",
132        "MetricGroup": "TopDownL3",
133        "MetricName": "other_branch"
134    },
135    {
136        "MetricExpr": "armv8_pmuv3_0@event\\=0x2012@ / armv8_pmuv3_0@event\\=0x2013@",
137        "PublicDescription": "Nuke flush L3 topdown metric",
138        "BriefDescription": "Nuke flush L3 topdown metric",
139        "MetricGroup": "TopDownL3",
140        "MetricName": "nuke_flush"
141    },
142    {
143        "MetricExpr": "1 - nuke_flush",
144        "PublicDescription": "Other flush L3 topdown metric",
145        "BriefDescription": "Other flush L3 topdown metric",
146        "MetricGroup": "TopDownL3",
147        "MetricName": "other_flush"
148    },
149    {
150        "MetricExpr": "armv8_pmuv3_0@event\\=0x2010@ / CPU_CYCLES",
151        "PublicDescription": "Sync stall L3 topdown metric",
152        "BriefDescription": "Sync stall L3 topdown metric",
153        "MetricGroup": "TopDownL3",
154        "MetricName": "sync_stall"
155    },
156    {
157        "MetricExpr": "armv8_pmuv3_0@event\\=0x2004@ / CPU_CYCLES",
158        "PublicDescription": "Rob stall L3 topdown metric",
159        "BriefDescription": "Rob stall L3 topdown metric",
160        "MetricGroup": "TopDownL3",
161        "MetricName": "rob_stall"
162    },
163    {
164        "MetricExpr": "(armv8_pmuv3_0@event\\=0x2006@ + armv8_pmuv3_0@event\\=0x2007@ + armv8_pmuv3_0@event\\=0x2008@) / CPU_CYCLES",
165        "PublicDescription": "Ptag stall L3 topdown metric",
166        "BriefDescription": "Ptag stall L3 topdown metric",
167        "MetricGroup": "TopDownL3",
168        "MetricName": "ptag_stall"
169    },
170    {
171        "MetricExpr": "armv8_pmuv3_0@event\\=0x201e@ / CPU_CYCLES",
172        "PublicDescription": "SaveOpQ stall L3 topdown metric",
173        "BriefDescription": "SaveOpQ stall L3 topdown metric",
174        "MetricGroup": "TopDownL3",
175        "MetricName": "saveopq_stall"
176    },
177    {
178        "MetricExpr": "armv8_pmuv3_0@event\\=0x2005@ / CPU_CYCLES",
179        "PublicDescription": "PC buffer stall L3 topdown metric",
180        "BriefDescription": "PC buffer stall L3 topdown metric",
181        "MetricGroup": "TopDownL3",
182        "MetricName": "pc_buffer_stall"
183    },
184    {
185        "MetricExpr": "armv8_pmuv3_0@event\\=0x7002@ / CPU_CYCLES",
186        "PublicDescription": "Divider L3 topdown metric",
187        "BriefDescription": "Divider L3 topdown metric",
188        "MetricGroup": "TopDownL3",
189        "MetricName": "divider"
190    },
191    {
192        "MetricExpr": "armv8_pmuv3_0@event\\=0x7003@ / CPU_CYCLES",
193        "PublicDescription": "FSU stall L3 topdown metric",
194        "BriefDescription": "FSU stall L3 topdown metric",
195        "MetricGroup": "TopDownL3",
196        "MetricName": "fsu_stall"
197    },
198    {
199        "MetricExpr": "core_bound - divider - fsu_stall",
200        "PublicDescription": "EXE ports util L3 topdown metric",
201        "BriefDescription": "EXE ports util L3 topdown metric",
202        "MetricGroup": "TopDownL3",
203        "MetricName": "exe_ports_util"
204    },
205    {
206        "MetricExpr": "(MEM_STALL_ANYLOAD - MEM_STALL_L1MISS) / CPU_CYCLES",
207        "PublicDescription": "L1 bound L3 topdown metric",
208        "BriefDescription": "L1 bound L3 topdown metric",
209        "MetricGroup": "TopDownL3",
210        "MetricName": "l1_bound"
211    },
212    {
213        "MetricExpr": "(MEM_STALL_L1MISS - MEM_STALL_L2MISS) / CPU_CYCLES",
214        "PublicDescription": "L2 bound L3 topdown metric",
215        "BriefDescription": "L2 bound L3 topdown metric",
216        "MetricGroup": "TopDownL3",
217        "MetricName": "l2_bound"
218    },
219    {
220        "MetricExpr": "MEM_STALL_L2MISS / CPU_CYCLES",
221        "PublicDescription": "Mem bound L3 topdown metric",
222        "BriefDescription": "Mem bound L3 topdown metric",
223        "MetricGroup": "TopDownL3",
224        "MetricName": "mem_bound"
225    },
226    {
227        "MetricExpr": "armv8_pmuv3_0@event\\=0x7005@ / CPU_CYCLES",
228        "PublicDescription": "Store bound L3 topdown metric",
229        "BriefDescription": "Store bound L3 topdown metric",
230        "MetricGroup": "TopDownL3",
231        "MetricName": "store_bound"
232    }
233]
234