a51381941fc21fe434b4c26fe1e1f9daf62332a9
[vpp.git] / src / plugins / perfmon / perfmon_intel_nhm_ep.c
1
2 #include <perfmon/perfmon_intel.h>
3
4 static perfmon_intel_pmc_cpu_model_t cpu_model_table[] = {
5   {0x1E, 0x00, 0},
6   {0x1F, 0x00, 0},
7   {0x1A, 0x00, 0},
8
9 };
10
11 static perfmon_intel_pmc_event_t event_table[] = {
12   {
13    .event_code = {0x14},
14    .umask = 0x1,
15    .event_name = "arith.cycles_div_busy",
16    },
17   {
18    .event_code = {0x14},
19    .umask = 0x1,
20    .event_name = "arith.div",
21    },
22   {
23    .event_code = {0x14},
24    .umask = 0x2,
25    .event_name = "arith.mul",
26    },
27   {
28    .event_code = {0xE6},
29    .umask = 0x2,
30    .event_name = "baclear.bad_target",
31    },
32   {
33    .event_code = {0xE6},
34    .umask = 0x1,
35    .event_name = "baclear.clear",
36    },
37   {
38    .event_code = {0xA7},
39    .umask = 0x1,
40    .event_name = "baclear_force_iq",
41    },
42   {
43    .event_code = {0xE8},
44    .umask = 0x1,
45    .event_name = "bpu_clears.early",
46    },
47   {
48    .event_code = {0xE8},
49    .umask = 0x2,
50    .event_name = "bpu_clears.late",
51    },
52   {
53    .event_code = {0xE5},
54    .umask = 0x1,
55    .event_name = "bpu_missed_call_ret",
56    },
57   {
58    .event_code = {0xE0},
59    .umask = 0x1,
60    .event_name = "br_inst_decoded",
61    },
62   {
63    .event_code = {0x88},
64    .umask = 0x7F,
65    .event_name = "br_inst_exec.any",
66    },
67   {
68    .event_code = {0x88},
69    .umask = 0x1,
70    .event_name = "br_inst_exec.cond",
71    },
72   {
73    .event_code = {0x88},
74    .umask = 0x2,
75    .event_name = "br_inst_exec.direct",
76    },
77   {
78    .event_code = {0x88},
79    .umask = 0x10,
80    .event_name = "br_inst_exec.direct_near_call",
81    },
82   {
83    .event_code = {0x88},
84    .umask = 0x20,
85    .event_name = "br_inst_exec.indirect_near_call",
86    },
87   {
88    .event_code = {0x88},
89    .umask = 0x4,
90    .event_name = "br_inst_exec.indirect_non_call",
91    },
92   {
93    .event_code = {0x88},
94    .umask = 0x30,
95    .event_name = "br_inst_exec.near_calls",
96    },
97   {
98    .event_code = {0x88},
99    .umask = 0x7,
100    .event_name = "br_inst_exec.non_calls",
101    },
102   {
103    .event_code = {0x88},
104    .umask = 0x8,
105    .event_name = "br_inst_exec.return_near",
106    },
107   {
108    .event_code = {0x88},
109    .umask = 0x40,
110    .event_name = "br_inst_exec.taken",
111    },
112   {
113    .event_code = {0xC4},
114    .umask = 0x4,
115    .event_name = "br_inst_retired.all_branches",
116    },
117   {
118    .event_code = {0xC4},
119    .umask = 0x1,
120    .event_name = "br_inst_retired.conditional",
121    },
122   {
123    .event_code = {0xC4},
124    .umask = 0x2,
125    .event_name = "br_inst_retired.near_call",
126    },
127   {
128    .event_code = {0x89},
129    .umask = 0x7F,
130    .event_name = "br_misp_exec.any",
131    },
132   {
133    .event_code = {0x89},
134    .umask = 0x1,
135    .event_name = "br_misp_exec.cond",
136    },
137   {
138    .event_code = {0x89},
139    .umask = 0x2,
140    .event_name = "br_misp_exec.direct",
141    },
142   {
143    .event_code = {0x89},
144    .umask = 0x10,
145    .event_name = "br_misp_exec.direct_near_call",
146    },
147   {
148    .event_code = {0x89},
149    .umask = 0x20,
150    .event_name = "br_misp_exec.indirect_near_call",
151    },
152   {
153    .event_code = {0x89},
154    .umask = 0x4,
155    .event_name = "br_misp_exec.indirect_non_call",
156    },
157   {
158    .event_code = {0x89},
159    .umask = 0x30,
160    .event_name = "br_misp_exec.near_calls",
161    },
162   {
163    .event_code = {0x89},
164    .umask = 0x7,
165    .event_name = "br_misp_exec.non_calls",
166    },
167   {
168    .event_code = {0x89},
169    .umask = 0x8,
170    .event_name = "br_misp_exec.return_near",
171    },
172   {
173    .event_code = {0x89},
174    .umask = 0x40,
175    .event_name = "br_misp_exec.taken",
176    },
177   {
178    .event_code = {0xC5},
179    .umask = 0x2,
180    .event_name = "br_misp_retired.near_call",
181    },
182   {
183    .event_code = {0x63},
184    .umask = 0x2,
185    .event_name = "cache_lock_cycles.l1d",
186    },
187   {
188    .event_code = {0x63},
189    .umask = 0x1,
190    .event_name = "cache_lock_cycles.l1d_l2",
191    },
192   {
193    .event_code = {0x0},
194    .umask = 0x0,
195    .event_name = "cpu_clk_unhalted.ref",
196    },
197   {
198    .event_code = {0x3C},
199    .umask = 0x1,
200    .event_name = "cpu_clk_unhalted.ref_p",
201    },
202   {
203    .event_code = {0x0},
204    .umask = 0x0,
205    .event_name = "cpu_clk_unhalted.thread",
206    },
207   {
208    .event_code = {0x3C},
209    .umask = 0x0,
210    .event_name = "cpu_clk_unhalted.thread_p",
211    },
212   {
213    .event_code = {0x3C},
214    .umask = 0x0,
215    .event_name = "cpu_clk_unhalted.total_cycles",
216    },
217   {
218    .event_code = {0x8},
219    .umask = 0x1,
220    .event_name = "dtlb_load_misses.any",
221    },
222   {
223    .event_code = {0x8},
224    .umask = 0x20,
225    .event_name = "dtlb_load_misses.pde_miss",
226    },
227   {
228    .event_code = {0x8},
229    .umask = 0x10,
230    .event_name = "dtlb_load_misses.stlb_hit",
231    },
232   {
233    .event_code = {0x8},
234    .umask = 0x2,
235    .event_name = "dtlb_load_misses.walk_completed",
236    },
237   {
238    .event_code = {0x49},
239    .umask = 0x1,
240    .event_name = "dtlb_misses.any",
241    },
242   {
243    .event_code = {0x49},
244    .umask = 0x10,
245    .event_name = "dtlb_misses.stlb_hit",
246    },
247   {
248    .event_code = {0x49},
249    .umask = 0x2,
250    .event_name = "dtlb_misses.walk_completed",
251    },
252   {
253    .event_code = {0xD5},
254    .umask = 0x1,
255    .event_name = "es_reg_renames",
256    },
257   {
258    .event_code = {0xF7},
259    .umask = 0x1,
260    .event_name = "fp_assist.all",
261    },
262   {
263    .event_code = {0xF7},
264    .umask = 0x4,
265    .event_name = "fp_assist.input",
266    },
267   {
268    .event_code = {0xF7},
269    .umask = 0x2,
270    .event_name = "fp_assist.output",
271    },
272   {
273    .event_code = {0x10},
274    .umask = 0x2,
275    .event_name = "fp_comp_ops_exe.mmx",
276    },
277   {
278    .event_code = {0x10},
279    .umask = 0x80,
280    .event_name = "fp_comp_ops_exe.sse_double_precision",
281    },
282   {
283    .event_code = {0x10},
284    .umask = 0x4,
285    .event_name = "fp_comp_ops_exe.sse_fp",
286    },
287   {
288    .event_code = {0x10},
289    .umask = 0x10,
290    .event_name = "fp_comp_ops_exe.sse_fp_packed",
291    },
292   {
293    .event_code = {0x10},
294    .umask = 0x20,
295    .event_name = "fp_comp_ops_exe.sse_fp_scalar",
296    },
297   {
298    .event_code = {0x10},
299    .umask = 0x40,
300    .event_name = "fp_comp_ops_exe.sse_single_precision",
301    },
302   {
303    .event_code = {0x10},
304    .umask = 0x8,
305    .event_name = "fp_comp_ops_exe.sse2_integer",
306    },
307   {
308    .event_code = {0x10},
309    .umask = 0x1,
310    .event_name = "fp_comp_ops_exe.x87",
311    },
312   {
313    .event_code = {0xCC},
314    .umask = 0x3,
315    .event_name = "fp_mmx_trans.any",
316    },
317   {
318    .event_code = {0xCC},
319    .umask = 0x1,
320    .event_name = "fp_mmx_trans.to_fp",
321    },
322   {
323    .event_code = {0xCC},
324    .umask = 0x2,
325    .event_name = "fp_mmx_trans.to_mmx",
326    },
327   {
328    .event_code = {0x87},
329    .umask = 0xF,
330    .event_name = "ild_stall.any",
331    },
332   {
333    .event_code = {0x87},
334    .umask = 0x4,
335    .event_name = "ild_stall.iq_full",
336    },
337   {
338    .event_code = {0x87},
339    .umask = 0x1,
340    .event_name = "ild_stall.lcp",
341    },
342   {
343    .event_code = {0x87},
344    .umask = 0x2,
345    .event_name = "ild_stall.mru",
346    },
347   {
348    .event_code = {0x87},
349    .umask = 0x8,
350    .event_name = "ild_stall.regen",
351    },
352   {
353    .event_code = {0x18},
354    .umask = 0x1,
355    .event_name = "inst_decoded.dec0",
356    },
357   {
358    .event_code = {0x1E},
359    .umask = 0x1,
360    .event_name = "inst_queue_write_cycles",
361    },
362   {
363    .event_code = {0x17},
364    .umask = 0x1,
365    .event_name = "inst_queue_writes",
366    },
367   {
368    .event_code = {0x0},
369    .umask = 0x0,
370    .event_name = "inst_retired.any",
371    },
372   {
373    .event_code = {0xC0},
374    .umask = 0x1,
375    .event_name = "inst_retired.any_p",
376    },
377   {
378    .event_code = {0xC0},
379    .umask = 0x4,
380    .event_name = "inst_retired.mmx",
381    },
382   {
383    .event_code = {0xC0},
384    .umask = 0x1,
385    .event_name = "inst_retired.total_cycles",
386    },
387   {
388    .event_code = {0xC0},
389    .umask = 0x2,
390    .event_name = "inst_retired.x87",
391    },
392   {
393    .event_code = {0x6C},
394    .umask = 0x1,
395    .event_name = "io_transactions",
396    },
397   {
398    .event_code = {0xAE},
399    .umask = 0x1,
400    .event_name = "itlb_flush",
401    },
402   {
403    .event_code = {0xC8},
404    .umask = 0x20,
405    .event_name = "itlb_miss_retired",
406    },
407   {
408    .event_code = {0x85},
409    .umask = 0x1,
410    .event_name = "itlb_misses.any",
411    },
412   {
413    .event_code = {0x85},
414    .umask = 0x2,
415    .event_name = "itlb_misses.walk_completed",
416    },
417   {
418    .event_code = {0x51},
419    .umask = 0x4,
420    .event_name = "l1d.m_evict",
421    },
422   {
423    .event_code = {0x51},
424    .umask = 0x2,
425    .event_name = "l1d.m_repl",
426    },
427   {
428    .event_code = {0x51},
429    .umask = 0x8,
430    .event_name = "l1d.m_snoop_evict",
431    },
432   {
433    .event_code = {0x51},
434    .umask = 0x1,
435    .event_name = "l1d.repl",
436    },
437   {
438    .event_code = {0x43},
439    .umask = 0x1,
440    .event_name = "l1d_all_ref.any",
441    },
442   {
443    .event_code = {0x43},
444    .umask = 0x2,
445    .event_name = "l1d_all_ref.cacheable",
446    },
447   {
448    .event_code = {0x40},
449    .umask = 0x4,
450    .event_name = "l1d_cache_ld.e_state",
451    },
452   {
453    .event_code = {0x40},
454    .umask = 0x1,
455    .event_name = "l1d_cache_ld.i_state",
456    },
457   {
458    .event_code = {0x40},
459    .umask = 0x8,
460    .event_name = "l1d_cache_ld.m_state",
461    },
462   {
463    .event_code = {0x40},
464    .umask = 0xF,
465    .event_name = "l1d_cache_ld.mesi",
466    },
467   {
468    .event_code = {0x40},
469    .umask = 0x2,
470    .event_name = "l1d_cache_ld.s_state",
471    },
472   {
473    .event_code = {0x42},
474    .umask = 0x4,
475    .event_name = "l1d_cache_lock.e_state",
476    },
477   {
478    .event_code = {0x42},
479    .umask = 0x1,
480    .event_name = "l1d_cache_lock.hit",
481    },
482   {
483    .event_code = {0x42},
484    .umask = 0x8,
485    .event_name = "l1d_cache_lock.m_state",
486    },
487   {
488    .event_code = {0x42},
489    .umask = 0x2,
490    .event_name = "l1d_cache_lock.s_state",
491    },
492   {
493    .event_code = {0x53},
494    .umask = 0x1,
495    .event_name = "l1d_cache_lock_fb_hit",
496    },
497   {
498    .event_code = {0x52},
499    .umask = 0x1,
500    .event_name = "l1d_cache_prefetch_lock_fb_hit",
501    },
502   {
503    .event_code = {0x41},
504    .umask = 0x4,
505    .event_name = "l1d_cache_st.e_state",
506    },
507   {
508    .event_code = {0x41},
509    .umask = 0x8,
510    .event_name = "l1d_cache_st.m_state",
511    },
512   {
513    .event_code = {0x41},
514    .umask = 0x2,
515    .event_name = "l1d_cache_st.s_state",
516    },
517   {
518    .event_code = {0x4E},
519    .umask = 0x2,
520    .event_name = "l1d_prefetch.miss",
521    },
522   {
523    .event_code = {0x4E},
524    .umask = 0x1,
525    .event_name = "l1d_prefetch.requests",
526    },
527   {
528    .event_code = {0x4E},
529    .umask = 0x4,
530    .event_name = "l1d_prefetch.triggers",
531    },
532   {
533    .event_code = {0x28},
534    .umask = 0x4,
535    .event_name = "l1d_wb_l2.e_state",
536    },
537   {
538    .event_code = {0x28},
539    .umask = 0x1,
540    .event_name = "l1d_wb_l2.i_state",
541    },
542   {
543    .event_code = {0x28},
544    .umask = 0x8,
545    .event_name = "l1d_wb_l2.m_state",
546    },
547   {
548    .event_code = {0x28},
549    .umask = 0xF,
550    .event_name = "l1d_wb_l2.mesi",
551    },
552   {
553    .event_code = {0x28},
554    .umask = 0x2,
555    .event_name = "l1d_wb_l2.s_state",
556    },
557   {
558    .event_code = {0x80},
559    .umask = 0x4,
560    .event_name = "l1i.cycles_stalled",
561    },
562   {
563    .event_code = {0x80},
564    .umask = 0x1,
565    .event_name = "l1i.hits",
566    },
567   {
568    .event_code = {0x80},
569    .umask = 0x2,
570    .event_name = "l1i.misses",
571    },
572   {
573    .event_code = {0x80},
574    .umask = 0x3,
575    .event_name = "l1i.reads",
576    },
577   {
578    .event_code = {0x26},
579    .umask = 0xFF,
580    .event_name = "l2_data_rqsts.any",
581    },
582   {
583    .event_code = {0x26},
584    .umask = 0x4,
585    .event_name = "l2_data_rqsts.demand.e_state",
586    },
587   {
588    .event_code = {0x26},
589    .umask = 0x1,
590    .event_name = "l2_data_rqsts.demand.i_state",
591    },
592   {
593    .event_code = {0x26},
594    .umask = 0x8,
595    .event_name = "l2_data_rqsts.demand.m_state",
596    },
597   {
598    .event_code = {0x26},
599    .umask = 0xF,
600    .event_name = "l2_data_rqsts.demand.mesi",
601    },
602   {
603    .event_code = {0x26},
604    .umask = 0x2,
605    .event_name = "l2_data_rqsts.demand.s_state",
606    },
607   {
608    .event_code = {0x26},
609    .umask = 0x40,
610    .event_name = "l2_data_rqsts.prefetch.e_state",
611    },
612   {
613    .event_code = {0x26},
614    .umask = 0x10,
615    .event_name = "l2_data_rqsts.prefetch.i_state",
616    },
617   {
618    .event_code = {0x26},
619    .umask = 0x80,
620    .event_name = "l2_data_rqsts.prefetch.m_state",
621    },
622   {
623    .event_code = {0x26},
624    .umask = 0xF0,
625    .event_name = "l2_data_rqsts.prefetch.mesi",
626    },
627   {
628    .event_code = {0x26},
629    .umask = 0x20,
630    .event_name = "l2_data_rqsts.prefetch.s_state",
631    },
632   {
633    .event_code = {0xF1},
634    .umask = 0x7,
635    .event_name = "l2_lines_in.any",
636    },
637   {
638    .event_code = {0xF1},
639    .umask = 0x4,
640    .event_name = "l2_lines_in.e_state",
641    },
642   {
643    .event_code = {0xF1},
644    .umask = 0x2,
645    .event_name = "l2_lines_in.s_state",
646    },
647   {
648    .event_code = {0xF2},
649    .umask = 0xF,
650    .event_name = "l2_lines_out.any",
651    },
652   {
653    .event_code = {0xF2},
654    .umask = 0x1,
655    .event_name = "l2_lines_out.demand_clean",
656    },
657   {
658    .event_code = {0xF2},
659    .umask = 0x2,
660    .event_name = "l2_lines_out.demand_dirty",
661    },
662   {
663    .event_code = {0xF2},
664    .umask = 0x4,
665    .event_name = "l2_lines_out.prefetch_clean",
666    },
667   {
668    .event_code = {0xF2},
669    .umask = 0x8,
670    .event_name = "l2_lines_out.prefetch_dirty",
671    },
672   {
673    .event_code = {0x24},
674    .umask = 0x10,
675    .event_name = "l2_rqsts.ifetch_hit",
676    },
677   {
678    .event_code = {0x24},
679    .umask = 0x20,
680    .event_name = "l2_rqsts.ifetch_miss",
681    },
682   {
683    .event_code = {0x24},
684    .umask = 0x30,
685    .event_name = "l2_rqsts.ifetches",
686    },
687   {
688    .event_code = {0x24},
689    .umask = 0x1,
690    .event_name = "l2_rqsts.ld_hit",
691    },
692   {
693    .event_code = {0x24},
694    .umask = 0x2,
695    .event_name = "l2_rqsts.ld_miss",
696    },
697   {
698    .event_code = {0x24},
699    .umask = 0x3,
700    .event_name = "l2_rqsts.loads",
701    },
702   {
703    .event_code = {0x24},
704    .umask = 0xAA,
705    .event_name = "l2_rqsts.miss",
706    },
707   {
708    .event_code = {0x24},
709    .umask = 0x40,
710    .event_name = "l2_rqsts.prefetch_hit",
711    },
712   {
713    .event_code = {0x24},
714    .umask = 0x80,
715    .event_name = "l2_rqsts.prefetch_miss",
716    },
717   {
718    .event_code = {0x24},
719    .umask = 0xC0,
720    .event_name = "l2_rqsts.prefetches",
721    },
722   {
723    .event_code = {0x24},
724    .umask = 0xFF,
725    .event_name = "l2_rqsts.references",
726    },
727   {
728    .event_code = {0x24},
729    .umask = 0x4,
730    .event_name = "l2_rqsts.rfo_hit",
731    },
732   {
733    .event_code = {0x24},
734    .umask = 0x8,
735    .event_name = "l2_rqsts.rfo_miss",
736    },
737   {
738    .event_code = {0x24},
739    .umask = 0xC,
740    .event_name = "l2_rqsts.rfos",
741    },
742   {
743    .event_code = {0xF0},
744    .umask = 0x80,
745    .event_name = "l2_transactions.any",
746    },
747   {
748    .event_code = {0xF0},
749    .umask = 0x20,
750    .event_name = "l2_transactions.fill",
751    },
752   {
753    .event_code = {0xF0},
754    .umask = 0x4,
755    .event_name = "l2_transactions.ifetch",
756    },
757   {
758    .event_code = {0xF0},
759    .umask = 0x10,
760    .event_name = "l2_transactions.l1d_wb",
761    },
762   {
763    .event_code = {0xF0},
764    .umask = 0x1,
765    .event_name = "l2_transactions.load",
766    },
767   {
768    .event_code = {0xF0},
769    .umask = 0x8,
770    .event_name = "l2_transactions.prefetch",
771    },
772   {
773    .event_code = {0xF0},
774    .umask = 0x2,
775    .event_name = "l2_transactions.rfo",
776    },
777   {
778    .event_code = {0xF0},
779    .umask = 0x40,
780    .event_name = "l2_transactions.wb",
781    },
782   {
783    .event_code = {0x27},
784    .umask = 0x40,
785    .event_name = "l2_write.lock.e_state",
786    },
787   {
788    .event_code = {0x27},
789    .umask = 0xE0,
790    .event_name = "l2_write.lock.hit",
791    },
792   {
793    .event_code = {0x27},
794    .umask = 0x10,
795    .event_name = "l2_write.lock.i_state",
796    },
797   {
798    .event_code = {0x27},
799    .umask = 0x80,
800    .event_name = "l2_write.lock.m_state",
801    },
802   {
803    .event_code = {0x27},
804    .umask = 0xF0,
805    .event_name = "l2_write.lock.mesi",
806    },
807   {
808    .event_code = {0x27},
809    .umask = 0x20,
810    .event_name = "l2_write.lock.s_state",
811    },
812   {
813    .event_code = {0x27},
814    .umask = 0xE,
815    .event_name = "l2_write.rfo.hit",
816    },
817   {
818    .event_code = {0x27},
819    .umask = 0x1,
820    .event_name = "l2_write.rfo.i_state",
821    },
822   {
823    .event_code = {0x27},
824    .umask = 0x8,
825    .event_name = "l2_write.rfo.m_state",
826    },
827   {
828    .event_code = {0x27},
829    .umask = 0xF,
830    .event_name = "l2_write.rfo.mesi",
831    },
832   {
833    .event_code = {0x27},
834    .umask = 0x2,
835    .event_name = "l2_write.rfo.s_state",
836    },
837   {
838    .event_code = {0x82},
839    .umask = 0x1,
840    .event_name = "large_itlb.hit",
841    },
842   {
843    .event_code = {0x13},
844    .umask = 0x7,
845    .event_name = "load_dispatch.any",
846    },
847   {
848    .event_code = {0x13},
849    .umask = 0x4,
850    .event_name = "load_dispatch.mob",
851    },
852   {
853    .event_code = {0x13},
854    .umask = 0x1,
855    .event_name = "load_dispatch.rs",
856    },
857   {
858    .event_code = {0x13},
859    .umask = 0x2,
860    .event_name = "load_dispatch.rs_delayed",
861    },
862   {
863    .event_code = {0x4C},
864    .umask = 0x1,
865    .event_name = "load_hit_pre",
866    },
867   {
868    .event_code = {0x2E},
869    .umask = 0x41,
870    .event_name = "longest_lat_cache.miss",
871    },
872   {
873    .event_code = {0x2E},
874    .umask = 0x4F,
875    .event_name = "longest_lat_cache.reference",
876    },
877   {
878    .event_code = {0xA8},
879    .umask = 0x1,
880    .event_name = "lsd.active",
881    },
882   {
883    .event_code = {0xA8},
884    .umask = 0x1,
885    .event_name = "lsd.inactive",
886    },
887   {
888    .event_code = {0x20},
889    .umask = 0x1,
890    .event_name = "lsd_overflow",
891    },
892   {
893    .event_code = {0xC3},
894    .umask = 0x1,
895    .event_name = "machine_clears.cycles",
896    },
897   {
898    .event_code = {0xC3},
899    .umask = 0x2,
900    .event_name = "machine_clears.mem_order",
901    },
902   {
903    .event_code = {0xC3},
904    .umask = 0x4,
905    .event_name = "machine_clears.smc",
906    },
907   {
908    .event_code = {0xD0},
909    .umask = 0x1,
910    .event_name = "macro_insts.decoded",
911    },
912   {
913    .event_code = {0xA6},
914    .umask = 0x1,
915    .event_name = "macro_insts.fusions_decoded",
916    },
917   {
918    .event_code = {0xB},
919    .umask = 0x1,
920    .event_name = "mem_inst_retired.loads",
921    },
922   {
923    .event_code = {0xB},
924    .umask = 0x2,
925    .event_name = "mem_inst_retired.stores",
926    },
927   {
928    .event_code = {0xCB},
929    .umask = 0x80,
930    .event_name = "mem_load_retired.dtlb_miss",
931    },
932   {
933    .event_code = {0xCB},
934    .umask = 0x40,
935    .event_name = "mem_load_retired.hit_lfb",
936    },
937   {
938    .event_code = {0xCB},
939    .umask = 0x1,
940    .event_name = "mem_load_retired.l1d_hit",
941    },
942   {
943    .event_code = {0xCB},
944    .umask = 0x2,
945    .event_name = "mem_load_retired.l2_hit",
946    },
947   {
948    .event_code = {0xCB},
949    .umask = 0x10,
950    .event_name = "mem_load_retired.llc_miss",
951    },
952   {
953    .event_code = {0xCB},
954    .umask = 0x4,
955    .event_name = "mem_load_retired.llc_unshared_hit",
956    },
957   {
958    .event_code = {0xCB},
959    .umask = 0x8,
960    .event_name = "mem_load_retired.other_core_l2_hit_hitm",
961    },
962   {
963    .event_code = {0xC},
964    .umask = 0x1,
965    .event_name = "mem_store_retired.dtlb_miss",
966    },
967   {
968    .event_code = {0xF},
969    .umask = 0x20,
970    .event_name = "mem_uncore_retired.local_dram",
971    },
972   {
973    .event_code = {0xF},
974    .umask = 0x2,
975    .event_name = "mem_uncore_retired.other_core_l2_hitm",
976    },
977   {
978    .event_code = {0xF},
979    .umask = 0x8,
980    .event_name = "mem_uncore_retired.remote_cache_local_home_hit",
981    },
982   {
983    .event_code = {0xF},
984    .umask = 0x10,
985    .event_name = "mem_uncore_retired.remote_dram",
986    },
987   {
988    .event_code = {0xF},
989    .umask = 0x80,
990    .event_name = "mem_uncore_retired.uncacheable",
991    },
992   {
993    .event_code = {0xB0},
994    .umask = 0x40,
995    .event_name = "offcore_requests.l1d_writeback",
996    },
997   {
998    .event_code = {0xB2},
999    .umask = 0x1,
1000    .event_name = "offcore_requests_sq_full",
1001    },
1002   {
1003    .event_code = {0x7},
1004    .umask = 0x1,
1005    .event_name = "partial_address_alias",
1006    },
1007   {
1008    .event_code = {0xD2},
1009    .umask = 0xF,
1010    .event_name = "rat_stalls.any",
1011    },
1012   {
1013    .event_code = {0xD2},
1014    .umask = 0x1,
1015    .event_name = "rat_stalls.flags",
1016    },
1017   {
1018    .event_code = {0xD2},
1019    .umask = 0x2,
1020    .event_name = "rat_stalls.registers",
1021    },
1022   {
1023    .event_code = {0xD2},
1024    .umask = 0x4,
1025    .event_name = "rat_stalls.rob_read_port",
1026    },
1027   {
1028    .event_code = {0xD2},
1029    .umask = 0x8,
1030    .event_name = "rat_stalls.scoreboard",
1031    },
1032   {
1033    .event_code = {0xA2},
1034    .umask = 0x1,
1035    .event_name = "resource_stalls.any",
1036    },
1037   {
1038    .event_code = {0xA2},
1039    .umask = 0x20,
1040    .event_name = "resource_stalls.fpcw",
1041    },
1042   {
1043    .event_code = {0xA2},
1044    .umask = 0x2,
1045    .event_name = "resource_stalls.load",
1046    },
1047   {
1048    .event_code = {0xA2},
1049    .umask = 0x40,
1050    .event_name = "resource_stalls.mxcsr",
1051    },
1052   {
1053    .event_code = {0xA2},
1054    .umask = 0x80,
1055    .event_name = "resource_stalls.other",
1056    },
1057   {
1058    .event_code = {0xA2},
1059    .umask = 0x10,
1060    .event_name = "resource_stalls.rob_full",
1061    },
1062   {
1063    .event_code = {0xA2},
1064    .umask = 0x4,
1065    .event_name = "resource_stalls.rs_full",
1066    },
1067   {
1068    .event_code = {0xA2},
1069    .umask = 0x8,
1070    .event_name = "resource_stalls.store",
1071    },
1072   {
1073    .event_code = {0x4},
1074    .umask = 0x7,
1075    .event_name = "sb_drain.any",
1076    },
1077   {
1078    .event_code = {0xD4},
1079    .umask = 0x1,
1080    .event_name = "seg_rename_stalls",
1081    },
1082   {
1083    .event_code = {0x12},
1084    .umask = 0x4,
1085    .event_name = "simd_int_128.pack",
1086    },
1087   {
1088    .event_code = {0x12},
1089    .umask = 0x20,
1090    .event_name = "simd_int_128.packed_arith",
1091    },
1092   {
1093    .event_code = {0x12},
1094    .umask = 0x10,
1095    .event_name = "simd_int_128.packed_logical",
1096    },
1097   {
1098    .event_code = {0x12},
1099    .umask = 0x1,
1100    .event_name = "simd_int_128.packed_mpy",
1101    },
1102   {
1103    .event_code = {0x12},
1104    .umask = 0x2,
1105    .event_name = "simd_int_128.packed_shift",
1106    },
1107   {
1108    .event_code = {0x12},
1109    .umask = 0x40,
1110    .event_name = "simd_int_128.shuffle_move",
1111    },
1112   {
1113    .event_code = {0x12},
1114    .umask = 0x8,
1115    .event_name = "simd_int_128.unpack",
1116    },
1117   {
1118    .event_code = {0xFD},
1119    .umask = 0x4,
1120    .event_name = "simd_int_64.pack",
1121    },
1122   {
1123    .event_code = {0xFD},
1124    .umask = 0x20,
1125    .event_name = "simd_int_64.packed_arith",
1126    },
1127   {
1128    .event_code = {0xFD},
1129    .umask = 0x10,
1130    .event_name = "simd_int_64.packed_logical",
1131    },
1132   {
1133    .event_code = {0xFD},
1134    .umask = 0x1,
1135    .event_name = "simd_int_64.packed_mpy",
1136    },
1137   {
1138    .event_code = {0xFD},
1139    .umask = 0x2,
1140    .event_name = "simd_int_64.packed_shift",
1141    },
1142   {
1143    .event_code = {0xFD},
1144    .umask = 0x40,
1145    .event_name = "simd_int_64.shuffle_move",
1146    },
1147   {
1148    .event_code = {0xFD},
1149    .umask = 0x8,
1150    .event_name = "simd_int_64.unpack",
1151    },
1152   {
1153    .event_code = {0xB8},
1154    .umask = 0x1,
1155    .event_name = "snoop_response.hit",
1156    },
1157   {
1158    .event_code = {0xB8},
1159    .umask = 0x2,
1160    .event_name = "snoop_response.hite",
1161    },
1162   {
1163    .event_code = {0xB8},
1164    .umask = 0x4,
1165    .event_name = "snoop_response.hitm",
1166    },
1167   {
1168    .event_code = {0xF6},
1169    .umask = 0x1,
1170    .event_name = "sq_full_stall_cycles",
1171    },
1172   {
1173    .event_code = {0xF4},
1174    .umask = 0x10,
1175    .event_name = "sq_misc.split_lock",
1176    },
1177   {
1178    .event_code = {0xC7},
1179    .umask = 0x4,
1180    .event_name = "ssex_uops_retired.packed_double",
1181    },
1182   {
1183    .event_code = {0xC7},
1184    .umask = 0x1,
1185    .event_name = "ssex_uops_retired.packed_single",
1186    },
1187   {
1188    .event_code = {0xC7},
1189    .umask = 0x8,
1190    .event_name = "ssex_uops_retired.scalar_double",
1191    },
1192   {
1193    .event_code = {0xC7},
1194    .umask = 0x2,
1195    .event_name = "ssex_uops_retired.scalar_single",
1196    },
1197   {
1198    .event_code = {0xC7},
1199    .umask = 0x10,
1200    .event_name = "ssex_uops_retired.vector_integer",
1201    },
1202   {
1203    .event_code = {0x6},
1204    .umask = 0x4,
1205    .event_name = "store_blocks.at_ret",
1206    },
1207   {
1208    .event_code = {0x6},
1209    .umask = 0x8,
1210    .event_name = "store_blocks.l1d_block",
1211    },
1212   {
1213    .event_code = {0x19},
1214    .umask = 0x1,
1215    .event_name = "two_uop_insts_decoded",
1216    },
1217   {
1218    .event_code = {0xDB},
1219    .umask = 0x1,
1220    .event_name = "uop_unfusion",
1221    },
1222   {
1223    .event_code = {0xD1},
1224    .umask = 0x4,
1225    .event_name = "uops_decoded.esp_folding",
1226    },
1227   {
1228    .event_code = {0xD1},
1229    .umask = 0x8,
1230    .event_name = "uops_decoded.esp_sync",
1231    },
1232   {
1233    .event_code = {0xD1},
1234    .umask = 0x2,
1235    .event_name = "uops_decoded.ms_cycles_active",
1236    },
1237   {
1238    .event_code = {0xD1},
1239    .umask = 0x1,
1240    .event_name = "uops_decoded.stall_cycles",
1241    },
1242   {
1243    .event_code = {0xB1},
1244    .umask = 0x3F,
1245    .event_name = "uops_executed.core_active_cycles",
1246    },
1247   {
1248    .event_code = {0xB1},
1249    .umask = 0x1F,
1250    .event_name = "uops_executed.core_active_cycles_no_port5",
1251    },
1252   {
1253    .event_code = {0xB1},
1254    .umask = 0x3F,
1255    .event_name = "uops_executed.core_stall_count",
1256    },
1257   {
1258    .event_code = {0xB1},
1259    .umask = 0x1F,
1260    .event_name = "uops_executed.core_stall_count_no_port5",
1261    },
1262   {
1263    .event_code = {0xB1},
1264    .umask = 0x3F,
1265    .event_name = "uops_executed.core_stall_cycles",
1266    },
1267   {
1268    .event_code = {0xB1},
1269    .umask = 0x1F,
1270    .event_name = "uops_executed.core_stall_cycles_no_port5",
1271    },
1272   {
1273    .event_code = {0xB1},
1274    .umask = 0x1,
1275    .event_name = "uops_executed.port0",
1276    },
1277   {
1278    .event_code = {0xB1},
1279    .umask = 0x40,
1280    .event_name = "uops_executed.port015",
1281    },
1282   {
1283    .event_code = {0xB1},
1284    .umask = 0x40,
1285    .event_name = "uops_executed.port015_stall_cycles",
1286    },
1287   {
1288    .event_code = {0xB1},
1289    .umask = 0x2,
1290    .event_name = "uops_executed.port1",
1291    },
1292   {
1293    .event_code = {0xB1},
1294    .umask = 0x4,
1295    .event_name = "uops_executed.port2_core",
1296    },
1297   {
1298    .event_code = {0xB1},
1299    .umask = 0x80,
1300    .event_name = "uops_executed.port234_core",
1301    },
1302   {
1303    .event_code = {0xB1},
1304    .umask = 0x8,
1305    .event_name = "uops_executed.port3_core",
1306    },
1307   {
1308    .event_code = {0xB1},
1309    .umask = 0x10,
1310    .event_name = "uops_executed.port4_core",
1311    },
1312   {
1313    .event_code = {0xB1},
1314    .umask = 0x20,
1315    .event_name = "uops_executed.port5",
1316    },
1317   {
1318    .event_code = {0xE},
1319    .umask = 0x1,
1320    .event_name = "uops_issued.any",
1321    },
1322   {
1323    .event_code = {0xE},
1324    .umask = 0x1,
1325    .event_name = "uops_issued.core_stall_cycles",
1326    },
1327   {
1328    .event_code = {0xE},
1329    .umask = 0x1,
1330    .event_name = "uops_issued.cycles_all_threads",
1331    },
1332   {
1333    .event_code = {0xE},
1334    .umask = 0x2,
1335    .event_name = "uops_issued.fused",
1336    },
1337   {
1338    .event_code = {0xE},
1339    .umask = 0x1,
1340    .event_name = "uops_issued.stall_cycles",
1341    },
1342   {
1343    .event_code = {0xC2},
1344    .umask = 0x1,
1345    .event_name = "uops_retired.active_cycles",
1346    },
1347   {
1348    .event_code = {0xC2},
1349    .umask = 0x1,
1350    .event_name = "uops_retired.any",
1351    },
1352   {
1353    .event_code = {0xC2},
1354    .umask = 0x4,
1355    .event_name = "uops_retired.macro_fused",
1356    },
1357   {
1358    .event_code = {0xC2},
1359    .umask = 0x2,
1360    .event_name = "uops_retired.retire_slots",
1361    },
1362   {
1363    .event_code = {0xC2},
1364    .umask = 0x1,
1365    .event_name = "uops_retired.stall_cycles",
1366    },
1367   {
1368    .event_code = {0xC2},
1369    .umask = 0x1,
1370    .event_name = "uops_retired.total_cycles",
1371    },
1372   {
1373    .event_code = {0xC0},
1374    .umask = 0x1,
1375    .event_name = "inst_retired.total_cycles_ps",
1376    },
1377   {
1378    .event_name = 0,
1379    },
1380 };
1381
1382 PERFMON_REGISTER_INTEL_PMC (cpu_model_table, event_table);
1383