PAPI 7.1.0.0
Loading...
Searching...
No Matches
core_events.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2006 Hewlett-Packard Development Company, L.P.
3 * Contributed by Stephane Eranian <eranian@hpl.hp.com>
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a copy
6 * of this software and associated documentation files (the "Software"), to deal
7 * in the Software without restriction, including without limitation the rights
8 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9 * of the Software, and to permit persons to whom the Software is furnished to do so,
10 * subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice shall be included in all
13 * copies or substantial portions of the Software.
14 *
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
16 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
17 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
18 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
19 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
20 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 *
22 * This file is part of libpfm, a performance monitoring support library for
23 * applications on Linux.
24 */
25
26#define INTEL_CORE_MESI_UMASKS \
27 { .pme_uname = "MESI",\
28 .pme_udesc = "Any cacheline access (default)",\
29 .pme_ucode = 0xf\
30 },\
31 { .pme_uname = "I_STATE",\
32 .pme_udesc = "Invalid cacheline",\
33 .pme_ucode = 0x1\
34 },\
35 { .pme_uname = "S_STATE",\
36 .pme_udesc = "Shared cacheline",\
37 .pme_ucode = 0x2\
38 },\
39 { .pme_uname = "E_STATE",\
40 .pme_udesc = "Exclusive cacheline",\
41 .pme_ucode = 0x4\
42 },\
43 { .pme_uname = "M_STATE",\
44 .pme_udesc = "Modified cacheline",\
45 .pme_ucode = 0x8\
46 }
47
48#define INTEL_CORE_SPECIFICITY_UMASKS \
49 { .pme_uname = "SELF",\
50 .pme_udesc = "This core",\
51 .pme_ucode = 0x40\
52 },\
53 { .pme_uname = "BOTH_CORES",\
54 .pme_udesc = "Both cores",\
55 .pme_ucode = 0xc0\
56 }
57
58#define INTEL_CORE_HW_PREFETCH_UMASKS \
59 { .pme_uname = "ANY",\
60 .pme_udesc = "All inclusive",\
61 .pme_ucode = 0x30\
62 },\
63 { .pme_uname = "PREFETCH",\
64 .pme_udesc = "Hardware prefetch only",\
65 .pme_ucode = 0x10\
66 }
67
68#define INTEL_CORE_AGENT_UMASKS \
69 { .pme_uname = "THIS_AGENT",\
70 .pme_udesc = "This agent",\
71 .pme_ucode = 0x00\
72 },\
73 { .pme_uname = "ALL_AGENTS",\
74 .pme_udesc = "Any agent on the bus",\
75 .pme_ucode = 0x20\
76 }
77
78
80 /*
81 * BEGIN: architected Core events
82 */
83 {.pme_name = "UNHALTED_CORE_CYCLES",
84 .pme_code = 0x003c,
85 .pme_flags = PFMLIB_CORE_FIXED1,
86 .pme_desc = "count core clock cycles whenever the clock signal on the specific core is running (not halted). Alias to event CPU_CLK_UNHALTED:CORE_P"
87 },
88 {.pme_name = "INSTRUCTIONS_RETIRED",
89 .pme_code = 0x00c0,
90 .pme_flags = PFMLIB_CORE_FIXED0,
91 .pme_desc = "count the number of instructions at retirement. Alias to event INST_RETIRED:ANY_P",
92 },
93 {.pme_name = "UNHALTED_REFERENCE_CYCLES",
94 .pme_code = 0x013c,
95 .pme_flags = PFMLIB_CORE_FIXED2_ONLY,
96 .pme_desc = "Unhalted reference cycles. Alias to event CPU_CLK_UNHALTED:REF",
97 },
98 {.pme_name = "LAST_LEVEL_CACHE_REFERENCES",
99 .pme_code = 0x4f2e,
100 .pme_desc = "count each request originating from the core to reference a cache line in the last level cache. The count may include speculation, but excludes cache line fills due to hardware prefetch. Alias to L2_RQSTS:SELF_DEMAND_MESI",
101 },
102 {.pme_name = "LAST_LEVEL_CACHE_MISSES",
103 .pme_code = 0x412e,
104 .pme_desc = "count each cache miss condition for references to the last level cache. The event count may include speculation, but excludes cache line fills due to hardware prefetch. Alias to event L2_RQSTS:SELF_DEMAND_I_STATE",
105 },
106 {.pme_name = "BRANCH_INSTRUCTIONS_RETIRED",
107 .pme_code = 0x00c4,
108 .pme_desc = "count branch instructions at retirement. Specifically, this event counts the retirement of the last micro-op of a branch instruction. Alias to event BR_INST_RETIRED:ANY",
109 },
110 {.pme_name = "MISPREDICTED_BRANCH_RETIRED",
111 .pme_code = 0x00c5,
112 .pme_desc = "count mispredicted branch instructions at retirement. Specifically, this event counts at retirement of the last micro-op of a branch instruction in the architectural path of the execution and experienced misprediction in the branch prediction hardware. Alias to BR_INST_RETIRED:MISPRED",
113 },
114 /*
115 * END: architected events
116 */
117 /*
118 * BEGIN: Core 2 Duo events
119 */
120 { .pme_name = "RS_UOPS_DISPATCHED_CYCLES",
121 .pme_code = 0xa1,
122 .pme_flags = PFMLIB_CORE_PMC0,
123 .pme_desc = "Cycles micro-ops dispatched for execution",
124 .pme_umasks = {
125 { .pme_uname = "PORT_0",
126 .pme_udesc = "on port 0",
127 .pme_ucode = 0x1
128 },
129 { .pme_uname = "PORT_1",
130 .pme_udesc = "on port 1",
131 .pme_ucode = 0x2
132 },
133 { .pme_uname = "PORT_2",
134 .pme_udesc = "on port 2",
135 .pme_ucode = 0x4
136 },
137 { .pme_uname = "PORT_3",
138 .pme_udesc = "on port 3",
139 .pme_ucode = 0x8
140 },
141 { .pme_uname = "PORT_4",
142 .pme_udesc = "on port 4",
143 .pme_ucode = 0x10
144 },
145 { .pme_uname = "PORT_5",
146 .pme_udesc = "on port 5",
147 .pme_ucode = 0x20
148 },
149 { .pme_uname = "ANY",
150 .pme_udesc = "on any port",
151 .pme_ucode = 0x3f
152 },
153 },
154 .pme_numasks = 7
155
156 },
157 { .pme_name = "RS_UOPS_DISPATCHED",
158 .pme_code = 0xa0,
159 .pme_desc = "Number of micro-ops dispatched for execution",
160 },
161 { .pme_name = "RS_UOPS_DISPATCHED_NONE",
162 .pme_code = 0xa0 | (1 << 23 | 1 << 24),
163 .pme_desc = "Number of of cycles in which no micro-ops is dispatched for execution",
164 },
165 { .pme_name = "LOAD_BLOCK",
166 .pme_code = 0x3,
167 .pme_flags = 0,
168 .pme_desc = "Loads blocked",
169 .pme_umasks = {
170 { .pme_uname = "STA",
171 .pme_udesc = "Loads blocked by a preceding store with unknown address",
172 .pme_ucode = 0x2
173 },
174 { .pme_uname = "STD",
175 .pme_udesc = "Loads blocked by a preceding store with unknown data",
176 .pme_ucode = 0x4
177 },
178 { .pme_uname = "OVERLAP_STORE",
179 .pme_udesc = "Loads that partially overlap an earlier store, or 4K aliased with a previous store",
180 .pme_ucode = 0x8
181 },
182 { .pme_uname = "UNTIL_RETIRE",
183 .pme_udesc = "Loads blocked until retirement",
184 .pme_ucode = 0x10
185 },
186 { .pme_uname = "L1D",
187 .pme_udesc = "Loads blocked by the L1 data cache",
188 .pme_ucode = 0x20
189 }
190 },
191 .pme_numasks = 5
192 },
193 { .pme_name = "SB_DRAIN_CYCLES",
194 .pme_code = 0x104,
195 .pme_flags = 0,
196 .pme_desc = "Cycles while stores are blocked due to store buffer drain"
197 },
198 { .pme_name = "STORE_BLOCK",
199 .pme_code = 0x4,
200 .pme_flags = 0,
201 .pme_desc = "Cycles while store is waiting",
202 .pme_umasks = {
203 { .pme_uname = "ORDER",
204 .pme_udesc = "Cycles while store is waiting for a preceding store to be globally observed",
205 .pme_ucode = 0x2
206 },
207 { .pme_uname = "SNOOP",
208 .pme_udesc = "A store is blocked due to a conflict with an external or internal snoop",
209 .pme_ucode = 0x8
210 }
211 },
212 .pme_numasks = 2
213 },
214 { .pme_name = "SEGMENT_REG_LOADS",
215 .pme_code = 0x6,
216 .pme_flags = 0,
217 .pme_desc = "Number of segment register loads"
218 },
219 { .pme_name = "SSE_PRE_EXEC",
220 .pme_code = 0x7,
221 .pme_flags = 0,
222 .pme_desc = "Streaming SIMD Extensions (SSE) Prefetch instructions executed",
223 .pme_umasks = {
224 { .pme_uname = "NTA",
225 .pme_udesc = "Streaming SIMD Extensions (SSE) Prefetch NTA instructions executed",
226 .pme_ucode = 0x0
227 },
228 { .pme_uname = "L1",
229 .pme_udesc = "Streaming SIMD Extensions (SSE) PrefetchT0 instructions executed",
230 .pme_ucode = 0x1
231 },
232 { .pme_uname = "L2",
233 .pme_udesc = "Streaming SIMD Extensions (SSE) PrefetchT1 and PrefetchT2 instructions executed",
234 .pme_ucode = 0x2
235 },
236 { .pme_uname = "STORES",
237 .pme_udesc = "Streaming SIMD Extensions (SSE) Weakly-ordered store instructions executed",
238 .pme_ucode = 0x3
239 }
240 },
241 .pme_numasks = 4
242 },
243 { .pme_name = "DTLB_MISSES",
244 .pme_code = 0x8,
245 .pme_flags = 0,
246 .pme_desc = "Memory accesses that missed the DTLB",
247 .pme_umasks = {
248 { .pme_uname = "ANY",
249 .pme_udesc = "Any memory access that missed the DTLB",
250 .pme_ucode = 0x1
251 },
252 { .pme_uname = "MISS_LD",
253 .pme_udesc = "DTLB misses due to load operations",
254 .pme_ucode = 0x2
255 },
256 { .pme_uname = "L0_MISS_LD",
257 .pme_udesc = "L0 DTLB misses due to load operations",
258 .pme_ucode = 0x4
259 },
260 { .pme_uname = "MISS_ST",
261 .pme_udesc = "DTLB misses due to store operations",
262 .pme_ucode = 0x8
263 }
264 },
265 .pme_numasks = 4
266 },
267 { .pme_name = "MEMORY_DISAMBIGUATION",
268 .pme_code = 0x9,
269 .pme_flags = 0,
270 .pme_desc = "Memory disambiguation",
271 .pme_umasks = {
272 { .pme_uname = "RESET",
273 .pme_udesc = "Memory disambiguation reset cycles",
274 .pme_ucode = 0x1
275 },
276 { .pme_uname = "SUCCESS",
277 .pme_udesc = "Number of loads that were successfully disambiguated",
278 .pme_ucode = 0x2
279 }
280 },
281 .pme_numasks = 2
282 },
283 { .pme_name = "PAGE_WALKS",
284 .pme_code = 0xc,
285 .pme_flags = 0,
286 .pme_desc = "Number of page-walks executed",
287 .pme_umasks = {
288 { .pme_uname = "COUNT",
289 .pme_udesc = "Number of page-walks executed",
290 .pme_ucode = 0x1
291 },
292 { .pme_uname = "CYCLES",
293 .pme_udesc = "Duration of page-walks in core cycles",
294 .pme_ucode = 0x2
295 }
296 },
297 .pme_numasks = 2
298 },
299 { .pme_name = "FP_COMP_OPS_EXE",
300 .pme_code = 0x10,
301 .pme_flags = PFMLIB_CORE_PMC0,
302 .pme_desc = "Floating point computational micro-ops executed"
303 },
304 { .pme_name = "FP_ASSIST",
305 .pme_code = 0x11,
306 .pme_flags = PFMLIB_CORE_PMC1,
307 .pme_desc = "Floating point assists"
308 },
309 { .pme_name = "MUL",
310 .pme_code = 0x12,
311 .pme_flags = PFMLIB_CORE_PMC1,
312 .pme_desc = "Multiply operations executed"
313 },
314 { .pme_name = "DIV",
315 .pme_code = 0x13,
316 .pme_flags = PFMLIB_CORE_PMC1,
317 .pme_desc = "Divide operations executed"
318 },
319 { .pme_name = "CYCLES_DIV_BUSY",
320 .pme_code = 0x14,
321 .pme_flags = PFMLIB_CORE_PMC0,
322 .pme_desc = "Cycles the divider is busy"
323 },
324 { .pme_name = "IDLE_DURING_DIV",
325 .pme_code = 0x18,
326 .pme_flags = PFMLIB_CORE_PMC0,
327 .pme_desc = "Cycles the divider is busy and all other execution units are idle"
328 },
329 { .pme_name = "DELAYED_BYPASS",
330 .pme_code = 0x19,
331 .pme_flags = PFMLIB_CORE_PMC1,
332 .pme_desc = "Delayed bypass",
333 .pme_umasks = {
334 { .pme_uname = "FP",
335 .pme_udesc = "Delayed bypass to FP operation",
336 .pme_ucode = 0x0
337 },
338 { .pme_uname = "SIMD",
339 .pme_udesc = "Delayed bypass to SIMD operation",
340 .pme_ucode = 0x1
341 },
342 { .pme_uname = "LOAD",
343 .pme_udesc = "Delayed bypass to load operation",
344 .pme_ucode = 0x2
345 }
346 },
347 .pme_numasks = 3
348 },
349 { .pme_name = "L2_ADS",
350 .pme_code = 0x21,
351 .pme_flags = PFMLIB_CORE_CSPEC,
352 .pme_desc = "Cycles L2 address bus is in use",
353 .pme_umasks = {
355 },
356 .pme_numasks = 2
357 },
358 { .pme_name = "L2_DBUS_BUSY_RD",
359 .pme_code = 0x23,
360 .pme_flags = PFMLIB_CORE_CSPEC,
361 .pme_desc = "Cycles the L2 transfers data to the core",
362 .pme_umasks = {
364 },
365 .pme_numasks = 2
366 },
367 { .pme_name = "L2_LINES_IN",
368 .pme_code = 0x24,
369 .pme_flags = PFMLIB_CORE_CSPEC,
370 .pme_desc = "L2 cache misses",
371 .pme_umasks = {
374 },
375 .pme_numasks = 4
376 },
377 { .pme_name = "L2_M_LINES_IN",
378 .pme_code = 0x25,
379 .pme_flags = PFMLIB_CORE_CSPEC,
380 .pme_desc = "L2 cache line modifications",
381 .pme_umasks = {
383 },
384 .pme_numasks = 2
385 },
386 { .pme_name = "L2_LINES_OUT",
387 .pme_code = 0x26,
388 .pme_flags = PFMLIB_CORE_CSPEC,
389 .pme_desc = "L2 cache lines evicted",
390 .pme_umasks = {
393 },
394 .pme_numasks = 4
395 },
396 { .pme_name = "L2_M_LINES_OUT",
397 .pme_code = 0x27,
398 .pme_flags = PFMLIB_CORE_CSPEC,
399 .pme_desc = "Modified lines evicted from the L2 cache",
400 .pme_umasks = {
403 },
404 .pme_numasks = 4
405 },
406 { .pme_name = "L2_IFETCH",
407 .pme_code = 0x28,
409 .pme_desc = "L2 cacheable instruction fetch requests",
410 .pme_umasks = {
413 },
414 .pme_numasks = 7
415 },
416 { .pme_name = "L2_LD",
417 .pme_code = 0x29,
419 .pme_desc = "L2 cache reads",
420 .pme_umasks = {
424 },
425 .pme_numasks = 9
426 },
427 { .pme_name = "L2_ST",
428 .pme_code = 0x2a,
430 .pme_desc = "L2 store requests",
431 .pme_umasks = {
434 },
435 .pme_numasks = 7
436 },
437 { .pme_name = "L2_LOCK",
438 .pme_code = 0x2b,
440 .pme_desc = "L2 locked accesses",
441 .pme_umasks = {
444 },
445 .pme_numasks = 7
446 },
447 { .pme_name = "L2_RQSTS",
448 .pme_code = 0x2e,
450 .pme_desc = "L2 cache requests",
451 .pme_umasks = {
455 },
456 .pme_numasks = 9
457 },
458 { .pme_name = "L2_REJECT_BUSQ",
459 .pme_code = 0x30,
461 .pme_desc = "Rejected L2 cache requests",
462 .pme_umasks = {
466 },
467 .pme_numasks = 9
468 },
469 { .pme_name = "L2_NO_REQ",
470 .pme_code = 0x32,
471 .pme_flags = PFMLIB_CORE_CSPEC,
472 .pme_desc = "Cycles no L2 cache requests are pending",
473 .pme_umasks = {
475 },
476 .pme_numasks = 2
477 },
478 { .pme_name = "EIST_TRANS",
479 .pme_code = 0x3a,
480 .pme_flags = 0,
481 .pme_desc = "Number of Enhanced Intel SpeedStep(R) Technology (EIST) transitions"
482 },
483 { .pme_name = "THERMAL_TRIP",
484 .pme_code = 0xc03b,
485 .pme_flags = 0,
486 .pme_desc = "Number of thermal trips"
487 },
488 { .pme_name = "CPU_CLK_UNHALTED",
489 .pme_code = 0x3c,
490 .pme_flags = PFMLIB_CORE_UMASK_NCOMBO,
491 .pme_desc = "Core cycles when core is not halted",
492 .pme_umasks = {
493 { .pme_uname = "CORE_P",
494 .pme_udesc = "Core cycles when core is not halted",
495 .pme_ucode = 0x0,
496 },
497 { .pme_uname = "REF",
498 .pme_udesc = "Reference cycles. This event is not affected by core changes such as P-states or TM2 transitions but counts at the same frequency as the time stamp counter. This event can approximate elapsed time. This event has a constant ratio with the CPU_CLK_UNHALTED:BUS event",
499 .pme_ucode = 0x1,
500 .pme_flags = PFMLIB_CORE_FIXED2_ONLY /* Can only be measured on FIXED_CTR2 */
501 },
502 { .pme_uname = "BUS",
503 .pme_udesc = "Bus cycles when core is not halted. This event can give a measurement of the elapsed time. This events has a constant ratio with CPU_CLK_UNHALTED:REF event, which is the maximum bus to processor frequency ratio",
504 .pme_ucode = 0x1,
505 },
506 { .pme_uname = "NO_OTHER",
507 .pme_udesc = "Bus cycles when core is active and the other is halted",
508 .pme_ucode = 0x2
509 }
510 },
511 .pme_numasks = 4
512 },
513 { .pme_name = "L1D_CACHE_LD",
514 .pme_code = 0x40,
515 .pme_flags = PFMLIB_CORE_MESI,
516 .pme_desc = "L1 cacheable data reads",
517 .pme_umasks = {
519 },
520 .pme_numasks = 5
521 },
522 { .pme_name = "L1D_CACHE_ST",
523 .pme_code = 0x41,
524 .pme_flags = PFMLIB_CORE_MESI,
525 .pme_desc = "L1 cacheable data writes",
526 .pme_umasks = {
528 },
529 .pme_numasks = 5
530 },
531 { .pme_name = "L1D_CACHE_LOCK",
532 .pme_code = 0x42,
533 .pme_flags = PFMLIB_CORE_MESI,
534 .pme_desc = "L1 data cacheable locked reads",
535 .pme_umasks = {
537 },
538 .pme_numasks = 5
539 },
540 { .pme_name = "L1D_ALL_REF",
541 .pme_code = 0x143,
542 .pme_flags = 0,
543 .pme_desc = "All references to the L1 data cache"
544 },
545 { .pme_name = "L1D_ALL_CACHE_REF",
546 .pme_code = 0x243,
547 .pme_flags = 0,
548 .pme_desc = "L1 Data cacheable reads and writes"
549 },
550 { .pme_name = "L1D_REPL",
551 .pme_code = 0xf45,
552 .pme_flags = 0,
553 .pme_desc = "Cache lines allocated in the L1 data cache"
554 },
555 { .pme_name = "L1D_M_REPL",
556 .pme_code = 0x46,
557 .pme_flags = 0,
558 .pme_desc = "Modified cache lines allocated in the L1 data cache"
559 },
560 { .pme_name = "L1D_M_EVICT",
561 .pme_code = 0x47,
562 .pme_flags = 0,
563 .pme_desc = "Modified cache lines evicted from the L1 data cache"
564 },
565 { .pme_name = "L1D_PEND_MISS",
566 .pme_code = 0x48,
567 .pme_flags = 0,
568 .pme_desc = "Total number of outstanding L1 data cache misses at any cycle"
569 },
570 { .pme_name = "L1D_SPLIT",
571 .pme_code = 0x49,
572 .pme_flags = 0,
573 .pme_desc = "Cache line split from L1 data cache",
574 .pme_umasks = {
575 { .pme_uname = "LOADS",
576 .pme_udesc = "Cache line split loads from the L1 data cache",
577 .pme_ucode = 0x1
578 },
579 { .pme_uname = "STORES",
580 .pme_udesc = "Cache line split stores to the L1 data cache",
581 .pme_ucode = 0x2
582 }
583 },
584 .pme_numasks = 2
585 },
586 { .pme_name = "SSE_PRE_MISS",
587 .pme_code = 0x4b,
588 .pme_flags = 0,
589 .pme_desc = "Streaming SIMD Extensions (SSE) instructions missing all cache levels",
590 .pme_umasks = {
591 { .pme_uname = "NTA",
592 .pme_udesc = "Streaming SIMD Extensions (SSE) Prefetch NTA instructions missing all cache levels",
593 .pme_ucode = 0x0
594 },
595 { .pme_uname = "L1",
596 .pme_udesc = "Streaming SIMD Extensions (SSE) PrefetchT0 instructions missing all cache levels",
597 .pme_ucode = 0x1
598 },
599 { .pme_uname = "L2",
600 .pme_udesc = "Streaming SIMD Extensions (SSE) PrefetchT1 and PrefetchT2 instructions missing all cache levels",
601 .pme_ucode = 0x2
602 },
603 },
604 .pme_numasks = 3
605 },
606 { .pme_name = "LOAD_HIT_PRE",
607 .pme_code = 0x4c,
608 .pme_flags = 0,
609 .pme_desc = "Load operations conflicting with a software prefetch to the same address"
610 },
611 { .pme_name = "L1D_PREFETCH",
612 .pme_code = 0x4e,
613 .pme_flags = 0,
614 .pme_desc = "L1 data cache prefetch",
615 .pme_umasks = {
616 { .pme_uname = "REQUESTS",
617 .pme_udesc = "L1 data cache prefetch requests",
618 .pme_ucode = 0x10
619 }
620 },
621 .pme_numasks = 1
622 },
623 { .pme_name = "BUS_REQUEST_OUTSTANDING",
624 .pme_code = 0x60,
625 .pme_flags = PFMLIB_CORE_CSPEC,
626 .pme_desc = "Number of pending full cache line read transactions on the bus occurring in each cycle",
627 .pme_umasks = {
630 },
631 .pme_numasks = 4
632 },
633 { .pme_name = "BUS_BNR_DRV",
634 .pme_code = 0x61,
635 .pme_flags = 0,
636 .pme_desc = "Number of Bus Not Ready signals asserted",
637 .pme_umasks = {
639 },
640 .pme_numasks = 2
641 },
642 { .pme_name = "BUS_DRDY_CLOCKS",
643 .pme_code = 0x62,
644 .pme_flags = 0,
645 .pme_desc = "Bus cycles when data is sent on the bus",
646 .pme_umasks = {
648 },
649 .pme_numasks = 2
650 },
651 { .pme_name = "BUS_LOCK_CLOCKS",
652 .pme_code = 0x63,
653 .pme_flags = PFMLIB_CORE_CSPEC,
654 .pme_desc = "Bus cycles when a LOCK signal is asserted",
655 .pme_umasks = {
658 },
659 .pme_numasks = 4
660 },
661 { .pme_name = "BUS_DATA_RCV",
662 .pme_code = 0x64,
663 .pme_flags = PFMLIB_CORE_CSPEC,
664 .pme_desc = "Bus cycles while processor receives data",
665 .pme_umasks = {
667 },
668 .pme_numasks = 2
669 },
670 { .pme_name = "BUS_TRANS_BRD",
671 .pme_code = 0x65,
672 .pme_flags = PFMLIB_CORE_CSPEC,
673 .pme_desc = "Burst read bus transactions",
674 .pme_umasks = {
677 },
678 .pme_numasks = 4
679 },
680 { .pme_name = "BUS_TRANS_RFO",
681 .pme_code = 0x66,
682 .pme_flags = PFMLIB_CORE_CSPEC,
683 .pme_desc = "RFO bus transactions",
684 .pme_umasks = {
687 },
688 .pme_numasks = 4
689 },
690 { .pme_name = "BUS_TRANS_WB",
691 .pme_code = 0x67,
692 .pme_flags = PFMLIB_CORE_CSPEC,
693 .pme_desc = "Explicit writeback bus transactions",
694 .pme_umasks = {
697 },
698 .pme_numasks = 4
699 },
700 { .pme_name = "BUS_TRANS_IFETCH",
701 .pme_code = 0x68,
702 .pme_flags = PFMLIB_CORE_CSPEC,
703 .pme_desc = "Instruction-fetch bus transactions",
704 .pme_umasks = {
707 },
708 .pme_numasks = 4
709 },
710 { .pme_name = "BUS_TRANS_INVAL",
711 .pme_code = 0x69,
712 .pme_flags = PFMLIB_CORE_CSPEC,
713 .pme_desc = "Invalidate bus transactions",
714 .pme_umasks = {
717 },
718 .pme_numasks = 4
719 },
720 { .pme_name = "BUS_TRANS_PWR",
721 .pme_code = 0x6a,
722 .pme_flags = PFMLIB_CORE_CSPEC,
723 .pme_desc = "Partial write bus transaction",
724 .pme_umasks = {
727 },
728 .pme_numasks = 4
729 },
730 { .pme_name = "BUS_TRANS_P",
731 .pme_code = 0x6b,
732 .pme_flags = PFMLIB_CORE_CSPEC,
733 .pme_desc = "Partial bus transactions",
734 .pme_umasks = {
737 },
738 .pme_numasks = 4
739 },
740 { .pme_name = "BUS_TRANS_IO",
741 .pme_code = 0x6c,
742 .pme_flags = PFMLIB_CORE_CSPEC,
743 .pme_desc = "IO bus transactions",
744 .pme_umasks = {
747 },
748 .pme_numasks = 4
749 },
750 { .pme_name = "BUS_TRANS_DEF",
751 .pme_code = 0x6d,
752 .pme_flags = PFMLIB_CORE_CSPEC,
753 .pme_desc = "Deferred bus transactions",
754 .pme_umasks = {
757 },
758 .pme_numasks = 4
759 },
760 { .pme_name = "BUS_TRANS_BURST",
761 .pme_code = 0x6e,
762 .pme_flags = PFMLIB_CORE_CSPEC,
763 .pme_desc = "Burst (full cache-line) bus transactions",
764 .pme_umasks = {
767 },
768 .pme_numasks = 4
769 },
770 { .pme_name = "BUS_TRANS_MEM",
771 .pme_code = 0x6f,
772 .pme_flags = PFMLIB_CORE_CSPEC,
773 .pme_desc = "Memory bus transactions",
774 .pme_umasks = {
777 },
778 .pme_numasks = 4
779 },
780 { .pme_name = "BUS_TRANS_ANY",
781 .pme_code = 0x70,
782 .pme_flags = PFMLIB_CORE_CSPEC,
783 .pme_desc = "All bus transactions",
784 .pme_umasks = {
787 },
788 .pme_numasks = 4
789 },
790 { .pme_name = "EXT_SNOOP",
791 .pme_code = 0x77,
792 .pme_flags = 0,
793 .pme_desc = "External snoops responses",
794 .pme_umasks = {
796 { .pme_uname = "ANY",
797 .pme_udesc = "Any external snoop response",
798 .pme_ucode = 0xb
799 },
800 { .pme_uname = "CLEAN",
801 .pme_udesc = "External snoop CLEAN response",
802 .pme_ucode = 0x1
803 },
804 { .pme_uname = "HIT",
805 .pme_udesc = "External snoop HIT response",
806 .pme_ucode = 0x2
807 },
808 { .pme_uname = "HITM",
809 .pme_udesc = "External snoop HITM response",
810 .pme_ucode = 0x8
811 }
812 },
813 .pme_numasks = 6
814 },
815 { .pme_name = "CMP_SNOOP",
816 .pme_code = 0x78,
817 .pme_flags = PFMLIB_CORE_CSPEC,
818 .pme_desc = "L1 data cache is snooped by other core",
819 .pme_umasks = {
821 { .pme_uname = "ANY",
822 .pme_udesc = "L1 data cache is snooped by other core",
823 .pme_ucode = 0x03
824 },
825 { .pme_uname = "SHARE",
826 .pme_udesc = "L1 data cache is snooped for sharing by other core",
827 .pme_ucode = 0x01
828 },
829 { .pme_uname = "INVALIDATE",
830 .pme_udesc = "L1 data cache is snooped for Invalidation by other core",
831 .pme_ucode = 0x02
832 }
833 },
834 .pme_numasks = 5
835 },
836 { .pme_name = "BUS_HIT_DRV",
837 .pme_code = 0x7a,
838 .pme_flags = 0,
839 .pme_desc = "HIT signal asserted",
840 .pme_umasks = {
842 },
843 .pme_numasks = 2
844 },
845 { .pme_name = "BUS_HITM_DRV",
846 .pme_code = 0x7b,
847 .pme_flags = 0,
848 .pme_desc = "HITM signal asserted",
849 .pme_umasks = {
851 },
852 .pme_numasks = 2
853 },
854 { .pme_name = "BUSQ_EMPTY",
855 .pme_code = 0x7d,
856 .pme_flags = 0,
857 .pme_desc = "Bus queue is empty",
858 .pme_umasks = {
860 },
861 .pme_numasks = 2
862 },
863 { .pme_name = "SNOOP_STALL_DRV",
864 .pme_code = 0x7e,
865 .pme_flags = PFMLIB_CORE_CSPEC,
866 .pme_desc = "Bus stalled for snoops",
867 .pme_umasks = {
870 },
871 .pme_numasks = 4
872 },
873 { .pme_name = "BUS_IO_WAIT",
874 .pme_code = 0x7f,
875 .pme_flags = PFMLIB_CORE_CSPEC,
876 .pme_desc = "IO requests waiting in the bus queue",
877 .pme_umasks = {
879 },
880 .pme_numasks = 2
881 },
882 { .pme_name = "L1I_READS",
883 .pme_code = 0x80,
884 .pme_flags = 0,
885 .pme_desc = "Instruction fetches"
886 },
887 { .pme_name = "L1I_MISSES",
888 .pme_code = 0x81,
889 .pme_flags = 0,
890 .pme_desc = "Instruction Fetch Unit misses"
891 },
892 { .pme_name = "ITLB",
893 .pme_code = 0x82,
894 .pme_flags = 0,
895 .pme_desc = "ITLB small page misses",
896 .pme_umasks = {
897 { .pme_uname = "SMALL_MISS",
898 .pme_udesc = "ITLB small page misses",
899 .pme_ucode = 0x2
900 },
901 { .pme_uname = "LARGE_MISS",
902 .pme_udesc = "ITLB large page misses",
903 .pme_ucode = 0x10
904 },
905 { .pme_uname = "FLUSH",
906 .pme_udesc = "ITLB flushes",
907 .pme_ucode = 0x40
908 },
909 { .pme_uname = "MISSES",
910 .pme_udesc = "ITLB misses",
911 .pme_ucode = 0x12
912 }
913 },
914 .pme_numasks = 4
915 },
916 { .pme_name = "INST_QUEUE",
917 .pme_code = 0x83,
918 .pme_flags = 0,
919 .pme_desc = "Cycles during which the instruction queue is full",
920 .pme_umasks = {
921 { .pme_uname = "FULL",
922 .pme_udesc = "Cycles during which the instruction queue is full",
923 .pme_ucode = 0x2
924 }
925 },
926 .pme_numasks = 1
927 },
928 { .pme_name = "CYCLES_L1I_MEM_STALLED",
929 .pme_code = 0x86,
930 .pme_flags = 0,
931 .pme_desc = "Cycles during which instruction fetches are stalled"
932 },
933 { .pme_name = "ILD_STALL",
934 .pme_code = 0x87,
935 .pme_flags = 0,
936 .pme_desc = "Instruction Length Decoder stall cycles due to a length changing prefix"
937 },
938 { .pme_name = "BR_INST_EXEC",
939 .pme_code = 0x88,
940 .pme_flags = 0,
941 .pme_desc = "Branch instructions executed"
942 },
943 { .pme_name = "BR_MISSP_EXEC",
944 .pme_code = 0x89,
945 .pme_flags = 0,
946 .pme_desc = "Mispredicted branch instructions executed"
947 },
948 { .pme_name = "BR_BAC_MISSP_EXEC",
949 .pme_code = 0x8a,
950 .pme_flags = 0,
951 .pme_desc = "Branch instructions mispredicted at decoding"
952 },
953 { .pme_name = "BR_CND_EXEC",
954 .pme_code = 0x8b,
955 .pme_flags = 0,
956 .pme_desc = "Conditional branch instructions executed"
957 },
958 { .pme_name = "BR_CND_MISSP_EXEC",
959 .pme_code = 0x8c,
960 .pme_flags = 0,
961 .pme_desc = "Mispredicted conditional branch instructions executed"
962 },
963 { .pme_name = "BR_IND_EXEC",
964 .pme_code = 0x8d,
965 .pme_flags = 0,
966 .pme_desc = "Indirect branch instructions executed"
967 },
968 { .pme_name = "BR_IND_MISSP_EXEC",
969 .pme_code = 0x8e,
970 .pme_flags = 0,
971 .pme_desc = "Mispredicted indirect branch instructions executed"
972 },
973 { .pme_name = "BR_RET_EXEC",
974 .pme_code = 0x8f,
975 .pme_flags = 0,
976 .pme_desc = "RET instructions executed"
977 },
978 { .pme_name = "BR_RET_MISSP_EXEC",
979 .pme_code = 0x90,
980 .pme_flags = 0,
981 .pme_desc = "Mispredicted RET instructions executed"
982 },
983 { .pme_name = "BR_RET_BAC_MISSP_EXEC",
984 .pme_code = 0x91,
985 .pme_flags = 0,
986 .pme_desc = "RET instructions executed mispredicted at decoding"
987 },
988 { .pme_name = "BR_CALL_EXEC",
989 .pme_code = 0x92,
990 .pme_flags = 0,
991 .pme_desc = "CALL instructions executed"
992 },
993 { .pme_name = "BR_CALL_MISSP_EXEC",
994 .pme_code = 0x93,
995 .pme_flags = 0,
996 .pme_desc = "Mispredicted CALL instructions executed"
997 },
998 { .pme_name = "BR_IND_CALL_EXEC",
999 .pme_code = 0x94,
1000 .pme_flags = 0,
1001 .pme_desc = "Indirect CALL instructions executed"
1002 },
1003 { .pme_name = "BR_TKN_BUBBLE_1",
1004 .pme_code = 0x97,
1005 .pme_flags = 0,
1006 .pme_desc = "Branch predicted taken with bubble I"
1007 },
1008 { .pme_name = "BR_TKN_BUBBLE_2",
1009 .pme_code = 0x98,
1010 .pme_flags = 0,
1011 .pme_desc = "Branch predicted taken with bubble II"
1012 },
1013#if 0
1014 /*
1015 * Looks like event 0xa1 supersedes this one
1016 */
1017 { .pme_name = "RS_UOPS_DISPATCHED",
1018 .pme_code = 0xa0,
1019 .pme_flags = 0,
1020 .pme_desc = "Micro-ops dispatched for execution"
1021 },
1022#endif
1023 { .pme_name = "MACRO_INSTS",
1024 .pme_code = 0xaa,
1025 .pme_flags = 0,
1026 .pme_desc = "Instructions decoded",
1027 .pme_umasks = {
1028 { .pme_uname = "DECODED",
1029 .pme_udesc = "Instructions decoded",
1030 .pme_ucode = 0x1
1031 },
1032 { .pme_uname = "CISC_DECODED",
1033 .pme_udesc = "CISC instructions decoded",
1034 .pme_ucode = 0x8
1035 }
1036 },
1037 .pme_numasks = 2
1038 },
1039 { .pme_name = "ESP",
1040 .pme_code = 0xab,
1041 .pme_flags = 0,
1042 .pme_desc = "ESP register content synchronization",
1043 .pme_umasks = {
1044 { .pme_uname = "SYNCH",
1045 .pme_udesc = "ESP register content synchronization",
1046 .pme_ucode = 0x1
1047 },
1048 { .pme_uname = "ADDITIONS",
1049 .pme_udesc = "ESP register automatic additions",
1050 .pme_ucode = 0x2
1051 }
1052 },
1053 .pme_numasks = 2
1054 },
1055 { .pme_name = "SIMD_UOPS_EXEC",
1056 .pme_code = 0xb0,
1057 .pme_flags = 0,
1058 .pme_desc = "SIMD micro-ops executed (excluding stores)"
1059 },
1060 { .pme_name = "SIMD_SAT_UOP_EXEC",
1061 .pme_code = 0xb1,
1062 .pme_flags = 0,
1063 .pme_desc = "SIMD saturated arithmetic micro-ops executed"
1064 },
1065 { .pme_name = "SIMD_UOP_TYPE_EXEC",
1066 .pme_code = 0xb3,
1067 .pme_flags = 0,
1068 .pme_desc = "SIMD packed multiply micro-ops executed",
1069 .pme_umasks = {
1070 { .pme_uname = "MUL",
1071 .pme_udesc = "SIMD packed multiply micro-ops executed",
1072 .pme_ucode = 0x1
1073 },
1074 { .pme_uname = "SHIFT",
1075 .pme_udesc = "SIMD packed shift micro-ops executed",
1076 .pme_ucode = 0x2
1077 },
1078 { .pme_uname = "PACK",
1079 .pme_udesc = "SIMD pack micro-ops executed",
1080 .pme_ucode = 0x4
1081 },
1082 { .pme_uname = "UNPACK",
1083 .pme_udesc = "SIMD unpack micro-ops executed",
1084 .pme_ucode = 0x8
1085 },
1086 { .pme_uname = "LOGICAL",
1087 .pme_udesc = "SIMD packed logical micro-ops executed",
1088 .pme_ucode = 0x10
1089 },
1090 { .pme_uname = "ARITHMETIC",
1091 .pme_udesc = "SIMD packed arithmetic micro-ops executed",
1092 .pme_ucode = 0x20
1093 }
1094 },
1095 .pme_numasks = 6
1096 },
1097 { .pme_name = "INST_RETIRED",
1098 .pme_code = 0xc0,
1099 .pme_desc = "Instructions retired",
1100 .pme_umasks = {
1101 { .pme_uname = "ANY_P",
1102 .pme_udesc = "Instructions retired (precise event)",
1103 .pme_ucode = 0x0,
1104 .pme_flags = PFMLIB_CORE_PEBS
1105 },
1106 { .pme_uname = "LOADS",
1107 .pme_udesc = "Instructions retired, which contain a load",
1108 .pme_ucode = 0x1
1109 },
1110 { .pme_uname = "STORES",
1111 .pme_udesc = "Instructions retired, which contain a store",
1112 .pme_ucode = 0x2
1113 },
1114 { .pme_uname = "OTHER",
1115 .pme_udesc = "Instructions retired, with no load or store operation",
1116 .pme_ucode = 0x4
1117 }
1118 },
1119 .pme_numasks = 4
1120 },
1121 { .pme_name = "X87_OPS_RETIRED",
1122 .pme_code = 0xc1,
1123 .pme_flags = 0,
1124 .pme_desc = "FXCH instructions retired",
1125 .pme_umasks = {
1126 { .pme_uname = "FXCH",
1127 .pme_udesc = "FXCH instructions retired",
1128 .pme_ucode = 0x1
1129 },
1130 { .pme_uname = "ANY",
1131 .pme_udesc = "Retired floating-point computational operations (precise event)",
1132 .pme_ucode = 0xfe,
1133 .pme_flags = PFMLIB_CORE_PEBS
1134 }
1135 },
1136 .pme_numasks = 2
1137 },
1138 { .pme_name = "UOPS_RETIRED",
1139 .pme_code = 0xc2,
1140 .pme_flags = 0,
1141 .pme_desc = "Fused load+op or load+indirect branch retired",
1142 .pme_umasks = {
1143 { .pme_uname = "LD_IND_BR",
1144 .pme_udesc = "Fused load+op or load+indirect branch retired",
1145 .pme_ucode = 0x1
1146 },
1147 { .pme_uname = "STD_STA",
1148 .pme_udesc = "Fused store address + data retired",
1149 .pme_ucode = 0x2
1150 },
1151 { .pme_uname = "MACRO_FUSION",
1152 .pme_udesc = "Retired instruction pairs fused into one micro-op",
1153 .pme_ucode = 0x4
1154 },
1155 { .pme_uname = "NON_FUSED",
1156 .pme_udesc = "Non-fused micro-ops retired",
1157 .pme_ucode = 0x8
1158 },
1159 { .pme_uname = "FUSED",
1160 .pme_udesc = "Fused micro-ops retired",
1161 .pme_ucode = 0x7
1162 },
1163 { .pme_uname = "ANY",
1164 .pme_udesc = "Micro-ops retired",
1165 .pme_ucode = 0xf
1166 }
1167 },
1168 .pme_numasks = 6
1169 },
1170 { .pme_name = "MACHINE_NUKES",
1171 .pme_code = 0xc3,
1172 .pme_flags = 0,
1173 .pme_desc = "Self-Modifying Code detected",
1174 .pme_umasks = {
1175 { .pme_uname = "SMC",
1176 .pme_udesc = "Self-Modifying Code detected",
1177 .pme_ucode = 0x1
1178 },
1179 { .pme_uname = "MEM_ORDER",
1180 .pme_udesc = "Execution pipeline restart due to memory ordering conflict or memory disambiguation misprediction",
1181 .pme_ucode = 0x4
1182 }
1183 },
1184 .pme_numasks = 2
1185 },
1186 { .pme_name = "BR_INST_RETIRED",
1187 .pme_code = 0xc4,
1188 .pme_flags = 0,
1189 .pme_desc = "Retired branch instructions",
1190 .pme_umasks = {
1191 { .pme_uname = "ANY",
1192 .pme_udesc = "Retired branch instructions",
1193 .pme_ucode = 0x0
1194 },
1195 { .pme_uname = "PRED_NOT_TAKEN",
1196 .pme_udesc = "Retired branch instructions that were predicted not-taken",
1197 .pme_ucode = 0x1
1198 },
1199 { .pme_uname = "MISPRED_NOT_TAKEN",
1200 .pme_udesc = "Retired branch instructions that were mispredicted not-taken",
1201 .pme_ucode = 0x2
1202 },
1203 { .pme_uname = "PRED_TAKEN",
1204 .pme_udesc = "Retired branch instructions that were predicted taken",
1205 .pme_ucode = 0x4
1206 },
1207 { .pme_uname = "MISPRED_TAKEN",
1208 .pme_udesc = "Retired branch instructions that were mispredicted taken",
1209 .pme_ucode = 0x8
1210 },
1211 { .pme_uname = "TAKEN",
1212 .pme_udesc = "Retired taken branch instructions",
1213 .pme_ucode = 0xc
1214 }
1215 },
1216 .pme_numasks = 6
1217 },
1218 { .pme_name = "BR_INST_RETIRED_MISPRED",
1219 .pme_code = 0x00c5,
1220 .pme_desc = "Retired mispredicted branch instructions (precise_event)",
1221 .pme_flags = PFMLIB_CORE_PEBS
1222 },
1223 { .pme_name = "CYCLES_INT_MASKED",
1224 .pme_code = 0x1c6,
1225 .pme_flags = 0,
1226 .pme_desc = "Cycles during which interrupts are disabled"
1227 },
1228 { .pme_name = "CYCLES_INT_PENDING_AND_MASKED",
1229 .pme_code = 0x2c6,
1230 .pme_flags = 0,
1231 .pme_desc = "Cycles during which interrupts are pending and disabled"
1232 },
1233 { .pme_name = "SIMD_INST_RETIRED",
1234 .pme_code = 0xc7,
1235 .pme_flags = 0,
1236 .pme_desc = "Retired Streaming SIMD Extensions (SSE) packed-single instructions",
1237 .pme_umasks = {
1238 { .pme_uname = "PACKED_SINGLE",
1239 .pme_udesc = "Retired Streaming SIMD Extensions (SSE) packed-single instructions",
1240 .pme_ucode = 0x1
1241 },
1242 { .pme_uname = "SCALAR_SINGLE",
1243 .pme_udesc = "Retired Streaming SIMD Extensions (SSE) scalar-single instructions",
1244 .pme_ucode = 0x2
1245 },
1246 { .pme_uname = "PACKED_DOUBLE",
1247 .pme_udesc = "Retired Streaming SIMD Extensions 2 (SSE2) packed-double instructions",
1248 .pme_ucode = 0x4
1249 },
1250 { .pme_uname = "SCALAR_DOUBLE",
1251 .pme_udesc = "Retired Streaming SIMD Extensions 2 (SSE2) scalar-double instructions",
1252 .pme_ucode = 0x8
1253 },
1254 { .pme_uname = "VECTOR",
1255 .pme_udesc = "Retired Streaming SIMD Extensions 2 (SSE2) vector integer instructions",
1256 .pme_ucode = 0x10
1257 },
1258 { .pme_uname = "ANY",
1259 .pme_udesc = "Retired Streaming SIMD instructions (precise event)",
1260 .pme_ucode = 0x1f,
1261 .pme_flags = PFMLIB_CORE_PEBS
1262 }
1263 },
1264 .pme_numasks = 6
1265 },
1266 { .pme_name = "HW_INT_RCV",
1267 .pme_code = 0xc8,
1268 .pme_desc = "Hardware interrupts received"
1269 },
1270 { .pme_name = "ITLB_MISS_RETIRED",
1271 .pme_code = 0xc9,
1272 .pme_flags = 0,
1273 .pme_desc = "Retired instructions that missed the ITLB"
1274 },
1275 { .pme_name = "SIMD_COMP_INST_RETIRED",
1276 .pme_code = 0xca,
1277 .pme_flags = 0,
1278 .pme_desc = "Retired computational Streaming SIMD Extensions (SSE) packed-single instructions",
1279 .pme_umasks = {
1280 { .pme_uname = "PACKED_SINGLE",
1281 .pme_udesc = "Retired computational Streaming SIMD Extensions (SSE) packed-single instructions",
1282 .pme_ucode = 0x1
1283 },
1284 { .pme_uname = "SCALAR_SINGLE",
1285 .pme_udesc = "Retired computational Streaming SIMD Extensions (SSE) scalar-single instructions",
1286 .pme_ucode = 0x2
1287 },
1288 { .pme_uname = "PACKED_DOUBLE",
1289 .pme_udesc = "Retired computational Streaming SIMD Extensions 2 (SSE2) packed-double instructions",
1290 .pme_ucode = 0x4
1291 },
1292 { .pme_uname = "SCALAR_DOUBLE",
1293 .pme_udesc = "Retired computational Streaming SIMD Extensions 2 (SSE2) scalar-double instructions",
1294 .pme_ucode = 0x8
1295 }
1296 },
1297 .pme_numasks = 4
1298 },
1299 { .pme_name = "MEM_LOAD_RETIRED",
1300 .pme_code = 0xcb,
1301 .pme_desc = "Retired loads that miss the L1 data cache",
1302 .pme_flags = PFMLIB_CORE_PMC0,
1303 .pme_umasks = {
1304 { .pme_uname = "L1D_MISS",
1305 .pme_udesc = "Retired loads that miss the L1 data cache (precise event)",
1306 .pme_ucode = 0x1,
1307 .pme_flags = PFMLIB_CORE_PEBS
1308 },
1309 { .pme_uname = "L1D_LINE_MISS",
1310 .pme_udesc = "L1 data cache line missed by retired loads (precise event)",
1311 .pme_ucode = 0x2,
1312 .pme_flags = PFMLIB_CORE_PEBS
1313 },
1314 { .pme_uname = "L2_MISS",
1315 .pme_udesc = "Retired loads that miss the L2 cache (precise event)",
1316 .pme_ucode = 0x4,
1317 .pme_flags = PFMLIB_CORE_PEBS
1318 },
1319 { .pme_uname = "L2_LINE_MISS",
1320 .pme_udesc = "L2 cache line missed by retired loads (precise event)",
1321 .pme_ucode = 0x8,
1322 .pme_flags = PFMLIB_CORE_PEBS
1323 },
1324 { .pme_uname = "DTLB_MISS",
1325 .pme_udesc = "Retired loads that miss the DTLB (precise event)",
1326 .pme_ucode = 0x10,
1327 .pme_flags = PFMLIB_CORE_PEBS
1328 }
1329 },
1330 .pme_numasks = 5
1331 },
1332 { .pme_name = "FP_MMX_TRANS",
1333 .pme_code = 0xcc,
1334 .pme_flags = PFMLIB_CORE_PEBS,
1335 .pme_desc = "Transitions from MMX (TM) Instructions to Floating Point Instructions",
1336 .pme_umasks = {
1337 { .pme_uname = "TO_FP",
1338 .pme_udesc = "Transitions from MMX (TM) Instructions to Floating Point Instructions",
1339 .pme_ucode = 0x2
1340 },
1341 { .pme_uname = "TO_MMX",
1342 .pme_udesc = "Transitions from Floating Point to MMX (TM) Instructions",
1343 .pme_ucode = 0x1
1344 }
1345 },
1346 .pme_numasks = 2
1347 },
1348 { .pme_name = "SIMD_ASSIST",
1349 .pme_code = 0xcd,
1350 .pme_flags = 0,
1351 .pme_desc = "SIMD assists invoked"
1352 },
1353 { .pme_name = "SIMD_INSTR_RETIRED",
1354 .pme_code = 0xce,
1355 .pme_flags = 0,
1356 .pme_desc = "SIMD Instructions retired"
1357 },
1358 { .pme_name = "SIMD_SAT_INSTR_RETIRED",
1359 .pme_code = 0xcf,
1360 .pme_flags = 0,
1361 .pme_desc = "Saturated arithmetic instructions retired"
1362 },
1363 { .pme_name = "RAT_STALLS",
1364 .pme_code = 0xd2,
1365 .pme_flags = 0,
1366 .pme_desc = "ROB read port stalls cycles",
1367 .pme_umasks = {
1368 { .pme_uname = "ROB_READ_PORT",
1369 .pme_udesc = "ROB read port stalls cycles",
1370 .pme_ucode = 0x1
1371 },
1372 { .pme_uname = "PARTIAL_CYCLES",
1373 .pme_udesc = "Partial register stall cycles",
1374 .pme_ucode = 0x2
1375 },
1376 { .pme_uname = "FLAGS",
1377 .pme_udesc = "Flag stall cycles",
1378 .pme_ucode = 0x4
1379 },
1380 { .pme_uname = "FPSW",
1381 .pme_udesc = "FPU status word stall",
1382 .pme_ucode = 0x8
1383 },
1384 { .pme_uname = "ANY",
1385 .pme_udesc = "All RAT stall cycles",
1386 .pme_ucode = 0xf
1387 }
1388 },
1389 .pme_numasks = 5
1390 },
1391 { .pme_name = "SEG_RENAME_STALLS",
1392 .pme_code = 0xd4,
1393 .pme_flags = 0,
1394 .pme_desc = "Segment rename stalls - ES ",
1395 .pme_umasks = {
1396 { .pme_uname = "ES",
1397 .pme_udesc = "Segment rename stalls - ES ",
1398 .pme_ucode = 0x1
1399 },
1400 { .pme_uname = "DS",
1401 .pme_udesc = "Segment rename stalls - DS",
1402 .pme_ucode = 0x2
1403 },
1404 { .pme_uname = "FS",
1405 .pme_udesc = "Segment rename stalls - FS",
1406 .pme_ucode = 0x4
1407 },
1408 { .pme_uname = "GS",
1409 .pme_udesc = "Segment rename stalls - GS",
1410 .pme_ucode = 0x8
1411 },
1412 { .pme_uname = "ANY",
1413 .pme_udesc = "Any (ES/DS/FS/GS) segment rename stall",
1414 .pme_ucode = 0xf
1415 }
1416 },
1417 .pme_numasks = 5
1418 },
1419 { .pme_name = "SEG_REG_RENAMES",
1420 .pme_code = 0xd5,
1421 .pme_flags = 0,
1422 .pme_desc = "Segment renames - ES",
1423 .pme_umasks = {
1424 { .pme_uname = "ES",
1425 .pme_udesc = "Segment renames - ES",
1426 .pme_ucode = 0x1
1427 },
1428 { .pme_uname = "DS",
1429 .pme_udesc = "Segment renames - DS",
1430 .pme_ucode = 0x2
1431 },
1432 { .pme_uname = "FS",
1433 .pme_udesc = "Segment renames - FS",
1434 .pme_ucode = 0x4
1435 },
1436 { .pme_uname = "GS",
1437 .pme_udesc = "Segment renames - GS",
1438 .pme_ucode = 0x8
1439 },
1440 { .pme_uname = "ANY",
1441 .pme_udesc = "Any (ES/DS/FS/GS) segment rename",
1442 .pme_ucode = 0xf
1443 }
1444 },
1445 .pme_numasks = 5
1446 },
1447 { .pme_name = "RESOURCE_STALLS",
1448 .pme_code = 0xdc,
1449 .pme_flags = 0,
1450 .pme_desc = "Cycles during which the ROB is full",
1451 .pme_umasks = {
1452 { .pme_uname = "ROB_FULL",
1453 .pme_udesc = "Cycles during which the ROB is full",
1454 .pme_ucode = 0x1
1455 },
1456 { .pme_uname = "RS_FULL",
1457 .pme_udesc = "Cycles during which the RS is full",
1458 .pme_ucode = 0x2
1459 },
1460 { .pme_uname = "LD_ST",
1461 .pme_udesc = "Cycles during which the pipeline has exceeded load or store limit or waiting to commit all stores",
1462 .pme_ucode = 0x4
1463 },
1464 { .pme_uname = "FPCW",
1465 .pme_udesc = "Cycles stalled due to FPU control word write",
1466 .pme_ucode = 0x8
1467 },
1468 { .pme_uname = "BR_MISS_CLEAR",
1469 .pme_udesc = "Cycles stalled due to branch misprediction",
1470 .pme_ucode = 0x10
1471 },
1472 { .pme_uname = "ANY",
1473 .pme_udesc = "Resource related stalls",
1474 .pme_ucode = 0x1f
1475 }
1476 },
1477 .pme_numasks = 6
1478 },
1479 { .pme_name = "BR_INST_DECODED",
1480 .pme_code = 0xe0,
1481 .pme_flags = 0,
1482 .pme_desc = "Branch instructions decoded"
1483 },
1484 { .pme_name = "BOGUS_BR",
1485 .pme_code = 0xe4,
1486 .pme_flags = 0,
1487 .pme_desc = "Bogus branches"
1488 },
1489 { .pme_name = "BACLEARS",
1490 .pme_code = 0xe6,
1491 .pme_flags = 0,
1492 .pme_desc = "BACLEARS asserted"
1493 },
1494 { .pme_name = "PREF_RQSTS_UP",
1495 .pme_code = 0xf0,
1496 .pme_flags = 0,
1497 .pme_desc = "Upward prefetches issued from the DPL"
1498 },
1499 { .pme_name = "PREF_RQSTS_DN",
1500 .pme_code = 0xf8,
1501 .pme_flags = 0,
1502 .pme_desc = "Downward prefetches issued from the DPL"
1503 }
1504};
1505#define PME_CORE_UNHALTED_CORE_CYCLES 0
1506#define PME_CORE_INSTRUCTIONS_RETIRED 1
1507#define PME_CORE_EVENT_COUNT (sizeof(core_pe)/sizeof(pme_core_entry_t))
#define INTEL_CORE_SPECIFICITY_UMASKS
Definition: core_events.h:48
#define INTEL_CORE_HW_PREFETCH_UMASKS
Definition: core_events.h:58
static pme_core_entry_t core_pe[]
Definition: core_events.h:79
#define INTEL_CORE_AGENT_UMASKS
Definition: core_events.h:68
#define INTEL_CORE_MESI_UMASKS
Definition: core_events.h:26
#define PFMLIB_CORE_UMASK_NCOMBO
#define PFMLIB_CORE_FIXED1
#define PFMLIB_CORE_FIXED0
#define PFMLIB_CORE_FIXED2_ONLY
#define PFMLIB_CORE_PMC1
#define PFMLIB_CORE_PEBS
#define PFMLIB_CORE_CSPEC
#define PFMLIB_CORE_PMC0
#define PFMLIB_CORE_MESI
char * pme_name