1ecd94f1bSKan Liang[
2ecd94f1bSKan Liang    {
37fcf1b89SHaiyan Song        "BriefDescription": "Cycles when divide unit is busy executing divide or square root operations. Accounts for integer and floating-point operations.",
47fcf1b89SHaiyan Song        "CounterMask": "1",
57fcf1b89SHaiyan Song        "EventCode": "0x14",
67fcf1b89SHaiyan Song        "EventName": "ARITH.DIVIDER_ACTIVE",
77fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
87fcf1b89SHaiyan Song        "UMask": "0x1"
9ecd94f1bSKan Liang    },
10ecd94f1bSKan Liang    {
11e0ddfd8dSJin Yao        "BriefDescription": "All (macro) branch instructions retired.",
12e0ddfd8dSJin Yao        "Errata": "SKL091",
13e0ddfd8dSJin Yao        "EventCode": "0xC4",
14e0ddfd8dSJin Yao        "EventName": "BR_INST_RETIRED.ALL_BRANCHES",
15e0ddfd8dSJin Yao        "PublicDescription": "Counts all (macro) branch instructions retired.",
16e0ddfd8dSJin Yao        "SampleAfterValue": "400009"
17ecd94f1bSKan Liang    },
18ecd94f1bSKan Liang    {
19e0ddfd8dSJin Yao        "BriefDescription": "All (macro) branch instructions retired.",
20e0ddfd8dSJin Yao        "Errata": "SKL091",
21e0ddfd8dSJin Yao        "EventCode": "0xC4",
22e0ddfd8dSJin Yao        "EventName": "BR_INST_RETIRED.ALL_BRANCHES_PEBS",
23e0ddfd8dSJin Yao        "PEBS": "2",
24e0ddfd8dSJin Yao        "PublicDescription": "This is a precise version of BR_INST_RETIRED.ALL_BRANCHES that counts all (macro) branch instructions retired.",
25ecd94f1bSKan Liang        "SampleAfterValue": "400009",
26e0ddfd8dSJin Yao        "UMask": "0x4"
277fcf1b89SHaiyan Song    },
287fcf1b89SHaiyan Song    {
298c61edb8SIan Rogers        "BriefDescription": "Conditional branch instructions retired. [This event is alias to BR_INST_RETIRED.CONDITIONAL]",
308c61edb8SIan Rogers        "Errata": "SKL091",
318c61edb8SIan Rogers        "EventCode": "0xC4",
328c61edb8SIan Rogers        "EventName": "BR_INST_RETIRED.COND",
338c61edb8SIan Rogers        "PublicDescription": "This event counts conditional branch instructions retired. [This event is alias to BR_INST_RETIRED.CONDITIONAL]",
348c61edb8SIan Rogers        "SampleAfterValue": "400009",
358c61edb8SIan Rogers        "UMask": "0x1"
368c61edb8SIan Rogers    },
378c61edb8SIan Rogers    {
388c61edb8SIan Rogers        "BriefDescription": "Conditional branch instructions retired. [This event is alias to BR_INST_RETIRED.COND]",
397fcf1b89SHaiyan Song        "Errata": "SKL091",
407fcf1b89SHaiyan Song        "EventCode": "0xC4",
417fcf1b89SHaiyan Song        "EventName": "BR_INST_RETIRED.CONDITIONAL",
427fcf1b89SHaiyan Song        "PEBS": "1",
438c61edb8SIan Rogers        "PublicDescription": "This event counts conditional branch instructions retired. [This event is alias to BR_INST_RETIRED.COND]",
447fcf1b89SHaiyan Song        "SampleAfterValue": "400009",
457fcf1b89SHaiyan Song        "UMask": "0x1"
467fcf1b89SHaiyan Song    },
477fcf1b89SHaiyan Song    {
48e0ddfd8dSJin Yao        "BriefDescription": "Not taken branch instructions retired.",
49e0ddfd8dSJin Yao        "Errata": "SKL091",
50e0ddfd8dSJin Yao        "EventCode": "0xc4",
51e0ddfd8dSJin Yao        "EventName": "BR_INST_RETIRED.COND_NTAKEN",
52e0ddfd8dSJin Yao        "PublicDescription": "This event counts not taken branch instructions retired.",
53e0ddfd8dSJin Yao        "SampleAfterValue": "400009",
547fcf1b89SHaiyan Song        "UMask": "0x10"
557fcf1b89SHaiyan Song    },
567fcf1b89SHaiyan Song    {
57e0ddfd8dSJin Yao        "BriefDescription": "Far branch instructions retired.",
58e0ddfd8dSJin Yao        "Errata": "SKL091",
59e0ddfd8dSJin Yao        "EventCode": "0xC4",
60e0ddfd8dSJin Yao        "EventName": "BR_INST_RETIRED.FAR_BRANCH",
61e0ddfd8dSJin Yao        "PEBS": "1",
62e0ddfd8dSJin Yao        "PublicDescription": "This event counts far branch instructions retired.",
63e0ddfd8dSJin Yao        "SampleAfterValue": "100007",
64e0ddfd8dSJin Yao        "UMask": "0x40"
65e0ddfd8dSJin Yao    },
66e0ddfd8dSJin Yao    {
67e0ddfd8dSJin Yao        "BriefDescription": "Direct and indirect near call instructions retired.",
68e0ddfd8dSJin Yao        "Errata": "SKL091",
69e0ddfd8dSJin Yao        "EventCode": "0xC4",
70e0ddfd8dSJin Yao        "EventName": "BR_INST_RETIRED.NEAR_CALL",
71e0ddfd8dSJin Yao        "PEBS": "1",
72e0ddfd8dSJin Yao        "PublicDescription": "This event counts both direct and indirect near call instructions retired.",
73e0ddfd8dSJin Yao        "SampleAfterValue": "100007",
74e0ddfd8dSJin Yao        "UMask": "0x2"
75e0ddfd8dSJin Yao    },
76e0ddfd8dSJin Yao    {
77e0ddfd8dSJin Yao        "BriefDescription": "Return instructions retired.",
78e0ddfd8dSJin Yao        "Errata": "SKL091",
79e0ddfd8dSJin Yao        "EventCode": "0xC4",
80e0ddfd8dSJin Yao        "EventName": "BR_INST_RETIRED.NEAR_RETURN",
81e0ddfd8dSJin Yao        "PEBS": "1",
82e0ddfd8dSJin Yao        "PublicDescription": "This event counts return instructions retired.",
83e0ddfd8dSJin Yao        "SampleAfterValue": "100007",
84e0ddfd8dSJin Yao        "UMask": "0x8"
85e0ddfd8dSJin Yao    },
86e0ddfd8dSJin Yao    {
87e0ddfd8dSJin Yao        "BriefDescription": "Taken branch instructions retired.",
88e0ddfd8dSJin Yao        "Errata": "SKL091",
89e0ddfd8dSJin Yao        "EventCode": "0xC4",
90e0ddfd8dSJin Yao        "EventName": "BR_INST_RETIRED.NEAR_TAKEN",
91e0ddfd8dSJin Yao        "PEBS": "1",
92e0ddfd8dSJin Yao        "PublicDescription": "This event counts taken branch instructions retired.",
93e0ddfd8dSJin Yao        "SampleAfterValue": "400009",
94e0ddfd8dSJin Yao        "UMask": "0x20"
95e0ddfd8dSJin Yao    },
96e0ddfd8dSJin Yao    {
97e0ddfd8dSJin Yao        "BriefDescription": "Not taken branch instructions retired.",
98e0ddfd8dSJin Yao        "Errata": "SKL091",
99e0ddfd8dSJin Yao        "EventCode": "0xC4",
100e0ddfd8dSJin Yao        "EventName": "BR_INST_RETIRED.NOT_TAKEN",
101e0ddfd8dSJin Yao        "PublicDescription": "This event counts not taken branch instructions retired.",
102e0ddfd8dSJin Yao        "SampleAfterValue": "400009",
103e0ddfd8dSJin Yao        "UMask": "0x10"
104e0ddfd8dSJin Yao    },
105e0ddfd8dSJin Yao    {
1066635df2fSIan Rogers        "BriefDescription": "Speculative and retired mispredicted macro conditional branches",
1076635df2fSIan Rogers        "EventCode": "0x89",
1086635df2fSIan Rogers        "EventName": "BR_MISP_EXEC.ALL_BRANCHES",
1096635df2fSIan Rogers        "PublicDescription": "This event counts both taken and not taken speculative and retired mispredicted branch instructions.",
1106635df2fSIan Rogers        "SampleAfterValue": "200003",
1116635df2fSIan Rogers        "UMask": "0xff"
1126635df2fSIan Rogers    },
1136635df2fSIan Rogers    {
1146635df2fSIan Rogers        "BriefDescription": "Speculative mispredicted indirect branches",
1156635df2fSIan Rogers        "EventCode": "0x89",
1166635df2fSIan Rogers        "EventName": "BR_MISP_EXEC.INDIRECT",
1176635df2fSIan Rogers        "PublicDescription": "Counts speculatively miss-predicted indirect branches at execution time. Counts for indirect near CALL or JMP instructions (RET excluded).",
1186635df2fSIan Rogers        "SampleAfterValue": "200003",
1196635df2fSIan Rogers        "UMask": "0xe4"
1206635df2fSIan Rogers    },
1216635df2fSIan Rogers    {
122e0ddfd8dSJin Yao        "BriefDescription": "All mispredicted macro branch instructions retired.",
123e0ddfd8dSJin Yao        "EventCode": "0xC5",
124e0ddfd8dSJin Yao        "EventName": "BR_MISP_RETIRED.ALL_BRANCHES",
125e0ddfd8dSJin Yao        "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.",
126e0ddfd8dSJin Yao        "SampleAfterValue": "400009"
1277fcf1b89SHaiyan Song    },
1287fcf1b89SHaiyan Song    {
1297fcf1b89SHaiyan Song        "BriefDescription": "Mispredicted macro branch instructions retired.",
1307fcf1b89SHaiyan Song        "EventCode": "0xC5",
1317fcf1b89SHaiyan Song        "EventName": "BR_MISP_RETIRED.ALL_BRANCHES_PEBS",
1327fcf1b89SHaiyan Song        "PEBS": "2",
1337fcf1b89SHaiyan Song        "PublicDescription": "This is a precise version of BR_MISP_RETIRED.ALL_BRANCHES that counts all mispredicted macro branch instructions retired.",
1347fcf1b89SHaiyan Song        "SampleAfterValue": "400009",
1357fcf1b89SHaiyan Song        "UMask": "0x4"
1367fcf1b89SHaiyan Song    },
1377fcf1b89SHaiyan Song    {
138e0ddfd8dSJin Yao        "BriefDescription": "Mispredicted conditional branch instructions retired.",
139e0ddfd8dSJin Yao        "EventCode": "0xC5",
140e0ddfd8dSJin Yao        "EventName": "BR_MISP_RETIRED.CONDITIONAL",
141e0ddfd8dSJin Yao        "PEBS": "1",
142e0ddfd8dSJin Yao        "PublicDescription": "This event counts mispredicted conditional branch instructions retired.",
143e0ddfd8dSJin Yao        "SampleAfterValue": "400009",
1447fcf1b89SHaiyan Song        "UMask": "0x1"
1457fcf1b89SHaiyan Song    },
1467fcf1b89SHaiyan Song    {
147e0ddfd8dSJin Yao        "BriefDescription": "Mispredicted direct and indirect near call instructions retired.",
148e0ddfd8dSJin Yao        "EventCode": "0xC5",
149e0ddfd8dSJin Yao        "EventName": "BR_MISP_RETIRED.NEAR_CALL",
150e0ddfd8dSJin Yao        "PEBS": "1",
151e0ddfd8dSJin Yao        "PublicDescription": "Counts both taken and not taken retired mispredicted direct and indirect near calls, including both register and memory indirect.",
152e0ddfd8dSJin Yao        "SampleAfterValue": "400009",
153e0ddfd8dSJin Yao        "UMask": "0x2"
154e0ddfd8dSJin Yao    },
155e0ddfd8dSJin Yao    {
156e0ddfd8dSJin Yao        "BriefDescription": "Number of near branch instructions retired that were mispredicted and taken.",
157e0ddfd8dSJin Yao        "EventCode": "0xC5",
158e0ddfd8dSJin Yao        "EventName": "BR_MISP_RETIRED.NEAR_TAKEN",
159e0ddfd8dSJin Yao        "PEBS": "1",
160e0ddfd8dSJin Yao        "SampleAfterValue": "400009",
161e0ddfd8dSJin Yao        "UMask": "0x20"
1627fcf1b89SHaiyan Song    },
1637fcf1b89SHaiyan Song    {
164f9d45862SIan Rogers        "BriefDescription": "This event counts the number of mispredicted ret instructions retired. Non PEBS",
165f9d45862SIan Rogers        "EventCode": "0xC5",
166f9d45862SIan Rogers        "EventName": "BR_MISP_RETIRED.RET",
167f9d45862SIan Rogers        "PEBS": "1",
168f9d45862SIan Rogers        "PublicDescription": "This is a non-precise version (that is, does not use PEBS) of the event that counts mispredicted return instructions retired.",
169f9d45862SIan Rogers        "SampleAfterValue": "100007",
170f9d45862SIan Rogers        "UMask": "0x8"
171f9d45862SIan Rogers    },
172f9d45862SIan Rogers    {
1737fcf1b89SHaiyan Song        "BriefDescription": "Core crystal clock cycles when this thread is unhalted and the other thread is halted.",
1747fcf1b89SHaiyan Song        "EventCode": "0x3C",
1757fcf1b89SHaiyan Song        "EventName": "CPU_CLK_THREAD_UNHALTED.ONE_THREAD_ACTIVE",
1767fcf1b89SHaiyan Song        "SampleAfterValue": "25003",
1777fcf1b89SHaiyan Song        "UMask": "0x2"
1787fcf1b89SHaiyan Song    },
1797fcf1b89SHaiyan Song    {
180e0ddfd8dSJin Yao        "BriefDescription": "Core crystal clock cycles when the thread is unhalted.",
181e0ddfd8dSJin Yao        "EventCode": "0x3C",
182e0ddfd8dSJin Yao        "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK",
183e0ddfd8dSJin Yao        "SampleAfterValue": "25003",
184e0ddfd8dSJin Yao        "UMask": "0x1"
185e0ddfd8dSJin Yao    },
186e0ddfd8dSJin Yao    {
187e0ddfd8dSJin Yao        "AnyThread": "1",
188e0ddfd8dSJin Yao        "BriefDescription": "Core crystal clock cycles when at least one thread on the physical core is unhalted.",
189e0ddfd8dSJin Yao        "EventCode": "0x3C",
190e0ddfd8dSJin Yao        "EventName": "CPU_CLK_THREAD_UNHALTED.REF_XCLK_ANY",
191e0ddfd8dSJin Yao        "SampleAfterValue": "25003",
192e0ddfd8dSJin Yao        "UMask": "0x1"
193e0ddfd8dSJin Yao    },
194e0ddfd8dSJin Yao    {
195e0ddfd8dSJin Yao        "BriefDescription": "Core crystal clock cycles when this thread is unhalted and the other thread is halted.",
196e0ddfd8dSJin Yao        "EventCode": "0x3C",
197e0ddfd8dSJin Yao        "EventName": "CPU_CLK_UNHALTED.ONE_THREAD_ACTIVE",
198e0ddfd8dSJin Yao        "SampleAfterValue": "25003",
199e0ddfd8dSJin Yao        "UMask": "0x2"
200e0ddfd8dSJin Yao    },
201e0ddfd8dSJin Yao    {
202e0ddfd8dSJin Yao        "BriefDescription": "Reference cycles when the core is not in halt state.",
203e0ddfd8dSJin Yao        "EventName": "CPU_CLK_UNHALTED.REF_TSC",
204e0ddfd8dSJin Yao        "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. This event has a constant ratio with the CPU_CLK_UNHALTED.REF_XCLK event. 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.",
205e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
206e0ddfd8dSJin Yao        "UMask": "0x3"
207e0ddfd8dSJin Yao    },
208e0ddfd8dSJin Yao    {
209e0ddfd8dSJin Yao        "BriefDescription": "Core crystal clock cycles when the thread is unhalted.",
210e0ddfd8dSJin Yao        "EventCode": "0x3C",
211e0ddfd8dSJin Yao        "EventName": "CPU_CLK_UNHALTED.REF_XCLK",
212e0ddfd8dSJin Yao        "SampleAfterValue": "25003",
213e0ddfd8dSJin Yao        "UMask": "0x1"
214e0ddfd8dSJin Yao    },
215e0ddfd8dSJin Yao    {
216e0ddfd8dSJin Yao        "AnyThread": "1",
217e0ddfd8dSJin Yao        "BriefDescription": "Core crystal clock cycles when at least one thread on the physical core is unhalted.",
218e0ddfd8dSJin Yao        "EventCode": "0x3C",
219e0ddfd8dSJin Yao        "EventName": "CPU_CLK_UNHALTED.REF_XCLK_ANY",
220e0ddfd8dSJin Yao        "SampleAfterValue": "25003",
221e0ddfd8dSJin Yao        "UMask": "0x1"
222e0ddfd8dSJin Yao    },
223e0ddfd8dSJin Yao    {
224e0ddfd8dSJin Yao        "BriefDescription": "Counts when there is a transition from ring 1, 2 or 3 to ring 0.",
225e0ddfd8dSJin Yao        "CounterMask": "1",
226e0ddfd8dSJin Yao        "EdgeDetect": "1",
227e0ddfd8dSJin Yao        "EventCode": "0x3C",
228e0ddfd8dSJin Yao        "EventName": "CPU_CLK_UNHALTED.RING0_TRANS",
229e0ddfd8dSJin Yao        "PublicDescription": "Counts when the Current Privilege Level (CPL) transitions from ring 1, 2 or 3 to ring 0 (Kernel).",
230e0ddfd8dSJin Yao        "SampleAfterValue": "100007"
231e0ddfd8dSJin Yao    },
232e0ddfd8dSJin Yao    {
233e0ddfd8dSJin Yao        "BriefDescription": "Core cycles when the thread is not in halt state",
234e0ddfd8dSJin Yao        "EventName": "CPU_CLK_UNHALTED.THREAD",
235e0ddfd8dSJin Yao        "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 four (eight when Hyperthreading is disabled) programmable counters available for other events.",
236e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
237e0ddfd8dSJin Yao        "UMask": "0x2"
238e0ddfd8dSJin Yao    },
239e0ddfd8dSJin Yao    {
240e0ddfd8dSJin Yao        "AnyThread": "1",
241e0ddfd8dSJin Yao        "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
242e0ddfd8dSJin Yao        "EventName": "CPU_CLK_UNHALTED.THREAD_ANY",
243e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
244e0ddfd8dSJin Yao        "UMask": "0x2"
245e0ddfd8dSJin Yao    },
246e0ddfd8dSJin Yao    {
247e0ddfd8dSJin Yao        "BriefDescription": "Thread cycles when thread is not in halt state",
248e0ddfd8dSJin Yao        "EventCode": "0x3C",
249e0ddfd8dSJin Yao        "EventName": "CPU_CLK_UNHALTED.THREAD_P",
250e0ddfd8dSJin Yao        "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.",
251e0ddfd8dSJin Yao        "SampleAfterValue": "2000003"
252e0ddfd8dSJin Yao    },
253e0ddfd8dSJin Yao    {
254e0ddfd8dSJin Yao        "AnyThread": "1",
255e0ddfd8dSJin Yao        "BriefDescription": "Core cycles when at least one thread on the physical core is not in halt state.",
256e0ddfd8dSJin Yao        "EventCode": "0x3C",
257e0ddfd8dSJin Yao        "EventName": "CPU_CLK_UNHALTED.THREAD_P_ANY",
258e0ddfd8dSJin Yao        "SampleAfterValue": "2000003"
259e0ddfd8dSJin Yao    },
260e0ddfd8dSJin Yao    {
261e0ddfd8dSJin Yao        "BriefDescription": "Cycles while L1 cache miss demand load is outstanding.",
262e0ddfd8dSJin Yao        "CounterMask": "8",
263e0ddfd8dSJin Yao        "EventCode": "0xA3",
264e0ddfd8dSJin Yao        "EventName": "CYCLE_ACTIVITY.CYCLES_L1D_MISS",
265e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
266e0ddfd8dSJin Yao        "UMask": "0x8"
267e0ddfd8dSJin Yao    },
268e0ddfd8dSJin Yao    {
269e0ddfd8dSJin Yao        "BriefDescription": "Cycles while L2 cache miss demand load is outstanding.",
270e0ddfd8dSJin Yao        "CounterMask": "1",
271e0ddfd8dSJin Yao        "EventCode": "0xA3",
272e0ddfd8dSJin Yao        "EventName": "CYCLE_ACTIVITY.CYCLES_L2_MISS",
273e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
274e0ddfd8dSJin Yao        "UMask": "0x1"
275e0ddfd8dSJin Yao    },
276e0ddfd8dSJin Yao    {
277e0ddfd8dSJin Yao        "BriefDescription": "Cycles while memory subsystem has an outstanding load.",
278e0ddfd8dSJin Yao        "CounterMask": "16",
279e0ddfd8dSJin Yao        "EventCode": "0xA3",
280e0ddfd8dSJin Yao        "EventName": "CYCLE_ACTIVITY.CYCLES_MEM_ANY",
281e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
282e0ddfd8dSJin Yao        "UMask": "0x10"
283e0ddfd8dSJin Yao    },
284e0ddfd8dSJin Yao    {
285e0ddfd8dSJin Yao        "BriefDescription": "Execution stalls while L1 cache miss demand load is outstanding.",
286e0ddfd8dSJin Yao        "CounterMask": "12",
287e0ddfd8dSJin Yao        "EventCode": "0xA3",
288e0ddfd8dSJin Yao        "EventName": "CYCLE_ACTIVITY.STALLS_L1D_MISS",
289e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
290e0ddfd8dSJin Yao        "UMask": "0xc"
291e0ddfd8dSJin Yao    },
292e0ddfd8dSJin Yao    {
293e0ddfd8dSJin Yao        "BriefDescription": "Execution stalls while L2 cache miss demand load is outstanding.",
294e0ddfd8dSJin Yao        "CounterMask": "5",
295e0ddfd8dSJin Yao        "EventCode": "0xA3",
296e0ddfd8dSJin Yao        "EventName": "CYCLE_ACTIVITY.STALLS_L2_MISS",
297e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
298e0ddfd8dSJin Yao        "UMask": "0x5"
299e0ddfd8dSJin Yao    },
300e0ddfd8dSJin Yao    {
301e0ddfd8dSJin Yao        "BriefDescription": "Execution stalls while memory subsystem has an outstanding load.",
302e0ddfd8dSJin Yao        "CounterMask": "20",
303e0ddfd8dSJin Yao        "EventCode": "0xA3",
304e0ddfd8dSJin Yao        "EventName": "CYCLE_ACTIVITY.STALLS_MEM_ANY",
305e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
306e0ddfd8dSJin Yao        "UMask": "0x14"
307e0ddfd8dSJin Yao    },
308e0ddfd8dSJin Yao    {
309e0ddfd8dSJin Yao        "BriefDescription": "Total execution stalls.",
310e0ddfd8dSJin Yao        "CounterMask": "4",
311e0ddfd8dSJin Yao        "EventCode": "0xA3",
312e0ddfd8dSJin Yao        "EventName": "CYCLE_ACTIVITY.STALLS_TOTAL",
313e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
314e0ddfd8dSJin Yao        "UMask": "0x4"
315e0ddfd8dSJin Yao    },
316e0ddfd8dSJin Yao    {
317e0ddfd8dSJin Yao        "BriefDescription": "Cycles total of 1 uop is executed on all ports and Reservation Station was not empty.",
318e0ddfd8dSJin Yao        "EventCode": "0xA6",
319e0ddfd8dSJin Yao        "EventName": "EXE_ACTIVITY.1_PORTS_UTIL",
320e0ddfd8dSJin Yao        "PublicDescription": "Counts cycles during which a total of 1 uop was executed on all ports and Reservation Station (RS) was not empty.",
321e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
322e0ddfd8dSJin Yao        "UMask": "0x2"
323e0ddfd8dSJin Yao    },
324e0ddfd8dSJin Yao    {
325e0ddfd8dSJin Yao        "BriefDescription": "Cycles total of 2 uops are executed on all ports and Reservation Station was not empty.",
326e0ddfd8dSJin Yao        "EventCode": "0xA6",
327e0ddfd8dSJin Yao        "EventName": "EXE_ACTIVITY.2_PORTS_UTIL",
328e0ddfd8dSJin Yao        "PublicDescription": "Counts cycles during which a total of 2 uops were executed on all ports and Reservation Station (RS) was not empty.",
329e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
330e0ddfd8dSJin Yao        "UMask": "0x4"
331e0ddfd8dSJin Yao    },
332e0ddfd8dSJin Yao    {
333e0ddfd8dSJin Yao        "BriefDescription": "Cycles total of 3 uops are executed on all ports and Reservation Station was not empty.",
334e0ddfd8dSJin Yao        "EventCode": "0xA6",
335e0ddfd8dSJin Yao        "EventName": "EXE_ACTIVITY.3_PORTS_UTIL",
336e0ddfd8dSJin Yao        "PublicDescription": "Cycles total of 3 uops are executed on all ports and Reservation Station (RS) was not empty.",
337e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
338e0ddfd8dSJin Yao        "UMask": "0x8"
339e0ddfd8dSJin Yao    },
340e0ddfd8dSJin Yao    {
341e0ddfd8dSJin Yao        "BriefDescription": "Cycles total of 4 uops are executed on all ports and Reservation Station was not empty.",
342e0ddfd8dSJin Yao        "EventCode": "0xA6",
343e0ddfd8dSJin Yao        "EventName": "EXE_ACTIVITY.4_PORTS_UTIL",
344e0ddfd8dSJin Yao        "PublicDescription": "Cycles total of 4 uops are executed on all ports and Reservation Station (RS) was not empty.",
345e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
346e0ddfd8dSJin Yao        "UMask": "0x10"
347e0ddfd8dSJin Yao    },
348e0ddfd8dSJin Yao    {
349e0ddfd8dSJin Yao        "BriefDescription": "Cycles where the Store Buffer was full and no outstanding load.",
350e0ddfd8dSJin Yao        "EventCode": "0xA6",
351e0ddfd8dSJin Yao        "EventName": "EXE_ACTIVITY.BOUND_ON_STORES",
352e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
353e0ddfd8dSJin Yao        "UMask": "0x40"
354e0ddfd8dSJin Yao    },
355e0ddfd8dSJin Yao    {
356e0ddfd8dSJin Yao        "BriefDescription": "Cycles where no uops were executed, the Reservation Station was not empty, the Store Buffer was full and there was no outstanding load.",
357e0ddfd8dSJin Yao        "EventCode": "0xA6",
358e0ddfd8dSJin Yao        "EventName": "EXE_ACTIVITY.EXE_BOUND_0_PORTS",
359e0ddfd8dSJin Yao        "PublicDescription": "Counts cycles during which no uops were executed on all ports and Reservation Station (RS) was not empty.",
360e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
361e0ddfd8dSJin Yao        "UMask": "0x1"
362e0ddfd8dSJin Yao    },
363e0ddfd8dSJin Yao    {
364*0c9e3942SIan Rogers        "BriefDescription": "Stalls caused by changing prefix length of the instruction. [This event is alias to DECODE.LCP]",
365e0ddfd8dSJin Yao        "EventCode": "0x87",
366e0ddfd8dSJin Yao        "EventName": "ILD_STALL.LCP",
367*0c9e3942SIan Rogers        "PublicDescription": "Counts cycles that the Instruction Length decoder (ILD) stalls occurred due to dynamically changing prefix length of the decoded instruction (by operand size prefix instruction 0x66, address size prefix instruction 0x67 or REX.W for Intel64). Count is proportional to the number of prefixes in a 16B-line. This may result in a three-cycle penalty for each LCP (Length changing prefix) in a 16-byte chunk. [This event is alias to DECODE.LCP]",
368e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
369e0ddfd8dSJin Yao        "UMask": "0x1"
370e0ddfd8dSJin Yao    },
371e0ddfd8dSJin Yao    {
3721ce7fc6fSIan Rogers        "BriefDescription": "Instruction decoders utilized in a cycle",
3731ce7fc6fSIan Rogers        "EventCode": "0x55",
3741ce7fc6fSIan Rogers        "EventName": "INST_DECODED.DECODERS",
3751ce7fc6fSIan Rogers        "PublicDescription": "Number of decoders utilized in a cycle when the MITE (legacy decode pipeline) fetches instructions.",
3761ce7fc6fSIan Rogers        "SampleAfterValue": "2000003",
3771ce7fc6fSIan Rogers        "UMask": "0x1"
3781ce7fc6fSIan Rogers    },
3791ce7fc6fSIan Rogers    {
380e0ddfd8dSJin Yao        "BriefDescription": "Instructions retired from execution.",
381e0ddfd8dSJin Yao        "EventName": "INST_RETIRED.ANY",
382e0ddfd8dSJin Yao        "PublicDescription": "Counts the number of instructions retired from execution. For instructions that consist of multiple micro-ops, Counts the retirement of the last micro-op of the instruction. Counting continues during hardware interrupts, traps, and inside interrupt handlers. Notes: INST_RETIRED.ANY is counted by a designated fixed counter, leaving the four (eight when Hyperthreading is disabled) programmable counters available for other events. INST_RETIRED.ANY_P is counted by a programmable counter and it is an architectural performance event. Counting: Faulting executions of GETSEC/VM entry/VM Exit/MWait will not count as retired instructions.",
383e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
384e0ddfd8dSJin Yao        "UMask": "0x1"
385e0ddfd8dSJin Yao    },
386e0ddfd8dSJin Yao    {
387e0ddfd8dSJin Yao        "BriefDescription": "Number of instructions retired. General Counter - architectural event",
388e0ddfd8dSJin Yao        "Errata": "SKL091, SKL044",
389e0ddfd8dSJin Yao        "EventCode": "0xC0",
390e0ddfd8dSJin Yao        "EventName": "INST_RETIRED.ANY_P",
391e0ddfd8dSJin Yao        "PublicDescription": "Counts the number of instructions (EOMs) retired. Counting covers macro-fused instructions individually (that is, increments by two).",
392e0ddfd8dSJin Yao        "SampleAfterValue": "2000003"
393e0ddfd8dSJin Yao    },
394e0ddfd8dSJin Yao    {
39549898fefSIan Rogers        "BriefDescription": "Number of all retired NOP instructions.",
39649898fefSIan Rogers        "Errata": "SKL091, SKL044",
39749898fefSIan Rogers        "EventCode": "0xC0",
39849898fefSIan Rogers        "EventName": "INST_RETIRED.NOP",
39949898fefSIan Rogers        "PEBS": "1",
40049898fefSIan Rogers        "SampleAfterValue": "2000003",
40149898fefSIan Rogers        "UMask": "0x2"
40249898fefSIan Rogers    },
40349898fefSIan Rogers    {
404e0ddfd8dSJin Yao        "BriefDescription": "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution",
405e0ddfd8dSJin Yao        "Errata": "SKL091, SKL044",
406e0ddfd8dSJin Yao        "EventCode": "0xC0",
407e0ddfd8dSJin Yao        "EventName": "INST_RETIRED.PREC_DIST",
408e0ddfd8dSJin Yao        "PEBS": "2",
409e0ddfd8dSJin Yao        "PublicDescription": "A version of INST_RETIRED that allows for a more unbiased distribution of samples across instructions retired. It utilizes the Precise Distribution of Instructions Retired (PDIR) feature to mitigate some bias in how retired instructions get sampled.",
410e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
411e0ddfd8dSJin Yao        "UMask": "0x1"
412e0ddfd8dSJin Yao    },
413e0ddfd8dSJin Yao    {
414e0ddfd8dSJin Yao        "BriefDescription": "Number of cycles using always true condition applied to  PEBS instructions retired event.",
415e0ddfd8dSJin Yao        "CounterMask": "10",
416e0ddfd8dSJin Yao        "Errata": "SKL091, SKL044",
417e0ddfd8dSJin Yao        "EventCode": "0xC0",
418e0ddfd8dSJin Yao        "EventName": "INST_RETIRED.TOTAL_CYCLES_PS",
419e0ddfd8dSJin Yao        "Invert": "1",
420e0ddfd8dSJin Yao        "PEBS": "2",
421e0ddfd8dSJin Yao        "PublicDescription": "Number of cycles using an always true condition applied to  PEBS instructions retired event. (inst_ret< 16)",
422e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
423e0ddfd8dSJin Yao        "UMask": "0x1"
424e0ddfd8dSJin Yao    },
425e0ddfd8dSJin Yao    {
4268c61edb8SIan Rogers        "BriefDescription": "Clears speculative count",
4278c61edb8SIan Rogers        "CounterMask": "1",
4288c61edb8SIan Rogers        "EdgeDetect": "1",
4298c61edb8SIan Rogers        "EventCode": "0x0D",
4308c61edb8SIan Rogers        "EventName": "INT_MISC.CLEARS_COUNT",
4318c61edb8SIan Rogers        "PublicDescription": "Counts the number of speculative clears due to any type of branch misprediction or machine clears",
4328c61edb8SIan Rogers        "SampleAfterValue": "2000003",
4338c61edb8SIan Rogers        "UMask": "0x1"
4348c61edb8SIan Rogers    },
4358c61edb8SIan Rogers    {
436e0ddfd8dSJin Yao        "BriefDescription": "Cycles the issue-stage is waiting for front-end to fetch from resteered path following branch misprediction or machine clear events.",
437e0ddfd8dSJin Yao        "EventCode": "0x0D",
438e0ddfd8dSJin Yao        "EventName": "INT_MISC.CLEAR_RESTEER_CYCLES",
439e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
440e0ddfd8dSJin Yao        "UMask": "0x80"
441e0ddfd8dSJin Yao    },
442e0ddfd8dSJin Yao    {
443e0ddfd8dSJin Yao        "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for this thread (e.g. misprediction or memory nuke)",
444e0ddfd8dSJin Yao        "EventCode": "0x0D",
445e0ddfd8dSJin Yao        "EventName": "INT_MISC.RECOVERY_CYCLES",
446e0ddfd8dSJin Yao        "PublicDescription": "Core cycles the Resource allocator was stalled due to recovery from an earlier branch misprediction or machine clear event.",
447e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
448e0ddfd8dSJin Yao        "UMask": "0x1"
449e0ddfd8dSJin Yao    },
450e0ddfd8dSJin Yao    {
451e0ddfd8dSJin Yao        "AnyThread": "1",
452e0ddfd8dSJin Yao        "BriefDescription": "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke).",
453e0ddfd8dSJin Yao        "EventCode": "0x0D",
454e0ddfd8dSJin Yao        "EventName": "INT_MISC.RECOVERY_CYCLES_ANY",
455e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
456e0ddfd8dSJin Yao        "UMask": "0x1"
457e0ddfd8dSJin Yao    },
458e0ddfd8dSJin Yao    {
459e0ddfd8dSJin Yao        "BriefDescription": "The number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use",
460e0ddfd8dSJin Yao        "EventCode": "0x03",
461e0ddfd8dSJin Yao        "EventName": "LD_BLOCKS.NO_SR",
462e0ddfd8dSJin Yao        "PublicDescription": "The number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use.",
463e0ddfd8dSJin Yao        "SampleAfterValue": "100003",
464e0ddfd8dSJin Yao        "UMask": "0x8"
465e0ddfd8dSJin Yao    },
466e0ddfd8dSJin Yao    {
467e0ddfd8dSJin Yao        "BriefDescription": "Loads blocked due to overlapping with a preceding store that cannot be forwarded.",
468e0ddfd8dSJin Yao        "EventCode": "0x03",
469e0ddfd8dSJin Yao        "EventName": "LD_BLOCKS.STORE_FORWARD",
470e0ddfd8dSJin Yao        "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.",
471e0ddfd8dSJin Yao        "SampleAfterValue": "100003",
472e0ddfd8dSJin Yao        "UMask": "0x2"
473e0ddfd8dSJin Yao    },
474e0ddfd8dSJin Yao    {
475e0ddfd8dSJin Yao        "BriefDescription": "False dependencies in MOB due to partial compare on address.",
476e0ddfd8dSJin Yao        "EventCode": "0x07",
477e0ddfd8dSJin Yao        "EventName": "LD_BLOCKS_PARTIAL.ADDRESS_ALIAS",
478e0ddfd8dSJin Yao        "PublicDescription": "Counts false dependencies in MOB when the partial comparison upon loose net check and dependency was resolved by the Enhanced Loose net mechanism. This may not result in high performance penalties. Loose net checks can fail when loads and stores are 4k aliased.",
479e0ddfd8dSJin Yao        "SampleAfterValue": "100003",
480e0ddfd8dSJin Yao        "UMask": "0x1"
481e0ddfd8dSJin Yao    },
482e0ddfd8dSJin Yao    {
483e0ddfd8dSJin Yao        "BriefDescription": "Demand load dispatches that hit L1D fill buffer (FB) allocated for software prefetch.",
484e0ddfd8dSJin Yao        "EventCode": "0x4C",
485e0ddfd8dSJin Yao        "EventName": "LOAD_HIT_PRE.SW_PF",
486e0ddfd8dSJin Yao        "PublicDescription": "Counts all not software-prefetch load dispatches that hit the fill buffer (FB) allocated for the software prefetch. It can also be incremented by some lock instructions. So it should only be used with profiling so that the locks can be excluded by ASM (Assembly File) inspection of the nearby instructions.",
487e0ddfd8dSJin Yao        "SampleAfterValue": "100003",
488e0ddfd8dSJin Yao        "UMask": "0x1"
489e0ddfd8dSJin Yao    },
490e0ddfd8dSJin Yao    {
491*0c9e3942SIan Rogers        "BriefDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder. [This event is alias to LSD.CYCLES_OK]",
492e0ddfd8dSJin Yao        "CounterMask": "4",
493e0ddfd8dSJin Yao        "EventCode": "0xA8",
494e0ddfd8dSJin Yao        "EventName": "LSD.CYCLES_4_UOPS",
495*0c9e3942SIan Rogers        "PublicDescription": "Counts the cycles when 4 uops are delivered by the LSD (Loop-stream detector). [This event is alias to LSD.CYCLES_OK]",
496e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
497e0ddfd8dSJin Yao        "UMask": "0x1"
498e0ddfd8dSJin Yao    },
499e0ddfd8dSJin Yao    {
500e0ddfd8dSJin Yao        "BriefDescription": "Cycles Uops delivered by the LSD, but didn't come from the decoder.",
501e0ddfd8dSJin Yao        "CounterMask": "1",
502e0ddfd8dSJin Yao        "EventCode": "0xA8",
503e0ddfd8dSJin Yao        "EventName": "LSD.CYCLES_ACTIVE",
504e0ddfd8dSJin Yao        "PublicDescription": "Counts the cycles when at least one uop is delivered by the LSD (Loop-stream detector).",
505e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
506e0ddfd8dSJin Yao        "UMask": "0x1"
507e0ddfd8dSJin Yao    },
508e0ddfd8dSJin Yao    {
509*0c9e3942SIan Rogers        "BriefDescription": "Cycles 4 Uops delivered by the LSD, but didn't come from the decoder. [This event is alias to LSD.CYCLES_4_UOPS]",
510*0c9e3942SIan Rogers        "CounterMask": "4",
511*0c9e3942SIan Rogers        "EventCode": "0xA8",
512*0c9e3942SIan Rogers        "EventName": "LSD.CYCLES_OK",
513*0c9e3942SIan Rogers        "PublicDescription": "Counts the cycles when 4 uops are delivered by the LSD (Loop-stream detector). [This event is alias to LSD.CYCLES_4_UOPS]",
514*0c9e3942SIan Rogers        "SampleAfterValue": "2000003",
515*0c9e3942SIan Rogers        "UMask": "0x1"
516*0c9e3942SIan Rogers    },
517*0c9e3942SIan Rogers    {
518e0ddfd8dSJin Yao        "BriefDescription": "Number of Uops delivered by the LSD.",
519e0ddfd8dSJin Yao        "EventCode": "0xA8",
520e0ddfd8dSJin Yao        "EventName": "LSD.UOPS",
521e0ddfd8dSJin Yao        "PublicDescription": "Number of uops delivered to the back-end by the LSD(Loop Stream Detector).",
522e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
523e0ddfd8dSJin Yao        "UMask": "0x1"
524e0ddfd8dSJin Yao    },
525e0ddfd8dSJin Yao    {
526e0ddfd8dSJin Yao        "BriefDescription": "Number of machine clears (nukes) of any type.",
527e0ddfd8dSJin Yao        "CounterMask": "1",
528e0ddfd8dSJin Yao        "EdgeDetect": "1",
529e0ddfd8dSJin Yao        "EventCode": "0xC3",
530e0ddfd8dSJin Yao        "EventName": "MACHINE_CLEARS.COUNT",
531e0ddfd8dSJin Yao        "SampleAfterValue": "100003",
532e0ddfd8dSJin Yao        "UMask": "0x1"
533e0ddfd8dSJin Yao    },
534e0ddfd8dSJin Yao    {
535e0ddfd8dSJin Yao        "BriefDescription": "Self-modifying code (SMC) detected.",
536e0ddfd8dSJin Yao        "EventCode": "0xC3",
537e0ddfd8dSJin Yao        "EventName": "MACHINE_CLEARS.SMC",
538e0ddfd8dSJin Yao        "PublicDescription": "Counts self-modifying code (SMC) detected, which causes a machine clear.",
539e0ddfd8dSJin Yao        "SampleAfterValue": "100003",
540e0ddfd8dSJin Yao        "UMask": "0x4"
541e0ddfd8dSJin Yao    },
542e0ddfd8dSJin Yao    {
543e0ddfd8dSJin Yao        "BriefDescription": "Number of times a microcode assist is invoked by HW other than FP-assist. Examples include AD (page Access Dirty) and AVX* related assists.",
544e0ddfd8dSJin Yao        "EventCode": "0xC1",
545e0ddfd8dSJin Yao        "EventName": "OTHER_ASSISTS.ANY",
546e0ddfd8dSJin Yao        "SampleAfterValue": "100003",
547e0ddfd8dSJin Yao        "UMask": "0x3f"
548e0ddfd8dSJin Yao    },
549e0ddfd8dSJin Yao    {
550e0ddfd8dSJin Yao        "BriefDescription": "Cycles where the pipeline is stalled due to serializing operations.",
551e0ddfd8dSJin Yao        "EventCode": "0x59",
552e0ddfd8dSJin Yao        "EventName": "PARTIAL_RAT_STALLS.SCOREBOARD",
553e0ddfd8dSJin Yao        "PublicDescription": "This event counts cycles during which the microcode scoreboard stalls happen.",
554e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
555e0ddfd8dSJin Yao        "UMask": "0x1"
556e0ddfd8dSJin Yao    },
557e0ddfd8dSJin Yao    {
558e0ddfd8dSJin Yao        "BriefDescription": "Resource-related stall cycles",
559e0ddfd8dSJin Yao        "EventCode": "0xa2",
560e0ddfd8dSJin Yao        "EventName": "RESOURCE_STALLS.ANY",
561e0ddfd8dSJin Yao        "PublicDescription": "Counts resource-related stall cycles.",
562e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
563e0ddfd8dSJin Yao        "UMask": "0x1"
564e0ddfd8dSJin Yao    },
565e0ddfd8dSJin Yao    {
566e0ddfd8dSJin Yao        "BriefDescription": "Cycles stalled due to no store buffers available. (not including draining form sync).",
567e0ddfd8dSJin Yao        "EventCode": "0xA2",
568e0ddfd8dSJin Yao        "EventName": "RESOURCE_STALLS.SB",
569e0ddfd8dSJin Yao        "PublicDescription": "Counts allocation stall cycles caused by the store buffer (SB) being full. This counts cycles that the pipeline back-end blocked uop delivery from the front-end.",
570e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
571e0ddfd8dSJin Yao        "UMask": "0x8"
572e0ddfd8dSJin Yao    },
573e0ddfd8dSJin Yao    {
574e0ddfd8dSJin Yao        "BriefDescription": "Increments whenever there is an update to the LBR array.",
575e0ddfd8dSJin Yao        "EventCode": "0xCC",
576e0ddfd8dSJin Yao        "EventName": "ROB_MISC_EVENTS.LBR_INSERTS",
577e0ddfd8dSJin Yao        "PublicDescription": "Increments when an entry is added to the Last Branch Record (LBR) array (or removed from the array in case of RETURNs in call stack mode). The event requires LBR enable via IA32_DEBUGCTL MSR and branch type selection via MSR_LBR_SELECT.",
578e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
579e0ddfd8dSJin Yao        "UMask": "0x20"
580e0ddfd8dSJin Yao    },
581e0ddfd8dSJin Yao    {
582e0ddfd8dSJin Yao        "BriefDescription": "Number of retired PAUSE instructions (that do not end up with a VMExit to the VMM; TSX aborted Instructions may be counted). This event is not supported on first SKL and KBL products.",
583e0ddfd8dSJin Yao        "EventCode": "0xCC",
584e0ddfd8dSJin Yao        "EventName": "ROB_MISC_EVENTS.PAUSE_INST",
585e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
586e0ddfd8dSJin Yao        "UMask": "0x40"
587e0ddfd8dSJin Yao    },
588e0ddfd8dSJin Yao    {
589e0ddfd8dSJin Yao        "BriefDescription": "Cycles when Reservation Station (RS) is empty for the thread",
590e0ddfd8dSJin Yao        "EventCode": "0x5E",
591e0ddfd8dSJin Yao        "EventName": "RS_EVENTS.EMPTY_CYCLES",
592e0ddfd8dSJin Yao        "PublicDescription": "Counts cycles during which the reservation station (RS) is empty for the thread.; Note: In ST-mode, not active thread should drive 0. This is usually caused by severely costly branch mispredictions, or allocator/FE issues.",
593e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
594e0ddfd8dSJin Yao        "UMask": "0x1"
595e0ddfd8dSJin Yao    },
596e0ddfd8dSJin Yao    {
597e0ddfd8dSJin Yao        "BriefDescription": "Counts end of periods where the Reservation Station (RS) was empty. Could be useful to precisely locate Frontend Latency Bound issues.",
598e0ddfd8dSJin Yao        "CounterMask": "1",
599e0ddfd8dSJin Yao        "EdgeDetect": "1",
600e0ddfd8dSJin Yao        "EventCode": "0x5E",
601e0ddfd8dSJin Yao        "EventName": "RS_EVENTS.EMPTY_END",
602e0ddfd8dSJin Yao        "Invert": "1",
603e0ddfd8dSJin Yao        "PublicDescription": "Counts end of periods where the Reservation Station (RS) was empty. Could be useful to precisely locate front-end Latency Bound issues.",
604e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
605e0ddfd8dSJin Yao        "UMask": "0x1"
6067fcf1b89SHaiyan Song    },
6077fcf1b89SHaiyan Song    {
6087fcf1b89SHaiyan Song        "BriefDescription": "Cycles per thread when uops are executed in port 0",
6097fcf1b89SHaiyan Song        "EventCode": "0xA1",
6107fcf1b89SHaiyan Song        "EventName": "UOPS_DISPATCHED_PORT.PORT_0",
6117fcf1b89SHaiyan Song        "PublicDescription": "Counts, on the per-thread basis, cycles during which at least one uop is dispatched from the Reservation Station (RS) to port 0.",
6127fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
6137fcf1b89SHaiyan Song        "UMask": "0x1"
6147fcf1b89SHaiyan Song    },
6157fcf1b89SHaiyan Song    {
6167fcf1b89SHaiyan Song        "BriefDescription": "Cycles per thread when uops are executed in port 1",
6177fcf1b89SHaiyan Song        "EventCode": "0xA1",
6187fcf1b89SHaiyan Song        "EventName": "UOPS_DISPATCHED_PORT.PORT_1",
6197fcf1b89SHaiyan Song        "PublicDescription": "Counts, on the per-thread basis, cycles during which at least one uop is dispatched from the Reservation Station (RS) to port 1.",
6207fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
6217fcf1b89SHaiyan Song        "UMask": "0x2"
6227fcf1b89SHaiyan Song    },
6237fcf1b89SHaiyan Song    {
6247fcf1b89SHaiyan Song        "BriefDescription": "Cycles per thread when uops are executed in port 2",
6257fcf1b89SHaiyan Song        "EventCode": "0xA1",
6267fcf1b89SHaiyan Song        "EventName": "UOPS_DISPATCHED_PORT.PORT_2",
6277fcf1b89SHaiyan Song        "PublicDescription": "Counts, on the per-thread basis, cycles during which at least one uop is dispatched from the Reservation Station (RS) to port 2.",
6287fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
6297fcf1b89SHaiyan Song        "UMask": "0x4"
6307fcf1b89SHaiyan Song    },
6317fcf1b89SHaiyan Song    {
6327fcf1b89SHaiyan Song        "BriefDescription": "Cycles per thread when uops are executed in port 3",
6337fcf1b89SHaiyan Song        "EventCode": "0xA1",
6347fcf1b89SHaiyan Song        "EventName": "UOPS_DISPATCHED_PORT.PORT_3",
6357fcf1b89SHaiyan Song        "PublicDescription": "Counts, on the per-thread basis, cycles during which at least one uop is dispatched from the Reservation Station (RS) to port 3.",
6367fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
6377fcf1b89SHaiyan Song        "UMask": "0x8"
6387fcf1b89SHaiyan Song    },
6397fcf1b89SHaiyan Song    {
6407fcf1b89SHaiyan Song        "BriefDescription": "Cycles per thread when uops are executed in port 4",
6417fcf1b89SHaiyan Song        "EventCode": "0xA1",
6427fcf1b89SHaiyan Song        "EventName": "UOPS_DISPATCHED_PORT.PORT_4",
6437fcf1b89SHaiyan Song        "PublicDescription": "Counts, on the per-thread basis, cycles during which at least one uop is dispatched from the Reservation Station (RS) to port 4.",
6447fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
6457fcf1b89SHaiyan Song        "UMask": "0x10"
6467fcf1b89SHaiyan Song    },
6477fcf1b89SHaiyan Song    {
6487fcf1b89SHaiyan Song        "BriefDescription": "Cycles per thread when uops are executed in port 5",
6497fcf1b89SHaiyan Song        "EventCode": "0xA1",
6507fcf1b89SHaiyan Song        "EventName": "UOPS_DISPATCHED_PORT.PORT_5",
6517fcf1b89SHaiyan Song        "PublicDescription": "Counts, on the per-thread basis, cycles during which at least one uop is dispatched from the Reservation Station (RS) to port 5.",
6527fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
6537fcf1b89SHaiyan Song        "UMask": "0x20"
6547fcf1b89SHaiyan Song    },
6557fcf1b89SHaiyan Song    {
6567fcf1b89SHaiyan Song        "BriefDescription": "Cycles per thread when uops are executed in port 6",
6577fcf1b89SHaiyan Song        "EventCode": "0xA1",
6587fcf1b89SHaiyan Song        "EventName": "UOPS_DISPATCHED_PORT.PORT_6",
6597fcf1b89SHaiyan Song        "PublicDescription": "Counts, on the per-thread basis, cycles during which at least one uop is dispatched from the Reservation Station (RS) to port 6.",
6607fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
6617fcf1b89SHaiyan Song        "UMask": "0x40"
6627fcf1b89SHaiyan Song    },
6637fcf1b89SHaiyan Song    {
6647fcf1b89SHaiyan Song        "BriefDescription": "Cycles per thread when uops are executed in port 7",
6657fcf1b89SHaiyan Song        "EventCode": "0xA1",
6667fcf1b89SHaiyan Song        "EventName": "UOPS_DISPATCHED_PORT.PORT_7",
6677fcf1b89SHaiyan Song        "PublicDescription": "Counts, on the per-thread basis, cycles during which at least one uop is dispatched from the Reservation Station (RS) to port 7.",
6687fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
6697fcf1b89SHaiyan Song        "UMask": "0x80"
6707fcf1b89SHaiyan Song    },
6717fcf1b89SHaiyan Song    {
672e0ddfd8dSJin Yao        "BriefDescription": "Number of uops executed on the core.",
6737fcf1b89SHaiyan Song        "EventCode": "0xB1",
674e0ddfd8dSJin Yao        "EventName": "UOPS_EXECUTED.CORE",
675e0ddfd8dSJin Yao        "PublicDescription": "Number of uops executed from any thread.",
6767fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
6777fcf1b89SHaiyan Song        "UMask": "0x2"
6787fcf1b89SHaiyan Song    },
6797fcf1b89SHaiyan Song    {
680e0ddfd8dSJin Yao        "BriefDescription": "Cycles at least 1 micro-op is executed from any thread on physical core.",
681e0ddfd8dSJin Yao        "CounterMask": "1",
6827fcf1b89SHaiyan Song        "EventCode": "0xB1",
683e0ddfd8dSJin Yao        "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_1",
684e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
685e0ddfd8dSJin Yao        "UMask": "0x2"
686e0ddfd8dSJin Yao    },
687e0ddfd8dSJin Yao    {
688e0ddfd8dSJin Yao        "BriefDescription": "Cycles at least 2 micro-op is executed from any thread on physical core.",
689e0ddfd8dSJin Yao        "CounterMask": "2",
690e0ddfd8dSJin Yao        "EventCode": "0xB1",
691e0ddfd8dSJin Yao        "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_2",
692e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
693e0ddfd8dSJin Yao        "UMask": "0x2"
694e0ddfd8dSJin Yao    },
695e0ddfd8dSJin Yao    {
696e0ddfd8dSJin Yao        "BriefDescription": "Cycles at least 3 micro-op is executed from any thread on physical core.",
697e0ddfd8dSJin Yao        "CounterMask": "3",
698e0ddfd8dSJin Yao        "EventCode": "0xB1",
699e0ddfd8dSJin Yao        "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_3",
700e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
701e0ddfd8dSJin Yao        "UMask": "0x2"
702e0ddfd8dSJin Yao    },
703e0ddfd8dSJin Yao    {
704e0ddfd8dSJin Yao        "BriefDescription": "Cycles at least 4 micro-op is executed from any thread on physical core.",
705e0ddfd8dSJin Yao        "CounterMask": "4",
706e0ddfd8dSJin Yao        "EventCode": "0xB1",
707e0ddfd8dSJin Yao        "EventName": "UOPS_EXECUTED.CORE_CYCLES_GE_4",
708e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
709e0ddfd8dSJin Yao        "UMask": "0x2"
710e0ddfd8dSJin Yao    },
711e0ddfd8dSJin Yao    {
712e0ddfd8dSJin Yao        "BriefDescription": "Cycles with no micro-ops executed from any thread on physical core.",
713e0ddfd8dSJin Yao        "CounterMask": "1",
714e0ddfd8dSJin Yao        "EventCode": "0xB1",
715e0ddfd8dSJin Yao        "EventName": "UOPS_EXECUTED.CORE_CYCLES_NONE",
716e0ddfd8dSJin Yao        "Invert": "1",
717e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
718e0ddfd8dSJin Yao        "UMask": "0x2"
719e0ddfd8dSJin Yao    },
720e0ddfd8dSJin Yao    {
721e0ddfd8dSJin Yao        "BriefDescription": "Cycles where at least 1 uop was executed per-thread",
722e0ddfd8dSJin Yao        "CounterMask": "1",
723e0ddfd8dSJin Yao        "EventCode": "0xB1",
724e0ddfd8dSJin Yao        "EventName": "UOPS_EXECUTED.CYCLES_GE_1_UOP_EXEC",
725e0ddfd8dSJin Yao        "PublicDescription": "Cycles where at least 1 uop was executed per-thread.",
726e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
727e0ddfd8dSJin Yao        "UMask": "0x1"
728e0ddfd8dSJin Yao    },
729e0ddfd8dSJin Yao    {
730e0ddfd8dSJin Yao        "BriefDescription": "Cycles where at least 2 uops were executed per-thread",
731e0ddfd8dSJin Yao        "CounterMask": "2",
732e0ddfd8dSJin Yao        "EventCode": "0xB1",
733e0ddfd8dSJin Yao        "EventName": "UOPS_EXECUTED.CYCLES_GE_2_UOPS_EXEC",
734e0ddfd8dSJin Yao        "PublicDescription": "Cycles where at least 2 uops were executed per-thread.",
7357fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
7367fcf1b89SHaiyan Song        "UMask": "0x1"
7377fcf1b89SHaiyan Song    },
7387fcf1b89SHaiyan Song    {
7397fcf1b89SHaiyan Song        "BriefDescription": "Cycles where at least 3 uops were executed per-thread",
7407fcf1b89SHaiyan Song        "CounterMask": "3",
7417fcf1b89SHaiyan Song        "EventCode": "0xB1",
7427fcf1b89SHaiyan Song        "EventName": "UOPS_EXECUTED.CYCLES_GE_3_UOPS_EXEC",
7437fcf1b89SHaiyan Song        "PublicDescription": "Cycles where at least 3 uops were executed per-thread.",
7447fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
7457fcf1b89SHaiyan Song        "UMask": "0x1"
7467fcf1b89SHaiyan Song    },
7477fcf1b89SHaiyan Song    {
7487fcf1b89SHaiyan Song        "BriefDescription": "Cycles where at least 4 uops were executed per-thread",
7497fcf1b89SHaiyan Song        "CounterMask": "4",
7507fcf1b89SHaiyan Song        "EventCode": "0xB1",
7517fcf1b89SHaiyan Song        "EventName": "UOPS_EXECUTED.CYCLES_GE_4_UOPS_EXEC",
7527fcf1b89SHaiyan Song        "PublicDescription": "Cycles where at least 4 uops were executed per-thread.",
7537fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
7547fcf1b89SHaiyan Song        "UMask": "0x1"
7557fcf1b89SHaiyan Song    },
7567fcf1b89SHaiyan Song    {
757e0ddfd8dSJin Yao        "BriefDescription": "Counts number of cycles no uops were dispatched to be executed on this thread.",
758e0ddfd8dSJin Yao        "CounterMask": "1",
759e0ddfd8dSJin Yao        "EventCode": "0xB1",
760e0ddfd8dSJin Yao        "EventName": "UOPS_EXECUTED.STALL_CYCLES",
761e0ddfd8dSJin Yao        "Invert": "1",
762e0ddfd8dSJin Yao        "PublicDescription": "Counts cycles during which no uops were dispatched from the Reservation Station (RS) per thread.",
7637fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
7647fcf1b89SHaiyan Song        "UMask": "0x1"
7657fcf1b89SHaiyan Song    },
7667fcf1b89SHaiyan Song    {
767e0ddfd8dSJin Yao        "BriefDescription": "Counts the number of uops to be executed per-thread each cycle.",
768e0ddfd8dSJin Yao        "EventCode": "0xB1",
769e0ddfd8dSJin Yao        "EventName": "UOPS_EXECUTED.THREAD",
770e0ddfd8dSJin Yao        "PublicDescription": "Number of uops to be executed per-thread each cycle.",
7717fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
772e0ddfd8dSJin Yao        "UMask": "0x1"
773e0ddfd8dSJin Yao    },
774e0ddfd8dSJin Yao    {
775e0ddfd8dSJin Yao        "BriefDescription": "Counts the number of x87 uops dispatched.",
776e0ddfd8dSJin Yao        "EventCode": "0xB1",
777e0ddfd8dSJin Yao        "EventName": "UOPS_EXECUTED.X87",
778e0ddfd8dSJin Yao        "PublicDescription": "Counts the number of x87 uops executed.",
779e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
780e0ddfd8dSJin Yao        "UMask": "0x10"
781e0ddfd8dSJin Yao    },
782e0ddfd8dSJin Yao    {
783e0ddfd8dSJin Yao        "BriefDescription": "Uops that Resource Allocation Table (RAT) issues to Reservation Station (RS)",
784e0ddfd8dSJin Yao        "EventCode": "0x0E",
785e0ddfd8dSJin Yao        "EventName": "UOPS_ISSUED.ANY",
786e0ddfd8dSJin Yao        "PublicDescription": "Counts the number of uops that the Resource Allocation Table (RAT) issues to the Reservation Station (RS).",
787e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
788e0ddfd8dSJin Yao        "UMask": "0x1"
789e0ddfd8dSJin Yao    },
790e0ddfd8dSJin Yao    {
791e0ddfd8dSJin Yao        "BriefDescription": "Number of slow LEA uops being allocated. A uop is generally considered SlowLea if it has 3 sources (e.g. 2 sources + immediate) regardless if as a result of LEA instruction or not.",
792e0ddfd8dSJin Yao        "EventCode": "0x0E",
793e0ddfd8dSJin Yao        "EventName": "UOPS_ISSUED.SLOW_LEA",
794e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
795e0ddfd8dSJin Yao        "UMask": "0x20"
796e0ddfd8dSJin Yao    },
797e0ddfd8dSJin Yao    {
798e0ddfd8dSJin Yao        "BriefDescription": "Cycles when Resource Allocation Table (RAT) does not issue Uops to Reservation Station (RS) for the thread",
799e0ddfd8dSJin Yao        "CounterMask": "1",
800e0ddfd8dSJin Yao        "EventCode": "0x0E",
801e0ddfd8dSJin Yao        "EventName": "UOPS_ISSUED.STALL_CYCLES",
802e0ddfd8dSJin Yao        "Invert": "1",
803e0ddfd8dSJin Yao        "PublicDescription": "Counts cycles during which the Resource Allocation Table (RAT) does not issue any Uops to the reservation station (RS) for the current thread.",
804e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
805e0ddfd8dSJin Yao        "UMask": "0x1"
8067fcf1b89SHaiyan Song    },
8077fcf1b89SHaiyan Song    {
8087fcf1b89SHaiyan Song        "BriefDescription": "Uops inserted at issue-stage in order to preserve upper bits of vector registers.",
8097fcf1b89SHaiyan Song        "EventCode": "0x0E",
8107fcf1b89SHaiyan Song        "EventName": "UOPS_ISSUED.VECTOR_WIDTH_MISMATCH",
8117fcf1b89SHaiyan Song        "PublicDescription": "Counts the number of Blend Uops issued by the Resource Allocation Table (RAT) to the reservation station (RS) in order to preserve upper bits of vector registers. Starting with the Skylake microarchitecture, these Blend uops are needed since every Intel SSE instruction executed in Dirty Upper State needs to preserve bits 128-255 of the destination register. For more information, refer to Mixing Intel AVX and Intel SSE Code section of the Optimization Guide.",
8127fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
8137fcf1b89SHaiyan Song        "UMask": "0x2"
8147fcf1b89SHaiyan Song    },
8157fcf1b89SHaiyan Song    {
816e0ddfd8dSJin Yao        "BriefDescription": "Number of macro-fused uops retired. (non precise)",
817e0ddfd8dSJin Yao        "EventCode": "0xc2",
818e0ddfd8dSJin Yao        "EventName": "UOPS_RETIRED.MACRO_FUSED",
819e0ddfd8dSJin Yao        "PublicDescription": "Counts the number of macro-fused uops retired. (non precise)",
820e0ddfd8dSJin Yao        "SampleAfterValue": "2000003",
821e0ddfd8dSJin Yao        "UMask": "0x4"
8227fcf1b89SHaiyan Song    },
8237fcf1b89SHaiyan Song    {
824e0ddfd8dSJin Yao        "BriefDescription": "Retirement slots used.",
825e0ddfd8dSJin Yao        "EventCode": "0xC2",
826e0ddfd8dSJin Yao        "EventName": "UOPS_RETIRED.RETIRE_SLOTS",
827e0ddfd8dSJin Yao        "PublicDescription": "Counts the retirement slots used.",
8287fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
8297fcf1b89SHaiyan Song        "UMask": "0x2"
8307fcf1b89SHaiyan Song    },
8317fcf1b89SHaiyan Song    {
832e0ddfd8dSJin Yao        "BriefDescription": "Cycles without actually retired uops.",
833e0ddfd8dSJin Yao        "CounterMask": "1",
834e0ddfd8dSJin Yao        "EventCode": "0xC2",
835e0ddfd8dSJin Yao        "EventName": "UOPS_RETIRED.STALL_CYCLES",
8367fcf1b89SHaiyan Song        "Invert": "1",
837e0ddfd8dSJin Yao        "PublicDescription": "This event counts cycles without actually retired uops.",
8387fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
8397fcf1b89SHaiyan Song        "UMask": "0x2"
8407fcf1b89SHaiyan Song    },
8417fcf1b89SHaiyan Song    {
842e0ddfd8dSJin Yao        "BriefDescription": "Cycles with less than 10 actually retired uops.",
8431ce7fc6fSIan Rogers        "CounterMask": "16",
844e0ddfd8dSJin Yao        "EventCode": "0xC2",
845e0ddfd8dSJin Yao        "EventName": "UOPS_RETIRED.TOTAL_CYCLES",
846e0ddfd8dSJin Yao        "Invert": "1",
847e0ddfd8dSJin Yao        "PublicDescription": "Number of cycles using always true condition (uops_ret < 16) applied to non PEBS uops retired event.",
8487fcf1b89SHaiyan Song        "SampleAfterValue": "2000003",
8497fcf1b89SHaiyan Song        "UMask": "0x2"
850ecd94f1bSKan Liang    }
851ecd94f1bSKan Liang]
852