11ab4ef06SIan Rogers[
21ab4ef06SIan Rogers    {
31ab4ef06SIan Rogers        "BriefDescription": "Counts the total number of branch instructions retired for all branch types.",
41ab4ef06SIan Rogers        "EventCode": "0xc4",
51ab4ef06SIan Rogers        "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
61ab4ef06SIan Rogers        "PEBS": "1",
7*591530c0SIan Rogers        "PublicDescription": "Counts the total number of instructions in which the instruction pointer (IP) of the processor is resteered due to a branch instruction and the branch instruction successfully retires.  All branch type instructions are accounted for.",
81ab4ef06SIan Rogers        "SampleAfterValue": "200003",
91ab4ef06SIan Rogers        "Unit": "cpu_atom"
101ab4ef06SIan Rogers    },
111ab4ef06SIan Rogers    {
125362e4d1SIan Rogers        "BriefDescription": "All branch instructions retired.",
135362e4d1SIan Rogers        "EventCode": "0xc4",
145362e4d1SIan Rogers        "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
155362e4d1SIan Rogers        "PEBS": "1",
16*591530c0SIan Rogers        "PublicDescription": "Counts all branch instructions retired.",
175362e4d1SIan Rogers        "SampleAfterValue": "400009",
185362e4d1SIan Rogers        "Unit": "cpu_core"
195362e4d1SIan Rogers    },
205362e4d1SIan Rogers    {
211ab4ef06SIan Rogers        "BriefDescription": "Counts the total number of mispredicted branch instructions retired for all branch types.",
221ab4ef06SIan Rogers        "EventCode": "0xc5",
231ab4ef06SIan Rogers        "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
241ab4ef06SIan Rogers        "PEBS": "1",
25*591530c0SIan Rogers        "PublicDescription": "Counts the total number of mispredicted branch instructions retired.  All branch type instructions are accounted for.  Prediction of the branch target address enables the processor to begin executing instructions before the non-speculative execution path is known. The branch prediction unit (BPU) predicts the target address based on the instruction pointer (IP) of the branch and on the execution path through which execution reached this IP.    A branch misprediction occurs when the prediction is wrong, and results in discarding all instructions executed in the speculative path and re-fetching from the correct path.",
261ab4ef06SIan Rogers        "SampleAfterValue": "200003",
271ab4ef06SIan Rogers        "Unit": "cpu_atom"
281ab4ef06SIan Rogers    },
291ab4ef06SIan Rogers    {
305362e4d1SIan Rogers        "BriefDescription": "All mispredicted branch instructions retired.",
315362e4d1SIan Rogers        "EventCode": "0xc5",
325362e4d1SIan Rogers        "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
335362e4d1SIan Rogers        "PEBS": "1",
34*591530c0SIan Rogers        "PublicDescription": "Counts all the retired branch instructions that were mispredicted by the processor. A branch misprediction occurs when the processor incorrectly predicts the destination of the branch.  When the misprediction is discovered at execution, all the instructions executed in the wrong (speculative) path must be discarded, and the processor must start fetching from the correct path.",
355362e4d1SIan Rogers        "SampleAfterValue": "400009",
365362e4d1SIan Rogers        "Unit": "cpu_core"
375362e4d1SIan Rogers    },
385362e4d1SIan Rogers    {
391ab4ef06SIan Rogers        "BriefDescription": "Fixed Counter: Counts the number of unhalted core clock cycles",
401ab4ef06SIan Rogers        "EventName": "CPU_CLK_UNHALTED.CORE",
411ab4ef06SIan Rogers        "SampleAfterValue": "2000003",
421ab4ef06SIan Rogers        "UMask": "0x2",
431ab4ef06SIan Rogers        "Unit": "cpu_atom"
441ab4ef06SIan Rogers    },
451ab4ef06SIan Rogers    {
461ab4ef06SIan Rogers        "BriefDescription": "Counts the number of unhalted core clock cycles [This event is alias to CPU_CLK_UNHALTED.THREAD_P]",
471ab4ef06SIan Rogers        "EventCode": "0x3c",
481ab4ef06SIan Rogers        "EventName": "CPU_CLK_UNHALTED.CORE_P",
491ab4ef06SIan Rogers        "SampleAfterValue": "2000003",
501ab4ef06SIan Rogers        "Unit": "cpu_atom"
511ab4ef06SIan Rogers    },
521ab4ef06SIan Rogers    {
531ab4ef06SIan Rogers        "BriefDescription": "Fixed Counter: Counts the number of unhalted reference clock cycles",
541ab4ef06SIan Rogers        "EventName": "CPU_CLK_UNHALTED.REF_TSC",
551ab4ef06SIan Rogers        "SampleAfterValue": "2000003",
561ab4ef06SIan Rogers        "UMask": "0x3",
571ab4ef06SIan Rogers        "Unit": "cpu_atom"
581ab4ef06SIan Rogers    },
591ab4ef06SIan Rogers    {
605362e4d1SIan Rogers        "BriefDescription": "Reference cycles when the core is not in halt state.",
615362e4d1SIan Rogers        "EventName": "CPU_CLK_UNHALTED.REF_TSC",
62*591530c0SIan Rogers        "PublicDescription": "Counts the number of reference cycles when the core is not in a halt state. The core enters the halt state when it is running the HLT instruction or the MWAIT instruction. This event is not affected by core frequency changes (for example, P states, TM2 transitions) but has the same incrementing frequency as the time stamp counter. This event can approximate elapsed time while the core was not in a halt state. It is counted on a dedicated fixed counter, leaving the eight programmable counters available for other events. Note: On all current platforms this event stops counting during 'throttling (TM)' states duty off periods the processor is 'halted'.  The counter update is done at a lower clock rate then the core clock the overflow status bit for this counter may appear 'sticky'.  After the counter has overflowed and software clears the overflow status bit and resets the counter to less than MAX. The reset value to the counter is not clocked immediately so the overflow status bit will flip 'high (1)' and generate another PMI (if enabled) after which the reset value gets clocked into the counter. Therefore, software will get the interrupt, read the overflow status bit '1 for bit 34 while the counter value is less than MAX. Software should ignore this case.",
635362e4d1SIan Rogers        "SampleAfterValue": "2000003",
645362e4d1SIan Rogers        "UMask": "0x3",
655362e4d1SIan Rogers        "Unit": "cpu_core"
665362e4d1SIan Rogers    },
675362e4d1SIan Rogers    {
685362e4d1SIan Rogers        "BriefDescription": "Reference cycles when the core is not in halt state.",
695362e4d1SIan Rogers        "EventCode": "0x3c",
705362e4d1SIan Rogers        "EventName": "CPU_CLK_UNHALTED.REF_TSC_P",
71*591530c0SIan Rogers        "PublicDescription": "Counts the number of reference cycles when the core is not in a halt state. The core enters the halt state when it is running the HLT instruction or the MWAIT instruction. This event is not affected by core frequency changes (for example, P states, TM2 transitions) but has the same incrementing frequency as the time stamp counter. This event can approximate elapsed time while the core was not in a halt state. It is counted on a dedicated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. Note: On all current platforms this event stops counting during 'throttling (TM)' states duty off periods the processor is 'halted'.  The counter update is done at a lower clock rate then the core clock the overflow status bit for this counter may appear 'sticky'.  After the counter has overflowed and software clears the overflow status bit and resets the counter to less than MAX. The reset value to the counter is not clocked immediately so the overflow status bit will flip 'high (1)' and generate another PMI (if enabled) after which the reset value gets clocked into the counter. Therefore, software will get the interrupt, read the overflow status bit '1 for bit 34 while the counter value is less than MAX. Software should ignore this case.",
725362e4d1SIan Rogers        "SampleAfterValue": "2000003",
735362e4d1SIan Rogers        "UMask": "0x1",
745362e4d1SIan Rogers        "Unit": "cpu_core"
755362e4d1SIan Rogers    },
765362e4d1SIan Rogers    {
771ab4ef06SIan Rogers        "BriefDescription": "Fixed Counter: Counts the number of unhalted core clock cycles",
781ab4ef06SIan Rogers        "EventName": "CPU_CLK_UNHALTED.THREAD",
791ab4ef06SIan Rogers        "SampleAfterValue": "2000003",
801ab4ef06SIan Rogers        "UMask": "0x2",
811ab4ef06SIan Rogers        "Unit": "cpu_atom"
821ab4ef06SIan Rogers    },
831ab4ef06SIan Rogers    {
841ab4ef06SIan Rogers        "BriefDescription": "Core cycles when the thread is not in halt state",
851ab4ef06SIan Rogers        "EventName": "CPU_CLK_UNHALTED.THREAD",
86*591530c0SIan Rogers        "PublicDescription": "Counts the number of core cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. This event is a component in many key event ratios. The core frequency may change from time to time due to transitions associated with Enhanced Intel SpeedStep Technology or TM2. For this reason this event may have a changing ratio with regards to time. When the core frequency is constant, this event can approximate elapsed time while the core was not in the halt state. It is counted on a dedicated fixed counter, leaving the eight programmable counters available for other events.",
871ab4ef06SIan Rogers        "SampleAfterValue": "2000003",
881ab4ef06SIan Rogers        "UMask": "0x2",
891ab4ef06SIan Rogers        "Unit": "cpu_core"
901ab4ef06SIan Rogers    },
911ab4ef06SIan Rogers    {
925362e4d1SIan Rogers        "BriefDescription": "Counts the number of unhalted core clock cycles [This event is alias to CPU_CLK_UNHALTED.CORE_P]",
931ab4ef06SIan Rogers        "EventCode": "0x3c",
941ab4ef06SIan Rogers        "EventName": "CPU_CLK_UNHALTED.THREAD_P",
955362e4d1SIan Rogers        "SampleAfterValue": "2000003",
965362e4d1SIan Rogers        "Unit": "cpu_atom"
975362e4d1SIan Rogers    },
985362e4d1SIan Rogers    {
995362e4d1SIan Rogers        "BriefDescription": "Thread cycles when thread is not in halt state",
1005362e4d1SIan Rogers        "EventCode": "0x3c",
1015362e4d1SIan Rogers        "EventName": "CPU_CLK_UNHALTED.THREAD_P",
102*591530c0SIan Rogers        "PublicDescription": "This is an architectural event that counts the number of thread cycles while the thread is not in a halt state. The thread enters the halt state when it is running the HLT instruction. The core frequency may change from time to time due to power or thermal throttling. For this reason, this event may have a changing ratio with regards to wall clock time.",
1031ab4ef06SIan Rogers        "SampleAfterValue": "2000003",
1041ab4ef06SIan Rogers        "Unit": "cpu_core"
1051ab4ef06SIan Rogers    },
1061ab4ef06SIan Rogers    {
1075362e4d1SIan Rogers        "BriefDescription": "Fixed Counter: Counts the number of instructions retired",
1081ab4ef06SIan Rogers        "EventName": "INST_RETIRED.ANY",
1091ab4ef06SIan Rogers        "PEBS": "1",
1105362e4d1SIan Rogers        "SampleAfterValue": "2000003",
1115362e4d1SIan Rogers        "UMask": "0x1",
1125362e4d1SIan Rogers        "Unit": "cpu_atom"
1135362e4d1SIan Rogers    },
1145362e4d1SIan Rogers    {
1155362e4d1SIan Rogers        "BriefDescription": "Number of instructions retired. Fixed Counter - architectural event",
1165362e4d1SIan Rogers        "EventName": "INST_RETIRED.ANY",
1175362e4d1SIan Rogers        "PEBS": "1",
118*591530c0SIan Rogers        "PublicDescription": "Counts the number of X86 instructions retired - an Architectural PerfMon event. Counting continues during hardware interrupts, traps, and inside interrupt handlers. Notes: INST_RETIRED.ANY is counted by a designated fixed counter freeing up programmable counters to count other events. INST_RETIRED.ANY_P is counted by a programmable counter.",
1191ab4ef06SIan Rogers        "SampleAfterValue": "2000003",
1201ab4ef06SIan Rogers        "UMask": "0x1",
1211ab4ef06SIan Rogers        "Unit": "cpu_core"
1221ab4ef06SIan Rogers    },
1231ab4ef06SIan Rogers    {
1245362e4d1SIan Rogers        "BriefDescription": "Counts the number of instructions retired",
1251ab4ef06SIan Rogers        "EventCode": "0xc0",
1261ab4ef06SIan Rogers        "EventName": "INST_RETIRED.ANY_P",
1271ab4ef06SIan Rogers        "PEBS": "1",
1285362e4d1SIan Rogers        "SampleAfterValue": "2000003",
1295362e4d1SIan Rogers        "Unit": "cpu_atom"
1305362e4d1SIan Rogers    },
1315362e4d1SIan Rogers    {
1325362e4d1SIan Rogers        "BriefDescription": "Number of instructions retired. General Counter - architectural event",
1335362e4d1SIan Rogers        "EventCode": "0xc0",
1345362e4d1SIan Rogers        "EventName": "INST_RETIRED.ANY_P",
1355362e4d1SIan Rogers        "PEBS": "1",
136*591530c0SIan Rogers        "PublicDescription": "Counts the number of X86 instructions retired - an Architectural PerfMon event. Counting continues during hardware interrupts, traps, and inside interrupt handlers. Notes: INST_RETIRED.ANY is counted by a designated fixed counter freeing up programmable counters to count other events. INST_RETIRED.ANY_P is counted by a programmable counter.",
1371ab4ef06SIan Rogers        "SampleAfterValue": "2000003",
1381ab4ef06SIan Rogers        "Unit": "cpu_core"
1391ab4ef06SIan Rogers    },
1401ab4ef06SIan Rogers    {
1411ab4ef06SIan Rogers        "BriefDescription": "Loads blocked due to overlapping with a preceding store that cannot be forwarded.",
1421ab4ef06SIan Rogers        "EventCode": "0x03",
1431ab4ef06SIan Rogers        "EventName": "LD_BLOCKS.STORE_FORWARD",
144*591530c0SIan Rogers        "PublicDescription": "Counts the number of times where store forwarding was prevented for a load operation. The most common case is a load blocked due to the address of memory access (partially) overlapping with a preceding uncompleted store. Note: See the table of not supported store forwards in the Optimization Guide.",
1451ab4ef06SIan Rogers        "SampleAfterValue": "100003",
1461ab4ef06SIan Rogers        "UMask": "0x82",
1471ab4ef06SIan Rogers        "Unit": "cpu_core"
1481ab4ef06SIan Rogers    },
1491ab4ef06SIan Rogers    {
150*591530c0SIan Rogers        "BriefDescription": "This event counts a subset of the Topdown Slots event that were not consumed by the back-end pipeline due to lack of back-end resources, as a result of memory subsystem delays, execution units limitations, or other conditions.",
151*591530c0SIan Rogers        "EventCode": "0xa4",
152*591530c0SIan Rogers        "EventName": "TOPDOWN.BACKEND_BOUND_SLOTS",
153*591530c0SIan Rogers        "PublicDescription": "This event counts a subset of the Topdown Slots event that were not consumed by the back-end pipeline due to lack of back-end resources, as a result of memory subsystem delays, execution units limitations, or other conditions.\nThe count is distributed among unhalted logical processors (hyper-threads) who share the same physical core, in processors that support Intel Hyper-Threading Technology. Software can use this event as the numerator for the Backend Bound metric (or top-level category) of the Top-down Microarchitecture Analysis method.",
154*591530c0SIan Rogers        "SampleAfterValue": "10000003",
155*591530c0SIan Rogers        "UMask": "0x2",
156*591530c0SIan Rogers        "Unit": "cpu_core"
157*591530c0SIan Rogers    },
158*591530c0SIan Rogers    {
1591ab4ef06SIan Rogers        "BriefDescription": "TMA slots available for an unhalted logical processor. Fixed counter - architectural event",
1601ab4ef06SIan Rogers        "EventName": "TOPDOWN.SLOTS",
161*591530c0SIan Rogers        "PublicDescription": "Number of available slots for an unhalted logical processor. The event increments by machine-width of the narrowest pipeline as employed by the Top-down Microarchitecture Analysis method (TMA). The count is distributed among unhalted logical processors (hyper-threads) who share the same physical core. Software can use this event as the denominator for the top-level metrics of the TMA method. This architectural event is counted on a designated fixed counter (Fixed Counter 3).",
1621ab4ef06SIan Rogers        "SampleAfterValue": "10000003",
1631ab4ef06SIan Rogers        "UMask": "0x4",
1641ab4ef06SIan Rogers        "Unit": "cpu_core"
1651ab4ef06SIan Rogers    },
1661ab4ef06SIan Rogers    {
1671ab4ef06SIan Rogers        "BriefDescription": "TMA slots available for an unhalted logical processor. General counter - architectural event",
1681ab4ef06SIan Rogers        "EventCode": "0xa4",
1691ab4ef06SIan Rogers        "EventName": "TOPDOWN.SLOTS_P",
170*591530c0SIan Rogers        "PublicDescription": "Counts the number of available slots for an unhalted logical processor. The event increments by machine-width of the narrowest pipeline as employed by the Top-down Microarchitecture Analysis method. The count is distributed among unhalted logical processors (hyper-threads) who share the same physical core.",
1711ab4ef06SIan Rogers        "SampleAfterValue": "10000003",
1721ab4ef06SIan Rogers        "UMask": "0x1",
1731ab4ef06SIan Rogers        "Unit": "cpu_core"
1745362e4d1SIan Rogers    },
1755362e4d1SIan Rogers    {
1765362e4d1SIan Rogers        "BriefDescription": "Counts the number of issue slots that were not consumed by the backend because allocation is stalled due to a mispredicted jump or a machine clear.",
1775362e4d1SIan Rogers        "EventCode": "0x73",
1785362e4d1SIan Rogers        "EventName": "TOPDOWN_BAD_SPECULATION.ALL",
179*591530c0SIan Rogers        "PublicDescription": "Counts the total number of issue slots that were not consumed by the backend because allocation is stalled due to a mispredicted jump or a machine clear. Only issue slots wasted due to fast nukes such as memory ordering nukes are counted. Other nukes are not accounted for. Counts all issue slots blocked during this recovery window, including relevant microcode flows, and while uops are not yet available in the instruction queue (IQ) or until an FE_BOUND event occurs besides OTHER and CISC. Also includes the issue slots that were consumed by the backend but were thrown away because they were younger than the mispredict or machine clear.",
1805362e4d1SIan Rogers        "SampleAfterValue": "1000003",
1815362e4d1SIan Rogers        "Unit": "cpu_atom"
1825362e4d1SIan Rogers    },
1835362e4d1SIan Rogers    {
1845362e4d1SIan Rogers        "BriefDescription": "Counts the number of retirement slots not consumed due to backend stalls",
1855362e4d1SIan Rogers        "EventCode": "0x74",
1865362e4d1SIan Rogers        "EventName": "TOPDOWN_BE_BOUND.ALL",
1875362e4d1SIan Rogers        "SampleAfterValue": "1000003",
1885362e4d1SIan Rogers        "Unit": "cpu_atom"
1895362e4d1SIan Rogers    },
1905362e4d1SIan Rogers    {
1915362e4d1SIan Rogers        "BriefDescription": "Counts the number of retirement slots not consumed due to front end stalls",
1925362e4d1SIan Rogers        "EventCode": "0x71",
1935362e4d1SIan Rogers        "EventName": "TOPDOWN_FE_BOUND.ALL",
1945362e4d1SIan Rogers        "SampleAfterValue": "1000003",
1955362e4d1SIan Rogers        "Unit": "cpu_atom"
1965362e4d1SIan Rogers    },
1975362e4d1SIan Rogers    {
1985362e4d1SIan Rogers        "BriefDescription": "Counts the number of consumed retirement slots.  Similar to UOPS_RETIRED.ALL",
1995362e4d1SIan Rogers        "EventCode": "0x72",
2005362e4d1SIan Rogers        "EventName": "TOPDOWN_RETIRING.ALL",
2015362e4d1SIan Rogers        "PEBS": "1",
2025362e4d1SIan Rogers        "SampleAfterValue": "1000003",
2035362e4d1SIan Rogers        "Unit": "cpu_atom"
204*591530c0SIan Rogers    },
205*591530c0SIan Rogers    {
206*591530c0SIan Rogers        "BriefDescription": "This event counts a subset of the Topdown Slots event that are utilized by operations that eventually get retired (committed) by the processor pipeline. Usually, this event positively correlates with higher performance  for example, as measured by the instructions-per-cycle metric.",
207*591530c0SIan Rogers        "EventCode": "0xc2",
208*591530c0SIan Rogers        "EventName": "UOPS_RETIRED.SLOTS",
209*591530c0SIan Rogers        "PublicDescription": "This event counts a subset of the Topdown Slots event that are utilized by operations that eventually get retired (committed) by the processor pipeline. Usually, this event positively correlates with higher performance  for example, as measured by the instructions-per-cycle metric.\nSoftware can use this event as the numerator for the Retiring metric (or top-level category) of the Top-down Microarchitecture Analysis method.",
210*591530c0SIan Rogers        "SampleAfterValue": "2000003",
211*591530c0SIan Rogers        "UMask": "0x2",
212*591530c0SIan Rogers        "Unit": "cpu_core"
2131ab4ef06SIan Rogers    }
2141ab4ef06SIan Rogers]
215