1*c4e1dc4aSJohn Garry[
2*c4e1dc4aSJohn Garry    {
3*c4e1dc4aSJohn Garry        "MetricExpr": "FETCH_BUBBLE / (4 * CPU_CYCLES)",
4*c4e1dc4aSJohn Garry        "PublicDescription": "Frontend bound L1 topdown metric",
5*c4e1dc4aSJohn Garry        "BriefDescription": "Frontend bound L1 topdown metric",
6*c4e1dc4aSJohn Garry        "MetricGroup": "TopDownL1",
7*c4e1dc4aSJohn Garry        "MetricName": "frontend_bound"
8*c4e1dc4aSJohn Garry    },
9*c4e1dc4aSJohn Garry    {
10*c4e1dc4aSJohn Garry        "MetricExpr": "(INST_SPEC - INST_RETIRED) / (4 * CPU_CYCLES)",
11*c4e1dc4aSJohn Garry        "PublicDescription": "Bad Speculation L1 topdown metric",
12*c4e1dc4aSJohn Garry        "BriefDescription": "Bad Speculation L1 topdown metric",
13*c4e1dc4aSJohn Garry        "MetricGroup": "TopDownL1",
14*c4e1dc4aSJohn Garry        "MetricName": "bad_speculation"
15*c4e1dc4aSJohn Garry    },
16*c4e1dc4aSJohn Garry    {
17*c4e1dc4aSJohn Garry        "MetricExpr": "INST_RETIRED / (CPU_CYCLES * 4)",
18*c4e1dc4aSJohn Garry        "PublicDescription": "Retiring L1 topdown metric",
19*c4e1dc4aSJohn Garry        "BriefDescription": "Retiring L1 topdown metric",
20*c4e1dc4aSJohn Garry        "MetricGroup": "TopDownL1",
21*c4e1dc4aSJohn Garry        "MetricName": "retiring"
22*c4e1dc4aSJohn Garry    },
23*c4e1dc4aSJohn Garry    {
24*c4e1dc4aSJohn Garry        "MetricExpr": "1 - (frontend_bound + bad_speculation + retiring)",
25*c4e1dc4aSJohn Garry        "PublicDescription": "Backend Bound L1 topdown metric",
26*c4e1dc4aSJohn Garry        "BriefDescription": "Backend Bound L1 topdown metric",
27*c4e1dc4aSJohn Garry        "MetricGroup": "TopDownL1",
28*c4e1dc4aSJohn Garry        "MetricName": "backend_bound"
29*c4e1dc4aSJohn Garry    },
30*c4e1dc4aSJohn Garry]
31