Changeset View
Changeset View
Standalone View
Standalone View
lib/libpmc/libpmc.c
Show First 20 Lines • Show All 231 Lines • ▼ Show 20 Lines | static const struct pmc_event_descr skylake_event_table[] = | ||||
__PMC_EV_ALIAS_SKYLAKE() | __PMC_EV_ALIAS_SKYLAKE() | ||||
}; | }; | ||||
static const struct pmc_event_descr skylake_xeon_event_table[] = | static const struct pmc_event_descr skylake_xeon_event_table[] = | ||||
{ | { | ||||
__PMC_EV_ALIAS_SKYLAKE_XEON() | __PMC_EV_ALIAS_SKYLAKE_XEON() | ||||
}; | }; | ||||
static const struct pmc_event_descr kabylake_event_table[] = | |||||
{ | |||||
__PMC_EV_ALIAS_KABYLAKE() | |||||
}; | |||||
static const struct pmc_event_descr ivybridge_event_table[] = | static const struct pmc_event_descr ivybridge_event_table[] = | ||||
{ | { | ||||
__PMC_EV_ALIAS_IVYBRIDGE() | __PMC_EV_ALIAS_IVYBRIDGE() | ||||
}; | }; | ||||
static const struct pmc_event_descr ivybridge_xeon_event_table[] = | static const struct pmc_event_descr ivybridge_xeon_event_table[] = | ||||
{ | { | ||||
__PMC_EV_ALIAS_IVYBRIDGE_XEON() | __PMC_EV_ALIAS_IVYBRIDGE_XEON() | ||||
▲ Show 20 Lines • Show All 81 Lines • ▼ Show 20 Lines | |||||
PMC_MDEP_TABLE(corei7, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | PMC_MDEP_TABLE(corei7, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | ||||
PMC_MDEP_TABLE(nehalem_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); | PMC_MDEP_TABLE(nehalem_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); | ||||
PMC_MDEP_TABLE(haswell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | PMC_MDEP_TABLE(haswell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | ||||
PMC_MDEP_TABLE(haswell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | PMC_MDEP_TABLE(haswell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | ||||
PMC_MDEP_TABLE(broadwell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | PMC_MDEP_TABLE(broadwell, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | ||||
PMC_MDEP_TABLE(broadwell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | PMC_MDEP_TABLE(broadwell_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | ||||
PMC_MDEP_TABLE(skylake, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | PMC_MDEP_TABLE(skylake, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | ||||
PMC_MDEP_TABLE(skylake_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); | PMC_MDEP_TABLE(skylake_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); | ||||
PMC_MDEP_TABLE(kabylake, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | |||||
PMC_MDEP_TABLE(ivybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); | PMC_MDEP_TABLE(ivybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); | ||||
PMC_MDEP_TABLE(ivybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); | PMC_MDEP_TABLE(ivybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); | ||||
PMC_MDEP_TABLE(sandybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | PMC_MDEP_TABLE(sandybridge, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | ||||
PMC_MDEP_TABLE(sandybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); | PMC_MDEP_TABLE(sandybridge_xeon, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); | ||||
PMC_MDEP_TABLE(westmere, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | PMC_MDEP_TABLE(westmere, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC, PMC_CLASS_UCF, PMC_CLASS_UCP); | ||||
PMC_MDEP_TABLE(westmere_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); | PMC_MDEP_TABLE(westmere_ex, IAP, PMC_CLASS_SOFT, PMC_CLASS_IAF, PMC_CLASS_TSC); | ||||
PMC_MDEP_TABLE(k7, K7, PMC_CLASS_SOFT, PMC_CLASS_TSC); | PMC_MDEP_TABLE(k7, K7, PMC_CLASS_SOFT, PMC_CLASS_TSC); | ||||
PMC_MDEP_TABLE(k8, K8, PMC_CLASS_SOFT, PMC_CLASS_TSC); | PMC_MDEP_TABLE(k8, K8, PMC_CLASS_SOFT, PMC_CLASS_TSC); | ||||
Show All 40 Lines | |||||
PMC_CLASS_TABLE_DESC(corei7, IAP, corei7, iap); | PMC_CLASS_TABLE_DESC(corei7, IAP, corei7, iap); | ||||
PMC_CLASS_TABLE_DESC(nehalem_ex, IAP, nehalem_ex, iap); | PMC_CLASS_TABLE_DESC(nehalem_ex, IAP, nehalem_ex, iap); | ||||
PMC_CLASS_TABLE_DESC(haswell, IAP, haswell, iap); | PMC_CLASS_TABLE_DESC(haswell, IAP, haswell, iap); | ||||
PMC_CLASS_TABLE_DESC(haswell_xeon, IAP, haswell_xeon, iap); | PMC_CLASS_TABLE_DESC(haswell_xeon, IAP, haswell_xeon, iap); | ||||
PMC_CLASS_TABLE_DESC(broadwell, IAP, broadwell, iap); | PMC_CLASS_TABLE_DESC(broadwell, IAP, broadwell, iap); | ||||
PMC_CLASS_TABLE_DESC(broadwell_xeon, IAP, broadwell_xeon, iap); | PMC_CLASS_TABLE_DESC(broadwell_xeon, IAP, broadwell_xeon, iap); | ||||
PMC_CLASS_TABLE_DESC(skylake, IAP, skylake, iap); | PMC_CLASS_TABLE_DESC(skylake, IAP, skylake, iap); | ||||
PMC_CLASS_TABLE_DESC(skylake_xeon, IAP, skylake_xeon, iap); | PMC_CLASS_TABLE_DESC(skylake_xeon, IAP, skylake_xeon, iap); | ||||
PMC_CLASS_TABLE_DESC(kabylake, IAP, kabylake, iap); | |||||
PMC_CLASS_TABLE_DESC(ivybridge, IAP, ivybridge, iap); | PMC_CLASS_TABLE_DESC(ivybridge, IAP, ivybridge, iap); | ||||
PMC_CLASS_TABLE_DESC(ivybridge_xeon, IAP, ivybridge_xeon, iap); | PMC_CLASS_TABLE_DESC(ivybridge_xeon, IAP, ivybridge_xeon, iap); | ||||
PMC_CLASS_TABLE_DESC(sandybridge, IAP, sandybridge, iap); | PMC_CLASS_TABLE_DESC(sandybridge, IAP, sandybridge, iap); | ||||
PMC_CLASS_TABLE_DESC(sandybridge_xeon, IAP, sandybridge_xeon, iap); | PMC_CLASS_TABLE_DESC(sandybridge_xeon, IAP, sandybridge_xeon, iap); | ||||
PMC_CLASS_TABLE_DESC(westmere, IAP, westmere, iap); | PMC_CLASS_TABLE_DESC(westmere, IAP, westmere, iap); | ||||
PMC_CLASS_TABLE_DESC(westmere_ex, IAP, westmere_ex, iap); | PMC_CLASS_TABLE_DESC(westmere_ex, IAP, westmere_ex, iap); | ||||
PMC_CLASS_TABLE_DESC(ucf, UCF, ucf, ucf); | PMC_CLASS_TABLE_DESC(ucf, UCF, ucf, ucf); | ||||
PMC_CLASS_TABLE_DESC(corei7uc, UCP, corei7uc, ucp); | PMC_CLASS_TABLE_DESC(corei7uc, UCP, corei7uc, ucp); | ||||
▲ Show 20 Lines • Show All 324 Lines • ▼ Show 20 Lines | |||||
#define broadwell_aliases core2_aliases | #define broadwell_aliases core2_aliases | ||||
#define broadwell_aliases_without_iaf core2_aliases_without_iaf | #define broadwell_aliases_without_iaf core2_aliases_without_iaf | ||||
#define broadwell_xeon_aliases core2_aliases | #define broadwell_xeon_aliases core2_aliases | ||||
#define broadwell_xeon_aliases_without_iaf core2_aliases_without_iaf | #define broadwell_xeon_aliases_without_iaf core2_aliases_without_iaf | ||||
#define skylake_aliases core2_aliases | #define skylake_aliases core2_aliases | ||||
#define skylake_aliases_without_iaf core2_aliases_without_iaf | #define skylake_aliases_without_iaf core2_aliases_without_iaf | ||||
#define skylake_xeon_aliases core2_aliases | #define skylake_xeon_aliases core2_aliases | ||||
#define skylake_xeon_aliases_without_iaf core2_aliases_without_iaf | #define skylake_xeon_aliases_without_iaf core2_aliases_without_iaf | ||||
#define kabylake_aliases core2_aliases | |||||
#define kabylake_aliases_without_iaf core2_aliases_without_iaf | |||||
#define ivybridge_aliases core2_aliases | #define ivybridge_aliases core2_aliases | ||||
#define ivybridge_aliases_without_iaf core2_aliases_without_iaf | #define ivybridge_aliases_without_iaf core2_aliases_without_iaf | ||||
#define ivybridge_xeon_aliases core2_aliases | #define ivybridge_xeon_aliases core2_aliases | ||||
#define ivybridge_xeon_aliases_without_iaf core2_aliases_without_iaf | #define ivybridge_xeon_aliases_without_iaf core2_aliases_without_iaf | ||||
#define sandybridge_aliases core2_aliases | #define sandybridge_aliases core2_aliases | ||||
#define sandybridge_aliases_without_iaf core2_aliases_without_iaf | #define sandybridge_aliases_without_iaf core2_aliases_without_iaf | ||||
#define sandybridge_xeon_aliases core2_aliases | #define sandybridge_xeon_aliases core2_aliases | ||||
#define sandybridge_xeon_aliases_without_iaf core2_aliases_without_iaf | #define sandybridge_xeon_aliases_without_iaf core2_aliases_without_iaf | ||||
▲ Show 20 Lines • Show All 306 Lines • ▼ Show 20 Lines | if (KWPREFIXMATCH(p, IAP_KW_CMASK "=")) { | ||||
return (-1); | return (-1); | ||||
} else if (cpu_info.pm_cputype == PMC_CPU_INTEL_SKYLAKE || | } else if (cpu_info.pm_cputype == PMC_CPU_INTEL_SKYLAKE || | ||||
cpu_info.pm_cputype == PMC_CPU_INTEL_SKYLAKE_XEON) { | cpu_info.pm_cputype == PMC_CPU_INTEL_SKYLAKE_XEON) { | ||||
if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) { | if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) { | ||||
n = pmc_parse_mask(iap_rsp_mask_skylake, p, &rsp); | n = pmc_parse_mask(iap_rsp_mask_skylake, p, &rsp); | ||||
} else | } else | ||||
return (-1); | return (-1); | ||||
} else if (cpu_info.pm_cputype == PMC_CPU_INTEL_KABYLAKE) { | |||||
if (KWPREFIXMATCH(p, IAP_KW_RSP "=")) { | |||||
n = pmc_parse_mask(iap_rsp_mask_skylake, p, &rsp); | |||||
} else | |||||
return (-1); | |||||
} else | } else | ||||
return (-1); | return (-1); | ||||
if (n < 0) /* Parsing failed. */ | if (n < 0) /* Parsing failed. */ | ||||
return (-1); | return (-1); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 1,953 Lines • ▼ Show 20 Lines | case PMC_CLASS_IAP: | ||||
case PMC_CPU_INTEL_SKYLAKE: | case PMC_CPU_INTEL_SKYLAKE: | ||||
ev = skylake_event_table; | ev = skylake_event_table; | ||||
count = PMC_EVENT_TABLE_SIZE(skylake); | count = PMC_EVENT_TABLE_SIZE(skylake); | ||||
break; | break; | ||||
case PMC_CPU_INTEL_SKYLAKE_XEON: | case PMC_CPU_INTEL_SKYLAKE_XEON: | ||||
ev = skylake_xeon_event_table; | ev = skylake_xeon_event_table; | ||||
count = PMC_EVENT_TABLE_SIZE(skylake_xeon); | count = PMC_EVENT_TABLE_SIZE(skylake_xeon); | ||||
break; | break; | ||||
case PMC_CPU_INTEL_KABYLAKE: | |||||
ev = kabylake_event_table; | |||||
count = PMC_EVENT_TABLE_SIZE(kabylake); | |||||
break; | |||||
case PMC_CPU_INTEL_IVYBRIDGE: | case PMC_CPU_INTEL_IVYBRIDGE: | ||||
ev = ivybridge_event_table; | ev = ivybridge_event_table; | ||||
count = PMC_EVENT_TABLE_SIZE(ivybridge); | count = PMC_EVENT_TABLE_SIZE(ivybridge); | ||||
break; | break; | ||||
case PMC_CPU_INTEL_IVYBRIDGE_XEON: | case PMC_CPU_INTEL_IVYBRIDGE_XEON: | ||||
ev = ivybridge_xeon_event_table; | ev = ivybridge_xeon_event_table; | ||||
count = PMC_EVENT_TABLE_SIZE(ivybridge_xeon); | count = PMC_EVENT_TABLE_SIZE(ivybridge_xeon); | ||||
break; | break; | ||||
▲ Show 20 Lines • Show All 366 Lines • ▼ Show 20 Lines | case PMC_CPU_INTEL_BROADWELL_XEON: | ||||
PMC_MDEP_INIT_INTEL_V2(broadwell_xeon); | PMC_MDEP_INIT_INTEL_V2(broadwell_xeon); | ||||
break; | break; | ||||
case PMC_CPU_INTEL_SKYLAKE: | case PMC_CPU_INTEL_SKYLAKE: | ||||
PMC_MDEP_INIT_INTEL_V2(skylake); | PMC_MDEP_INIT_INTEL_V2(skylake); | ||||
break; | break; | ||||
case PMC_CPU_INTEL_SKYLAKE_XEON: | case PMC_CPU_INTEL_SKYLAKE_XEON: | ||||
PMC_MDEP_INIT_INTEL_V2(skylake_xeon); | PMC_MDEP_INIT_INTEL_V2(skylake_xeon); | ||||
break; | break; | ||||
case PMC_CPU_INTEL_KABYLAKE: | |||||
PMC_MDEP_INIT_INTEL_V2(kabylake); | |||||
break; | |||||
case PMC_CPU_INTEL_IVYBRIDGE: | case PMC_CPU_INTEL_IVYBRIDGE: | ||||
PMC_MDEP_INIT_INTEL_V2(ivybridge); | PMC_MDEP_INIT_INTEL_V2(ivybridge); | ||||
break; | break; | ||||
case PMC_CPU_INTEL_IVYBRIDGE_XEON: | case PMC_CPU_INTEL_IVYBRIDGE_XEON: | ||||
PMC_MDEP_INIT_INTEL_V2(ivybridge_xeon); | PMC_MDEP_INIT_INTEL_V2(ivybridge_xeon); | ||||
break; | break; | ||||
case PMC_CPU_INTEL_SANDYBRIDGE: | case PMC_CPU_INTEL_SANDYBRIDGE: | ||||
pmc_class_table[n++] = &ucf_class_table_descr; | pmc_class_table[n++] = &ucf_class_table_descr; | ||||
▲ Show 20 Lines • Show All 200 Lines • ▼ Show 20 Lines | case PMC_CPU_INTEL_SKYLAKE: | ||||
ev = skylake_event_table; | ev = skylake_event_table; | ||||
evfence = skylake_event_table + | evfence = skylake_event_table + | ||||
PMC_EVENT_TABLE_SIZE(skylake); | PMC_EVENT_TABLE_SIZE(skylake); | ||||
break; | break; | ||||
case PMC_CPU_INTEL_SKYLAKE_XEON: | case PMC_CPU_INTEL_SKYLAKE_XEON: | ||||
ev = skylake_xeon_event_table; | ev = skylake_xeon_event_table; | ||||
evfence = skylake_xeon_event_table + | evfence = skylake_xeon_event_table + | ||||
PMC_EVENT_TABLE_SIZE(skylake_xeon); | PMC_EVENT_TABLE_SIZE(skylake_xeon); | ||||
break; | |||||
case PMC_CPU_INTEL_KABYLAKE: | |||||
ev = kabylake_event_table; | |||||
evfence = kabylake_event_table + | |||||
PMC_EVENT_TABLE_SIZE(kabylake); | |||||
break; | break; | ||||
case PMC_CPU_INTEL_IVYBRIDGE: | case PMC_CPU_INTEL_IVYBRIDGE: | ||||
ev = ivybridge_event_table; | ev = ivybridge_event_table; | ||||
evfence = ivybridge_event_table + PMC_EVENT_TABLE_SIZE(ivybridge); | evfence = ivybridge_event_table + PMC_EVENT_TABLE_SIZE(ivybridge); | ||||
break; | break; | ||||
case PMC_CPU_INTEL_IVYBRIDGE_XEON: | case PMC_CPU_INTEL_IVYBRIDGE_XEON: | ||||
ev = ivybridge_xeon_event_table; | ev = ivybridge_xeon_event_table; | ||||
evfence = ivybridge_xeon_event_table + PMC_EVENT_TABLE_SIZE(ivybridge_xeon); | evfence = ivybridge_xeon_event_table + PMC_EVENT_TABLE_SIZE(ivybridge_xeon); | ||||
▲ Show 20 Lines • Show All 313 Lines • Show Last 20 Lines |