PAPI 7.1.0.0
Loading...
Searching...
No Matches
pfmlib_itanium2.h File Reference
Include dependency graph for pfmlib_itanium2.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

union  pfm_ita2_pmc_reg_t
 
union  pfm_ita2_pmd_reg_t
 
struct  pfmlib_ita2_counter_t
 
struct  pfmlib_ita2_opcm_t
 
struct  pfmlib_ita2_btb_t
 
struct  pfmlib_ita2_ear_t
 
struct  pfmlib_ita2_input_rr_desc_t
 
struct  pfmlib_ita2_output_rr_desc_t
 
struct  pfmlib_ita2_input_rr_t
 
struct  pfmlib_ita2_output_rr_t
 
struct  pfmlib_ita2_input_param_t
 
struct  pfmlib_ita2_output_param_t
 

Macros

#define PMU_ITA2_FIRST_COUNTER   4 /* index of first PMC/PMD counter */
 
#define PMU_ITA2_NUM_COUNTERS   4 /* total numbers of PMC/PMD pairs used as counting monitors */
 
#define PMU_ITA2_NUM_PMCS   16 /* total number of PMCS defined */
 
#define PMU_ITA2_NUM_PMDS   18 /* total number of PMDS defined */
 
#define PMU_ITA2_NUM_BTB   8 /* total number of PMDS in BTB */
 
#define PMU_ITA2_COUNTER_WIDTH   47 /* hardware counter bit width */
 
#define PFMLIB_ITA2_FL_EVT_NO_QUALCHECK   0x1 /* don't check qualifier constraints */
 
#define PFMLIB_ITA2_RR_INV   0x1 /* inverse instruction ranges (iranges only) */
 
#define PFMLIB_ITA2_RR_NO_FINE_MODE   0x2 /* force non fine mode for instruction ranges */
 
#define PFMLIB_ITA2_EVT_NO_GRP   0 /* event does not belong to a group */
 
#define PFMLIB_ITA2_EVT_L1_CACHE_GRP   1 /* event belongs to L1 Cache group */
 
#define PFMLIB_ITA2_EVT_L2_CACHE_GRP   2 /* event belongs to L2 Cache group */
 
#define PFMLIB_ITA2_EVT_NO_SET   -1 /* event does not belong to a set */
 

Enumerations

enum  pfmlib_ita2_ism_t { PFMLIB_ITA2_ISM_BOTH =0 , PFMLIB_ITA2_ISM_IA32 =1 , PFMLIB_ITA2_ISM_IA64 =2 }
 
enum  pfmlib_ita2_ear_mode_t { PFMLIB_ITA2_EAR_CACHE_MODE = 0 , PFMLIB_ITA2_EAR_TLB_MODE = 1 , PFMLIB_ITA2_EAR_ALAT_MODE = 2 }
 

Functions

int pfm_ita2_is_ear (unsigned int i)
 
int pfm_ita2_is_dear (unsigned int i)
 
int pfm_ita2_is_dear_tlb (unsigned int i)
 
int pfm_ita2_is_dear_cache (unsigned int i)
 
int pfm_ita2_is_dear_alat (unsigned int i)
 
int pfm_ita2_is_iear (unsigned int i)
 
int pfm_ita2_is_iear_tlb (unsigned int i)
 
int pfm_ita2_is_iear_cache (unsigned int i)
 
int pfm_ita2_is_btb (unsigned int i)
 
int pfm_ita2_support_opcm (unsigned int i)
 
int pfm_ita2_support_iarr (unsigned int i)
 
int pfm_ita2_support_darr (unsigned int i)
 
int pfm_ita2_get_ear_mode (unsigned int i, pfmlib_ita2_ear_mode_t *m)
 
int pfm_ita2_irange_is_fine (pfmlib_output_param_t *outp, pfmlib_ita2_output_param_t *mod_out)
 
int pfm_ita2_get_event_maxincr (unsigned int i, unsigned int *maxincr)
 
int pfm_ita2_get_event_umask (unsigned int i, unsigned long *umask)
 
int pfm_ita2_get_event_group (unsigned int i, int *grp)
 
int pfm_ita2_get_event_set (unsigned int i, int *set)
 

Macro Definition Documentation

◆ PFMLIB_ITA2_EVT_L1_CACHE_GRP

#define PFMLIB_ITA2_EVT_L1_CACHE_GRP   1 /* event belongs to L1 Cache group */

Definition at line 462 of file pfmlib_itanium2.h.

◆ PFMLIB_ITA2_EVT_L2_CACHE_GRP

#define PFMLIB_ITA2_EVT_L2_CACHE_GRP   2 /* event belongs to L2 Cache group */

Definition at line 463 of file pfmlib_itanium2.h.

◆ PFMLIB_ITA2_EVT_NO_GRP

#define PFMLIB_ITA2_EVT_NO_GRP   0 /* event does not belong to a group */

Definition at line 461 of file pfmlib_itanium2.h.

◆ PFMLIB_ITA2_EVT_NO_SET

#define PFMLIB_ITA2_EVT_NO_SET   -1 /* event does not belong to a set */

Definition at line 468 of file pfmlib_itanium2.h.

◆ PFMLIB_ITA2_FL_EVT_NO_QUALCHECK

#define PFMLIB_ITA2_FL_EVT_NO_QUALCHECK   0x1 /* don't check qualifier constraints */

Definition at line 299 of file pfmlib_itanium2.h.

◆ PFMLIB_ITA2_RR_INV

#define PFMLIB_ITA2_RR_INV   0x1 /* inverse instruction ranges (iranges only) */

Definition at line 410 of file pfmlib_itanium2.h.

◆ PFMLIB_ITA2_RR_NO_FINE_MODE

#define PFMLIB_ITA2_RR_NO_FINE_MODE   0x2 /* force non fine mode for instruction ranges */

Definition at line 411 of file pfmlib_itanium2.h.

◆ PMU_ITA2_COUNTER_WIDTH

#define PMU_ITA2_COUNTER_WIDTH   47 /* hardware counter bit width */

Definition at line 43 of file pfmlib_itanium2.h.

◆ PMU_ITA2_FIRST_COUNTER

#define PMU_ITA2_FIRST_COUNTER   4 /* index of first PMC/PMD counter */

Definition at line 38 of file pfmlib_itanium2.h.

◆ PMU_ITA2_NUM_BTB

#define PMU_ITA2_NUM_BTB   8 /* total number of PMDS in BTB */

Definition at line 42 of file pfmlib_itanium2.h.

◆ PMU_ITA2_NUM_COUNTERS

#define PMU_ITA2_NUM_COUNTERS   4 /* total numbers of PMC/PMD pairs used as counting monitors */

Definition at line 39 of file pfmlib_itanium2.h.

◆ PMU_ITA2_NUM_PMCS

#define PMU_ITA2_NUM_PMCS   16 /* total number of PMCS defined */

Definition at line 40 of file pfmlib_itanium2.h.

◆ PMU_ITA2_NUM_PMDS

#define PMU_ITA2_NUM_PMDS   18 /* total number of PMDS defined */

Definition at line 41 of file pfmlib_itanium2.h.

Enumeration Type Documentation

◆ pfmlib_ita2_ear_mode_t

Enumerator
PFMLIB_ITA2_EAR_CACHE_MODE 
PFMLIB_ITA2_EAR_TLB_MODE 
PFMLIB_ITA2_EAR_ALAT_MODE 

Definition at line 358 of file pfmlib_itanium2.h.

358 {
359 PFMLIB_ITA2_EAR_CACHE_MODE= 0, /* Cache mode : I-EAR and D-EAR */
360 PFMLIB_ITA2_EAR_TLB_MODE = 1, /* TLB mode : I-EAR and D-EAR */
361 PFMLIB_ITA2_EAR_ALAT_MODE = 2 /* ALAT mode : D-EAR only */
pfmlib_ita2_ear_mode_t
@ PFMLIB_ITA2_EAR_CACHE_MODE
@ PFMLIB_ITA2_EAR_TLB_MODE
@ PFMLIB_ITA2_EAR_ALAT_MODE

◆ pfmlib_ita2_ism_t

Enumerator
PFMLIB_ITA2_ISM_BOTH 
PFMLIB_ITA2_ISM_IA32 
PFMLIB_ITA2_ISM_IA64 

Definition at line 284 of file pfmlib_itanium2.h.

284 {
285 PFMLIB_ITA2_ISM_BOTH=0, /* IA-32 and IA-64 (default) */
286 PFMLIB_ITA2_ISM_IA32=1, /* IA-32 only */
287 PFMLIB_ITA2_ISM_IA64=2 /* IA-64 only */
pfmlib_ita2_ism_t
@ PFMLIB_ITA2_ISM_BOTH
@ PFMLIB_ITA2_ISM_IA32
@ PFMLIB_ITA2_ISM_IA64

Function Documentation

◆ pfm_ita2_get_ear_mode()

int pfm_ita2_get_ear_mode ( unsigned int  i,
pfmlib_ita2_ear_mode_t m 
)

Definition at line 1965 of file pfmlib_itanium2.c.

1966{
1968
1969 if (!is_ear(i) || m == NULL) return PFMLIB_ERR_INVAL;
1970
1972 if (is_ear_tlb(i)) goto done;
1973
1975 if (is_ear_cache(i)) goto done;
1976
1978 if (is_ear_alat(i)) goto done;
1979
1980 return PFMLIB_ERR_INVAL;
1981done:
1982 *m = r;
1983 return PFMLIB_SUCCESS;
1984}
int i
#define PFMLIB_SUCCESS
Definition: pfmlib.h:283
#define PFMLIB_ERR_INVAL
Definition: pfmlib.h:285
#define is_ear(i)
#define is_ear_alat(i)
#define is_ear_cache(i)
#define is_ear_tlb(i)
Here is the caller graph for this function:

◆ pfm_ita2_get_event_group()

int pfm_ita2_get_event_group ( unsigned int  i,
int grp 
)

Definition at line 2009 of file pfmlib_itanium2.c.

2010{
2011 if (i >= PME_ITA2_EVENT_COUNT || grp == NULL) return PFMLIB_ERR_INVAL;
2012 *grp = evt_grp(i);
2013 return PFMLIB_SUCCESS;
2014}
#define PME_ITA2_EVENT_COUNT
#define evt_grp(e)

◆ pfm_ita2_get_event_maxincr()

int pfm_ita2_get_event_maxincr ( unsigned int  i,
unsigned int maxincr 
)

Definition at line 1883 of file pfmlib_itanium2.c.

1884{
1885 if (i >= PME_ITA2_EVENT_COUNT || maxincr == NULL) return PFMLIB_ERR_INVAL;
1886 *maxincr = itanium2_pe[i].pme_maxincr;
1887 return PFMLIB_SUCCESS;
1888}
static pme_ita2_entry_t itanium2_pe[]
unsigned int pme_maxincr

◆ pfm_ita2_get_event_set()

int pfm_ita2_get_event_set ( unsigned int  i,
int set 
)

Definition at line 2017 of file pfmlib_itanium2.c.

2018{
2019 if (i >= PME_ITA2_EVENT_COUNT || set == NULL) return PFMLIB_ERR_INVAL;
2020 *set = evt_set(i) == 0xf ? PFMLIB_ITA2_EVT_NO_SET : evt_set(i);
2021 return PFMLIB_SUCCESS;
2022}
#define evt_set(e)
#define PFMLIB_ITA2_EVT_NO_SET

◆ pfm_ita2_get_event_umask()

int pfm_ita2_get_event_umask ( unsigned int  i,
unsigned long umask 
)

Definition at line 2001 of file pfmlib_itanium2.c.

2002{
2003 if (i >= PME_ITA2_EVENT_COUNT || umask == NULL) return PFMLIB_ERR_INVAL;
2004 *umask = evt_umask(i);
2005 return PFMLIB_SUCCESS;
2006}
#define evt_umask(e)
Here is the caller graph for this function:

◆ pfm_ita2_irange_is_fine()

int pfm_ita2_irange_is_fine ( pfmlib_output_param_t outp,
pfmlib_ita2_output_param_t mod_out 
)

Definition at line 2026 of file pfmlib_itanium2.c.

2027{
2028 pfmlib_ita2_output_param_t *param = mod_out;
2030 unsigned int i, count;
2031
2032 /* some sanity checks */
2033 if (outp == NULL || param == NULL) return 0;
2034 if (outp->pfp_pmc_count >= PFMLIB_MAX_PMCS) return 0;
2035
2036 if (param->pfp_ita2_irange.rr_nbr_used == 0) return 0;
2037
2038 /*
2039 * we look for pmc14 as it contains the bit indicating if fine mode is used
2040 */
2041 count = outp->pfp_pmc_count;
2042 for(i=0; i < count; i++) {
2043 if (outp->pfp_pmcs[i].reg_num == 14) goto found;
2044 }
2045 return 0;
2046found:
2047 reg.pmc_val = outp->pfp_pmcs[i].reg_value;
2048 return reg.pmc14_ita2_reg.iarc_fine ? 1 : 0;
2049}
static long count
#define PFMLIB_MAX_PMCS
Definition: pfmlib.h:41
pfmlib_ita2_output_rr_t pfp_ita2_irange
pfmlib_reg_t pfp_pmcs[PFMLIB_MAX_PMCS]
Definition: pfmlib.h:129
unsigned int pfp_pmc_count
Definition: pfmlib.h:127
unsigned long long reg_value
Definition: pfmlib.h:98
unsigned int reg_num
Definition: pfmlib.h:100
unsigned long pmc_val
unsigned long iarc_fine
struct pfm_ita2_pmc_reg_t::@51 pmc14_ita2_reg
Here is the caller graph for this function:

◆ pfm_ita2_is_btb()

int pfm_ita2_is_btb ( unsigned int  i)

Definition at line 1939 of file pfmlib_itanium2.c.

1940{
1941 return i < PME_ITA2_EVENT_COUNT && is_btb(i);
1942}
#define is_btb(i)
Here is the caller graph for this function:

◆ pfm_ita2_is_dear()

int pfm_ita2_is_dear ( unsigned int  i)

Definition at line 1897 of file pfmlib_itanium2.c.

1898{
1899 return i < PME_ITA2_EVENT_COUNT && is_dear(i);
1900}
#define is_dear(i)
Here is the caller graph for this function:

◆ pfm_ita2_is_dear_alat()

int pfm_ita2_is_dear_alat ( unsigned int  i)

Definition at line 1915 of file pfmlib_itanium2.c.

1916{
1917 return i < PME_ITA2_EVENT_COUNT && is_ear_alat(i);
1918}

◆ pfm_ita2_is_dear_cache()

int pfm_ita2_is_dear_cache ( unsigned int  i)

Definition at line 1909 of file pfmlib_itanium2.c.

1910{
1911 return i < PME_ITA2_EVENT_COUNT && is_dear(i) && is_ear_cache(i);
1912}

◆ pfm_ita2_is_dear_tlb()

int pfm_ita2_is_dear_tlb ( unsigned int  i)

Definition at line 1903 of file pfmlib_itanium2.c.

1904{
1905 return i < PME_ITA2_EVENT_COUNT && is_dear(i) && is_ear_tlb(i);
1906}

◆ pfm_ita2_is_ear()

int pfm_ita2_is_ear ( unsigned int  i)

Definition at line 1891 of file pfmlib_itanium2.c.

1892{
1893 return i < PME_ITA2_EVENT_COUNT && is_ear(i);
1894}

◆ pfm_ita2_is_iear()

int pfm_ita2_is_iear ( unsigned int  i)

Definition at line 1921 of file pfmlib_itanium2.c.

1922{
1923 return i < PME_ITA2_EVENT_COUNT && is_iear(i);
1924}
#define is_iear(i)
Here is the caller graph for this function:

◆ pfm_ita2_is_iear_cache()

int pfm_ita2_is_iear_cache ( unsigned int  i)

Definition at line 1933 of file pfmlib_itanium2.c.

1934{
1935 return i < PME_ITA2_EVENT_COUNT && is_iear(i) && is_ear_cache(i);
1936}

◆ pfm_ita2_is_iear_tlb()

int pfm_ita2_is_iear_tlb ( unsigned int  i)

Definition at line 1927 of file pfmlib_itanium2.c.

1928{
1929 return i < PME_ITA2_EVENT_COUNT && is_iear(i) && is_ear_tlb(i);
1930}

◆ pfm_ita2_support_darr()

int pfm_ita2_support_darr ( unsigned int  i)

Definition at line 1952 of file pfmlib_itanium2.c.

1953{
1954 return i < PME_ITA2_EVENT_COUNT && has_darr(i);
1955}
#define has_darr(i)
Here is the caller graph for this function:

◆ pfm_ita2_support_iarr()

int pfm_ita2_support_iarr ( unsigned int  i)

Definition at line 1945 of file pfmlib_itanium2.c.

1946{
1947 return i < PME_ITA2_EVENT_COUNT && has_iarr(i);
1948}
#define has_iarr(i)
Here is the caller graph for this function:

◆ pfm_ita2_support_opcm()

int pfm_ita2_support_opcm ( unsigned int  i)

Definition at line 1959 of file pfmlib_itanium2.c.

1960{
1961 return i < PME_ITA2_EVENT_COUNT && has_opcm(i);
1962}
#define has_opcm(i)
Here is the caller graph for this function: