perfmon: python to C parser for intel CPUs
[vpp.git] / src / plugins / perfmon / perfmon_intel_bdx.c
1
2 #include <perfmon/perfmon_intel.h>
3
4 static perfmon_intel_pmc_cpu_model_t cpu_model_table[] = {
5   {0x4F, 0x00, 0},
6
7 };
8
9 static perfmon_intel_pmc_event_t event_table[] = {
10   {
11    .event_code = {0x00},
12    .umask = 0x01,
13    .event_name = "inst_retired.any",
14    },
15   {
16    .event_code = {0x00},
17    .umask = 0x02,
18    .event_name = "cpu_clk_unhalted.thread",
19    },
20   {
21    .event_code = {0x00},
22    .umask = 0x02,
23    .event_name = "cpu_clk_unhalted.thread_any",
24    },
25   {
26    .event_code = {0x00},
27    .umask = 0x03,
28    .event_name = "cpu_clk_unhalted.ref_tsc",
29    },
30   {
31    .event_code = {0x03},
32    .umask = 0x02,
33    .event_name = "ld_blocks.store_forward",
34    },
35   {
36    .event_code = {0x03},
37    .umask = 0x08,
38    .event_name = "ld_blocks.no_sr",
39    },
40   {
41    .event_code = {0x05},
42    .umask = 0x01,
43    .event_name = "misalign_mem_ref.loads",
44    },
45   {
46    .event_code = {0x05},
47    .umask = 0x02,
48    .event_name = "misalign_mem_ref.stores",
49    },
50   {
51    .event_code = {0x07},
52    .umask = 0x01,
53    .event_name = "ld_blocks_partial.address_alias",
54    },
55   {
56    .event_code = {0x08},
57    .umask = 0x01,
58    .event_name = "dtlb_load_misses.miss_causes_a_walk",
59    },
60   {
61    .event_code = {0x08},
62    .umask = 0x02,
63    .event_name = "dtlb_load_misses.walk_completed_4k",
64    },
65   {
66    .event_code = {0x08},
67    .umask = 0x04,
68    .event_name = "dtlb_load_misses.walk_completed_2m_4m",
69    },
70   {
71    .event_code = {0x08},
72    .umask = 0x08,
73    .event_name = "dtlb_load_misses.walk_completed_1g",
74    },
75   {
76    .event_code = {0x08},
77    .umask = 0x0e,
78    .event_name = "dtlb_load_misses.walk_completed",
79    },
80   {
81    .event_code = {0x08},
82    .umask = 0x10,
83    .event_name = "dtlb_load_misses.walk_duration",
84    },
85   {
86    .event_code = {0x08},
87    .umask = 0x20,
88    .event_name = "dtlb_load_misses.stlb_hit_4k",
89    },
90   {
91    .event_code = {0x08},
92    .umask = 0x40,
93    .event_name = "dtlb_load_misses.stlb_hit_2m",
94    },
95   {
96    .event_code = {0x08},
97    .umask = 0x60,
98    .event_name = "dtlb_load_misses.stlb_hit",
99    },
100   {
101    .event_code = {0x0D},
102    .umask = 0x03,
103    .event_name = "int_misc.recovery_cycles",
104    },
105   {
106    .event_code = {0x0D},
107    .umask = 0x03,
108    .event_name = "int_misc.recovery_cycles_any",
109    },
110   {
111    .event_code = {0x0D},
112    .umask = 0x08,
113    .event_name = "int_misc.rat_stall_cycles",
114    },
115   {
116    .event_code = {0x0E},
117    .umask = 0x01,
118    .event_name = "uops_issued.any",
119    },
120   {
121    .event_code = {0x0E},
122    .umask = 0x01,
123    .event_name = "uops_issued.stall_cycles",
124    },
125   {
126    .event_code = {0x0E},
127    .umask = 0x10,
128    .event_name = "uops_issued.flags_merge",
129    },
130   {
131    .event_code = {0x0E},
132    .umask = 0x20,
133    .event_name = "uops_issued.slow_lea",
134    },
135   {
136    .event_code = {0x0E},
137    .umask = 0x40,
138    .event_name = "uops_issued.single_mul",
139    },
140   {
141    .event_code = {0x14},
142    .umask = 0x01,
143    .event_name = "arith.fpu_div_active",
144    },
145   {
146    .event_code = {0x24},
147    .umask = 0x21,
148    .event_name = "l2_rqsts.demand_data_rd_miss",
149    },
150   {
151    .event_code = {0x24},
152    .umask = 0x22,
153    .event_name = "l2_rqsts.rfo_miss",
154    },
155   {
156    .event_code = {0x24},
157    .umask = 0x24,
158    .event_name = "l2_rqsts.code_rd_miss",
159    },
160   {
161    .event_code = {0x24},
162    .umask = 0x27,
163    .event_name = "l2_rqsts.all_demand_miss",
164    },
165   {
166    .event_code = {0x24},
167    .umask = 0x30,
168    .event_name = "l2_rqsts.l2_pf_miss",
169    },
170   {
171    .event_code = {0x24},
172    .umask = 0x3F,
173    .event_name = "l2_rqsts.miss",
174    },
175   {
176    .event_code = {0x24},
177    .umask = 0xc1,
178    .event_name = "l2_rqsts.demand_data_rd_hit",
179    },
180   {
181    .event_code = {0x24},
182    .umask = 0xc2,
183    .event_name = "l2_rqsts.rfo_hit",
184    },
185   {
186    .event_code = {0x24},
187    .umask = 0xc4,
188    .event_name = "l2_rqsts.code_rd_hit",
189    },
190   {
191    .event_code = {0x24},
192    .umask = 0xd0,
193    .event_name = "l2_rqsts.l2_pf_hit",
194    },
195   {
196    .event_code = {0x24},
197    .umask = 0xE1,
198    .event_name = "l2_rqsts.all_demand_data_rd",
199    },
200   {
201    .event_code = {0x24},
202    .umask = 0xE2,
203    .event_name = "l2_rqsts.all_rfo",
204    },
205   {
206    .event_code = {0x24},
207    .umask = 0xE4,
208    .event_name = "l2_rqsts.all_code_rd",
209    },
210   {
211    .event_code = {0x24},
212    .umask = 0xe7,
213    .event_name = "l2_rqsts.all_demand_references",
214    },
215   {
216    .event_code = {0x24},
217    .umask = 0xF8,
218    .event_name = "l2_rqsts.all_pf",
219    },
220   {
221    .event_code = {0x24},
222    .umask = 0xFF,
223    .event_name = "l2_rqsts.references",
224    },
225   {
226    .event_code = {0x27},
227    .umask = 0x50,
228    .event_name = "l2_demand_rqsts.wb_hit",
229    },
230   {
231    .event_code = {0x2E},
232    .umask = 0x41,
233    .event_name = "longest_lat_cache.miss",
234    },
235   {
236    .event_code = {0x2E},
237    .umask = 0x4F,
238    .event_name = "longest_lat_cache.reference",
239    },
240   {
241    .event_code = {0x3C},
242    .umask = 0x00,
243    .event_name = "cpu_clk_unhalted.thread_p",
244    },
245   {
246    .event_code = {0x3C},
247    .umask = 0x00,
248    .event_name = "cpu_clk_unhalted.thread_p_any",
249    },
250   {
251    .event_code = {0x3C},
252    .umask = 0x01,
253    .event_name = "cpu_clk_thread_unhalted.ref_xclk",
254    },
255   {
256    .event_code = {0x3C},
257    .umask = 0x01,
258    .event_name = "cpu_clk_thread_unhalted.ref_xclk_any",
259    },
260   {
261    .event_code = {0x3c},
262    .umask = 0x02,
263    .event_name = "cpu_clk_thread_unhalted.one_thread_active",
264    },
265   {
266    .event_code = {0x48},
267    .umask = 0x01,
268    .event_name = "l1d_pend_miss.pending",
269    },
270   {
271    .event_code = {0x48},
272    .umask = 0x01,
273    .event_name = "l1d_pend_miss.pending_cycles",
274    },
275   {
276    .event_code = {0x49},
277    .umask = 0x01,
278    .event_name = "dtlb_store_misses.miss_causes_a_walk",
279    },
280   {
281    .event_code = {0x49},
282    .umask = 0x02,
283    .event_name = "dtlb_store_misses.walk_completed_4k",
284    },
285   {
286    .event_code = {0x49},
287    .umask = 0x04,
288    .event_name = "dtlb_store_misses.walk_completed_2m_4m",
289    },
290   {
291    .event_code = {0x49},
292    .umask = 0x08,
293    .event_name = "dtlb_store_misses.walk_completed_1g",
294    },
295   {
296    .event_code = {0x49},
297    .umask = 0x0e,
298    .event_name = "dtlb_store_misses.walk_completed",
299    },
300   {
301    .event_code = {0x49},
302    .umask = 0x10,
303    .event_name = "dtlb_store_misses.walk_duration",
304    },
305   {
306    .event_code = {0x49},
307    .umask = 0x20,
308    .event_name = "dtlb_store_misses.stlb_hit_4k",
309    },
310   {
311    .event_code = {0x49},
312    .umask = 0x40,
313    .event_name = "dtlb_store_misses.stlb_hit_2m",
314    },
315   {
316    .event_code = {0x49},
317    .umask = 0x60,
318    .event_name = "dtlb_store_misses.stlb_hit",
319    },
320   {
321    .event_code = {0x4c},
322    .umask = 0x01,
323    .event_name = "load_hit_pre.sw_pf",
324    },
325   {
326    .event_code = {0x4C},
327    .umask = 0x02,
328    .event_name = "load_hit_pre.hw_pf",
329    },
330   {
331    .event_code = {0x4F},
332    .umask = 0x10,
333    .event_name = "ept.walk_cycles",
334    },
335   {
336    .event_code = {0x51},
337    .umask = 0x01,
338    .event_name = "l1d.replacement",
339    },
340   {
341    .event_code = {0x54},
342    .umask = 0x01,
343    .event_name = "tx_mem.abort_conflict",
344    },
345   {
346    .event_code = {0x54},
347    .umask = 0x02,
348    .event_name = "tx_mem.abort_capacity_write",
349    },
350   {
351    .event_code = {0x54},
352    .umask = 0x04,
353    .event_name = "tx_mem.abort_hle_store_to_elided_lock",
354    },
355   {
356    .event_code = {0x54},
357    .umask = 0x08,
358    .event_name = "tx_mem.abort_hle_elision_buffer_not_empty",
359    },
360   {
361    .event_code = {0x54},
362    .umask = 0x10,
363    .event_name = "tx_mem.abort_hle_elision_buffer_mismatch",
364    },
365   {
366    .event_code = {0x54},
367    .umask = 0x20,
368    .event_name = "tx_mem.abort_hle_elision_buffer_unsupported_alignment",
369    },
370   {
371    .event_code = {0x54},
372    .umask = 0x40,
373    .event_name = "tx_mem.hle_elision_buffer_full",
374    },
375   {
376    .event_code = {0x58},
377    .umask = 0x01,
378    .event_name = "move_elimination.int_eliminated",
379    },
380   {
381    .event_code = {0x58},
382    .umask = 0x02,
383    .event_name = "move_elimination.simd_eliminated",
384    },
385   {
386    .event_code = {0x58},
387    .umask = 0x04,
388    .event_name = "move_elimination.int_not_eliminated",
389    },
390   {
391    .event_code = {0x58},
392    .umask = 0x08,
393    .event_name = "move_elimination.simd_not_eliminated",
394    },
395   {
396    .event_code = {0x5C},
397    .umask = 0x01,
398    .event_name = "cpl_cycles.ring0",
399    },
400   {
401    .event_code = {0x5C},
402    .umask = 0x01,
403    .event_name = "cpl_cycles.ring0_trans",
404    },
405   {
406    .event_code = {0x5C},
407    .umask = 0x02,
408    .event_name = "cpl_cycles.ring123",
409    },
410   {
411    .event_code = {0x5d},
412    .umask = 0x01,
413    .event_name = "tx_exec.misc1",
414    },
415   {
416    .event_code = {0x5d},
417    .umask = 0x02,
418    .event_name = "tx_exec.misc2",
419    },
420   {
421    .event_code = {0x5d},
422    .umask = 0x04,
423    .event_name = "tx_exec.misc3",
424    },
425   {
426    .event_code = {0x5d},
427    .umask = 0x08,
428    .event_name = "tx_exec.misc4",
429    },
430   {
431    .event_code = {0x5d},
432    .umask = 0x10,
433    .event_name = "tx_exec.misc5",
434    },
435   {
436    .event_code = {0x5E},
437    .umask = 0x01,
438    .event_name = "rs_events.empty_cycles",
439    },
440   {
441    .event_code = {0x5E},
442    .umask = 0x01,
443    .event_name = "rs_events.empty_end",
444    },
445   {
446    .event_code = {0x60},
447    .umask = 0x01,
448    .event_name = "offcore_requests_outstanding.demand_data_rd",
449    },
450   {
451    .event_code = {0x60},
452    .umask = 0x01,
453    .event_name = "offcore_requests_outstanding.cycles_with_demand_data_rd",
454    },
455   {
456    .event_code = {0x60},
457    .umask = 0x02,
458    .event_name = "offcore_requests_outstanding.demand_code_rd",
459    },
460   {
461    .event_code = {0x60},
462    .umask = 0x04,
463    .event_name = "offcore_requests_outstanding.demand_rfo",
464    },
465   {
466    .event_code = {0x60},
467    .umask = 0x04,
468    .event_name = "offcore_requests_outstanding.cycles_with_demand_rfo",
469    },
470   {
471    .event_code = {0x60},
472    .umask = 0x08,
473    .event_name = "offcore_requests_outstanding.all_data_rd",
474    },
475   {
476    .event_code = {0x60},
477    .umask = 0x08,
478    .event_name = "offcore_requests_outstanding.cycles_with_data_rd",
479    },
480   {
481    .event_code = {0x63},
482    .umask = 0x01,
483    .event_name = "lock_cycles.split_lock_uc_lock_duration",
484    },
485   {
486    .event_code = {0x63},
487    .umask = 0x02,
488    .event_name = "lock_cycles.cache_lock_duration",
489    },
490   {
491    .event_code = {0x79},
492    .umask = 0x02,
493    .event_name = "idq.empty",
494    },
495   {
496    .event_code = {0x79},
497    .umask = 0x04,
498    .event_name = "idq.mite_uops",
499    },
500   {
501    .event_code = {0x79},
502    .umask = 0x04,
503    .event_name = "idq.mite_cycles",
504    },
505   {
506    .event_code = {0x79},
507    .umask = 0x08,
508    .event_name = "idq.dsb_uops",
509    },
510   {
511    .event_code = {0x79},
512    .umask = 0x08,
513    .event_name = "idq.dsb_cycles",
514    },
515   {
516    .event_code = {0x79},
517    .umask = 0x10,
518    .event_name = "idq.ms_dsb_uops",
519    },
520   {
521    .event_code = {0x79},
522    .umask = 0x10,
523    .event_name = "idq.ms_dsb_cycles",
524    },
525   {
526    .event_code = {0x79},
527    .umask = 0x10,
528    .event_name = "idq.ms_dsb_occur",
529    },
530   {
531    .event_code = {0x79},
532    .umask = 0x18,
533    .event_name = "idq.all_dsb_cycles_4_uops",
534    },
535   {
536    .event_code = {0x79},
537    .umask = 0x18,
538    .event_name = "idq.all_dsb_cycles_any_uops",
539    },
540   {
541    .event_code = {0x79},
542    .umask = 0x20,
543    .event_name = "idq.ms_mite_uops",
544    },
545   {
546    .event_code = {0x79},
547    .umask = 0x24,
548    .event_name = "idq.all_mite_cycles_4_uops",
549    },
550   {
551    .event_code = {0x79},
552    .umask = 0x24,
553    .event_name = "idq.all_mite_cycles_any_uops",
554    },
555   {
556    .event_code = {0x79},
557    .umask = 0x30,
558    .event_name = "idq.ms_uops",
559    },
560   {
561    .event_code = {0x79},
562    .umask = 0x30,
563    .event_name = "idq.ms_cycles",
564    },
565   {
566    .event_code = {0x79},
567    .umask = 0x30,
568    .event_name = "idq.ms_switches",
569    },
570   {
571    .event_code = {0x79},
572    .umask = 0x3C,
573    .event_name = "idq.mite_all_uops",
574    },
575   {
576    .event_code = {0x80},
577    .umask = 0x01,
578    .event_name = "icache.hit",
579    },
580   {
581    .event_code = {0x80},
582    .umask = 0x02,
583    .event_name = "icache.misses",
584    },
585   {
586    .event_code = {0x80},
587    .umask = 0x04,
588    .event_name = "icache.ifdata_stall",
589    },
590   {
591    .event_code = {0x85},
592    .umask = 0x01,
593    .event_name = "itlb_misses.miss_causes_a_walk",
594    },
595   {
596    .event_code = {0x85},
597    .umask = 0x02,
598    .event_name = "itlb_misses.walk_completed_4k",
599    },
600   {
601    .event_code = {0x85},
602    .umask = 0x04,
603    .event_name = "itlb_misses.walk_completed_2m_4m",
604    },
605   {
606    .event_code = {0x85},
607    .umask = 0x08,
608    .event_name = "itlb_misses.walk_completed_1g",
609    },
610   {
611    .event_code = {0x85},
612    .umask = 0x0e,
613    .event_name = "itlb_misses.walk_completed",
614    },
615   {
616    .event_code = {0x85},
617    .umask = 0x10,
618    .event_name = "itlb_misses.walk_duration",
619    },
620   {
621    .event_code = {0x85},
622    .umask = 0x20,
623    .event_name = "itlb_misses.stlb_hit_4k",
624    },
625   {
626    .event_code = {0x85},
627    .umask = 0x40,
628    .event_name = "itlb_misses.stlb_hit_2m",
629    },
630   {
631    .event_code = {0x85},
632    .umask = 0x60,
633    .event_name = "itlb_misses.stlb_hit",
634    },
635   {
636    .event_code = {0x87},
637    .umask = 0x01,
638    .event_name = "ild_stall.lcp",
639    },
640   {
641    .event_code = {0x88},
642    .umask = 0x41,
643    .event_name = "br_inst_exec.nontaken_conditional",
644    },
645   {
646    .event_code = {0x88},
647    .umask = 0x81,
648    .event_name = "br_inst_exec.taken_conditional",
649    },
650   {
651    .event_code = {0x88},
652    .umask = 0x82,
653    .event_name = "br_inst_exec.taken_direct_jump",
654    },
655   {
656    .event_code = {0x88},
657    .umask = 0x84,
658    .event_name = "br_inst_exec.taken_indirect_jump_non_call_ret",
659    },
660   {
661    .event_code = {0x88},
662    .umask = 0x88,
663    .event_name = "br_inst_exec.taken_indirect_near_return",
664    },
665   {
666    .event_code = {0x88},
667    .umask = 0x90,
668    .event_name = "br_inst_exec.taken_direct_near_call",
669    },
670   {
671    .event_code = {0x88},
672    .umask = 0xA0,
673    .event_name = "br_inst_exec.taken_indirect_near_call",
674    },
675   {
676    .event_code = {0x88},
677    .umask = 0xC1,
678    .event_name = "br_inst_exec.all_conditional",
679    },
680   {
681    .event_code = {0x88},
682    .umask = 0xC2,
683    .event_name = "br_inst_exec.all_direct_jmp",
684    },
685   {
686    .event_code = {0x88},
687    .umask = 0xC4,
688    .event_name = "br_inst_exec.all_indirect_jump_non_call_ret",
689    },
690   {
691    .event_code = {0x88},
692    .umask = 0xC8,
693    .event_name = "br_inst_exec.all_indirect_near_return",
694    },
695   {
696    .event_code = {0x88},
697    .umask = 0xD0,
698    .event_name = "br_inst_exec.all_direct_near_call",
699    },
700   {
701    .event_code = {0x88},
702    .umask = 0xFF,
703    .event_name = "br_inst_exec.all_branches",
704    },
705   {
706    .event_code = {0x89},
707    .umask = 0x41,
708    .event_name = "br_misp_exec.nontaken_conditional",
709    },
710   {
711    .event_code = {0x89},
712    .umask = 0x81,
713    .event_name = "br_misp_exec.taken_conditional",
714    },
715   {
716    .event_code = {0x89},
717    .umask = 0x84,
718    .event_name = "br_misp_exec.taken_indirect_jump_non_call_ret",
719    },
720   {
721    .event_code = {0x89},
722    .umask = 0x88,
723    .event_name = "br_misp_exec.taken_return_near",
724    },
725   {
726    .event_code = {0x89},
727    .umask = 0xA0,
728    .event_name = "br_misp_exec.taken_indirect_near_call",
729    },
730   {
731    .event_code = {0x89},
732    .umask = 0xC1,
733    .event_name = "br_misp_exec.all_conditional",
734    },
735   {
736    .event_code = {0x89},
737    .umask = 0xC4,
738    .event_name = "br_misp_exec.all_indirect_jump_non_call_ret",
739    },
740   {
741    .event_code = {0x89},
742    .umask = 0xFF,
743    .event_name = "br_misp_exec.all_branches",
744    },
745   {
746    .event_code = {0x9C},
747    .umask = 0x01,
748    .event_name = "idq_uops_not_delivered.core",
749    },
750   {
751    .event_code = {0x9C},
752    .umask = 0x01,
753    .event_name = "idq_uops_not_delivered.cycles_0_uops_deliv.core",
754    },
755   {
756    .event_code = {0x9C},
757    .umask = 0x01,
758    .event_name = "idq_uops_not_delivered.cycles_le_1_uop_deliv.core",
759    },
760   {
761    .event_code = {0x9C},
762    .umask = 0x01,
763    .event_name = "idq_uops_not_delivered.cycles_le_2_uop_deliv.core",
764    },
765   {
766    .event_code = {0x9C},
767    .umask = 0x01,
768    .event_name = "idq_uops_not_delivered.cycles_le_3_uop_deliv.core",
769    },
770   {
771    .event_code = {0x9C},
772    .umask = 0x01,
773    .event_name = "idq_uops_not_delivered.cycles_fe_was_ok",
774    },
775   {
776    .event_code = {0xA1},
777    .umask = 0x01,
778    .event_name = "uops_dispatched_port.port_0",
779    },
780   {
781    .event_code = {0xA1},
782    .umask = 0x01,
783    .event_name = "uops_executed_port.port_0_core",
784    },
785   {
786    .event_code = {0xA1},
787    .umask = 0x01,
788    .event_name = "uops_executed_port.port_0",
789    },
790   {
791    .event_code = {0xA1},
792    .umask = 0x02,
793    .event_name = "uops_dispatched_port.port_1",
794    },
795   {
796    .event_code = {0xA1},
797    .umask = 0x02,
798    .event_name = "uops_executed_port.port_1_core",
799    },
800   {
801    .event_code = {0xA1},
802    .umask = 0x02,
803    .event_name = "uops_executed_port.port_1",
804    },
805   {
806    .event_code = {0xA1},
807    .umask = 0x04,
808    .event_name = "uops_dispatched_port.port_2",
809    },
810   {
811    .event_code = {0xA1},
812    .umask = 0x04,
813    .event_name = "uops_executed_port.port_2_core",
814    },
815   {
816    .event_code = {0xA1},
817    .umask = 0x04,
818    .event_name = "uops_executed_port.port_2",
819    },
820   {
821    .event_code = {0xA1},
822    .umask = 0x08,
823    .event_name = "uops_dispatched_port.port_3",
824    },
825   {
826    .event_code = {0xA1},
827    .umask = 0x08,
828    .event_name = "uops_executed_port.port_3_core",
829    },
830   {
831    .event_code = {0xA1},
832    .umask = 0x08,
833    .event_name = "uops_executed_port.port_3",
834    },
835   {
836    .event_code = {0xA1},
837    .umask = 0x10,
838    .event_name = "uops_dispatched_port.port_4",
839    },
840   {
841    .event_code = {0xA1},
842    .umask = 0x10,
843    .event_name = "uops_executed_port.port_4_core",
844    },
845   {
846    .event_code = {0xA1},
847    .umask = 0x10,
848    .event_name = "uops_executed_port.port_4",
849    },
850   {
851    .event_code = {0xA1},
852    .umask = 0x20,
853    .event_name = "uops_dispatched_port.port_5",
854    },
855   {
856    .event_code = {0xA1},
857    .umask = 0x20,
858    .event_name = "uops_executed_port.port_5_core",
859    },
860   {
861    .event_code = {0xA1},
862    .umask = 0x20,
863    .event_name = "uops_executed_port.port_5",
864    },
865   {
866    .event_code = {0xA1},
867    .umask = 0x40,
868    .event_name = "uops_dispatched_port.port_6",
869    },
870   {
871    .event_code = {0xA1},
872    .umask = 0x40,
873    .event_name = "uops_executed_port.port_6_core",
874    },
875   {
876    .event_code = {0xA1},
877    .umask = 0x40,
878    .event_name = "uops_executed_port.port_6",
879    },
880   {
881    .event_code = {0xA1},
882    .umask = 0x80,
883    .event_name = "uops_dispatched_port.port_7",
884    },
885   {
886    .event_code = {0xA1},
887    .umask = 0x80,
888    .event_name = "uops_executed_port.port_7_core",
889    },
890   {
891    .event_code = {0xA1},
892    .umask = 0x80,
893    .event_name = "uops_executed_port.port_7",
894    },
895   {
896    .event_code = {0xa2},
897    .umask = 0x01,
898    .event_name = "resource_stalls.any",
899    },
900   {
901    .event_code = {0xA2},
902    .umask = 0x04,
903    .event_name = "resource_stalls.rs",
904    },
905   {
906    .event_code = {0xA2},
907    .umask = 0x08,
908    .event_name = "resource_stalls.sb",
909    },
910   {
911    .event_code = {0xA2},
912    .umask = 0x10,
913    .event_name = "resource_stalls.rob",
914    },
915   {
916    .event_code = {0xA3},
917    .umask = 0x01,
918    .event_name = "cycle_activity.cycles_l2_pending",
919    },
920   {
921    .event_code = {0xA3},
922    .umask = 0x02,
923    .event_name = "cycle_activity.cycles_ldm_pending",
924    },
925   {
926    .event_code = {0xA3},
927    .umask = 0x04,
928    .event_name = "cycle_activity.cycles_no_execute",
929    },
930   {
931    .event_code = {0xA3},
932    .umask = 0x05,
933    .event_name = "cycle_activity.stalls_l2_pending",
934    },
935   {
936    .event_code = {0xA3},
937    .umask = 0x06,
938    .event_name = "cycle_activity.stalls_ldm_pending",
939    },
940   {
941    .event_code = {0xA3},
942    .umask = 0x08,
943    .event_name = "cycle_activity.cycles_l1d_pending",
944    },
945   {
946    .event_code = {0xA3},
947    .umask = 0x0C,
948    .event_name = "cycle_activity.stalls_l1d_pending",
949    },
950   {
951    .event_code = {0xA8},
952    .umask = 0x01,
953    .event_name = "lsd.uops",
954    },
955   {
956    .event_code = {0xA8},
957    .umask = 0x01,
958    .event_name = "lsd.cycles_4_uops",
959    },
960   {
961    .event_code = {0xA8},
962    .umask = 0x01,
963    .event_name = "lsd.cycles_active",
964    },
965   {
966    .event_code = {0xAB},
967    .umask = 0x02,
968    .event_name = "dsb2mite_switches.penalty_cycles",
969    },
970   {
971    .event_code = {0xAE},
972    .umask = 0x01,
973    .event_name = "itlb.itlb_flush",
974    },
975   {
976    .event_code = {0xB0},
977    .umask = 0x01,
978    .event_name = "offcore_requests.demand_data_rd",
979    },
980   {
981    .event_code = {0xB0},
982    .umask = 0x02,
983    .event_name = "offcore_requests.demand_code_rd",
984    },
985   {
986    .event_code = {0xB0},
987    .umask = 0x04,
988    .event_name = "offcore_requests.demand_rfo",
989    },
990   {
991    .event_code = {0xB0},
992    .umask = 0x08,
993    .event_name = "offcore_requests.all_data_rd",
994    },
995   {
996    .event_code = {0xB1},
997    .umask = 0x01,
998    .event_name = "uops_executed.thread",
999    },
1000   {
1001    .event_code = {0xB1},
1002    .umask = 0x01,
1003    .event_name = "uops_executed.stall_cycles",
1004    },
1005   {
1006    .event_code = {0xB1},
1007    .umask = 0x01,
1008    .event_name = "uops_executed.cycles_ge_1_uop_exec",
1009    },
1010   {
1011    .event_code = {0xB1},
1012    .umask = 0x01,
1013    .event_name = "uops_executed.cycles_ge_2_uops_exec",
1014    },
1015   {
1016    .event_code = {0xB1},
1017    .umask = 0x01,
1018    .event_name = "uops_executed.cycles_ge_3_uops_exec",
1019    },
1020   {
1021    .event_code = {0xB1},
1022    .umask = 0x01,
1023    .event_name = "uops_executed.cycles_ge_4_uops_exec",
1024    },
1025   {
1026    .event_code = {0xB1},
1027    .umask = 0x02,
1028    .event_name = "uops_executed.core",
1029    },
1030   {
1031    .event_code = {0xb1},
1032    .umask = 0x02,
1033    .event_name = "uops_executed.core_cycles_ge_1",
1034    },
1035   {
1036    .event_code = {0xb1},
1037    .umask = 0x02,
1038    .event_name = "uops_executed.core_cycles_ge_2",
1039    },
1040   {
1041    .event_code = {0xb1},
1042    .umask = 0x02,
1043    .event_name = "uops_executed.core_cycles_ge_3",
1044    },
1045   {
1046    .event_code = {0xb1},
1047    .umask = 0x02,
1048    .event_name = "uops_executed.core_cycles_ge_4",
1049    },
1050   {
1051    .event_code = {0xb1},
1052    .umask = 0x02,
1053    .event_name = "uops_executed.core_cycles_none",
1054    },
1055   {
1056    .event_code = {0xb2},
1057    .umask = 0x01,
1058    .event_name = "offcore_requests_buffer.sq_full",
1059    },
1060   {
1061    .event_code = {0xBC},
1062    .umask = 0x11,
1063    .event_name = "page_walker_loads.dtlb_l1",
1064    },
1065   {
1066    .event_code = {0xBC},
1067    .umask = 0x12,
1068    .event_name = "page_walker_loads.dtlb_l2",
1069    },
1070   {
1071    .event_code = {0xBC},
1072    .umask = 0x14,
1073    .event_name = "page_walker_loads.dtlb_l3",
1074    },
1075   {
1076    .event_code = {0xBC},
1077    .umask = 0x18,
1078    .event_name = "page_walker_loads.dtlb_memory",
1079    },
1080   {
1081    .event_code = {0xBC},
1082    .umask = 0x21,
1083    .event_name = "page_walker_loads.itlb_l1",
1084    },
1085   {
1086    .event_code = {0xBC},
1087    .umask = 0x22,
1088    .event_name = "page_walker_loads.itlb_l2",
1089    },
1090   {
1091    .event_code = {0xBC},
1092    .umask = 0x24,
1093    .event_name = "page_walker_loads.itlb_l3",
1094    },
1095   {
1096    .event_code = {0xBD},
1097    .umask = 0x01,
1098    .event_name = "tlb_flush.dtlb_thread",
1099    },
1100   {
1101    .event_code = {0xBD},
1102    .umask = 0x20,
1103    .event_name = "tlb_flush.stlb_any",
1104    },
1105   {
1106    .event_code = {0xC0},
1107    .umask = 0x00,
1108    .event_name = "inst_retired.any_p",
1109    },
1110   {
1111    .event_code = {0xC0},
1112    .umask = 0x01,
1113    .event_name = "inst_retired.prec_dist",
1114    },
1115   {
1116    .event_code = {0xC0},
1117    .umask = 0x02,
1118    .event_name = "inst_retired.x87",
1119    },
1120   {
1121    .event_code = {0xC1},
1122    .umask = 0x08,
1123    .event_name = "other_assists.avx_to_sse",
1124    },
1125   {
1126    .event_code = {0xC1},
1127    .umask = 0x10,
1128    .event_name = "other_assists.sse_to_avx",
1129    },
1130   {
1131    .event_code = {0xC1},
1132    .umask = 0x40,
1133    .event_name = "other_assists.any_wb_assist",
1134    },
1135   {
1136    .event_code = {0xC2},
1137    .umask = 0x01,
1138    .event_name = "uops_retired.all",
1139    },
1140   {
1141    .event_code = {0xC2},
1142    .umask = 0x01,
1143    .event_name = "uops_retired.stall_cycles",
1144    },
1145   {
1146    .event_code = {0xC2},
1147    .umask = 0x01,
1148    .event_name = "uops_retired.total_cycles",
1149    },
1150   {
1151    .event_code = {0xC2},
1152    .umask = 0x02,
1153    .event_name = "uops_retired.retire_slots",
1154    },
1155   {
1156    .event_code = {0xC3},
1157    .umask = 0x01,
1158    .event_name = "machine_clears.cycles",
1159    },
1160   {
1161    .event_code = {0xC3},
1162    .umask = 0x01,
1163    .event_name = "machine_clears.count",
1164    },
1165   {
1166    .event_code = {0xC3},
1167    .umask = 0x02,
1168    .event_name = "machine_clears.memory_ordering",
1169    },
1170   {
1171    .event_code = {0xC3},
1172    .umask = 0x04,
1173    .event_name = "machine_clears.smc",
1174    },
1175   {
1176    .event_code = {0xC3},
1177    .umask = 0x20,
1178    .event_name = "machine_clears.maskmov",
1179    },
1180   {
1181    .event_code = {0xC4},
1182    .umask = 0x00,
1183    .event_name = "br_inst_retired.all_branches",
1184    },
1185   {
1186    .event_code = {0xC4},
1187    .umask = 0x01,
1188    .event_name = "br_inst_retired.conditional",
1189    },
1190   {
1191    .event_code = {0xC4},
1192    .umask = 0x02,
1193    .event_name = "br_inst_retired.near_call",
1194    },
1195   {
1196    .event_code = {0xC4},
1197    .umask = 0x02,
1198    .event_name = "br_inst_retired.near_call_r3",
1199    },
1200   {
1201    .event_code = {0xC4},
1202    .umask = 0x04,
1203    .event_name = "br_inst_retired.all_branches_pebs",
1204    },
1205   {
1206    .event_code = {0xC4},
1207    .umask = 0x08,
1208    .event_name = "br_inst_retired.near_return",
1209    },
1210   {
1211    .event_code = {0xC4},
1212    .umask = 0x10,
1213    .event_name = "br_inst_retired.not_taken",
1214    },
1215   {
1216    .event_code = {0xC4},
1217    .umask = 0x20,
1218    .event_name = "br_inst_retired.near_taken",
1219    },
1220   {
1221    .event_code = {0xC4},
1222    .umask = 0x40,
1223    .event_name = "br_inst_retired.far_branch",
1224    },
1225   {
1226    .event_code = {0xC5},
1227    .umask = 0x00,
1228    .event_name = "br_misp_retired.all_branches",
1229    },
1230   {
1231    .event_code = {0xC5},
1232    .umask = 0x01,
1233    .event_name = "br_misp_retired.conditional",
1234    },
1235   {
1236    .event_code = {0xC5},
1237    .umask = 0x04,
1238    .event_name = "br_misp_retired.all_branches_pebs",
1239    },
1240   {
1241    .event_code = {0xC5},
1242    .umask = 0x08,
1243    .event_name = "br_misp_retired.ret",
1244    },
1245   {
1246    .event_code = {0xC5},
1247    .umask = 0x20,
1248    .event_name = "br_misp_retired.near_taken",
1249    },
1250   {
1251    .event_code = {0xC7},
1252    .umask = 0x01,
1253    .event_name = "fp_arith_inst_retired.scalar_double",
1254    },
1255   {
1256    .event_code = {0xC7},
1257    .umask = 0x02,
1258    .event_name = "fp_arith_inst_retired.scalar_single",
1259    },
1260   {
1261    .event_code = {0xC7},
1262    .umask = 0x04,
1263    .event_name = "fp_arith_inst_retired.128b_packed_double",
1264    },
1265   {
1266    .event_code = {0xC7},
1267    .umask = 0x08,
1268    .event_name = "fp_arith_inst_retired.128b_packed_single",
1269    },
1270   {
1271    .event_code = {0xC7},
1272    .umask = 0x10,
1273    .event_name = "fp_arith_inst_retired.256b_packed_double",
1274    },
1275   {
1276    .event_code = {0xc7},
1277    .umask = 0x20,
1278    .event_name = "fp_arith_inst_retired.256b_packed_single",
1279    },
1280   {
1281    .event_code = {0xc8},
1282    .umask = 0x01,
1283    .event_name = "hle_retired.start",
1284    },
1285   {
1286    .event_code = {0xc8},
1287    .umask = 0x02,
1288    .event_name = "hle_retired.commit",
1289    },
1290   {
1291    .event_code = {0xc8},
1292    .umask = 0x04,
1293    .event_name = "hle_retired.aborted",
1294    },
1295   {
1296    .event_code = {0xc8},
1297    .umask = 0x08,
1298    .event_name = "hle_retired.aborted_misc1",
1299    },
1300   {
1301    .event_code = {0xc8},
1302    .umask = 0x10,
1303    .event_name = "hle_retired.aborted_misc2",
1304    },
1305   {
1306    .event_code = {0xc8},
1307    .umask = 0x20,
1308    .event_name = "hle_retired.aborted_misc3",
1309    },
1310   {
1311    .event_code = {0xc8},
1312    .umask = 0x40,
1313    .event_name = "hle_retired.aborted_misc4",
1314    },
1315   {
1316    .event_code = {0xc8},
1317    .umask = 0x80,
1318    .event_name = "hle_retired.aborted_misc5",
1319    },
1320   {
1321    .event_code = {0xc9},
1322    .umask = 0x01,
1323    .event_name = "rtm_retired.start",
1324    },
1325   {
1326    .event_code = {0xc9},
1327    .umask = 0x02,
1328    .event_name = "rtm_retired.commit",
1329    },
1330   {
1331    .event_code = {0xc9},
1332    .umask = 0x04,
1333    .event_name = "rtm_retired.aborted",
1334    },
1335   {
1336    .event_code = {0xc9},
1337    .umask = 0x08,
1338    .event_name = "rtm_retired.aborted_misc1",
1339    },
1340   {
1341    .event_code = {0xc9},
1342    .umask = 0x10,
1343    .event_name = "rtm_retired.aborted_misc2",
1344    },
1345   {
1346    .event_code = {0xc9},
1347    .umask = 0x20,
1348    .event_name = "rtm_retired.aborted_misc3",
1349    },
1350   {
1351    .event_code = {0xc9},
1352    .umask = 0x40,
1353    .event_name = "rtm_retired.aborted_misc4",
1354    },
1355   {
1356    .event_code = {0xc9},
1357    .umask = 0x80,
1358    .event_name = "rtm_retired.aborted_misc5",
1359    },
1360   {
1361    .event_code = {0xCA},
1362    .umask = 0x02,
1363    .event_name = "fp_assist.x87_output",
1364    },
1365   {
1366    .event_code = {0xCA},
1367    .umask = 0x04,
1368    .event_name = "fp_assist.x87_input",
1369    },
1370   {
1371    .event_code = {0xCA},
1372    .umask = 0x08,
1373    .event_name = "fp_assist.simd_output",
1374    },
1375   {
1376    .event_code = {0xCA},
1377    .umask = 0x10,
1378    .event_name = "fp_assist.simd_input",
1379    },
1380   {
1381    .event_code = {0xCA},
1382    .umask = 0x1E,
1383    .event_name = "fp_assist.any",
1384    },
1385   {
1386    .event_code = {0xCC},
1387    .umask = 0x20,
1388    .event_name = "rob_misc_events.lbr_inserts",
1389    },
1390   {
1391    .event_code = {0xD0},
1392    .umask = 0x11,
1393    .event_name = "mem_uops_retired.stlb_miss_loads",
1394    },
1395   {
1396    .event_code = {0xD0},
1397    .umask = 0x12,
1398    .event_name = "mem_uops_retired.stlb_miss_stores",
1399    },
1400   {
1401    .event_code = {0xD0},
1402    .umask = 0x21,
1403    .event_name = "mem_uops_retired.lock_loads",
1404    },
1405   {
1406    .event_code = {0xD0},
1407    .umask = 0x41,
1408    .event_name = "mem_uops_retired.split_loads",
1409    },
1410   {
1411    .event_code = {0xD0},
1412    .umask = 0x42,
1413    .event_name = "mem_uops_retired.split_stores",
1414    },
1415   {
1416    .event_code = {0xD0},
1417    .umask = 0x81,
1418    .event_name = "mem_uops_retired.all_loads",
1419    },
1420   {
1421    .event_code = {0xD0},
1422    .umask = 0x82,
1423    .event_name = "mem_uops_retired.all_stores",
1424    },
1425   {
1426    .event_code = {0xD1},
1427    .umask = 0x01,
1428    .event_name = "mem_load_uops_retired.l1_hit",
1429    },
1430   {
1431    .event_code = {0xD1},
1432    .umask = 0x02,
1433    .event_name = "mem_load_uops_retired.l2_hit",
1434    },
1435   {
1436    .event_code = {0xD1},
1437    .umask = 0x04,
1438    .event_name = "mem_load_uops_retired.l3_hit",
1439    },
1440   {
1441    .event_code = {0xD1},
1442    .umask = 0x08,
1443    .event_name = "mem_load_uops_retired.l1_miss",
1444    },
1445   {
1446    .event_code = {0xD1},
1447    .umask = 0x10,
1448    .event_name = "mem_load_uops_retired.l2_miss",
1449    },
1450   {
1451    .event_code = {0xD1},
1452    .umask = 0x20,
1453    .event_name = "mem_load_uops_retired.l3_miss",
1454    },
1455   {
1456    .event_code = {0xD1},
1457    .umask = 0x40,
1458    .event_name = "mem_load_uops_retired.hit_lfb",
1459    },
1460   {
1461    .event_code = {0xD2},
1462    .umask = 0x01,
1463    .event_name = "mem_load_uops_l3_hit_retired.xsnp_miss",
1464    },
1465   {
1466    .event_code = {0xD2},
1467    .umask = 0x02,
1468    .event_name = "mem_load_uops_l3_hit_retired.xsnp_hit",
1469    },
1470   {
1471    .event_code = {0xD2},
1472    .umask = 0x04,
1473    .event_name = "mem_load_uops_l3_hit_retired.xsnp_hitm",
1474    },
1475   {
1476    .event_code = {0xD2},
1477    .umask = 0x08,
1478    .event_name = "mem_load_uops_l3_hit_retired.xsnp_none",
1479    },
1480   {
1481    .event_code = {0xD3},
1482    .umask = 0x01,
1483    .event_name = "mem_load_uops_l3_miss_retired.local_dram",
1484    },
1485   {
1486    .event_code = {0xD3},
1487    .umask = 0x04,
1488    .event_name = "mem_load_uops_l3_miss_retired.remote_dram",
1489    },
1490   {
1491    .event_code = {0xD3},
1492    .umask = 0x10,
1493    .event_name = "mem_load_uops_l3_miss_retired.remote_hitm",
1494    },
1495   {
1496    .event_code = {0xD3},
1497    .umask = 0x20,
1498    .event_name = "mem_load_uops_l3_miss_retired.remote_fwd",
1499    },
1500   {
1501    .event_code = {0xe6},
1502    .umask = 0x1f,
1503    .event_name = "baclears.any",
1504    },
1505   {
1506    .event_code = {0xF0},
1507    .umask = 0x01,
1508    .event_name = "l2_trans.demand_data_rd",
1509    },
1510   {
1511    .event_code = {0xF0},
1512    .umask = 0x02,
1513    .event_name = "l2_trans.rfo",
1514    },
1515   {
1516    .event_code = {0xF0},
1517    .umask = 0x04,
1518    .event_name = "l2_trans.code_rd",
1519    },
1520   {
1521    .event_code = {0xF0},
1522    .umask = 0x08,
1523    .event_name = "l2_trans.all_pf",
1524    },
1525   {
1526    .event_code = {0xF0},
1527    .umask = 0x10,
1528    .event_name = "l2_trans.l1d_wb",
1529    },
1530   {
1531    .event_code = {0xF0},
1532    .umask = 0x20,
1533    .event_name = "l2_trans.l2_fill",
1534    },
1535   {
1536    .event_code = {0xF0},
1537    .umask = 0x40,
1538    .event_name = "l2_trans.l2_wb",
1539    },
1540   {
1541    .event_code = {0xF0},
1542    .umask = 0x80,
1543    .event_name = "l2_trans.all_requests",
1544    },
1545   {
1546    .event_code = {0xF1},
1547    .umask = 0x01,
1548    .event_name = "l2_lines_in.i",
1549    },
1550   {
1551    .event_code = {0xF1},
1552    .umask = 0x02,
1553    .event_name = "l2_lines_in.s",
1554    },
1555   {
1556    .event_code = {0xF1},
1557    .umask = 0x04,
1558    .event_name = "l2_lines_in.e",
1559    },
1560   {
1561    .event_code = {0xF1},
1562    .umask = 0x07,
1563    .event_name = "l2_lines_in.all",
1564    },
1565   {
1566    .event_code = {0xF2},
1567    .umask = 0x05,
1568    .event_name = "l2_lines_out.demand_clean",
1569    },
1570   {
1571    .event_code = {0xf4},
1572    .umask = 0x10,
1573    .event_name = "sq_misc.split_lock",
1574    },
1575   {
1576    .event_name = 0,
1577    },
1578 };
1579
1580 PERFMON_REGISTER_INTEL_PMC (cpu_model_table, event_table);
1581