freebsd-dev/sys/dev/hwpmc/pmc_events.h
Joseph Koshy 0cfab8ddc1 - Add support for PMCs in Intel CPUs of Family 6, model 0xE (Core Solo
and Core Duo), models 0xF (Core2), model 0x17 (Core2Extreme) and
  model 0x1C (Atom).

  In these CPUs, the actual numbers, kinds and widths of PMCs present
  need to queried at run time.  Support for specific "architectural"
  events also needs to be queried at run time.

  Model 0xE CPUs support programmable PMCs, subsequent CPUs
  additionally support "fixed-function" counters.

- Use event names that are close to vendor documentation, taking in
  account that:
  - events with identical semantics on two or more CPUs in this family
    can have differing names in vendor documentation,
  - identical vendor event names may map to differing events across
    CPUs,
  - each type of CPU supports a different subset of measurable
    events.

  Fixed-function and programmable counters both use the same vendor
  names for events.  The use of a class name prefix ("iaf-" or
  "iap-" respectively) permits these to be distinguished.

- In libpmc, refactor pmc_name_of_event() into a public interface
  and an internal helper function, for use by log handling code.

- Minor code tweaks: staticize a global, freshen a few comments.

Tested by:	gnn
2008-11-27 09:00:47 +00:00

1423 lines
61 KiB
C

/*-
* Copyright (c) 2005 Joseph Koshy
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $FreeBSD$
*/
#ifndef _DEV_HWPMC_PMC_EVENTS_H_
#define _DEV_HWPMC_PMC_EVENTS_H_
/*
* PMC event codes.
*
* __PMC_EV(CLASS, SYMBOLIC-NAME)
*
*/
/*
* AMD K7 Events, from "The AMD Athlon(tm) Processor x86 Code
* Optimization Guide" [Doc#22007K, Feb 2002]
*/
#define __PMC_EV_K7() \
__PMC_EV(K7, DC_ACCESSES) \
__PMC_EV(K7, DC_MISSES) \
__PMC_EV(K7, DC_REFILLS_FROM_L2) \
__PMC_EV(K7, DC_REFILLS_FROM_SYSTEM) \
__PMC_EV(K7, DC_WRITEBACKS) \
__PMC_EV(K7, L1_DTLB_MISS_AND_L2_DTLB_HITS) \
__PMC_EV(K7, L1_AND_L2_DTLB_MISSES) \
__PMC_EV(K7, MISALIGNED_REFERENCES) \
__PMC_EV(K7, IC_FETCHES) \
__PMC_EV(K7, IC_MISSES) \
__PMC_EV(K7, L1_ITLB_MISSES) \
__PMC_EV(K7, L1_L2_ITLB_MISSES) \
__PMC_EV(K7, RETIRED_INSTRUCTIONS) \
__PMC_EV(K7, RETIRED_OPS) \
__PMC_EV(K7, RETIRED_BRANCHES) \
__PMC_EV(K7, RETIRED_BRANCHES_MISPREDICTED) \
__PMC_EV(K7, RETIRED_TAKEN_BRANCHES) \
__PMC_EV(K7, RETIRED_TAKEN_BRANCHES_MISPREDICTED) \
__PMC_EV(K7, RETIRED_FAR_CONTROL_TRANSFERS) \
__PMC_EV(K7, RETIRED_RESYNC_BRANCHES) \
__PMC_EV(K7, INTERRUPTS_MASKED_CYCLES) \
__PMC_EV(K7, INTERRUPTS_MASKED_WHILE_PENDING_CYCLES) \
__PMC_EV(K7, HARDWARE_INTERRUPTS)
#define PMC_EV_K7_FIRST PMC_EV_K7_DC_ACCESSES
#define PMC_EV_K7_LAST PMC_EV_K7_HARDWARE_INTERRUPTS
/*
* Intel P4 Events, from "IA-32 Intel(r) Architecture Software
* Developer's Manual, Volume 3: System Programming Guide" [245472-012]
*/
#define __PMC_EV_P4() \
__PMC_EV(P4, TC_DELIVER_MODE) \
__PMC_EV(P4, BPU_FETCH_REQUEST) \
__PMC_EV(P4, ITLB_REFERENCE) \
__PMC_EV(P4, MEMORY_CANCEL) \
__PMC_EV(P4, MEMORY_COMPLETE) \
__PMC_EV(P4, LOAD_PORT_REPLAY) \
__PMC_EV(P4, STORE_PORT_REPLAY) \
__PMC_EV(P4, MOB_LOAD_REPLAY) \
__PMC_EV(P4, PAGE_WALK_TYPE) \
__PMC_EV(P4, BSQ_CACHE_REFERENCE) \
__PMC_EV(P4, IOQ_ALLOCATION) \
__PMC_EV(P4, IOQ_ACTIVE_ENTRIES) \
__PMC_EV(P4, FSB_DATA_ACTIVITY) \
__PMC_EV(P4, BSQ_ALLOCATION) \
__PMC_EV(P4, BSQ_ACTIVE_ENTRIES) \
__PMC_EV(P4, SSE_INPUT_ASSIST) \
__PMC_EV(P4, PACKED_SP_UOP) \
__PMC_EV(P4, PACKED_DP_UOP) \
__PMC_EV(P4, SCALAR_SP_UOP) \
__PMC_EV(P4, SCALAR_DP_UOP) \
__PMC_EV(P4, 64BIT_MMX_UOP) \
__PMC_EV(P4, 128BIT_MMX_UOP) \
__PMC_EV(P4, X87_FP_UOP) \
__PMC_EV(P4, X87_SIMD_MOVES_UOP) \
__PMC_EV(P4, GLOBAL_POWER_EVENTS) \
__PMC_EV(P4, TC_MS_XFER) \
__PMC_EV(P4, UOP_QUEUE_WRITES) \
__PMC_EV(P4, RETIRED_MISPRED_BRANCH_TYPE) \
__PMC_EV(P4, RETIRED_BRANCH_TYPE) \
__PMC_EV(P4, RESOURCE_STALL) \
__PMC_EV(P4, WC_BUFFER) \
__PMC_EV(P4, B2B_CYCLES) \
__PMC_EV(P4, BNR) \
__PMC_EV(P4, SNOOP) \
__PMC_EV(P4, RESPONSE) \
__PMC_EV(P4, FRONT_END_EVENT) \
__PMC_EV(P4, EXECUTION_EVENT) \
__PMC_EV(P4, REPLAY_EVENT) \
__PMC_EV(P4, INSTR_RETIRED) \
__PMC_EV(P4, UOPS_RETIRED) \
__PMC_EV(P4, UOP_TYPE) \
__PMC_EV(P4, BRANCH_RETIRED) \
__PMC_EV(P4, MISPRED_BRANCH_RETIRED) \
__PMC_EV(P4, X87_ASSIST) \
__PMC_EV(P4, MACHINE_CLEAR)
#define PMC_EV_P4_FIRST PMC_EV_P4_TC_DELIVER_MODE
#define PMC_EV_P4_LAST PMC_EV_P4_MACHINE_CLEAR
/* Intel Pentium Pro, P-II, P-III and Pentium-M style events */
#define __PMC_EV_P6() \
__PMC_EV(P6, DATA_MEM_REFS) \
__PMC_EV(P6, DCU_LINES_IN) \
__PMC_EV(P6, DCU_M_LINES_IN) \
__PMC_EV(P6, DCU_M_LINES_OUT) \
__PMC_EV(P6, DCU_MISS_OUTSTANDING) \
__PMC_EV(P6, IFU_FETCH) \
__PMC_EV(P6, IFU_FETCH_MISS) \
__PMC_EV(P6, ITLB_MISS) \
__PMC_EV(P6, IFU_MEM_STALL) \
__PMC_EV(P6, ILD_STALL) \
__PMC_EV(P6, L2_IFETCH) \
__PMC_EV(P6, L2_LD) \
__PMC_EV(P6, L2_ST) \
__PMC_EV(P6, L2_LINES_IN) \
__PMC_EV(P6, L2_LINES_OUT) \
__PMC_EV(P6, L2_M_LINES_INM) \
__PMC_EV(P6, L2_M_LINES_OUTM) \
__PMC_EV(P6, L2_RQSTS) \
__PMC_EV(P6, L2_ADS) \
__PMC_EV(P6, L2_DBUS_BUSY) \
__PMC_EV(P6, L2_DBUS_BUSY_RD) \
__PMC_EV(P6, BUS_DRDY_CLOCKS) \
__PMC_EV(P6, BUS_LOCK_CLOCKS) \
__PMC_EV(P6, BUS_REQ_OUTSTANDING) \
__PMC_EV(P6, BUS_TRAN_BRD) \
__PMC_EV(P6, BUS_TRAN_RFO) \
__PMC_EV(P6, BUS_TRANS_WB) \
__PMC_EV(P6, BUS_TRAN_IFETCH) \
__PMC_EV(P6, BUS_TRAN_INVAL) \
__PMC_EV(P6, BUS_TRAN_PWR) \
__PMC_EV(P6, BUS_TRANS_P) \
__PMC_EV(P6, BUS_TRANS_IO) \
__PMC_EV(P6, BUS_TRAN_DEF) \
__PMC_EV(P6, BUS_TRAN_BURST) \
__PMC_EV(P6, BUS_TRAN_ANY) \
__PMC_EV(P6, BUS_TRAN_MEM) \
__PMC_EV(P6, BUS_DATA_RCV) \
__PMC_EV(P6, BUS_BNR_DRV) \
__PMC_EV(P6, BUS_HIT_DRV) \
__PMC_EV(P6, BUS_HITM_DRV) \
__PMC_EV(P6, BUS_SNOOP_STALL) \
__PMC_EV(P6, FLOPS) \
__PMC_EV(P6, FP_COMPS_OPS_EXE) \
__PMC_EV(P6, FP_ASSIST) \
__PMC_EV(P6, MUL) \
__PMC_EV(P6, DIV) \
__PMC_EV(P6, CYCLES_DIV_BUSY) \
__PMC_EV(P6, LD_BLOCKS) \
__PMC_EV(P6, SB_DRAINS) \
__PMC_EV(P6, MISALIGN_MEM_REF) \
__PMC_EV(P6, EMON_KNI_PREF_DISPATCHED) \
__PMC_EV(P6, EMON_KNI_PREF_MISS) \
__PMC_EV(P6, INST_RETIRED) \
__PMC_EV(P6, UOPS_RETIRED) \
__PMC_EV(P6, INST_DECODED) \
__PMC_EV(P6, EMON_KNI_INST_RETIRED) \
__PMC_EV(P6, EMON_KNI_COMP_INST_RET) \
__PMC_EV(P6, HW_INT_RX) \
__PMC_EV(P6, CYCLES_INT_MASKED) \
__PMC_EV(P6, CYCLES_INT_PENDING_AND_MASKED) \
__PMC_EV(P6, BR_INST_RETIRED) \
__PMC_EV(P6, BR_MISS_PRED_RETIRED) \
__PMC_EV(P6, BR_TAKEN_RETIRED) \
__PMC_EV(P6, BR_MISS_PRED_TAKEN_RET) \
__PMC_EV(P6, BR_INST_DECODED) \
__PMC_EV(P6, BTB_MISSES) \
__PMC_EV(P6, BR_BOGUS) \
__PMC_EV(P6, BACLEARS) \
__PMC_EV(P6, RESOURCE_STALLS) \
__PMC_EV(P6, PARTIAL_RAT_STALLS) \
__PMC_EV(P6, SEGMENT_REG_LOADS) \
__PMC_EV(P6, CPU_CLK_UNHALTED) \
__PMC_EV(P6, MMX_INSTR_EXEC) \
__PMC_EV(P6, MMX_SAT_INSTR_EXEC) \
__PMC_EV(P6, MMX_UOPS_EXEC) \
__PMC_EV(P6, MMX_INSTR_TYPE_EXEC) \
__PMC_EV(P6, FP_MMX_TRANS) \
__PMC_EV(P6, MMX_ASSIST) \
__PMC_EV(P6, MMX_INSTR_RET) \
__PMC_EV(P6, SEG_RENAME_STALLS) \
__PMC_EV(P6, SEG_REG_RENAMES) \
__PMC_EV(P6, RET_SEG_RENAMES) \
__PMC_EV(P6, EMON_EST_TRANS) \
__PMC_EV(P6, EMON_THERMAL_TRIP) \
__PMC_EV(P6, BR_INST_EXEC) \
__PMC_EV(P6, BR_MISSP_EXEC) \
__PMC_EV(P6, BR_BAC_MISSP_EXEC) \
__PMC_EV(P6, BR_CND_EXEC) \
__PMC_EV(P6, BR_CND_MISSP_EXEC) \
__PMC_EV(P6, BR_IND_EXEC) \
__PMC_EV(P6, BR_IND_MISSP_EXEC) \
__PMC_EV(P6, BR_RET_EXEC) \
__PMC_EV(P6, BR_RET_MISSP_EXEC) \
__PMC_EV(P6, BR_RET_BAC_MISSP_EXEC) \
__PMC_EV(P6, BR_CALL_EXEC) \
__PMC_EV(P6, BR_CALL_MISSP_EXEC) \
__PMC_EV(P6, BR_IND_CALL_EXEC) \
__PMC_EV(P6, EMON_SIMD_INSTR_RETIRED) \
__PMC_EV(P6, EMON_SYNCH_UOPS) \
__PMC_EV(P6, EMON_ESP_UOPS) \
__PMC_EV(P6, EMON_FUSED_UOPS_RET) \
__PMC_EV(P6, EMON_UNFUSION) \
__PMC_EV(P6, EMON_PREF_RQSTS_UP) \
__PMC_EV(P6, EMON_PREF_RQSTS_DN) \
__PMC_EV(P6, EMON_SSE_SSE2_INST_RETIRED) \
__PMC_EV(P6, EMON_SSE_SSE2_COMP_INST_RETIRED)
#define PMC_EV_P6_FIRST PMC_EV_P6_DATA_MEM_REFS
#define PMC_EV_P6_LAST PMC_EV_P6_EMON_SSE_SSE2_COMP_INST_RETIRED
/* AMD K8 PMCs */
#define __PMC_EV_K8() \
__PMC_EV(K8, FP_DISPATCHED_FPU_OPS) \
__PMC_EV(K8, FP_CYCLES_WITH_NO_FPU_OPS_RETIRED) \
__PMC_EV(K8, FP_DISPATCHED_FPU_FAST_FLAG_OPS) \
__PMC_EV(K8, LS_SEGMENT_REGISTER_LOAD) \
__PMC_EV(K8, LS_MICROARCHITECTURAL_RESYNC_BY_SELF_MODIFYING_CODE) \
__PMC_EV(K8, LS_MICROARCHITECTURAL_RESYNC_BY_SNOOP) \
__PMC_EV(K8, LS_BUFFER2_FULL) \
__PMC_EV(K8, LS_LOCKED_OPERATION) \
__PMC_EV(K8, LS_MICROARCHITECTURAL_LATE_CANCEL) \
__PMC_EV(K8, LS_RETIRED_CFLUSH_INSTRUCTIONS) \
__PMC_EV(K8, LS_RETIRED_CPUID_INSTRUCTIONS) \
__PMC_EV(K8, DC_ACCESS) \
__PMC_EV(K8, DC_MISS) \
__PMC_EV(K8, DC_REFILL_FROM_L2) \
__PMC_EV(K8, DC_REFILL_FROM_SYSTEM) \
__PMC_EV(K8, DC_COPYBACK) \
__PMC_EV(K8, DC_L1_DTLB_MISS_AND_L2_DTLB_HIT) \
__PMC_EV(K8, DC_L1_DTLB_MISS_AND_L2_DTLB_MISS) \
__PMC_EV(K8, DC_MISALIGNED_DATA_REFERENCE) \
__PMC_EV(K8, DC_MICROARCHITECTURAL_LATE_CANCEL) \
__PMC_EV(K8, DC_MICROARCHITECTURAL_EARLY_CANCEL) \
__PMC_EV(K8, DC_ONE_BIT_ECC_ERROR) \
__PMC_EV(K8, DC_DISPATCHED_PREFETCH_INSTRUCTIONS) \
__PMC_EV(K8, DC_DCACHE_ACCESSES_BY_LOCKS) \
__PMC_EV(K8, BU_CPU_CLK_UNHALTED) \
__PMC_EV(K8, BU_INTERNAL_L2_REQUEST) \
__PMC_EV(K8, BU_FILL_REQUEST_L2_MISS) \
__PMC_EV(K8, BU_FILL_INTO_L2) \
__PMC_EV(K8, IC_FETCH) \
__PMC_EV(K8, IC_MISS) \
__PMC_EV(K8, IC_REFILL_FROM_L2) \
__PMC_EV(K8, IC_REFILL_FROM_SYSTEM) \
__PMC_EV(K8, IC_L1_ITLB_MISS_AND_L2_ITLB_HIT) \
__PMC_EV(K8, IC_L1_ITLB_MISS_AND_L2_ITLB_MISS) \
__PMC_EV(K8, IC_MICROARCHITECTURAL_RESYNC_BY_SNOOP) \
__PMC_EV(K8, IC_INSTRUCTION_FETCH_STALL) \
__PMC_EV(K8, IC_RETURN_STACK_HIT) \
__PMC_EV(K8, IC_RETURN_STACK_OVERFLOW) \
__PMC_EV(K8, FR_RETIRED_X86_INSTRUCTIONS) \
__PMC_EV(K8, FR_RETIRED_UOPS) \
__PMC_EV(K8, FR_RETIRED_BRANCHES) \
__PMC_EV(K8, FR_RETIRED_BRANCHES_MISPREDICTED) \
__PMC_EV(K8, FR_RETIRED_TAKEN_BRANCHES) \
__PMC_EV(K8, FR_RETIRED_TAKEN_BRANCHES_MISPREDICTED) \
__PMC_EV(K8, FR_RETIRED_FAR_CONTROL_TRANSFERS) \
__PMC_EV(K8, FR_RETIRED_RESYNCS) \
__PMC_EV(K8, FR_RETIRED_NEAR_RETURNS) \
__PMC_EV(K8, FR_RETIRED_NEAR_RETURNS_MISPREDICTED) \
__PMC_EV(K8, FR_RETIRED_TAKEN_BRANCHES_MISPREDICTED_BY_ADDR_MISCOMPARE) \
__PMC_EV(K8, FR_RETIRED_FPU_INSTRUCTIONS) \
__PMC_EV(K8, FR_RETIRED_FASTPATH_DOUBLE_OP_INSTRUCTIONS) \
__PMC_EV(K8, FR_INTERRUPTS_MASKED_CYCLES) \
__PMC_EV(K8, FR_INTERRUPTS_MASKED_WHILE_PENDING_CYCLES) \
__PMC_EV(K8, FR_TAKEN_HARDWARE_INTERRUPTS) \
__PMC_EV(K8, FR_DECODER_EMPTY) \
__PMC_EV(K8, FR_DISPATCH_STALLS) \
__PMC_EV(K8, FR_DISPATCH_STALL_FROM_BRANCH_ABORT_TO_RETIRE) \
__PMC_EV(K8, FR_DISPATCH_STALL_FOR_SERIALIZATION) \
__PMC_EV(K8, FR_DISPATCH_STALL_FOR_SEGMENT_LOAD) \
__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_REORDER_BUFFER_IS_FULL) \
__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_RESERVATION_STATIONS_ARE_FULL) \
__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_FPU_IS_FULL) \
__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_LS_IS_FULL) \
__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_WAITING_FOR_ALL_TO_BE_QUIET) \
__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_FAR_XFER_OR_RESYNC_BRANCH_PENDING) \
__PMC_EV(K8, FR_FPU_EXCEPTIONS) \
__PMC_EV(K8, FR_NUMBER_OF_BREAKPOINTS_FOR_DR0) \
__PMC_EV(K8, FR_NUMBER_OF_BREAKPOINTS_FOR_DR1) \
__PMC_EV(K8, FR_NUMBER_OF_BREAKPOINTS_FOR_DR2) \
__PMC_EV(K8, FR_NUMBER_OF_BREAKPOINTS_FOR_DR3) \
__PMC_EV(K8, NB_MEMORY_CONTROLLER_PAGE_ACCESS_EVENT) \
__PMC_EV(K8, NB_MEMORY_CONTROLLER_PAGE_TABLE_OVERFLOW) \
__PMC_EV(K8, NB_MEMORY_CONTROLLER_DRAM_COMMAND_SLOTS_MISSED) \
__PMC_EV(K8, NB_MEMORY_CONTROLLER_TURNAROUND) \
__PMC_EV(K8, NB_MEMORY_CONTROLLER_BYPASS_SATURATION) \
__PMC_EV(K8, NB_SIZED_COMMANDS) \
__PMC_EV(K8, NB_PROBE_RESULT) \
__PMC_EV(K8, NB_HT_BUS0_BANDWIDTH) \
__PMC_EV(K8, NB_HT_BUS1_BANDWIDTH) \
__PMC_EV(K8, NB_HT_BUS2_BANDWIDTH)
#define PMC_EV_K8_FIRST PMC_EV_K8_FP_DISPATCHED_FPU_OPS
#define PMC_EV_K8_LAST PMC_EV_K8_NB_HT_BUS2_BANDWIDTH
/*
* Intel Pentium and Pentium MMX events, from the "Intel 64 and IA-32
* Architectures Software Developer's Manual, Volume 3B: System Programming
* Guide, Part 2, August 2007".
*/
#define __PMC_EV_P5() \
__PMC_EV(P5, DATA_READ) \
__PMC_EV(P5, DATA_WRITE) \
__PMC_EV(P5, DATA_TLB_MISS) \
__PMC_EV(P5, DATA_READ_MISS) \
__PMC_EV(P5, DATA_WRITE_MISS) \
__PMC_EV(P5, WRITE_HIT_TO_M_OR_E_STATE_LINES) \
__PMC_EV(P5, DATA_CACHE_LINES_WRITTEN_BACK) \
__PMC_EV(P5, EXTERNAL_SNOOPS) \
__PMC_EV(P5, EXTERNAL_DATA_CACHE_SNOOP_HITS) \
__PMC_EV(P5, MEMORY_ACCESSES_IN_BOTH_PIPES) \
__PMC_EV(P5, BANK_CONFLICTS) \
__PMC_EV(P5, MISALIGNED_DATA_OR_IO_REFERENCES) \
__PMC_EV(P5, CODE_READ) \
__PMC_EV(P5, CODE_TLB_MISS) \
__PMC_EV(P5, CODE_CACHE_MISS) \
__PMC_EV(P5, ANY_SEGMENT_REGISTER_LOADED) \
__PMC_EV(P5, BRANCHES) \
__PMC_EV(P5, BTB_HITS) \
__PMC_EV(P5, TAKEN_BRANCH_OR_BTB_HIT) \
__PMC_EV(P5, PIPELINE_FLUSHES) \
__PMC_EV(P5, INSTRUCTIONS_EXECUTED) \
__PMC_EV(P5, INSTRUCTIONS_EXECUTED_V_PIPE) \
__PMC_EV(P5, BUS_CYCLE_DURATION) \
__PMC_EV(P5, WRITE_BUFFER_FULL_STALL_DURATION) \
__PMC_EV(P5, WAITING_FOR_DATA_MEMORY_READ_STALL_DURATION) \
__PMC_EV(P5, STALL_ON_WRITE_TO_AN_E_OR_M_STATE_LINE) \
__PMC_EV(P5, LOCKED_BUS_CYCLE) \
__PMC_EV(P5, IO_READ_OR_WRITE_CYCLE) \
__PMC_EV(P5, NONCACHEABLE_MEMORY_READS) \
__PMC_EV(P5, PIPELINE_AGI_STALLS) \
__PMC_EV(P5, FLOPS) \
__PMC_EV(P5, BREAKPOINT_MATCH_ON_DR0_REGISTER) \
__PMC_EV(P5, BREAKPOINT_MATCH_ON_DR1_REGISTER) \
__PMC_EV(P5, BREAKPOINT_MATCH_ON_DR2_REGISTER) \
__PMC_EV(P5, BREAKPOINT_MATCH_ON_DR3_REGISTER) \
__PMC_EV(P5, HARDWARE_INTERRUPTS) \
__PMC_EV(P5, DATA_READ_OR_WRITE) \
__PMC_EV(P5, DATA_READ_MISS_OR_WRITE_MISS) \
__PMC_EV(P5, BUS_OWNERSHIP_LATENCY) \
__PMC_EV(P5, BUS_OWNERSHIP_TRANSFERS) \
__PMC_EV(P5, MMX_INSTRUCTIONS_EXECUTED_U_PIPE) \
__PMC_EV(P5, MMX_INSTRUCTIONS_EXECUTED_V_PIPE) \
__PMC_EV(P5, CACHE_M_LINE_SHARING) \
__PMC_EV(P5, CACHE_LINE_SHARING) \
__PMC_EV(P5, EMMS_INSTRUCTIONS_EXECUTED) \
__PMC_EV(P5, TRANSITIONS_BETWEEN_MMX_AND_FP_INSTRUCTIONS) \
__PMC_EV(P5, BUS_UTILIZATION_DUE_TO_PROCESSOR_ACTIVITY) \
__PMC_EV(P5, WRITES_TO_NONCACHEABLE_MEMORY) \
__PMC_EV(P5, SATURATING_MMX_INSTRUCTIONS_EXECUTED) \
__PMC_EV(P5, SATURATIONS_PERFORMED) \
__PMC_EV(P5, NUMBER_OF_CYCLES_NOT_IN_HALT_STATE) \
__PMC_EV(P5, DATA_CACHE_TLB_MISS_STALL_DURATION) \
__PMC_EV(P5, MMX_INSTRUCTION_DATA_READS) \
__PMC_EV(P5, MMX_INSTRUCTION_DATA_READ_MISSES) \
__PMC_EV(P5, FLOATING_POINT_STALLS_DURATION) \
__PMC_EV(P5, TAKEN_BRANCHES) \
__PMC_EV(P5, D1_STARVATION_AND_FIFO_IS_EMPTY) \
__PMC_EV(P5, D1_STARVATION_AND_ONLY_ONE_INSTRUCTION_IN_FIFO) \
__PMC_EV(P5, MMX_INSTRUCTION_DATA_WRITES) \
__PMC_EV(P5, MMX_INSTRUCTION_DATA_WRITE_MISSES) \
__PMC_EV(P5, PIPELINE_FLUSHES_DUE_TO_WRONG_BRANCH_PREDICTIONS) \
__PMC_EV(P5, \
PIPELINE_FLUSHES_DUE_TO_WRONG_BRANCH_PREDICTIONS_RESOLVED_IN_WB_STAGE) \
__PMC_EV(P5, MISALIGNED_DATA_MEMORY_REFERENCE_ON_MMX_INSTRUCTIONS) \
__PMC_EV(P5, PIPELINE_STALL_FOR_MMX_INSTRUCTION_DATA_MEMORY_READS) \
__PMC_EV(P5, MISPREDICTED_OR_UNPREDICTED_RETURNS) \
__PMC_EV(P5, PREDICTED_RETURNS) \
__PMC_EV(P5, MMX_MULTIPLY_UNIT_INTERLOCK) \
__PMC_EV(P5, MOVD_MOVQ_STORE_STALL_DUE_TO_PREVIOUS_MMX_OPERATION) \
__PMC_EV(P5, RETURNS) \
__PMC_EV(P5, BTB_FALSE_ENTRIES) \
__PMC_EV(P5, BTB_MISS_PREDICTION_ON_NOT_TAKEN_BRANCH) \
__PMC_EV(P5, \
FULL_WRITE_BUFFER_STALL_DURATION_WHILE_EXECUTING_MMX_INSTRUCTIONS) \
__PMC_EV(P5, STALL_ON_MMX_INSTRUCTION_WRITE_TO_E_OR_M_STATE_LINE)
#define PMC_EV_P5_FIRST PMC_EV_P5_DATA_READ
#define PMC_EV_P5_LAST \
PMC_EV_P5_STALL_ON_MMX_INSTRUCTION_WRITE_TO_E_OR_M_STATE_LINE
/*
* Events supported by Intel architectural fixed function counters,
* from the "Intel 64 and IA-32 Architectures Software Developer's
* Manual Volume 3B: System Programming Guide, Part 2", July 2008.
*/
#define __PMC_EV_IAF() \
__PMC_EV(IAF, INSTR_RETIRED_ANY) \
__PMC_EV(IAF, CPU_CLK_UNHALTED_CORE) \
__PMC_EV(IAF, CPU_CLK_UNHALTED_REF)
#define PMC_EV_IAF_FIRST PMC_EV_IAF_INSTR_RETIRED_ANY
#define PMC_EV_IAF_LAST PMC_EV_IAF_CPU_CLK_UNHALTED_REF
/*
* Events supported by programmable function counters present in
* Intel Atom, Core and Core2 CPUs, from the "Intel 64 and IA-32
* Architectures Software Developer's Manual Volume 3B: System Programming
* Guide, Part 2", July 2008.
*
* These PMCs select events with a combination of an event code and
* unit mask. Quirks that need to be taken care of include:
* - The set of (event code, umask) combinations supported by a processor
* varies according to the processor model.
* - A given (event code, umask) combination need not measure the same
* hardware event in all processor models.
* - Event names in vendor documentation for an (event code, umask) pair
* may vary according to the CPU model.
* - Identically named events can map to different (event code, umask)
* pairs on different CPUs.
* - New (event code, umask) combinations continue to be added as CPUs
* evolve. The interface between hwpmc(4) and libpmc(3) needs to be
* robust with respect to ABI changes.
*
* The IAP_EVENT_* symbols below define the ABI between userland and kernel.
* New (event code, * umask) combinations used in new CPUs would be added
* to the end of the list. Vendor names for events are mapped to IAP_EVENT_*
* symbols using aliases. The final disambiguation of semantics based on
* the CPU model happens inside hwpmc(4).
*/
#define __PMC_EV_IAP() \
__PMC_EV(IAP, EVENT_02H_81H) \
__PMC_EV(IAP, EVENT_03H_00H) \
__PMC_EV(IAP, EVENT_03H_02H) \
__PMC_EV(IAP, EVENT_03H_04H) \
__PMC_EV(IAP, EVENT_03H_08H) \
__PMC_EV(IAP, EVENT_03H_10H) \
__PMC_EV(IAP, EVENT_03H_20H) \
__PMC_EV(IAP, EVENT_04H_00H) \
__PMC_EV(IAP, EVENT_04H_01H) \
__PMC_EV(IAP, EVENT_04H_02H) \
__PMC_EV(IAP, EVENT_04H_08H) \
__PMC_EV(IAP, EVENT_05H_00H) \
__PMC_EV(IAP, EVENT_06H_00H) \
__PMC_EV(IAP, EVENT_07H_00H) \
__PMC_EV(IAP, EVENT_07H_01H) \
__PMC_EV(IAP, EVENT_07H_02H) \
__PMC_EV(IAP, EVENT_07H_03H) \
__PMC_EV(IAP, EVENT_07H_06H) \
__PMC_EV(IAP, EVENT_07H_08H) \
__PMC_EV(IAP, EVENT_08H_01H) \
__PMC_EV(IAP, EVENT_08H_02H) \
__PMC_EV(IAP, EVENT_08H_04H) \
__PMC_EV(IAP, EVENT_08H_05H) \
__PMC_EV(IAP, EVENT_08H_06H) \
__PMC_EV(IAP, EVENT_08H_07H) \
__PMC_EV(IAP, EVENT_08H_08H) \
__PMC_EV(IAP, EVENT_08H_09H) \
__PMC_EV(IAP, EVENT_09H_01H) \
__PMC_EV(IAP, EVENT_09H_02H) \
__PMC_EV(IAP, EVENT_0CH_01H) \
__PMC_EV(IAP, EVENT_0CH_02H) \
__PMC_EV(IAP, EVENT_0CH_03H) \
__PMC_EV(IAP, EVENT_10H_00H) \
__PMC_EV(IAP, EVENT_10H_01H) \
__PMC_EV(IAP, EVENT_10H_81H) \
__PMC_EV(IAP, EVENT_11H_00H) \
__PMC_EV(IAP, EVENT_11H_01H) \
__PMC_EV(IAP, EVENT_11H_81H) \
__PMC_EV(IAP, EVENT_12H_00H) \
__PMC_EV(IAP, EVENT_12H_01H) \
__PMC_EV(IAP, EVENT_12H_81H) \
__PMC_EV(IAP, EVENT_13H_00H) \
__PMC_EV(IAP, EVENT_13H_01H) \
__PMC_EV(IAP, EVENT_13H_81H) \
__PMC_EV(IAP, EVENT_14H_00H) \
__PMC_EV(IAP, EVENT_14H_01H) \
__PMC_EV(IAP, EVENT_18H_00H) \
__PMC_EV(IAP, EVENT_19H_00H) \
__PMC_EV(IAP, EVENT_19H_01H) \
__PMC_EV(IAP, EVENT_19H_02H) \
__PMC_EV(IAP, EVENT_21H) \
__PMC_EV(IAP, EVENT_22H) \
__PMC_EV(IAP, EVENT_23H) \
__PMC_EV(IAP, EVENT_24H) \
__PMC_EV(IAP, EVENT_25H) \
__PMC_EV(IAP, EVENT_26H) \
__PMC_EV(IAP, EVENT_27H) \
__PMC_EV(IAP, EVENT_28H) \
__PMC_EV(IAP, EVENT_29H) \
__PMC_EV(IAP, EVENT_2AH) \
__PMC_EV(IAP, EVENT_2BH) \
__PMC_EV(IAP, EVENT_2EH) \
__PMC_EV(IAP, EVENT_2EH_41H) \
__PMC_EV(IAP, EVENT_2EH_4FH) \
__PMC_EV(IAP, EVENT_30H) \
__PMC_EV(IAP, EVENT_32H) \
__PMC_EV(IAP, EVENT_3AH) \
__PMC_EV(IAP, EVENT_3AH_00H) \
__PMC_EV(IAP, EVENT_3BH_C0H) \
__PMC_EV(IAP, EVENT_3CH_00H) \
__PMC_EV(IAP, EVENT_3CH_01H) \
__PMC_EV(IAP, EVENT_3CH_02H) \
__PMC_EV(IAP, EVENT_40H) \
__PMC_EV(IAP, EVENT_40H_21H) \
__PMC_EV(IAP, EVENT_41H) \
__PMC_EV(IAP, EVENT_41H_22H) \
__PMC_EV(IAP, EVENT_42H) \
__PMC_EV(IAP, EVENT_42H_10H) \
__PMC_EV(IAP, EVENT_43H_01H) \
__PMC_EV(IAP, EVENT_43H_02H) \
__PMC_EV(IAP, EVENT_44H_02H) \
__PMC_EV(IAP, EVENT_45H_0FH) \
__PMC_EV(IAP, EVENT_46H_00H) \
__PMC_EV(IAP, EVENT_47H_00H) \
__PMC_EV(IAP, EVENT_48H_00H) \
__PMC_EV(IAP, EVENT_49H_00H) \
__PMC_EV(IAP, EVENT_49H_01H) \
__PMC_EV(IAP, EVENT_49H_02H) \
__PMC_EV(IAP, EVENT_4BH_00H) \
__PMC_EV(IAP, EVENT_4BH_01H) \
__PMC_EV(IAP, EVENT_4BH_02H) \
__PMC_EV(IAP, EVENT_4BH_03H) \
__PMC_EV(IAP, EVENT_4CH_00H) \
__PMC_EV(IAP, EVENT_4EH_10H) \
__PMC_EV(IAP, EVENT_4FH_00H) \
__PMC_EV(IAP, EVENT_60H) \
__PMC_EV(IAP, EVENT_61H) \
__PMC_EV(IAP, EVENT_61H_00H) \
__PMC_EV(IAP, EVENT_62H) \
__PMC_EV(IAP, EVENT_62H_00H) \
__PMC_EV(IAP, EVENT_63H) \
__PMC_EV(IAP, EVENT_64H) \
__PMC_EV(IAP, EVENT_64H_40H) \
__PMC_EV(IAP, EVENT_65H) \
__PMC_EV(IAP, EVENT_66H) \
__PMC_EV(IAP, EVENT_67H) \
__PMC_EV(IAP, EVENT_68H) \
__PMC_EV(IAP, EVENT_69H) \
__PMC_EV(IAP, EVENT_6AH) \
__PMC_EV(IAP, EVENT_6BH) \
__PMC_EV(IAP, EVENT_6CH) \
__PMC_EV(IAP, EVENT_6DH) \
__PMC_EV(IAP, EVENT_6EH) \
__PMC_EV(IAP, EVENT_6FH) \
__PMC_EV(IAP, EVENT_70H) \
__PMC_EV(IAP, EVENT_77H) \
__PMC_EV(IAP, EVENT_78H) \
__PMC_EV(IAP, EVENT_7AH) \
__PMC_EV(IAP, EVENT_7BH) \
__PMC_EV(IAP, EVENT_7DH) \
__PMC_EV(IAP, EVENT_7EH) \
__PMC_EV(IAP, EVENT_7EH_00H) \
__PMC_EV(IAP, EVENT_7FH) \
__PMC_EV(IAP, EVENT_80H_00H) \
__PMC_EV(IAP, EVENT_80H_02H) \
__PMC_EV(IAP, EVENT_80H_03H) \
__PMC_EV(IAP, EVENT_81H_00H) \
__PMC_EV(IAP, EVENT_82H_02H) \
__PMC_EV(IAP, EVENT_82H_04H) \
__PMC_EV(IAP, EVENT_82H_10H) \
__PMC_EV(IAP, EVENT_82H_12H) \
__PMC_EV(IAP, EVENT_82H_40H) \
__PMC_EV(IAP, EVENT_83H_02H) \
__PMC_EV(IAP, EVENT_85H_00H) \
__PMC_EV(IAP, EVENT_86H_00H) \
__PMC_EV(IAP, EVENT_87H_00H) \
__PMC_EV(IAP, EVENT_88H_00H) \
__PMC_EV(IAP, EVENT_89H_00H) \
__PMC_EV(IAP, EVENT_8AH_00H) \
__PMC_EV(IAP, EVENT_8BH_00H) \
__PMC_EV(IAP, EVENT_8CH_00H) \
__PMC_EV(IAP, EVENT_8DH_00H) \
__PMC_EV(IAP, EVENT_8EH_00H) \
__PMC_EV(IAP, EVENT_8FH_00H) \
__PMC_EV(IAP, EVENT_90H_00H) \
__PMC_EV(IAP, EVENT_91H_00H) \
__PMC_EV(IAP, EVENT_92H_00H) \
__PMC_EV(IAP, EVENT_93H_00H) \
__PMC_EV(IAP, EVENT_94H_00H) \
__PMC_EV(IAP, EVENT_97H_00H) \
__PMC_EV(IAP, EVENT_98H_00H) \
__PMC_EV(IAP, EVENT_A0H_00H) \
__PMC_EV(IAP, EVENT_A1H_01H) \
__PMC_EV(IAP, EVENT_A1H_02H) \
__PMC_EV(IAP, EVENT_A1H_04H) \
__PMC_EV(IAP, EVENT_A1H_08H) \
__PMC_EV(IAP, EVENT_A1H_10H) \
__PMC_EV(IAP, EVENT_A1H_20H) \
__PMC_EV(IAP, EVENT_A2H_00H) \
__PMC_EV(IAP, EVENT_AAH_01H) \
__PMC_EV(IAP, EVENT_AAH_02H) \
__PMC_EV(IAP, EVENT_AAH_03H) \
__PMC_EV(IAP, EVENT_AAH_08H) \
__PMC_EV(IAP, EVENT_ABH_01H) \
__PMC_EV(IAP, EVENT_ABH_02H) \
__PMC_EV(IAP, EVENT_B0H_00H) \
__PMC_EV(IAP, EVENT_B0H_80H) \
__PMC_EV(IAP, EVENT_B1H_00H) \
__PMC_EV(IAP, EVENT_B1H_80H) \
__PMC_EV(IAP, EVENT_B3H_01H) \
__PMC_EV(IAP, EVENT_B3H_02H) \
__PMC_EV(IAP, EVENT_B3H_04H) \
__PMC_EV(IAP, EVENT_B3H_08H) \
__PMC_EV(IAP, EVENT_B3H_10H) \
__PMC_EV(IAP, EVENT_B3H_20H) \
__PMC_EV(IAP, EVENT_B3H_81H) \
__PMC_EV(IAP, EVENT_B3H_82H) \
__PMC_EV(IAP, EVENT_B3H_84H) \
__PMC_EV(IAP, EVENT_B3H_88H) \
__PMC_EV(IAP, EVENT_B3H_90H) \
__PMC_EV(IAP, EVENT_B3H_A0H) \
__PMC_EV(IAP, EVENT_C0H_00H) \
__PMC_EV(IAP, EVENT_C0H_01H) \
__PMC_EV(IAP, EVENT_C0H_02H) \
__PMC_EV(IAP, EVENT_C0H_04H) \
__PMC_EV(IAP, EVENT_C0H_08H) \
__PMC_EV(IAP, EVENT_C1H_00H) \
__PMC_EV(IAP, EVENT_C1H_01H) \
__PMC_EV(IAP, EVENT_C1H_FEH) \
__PMC_EV(IAP, EVENT_C2H_00H) \
__PMC_EV(IAP, EVENT_C2H_01H) \
__PMC_EV(IAP, EVENT_C2H_02H) \
__PMC_EV(IAP, EVENT_C2H_04H) \
__PMC_EV(IAP, EVENT_C2H_07H) \
__PMC_EV(IAP, EVENT_C2H_0FH) \
__PMC_EV(IAP, EVENT_C2H_10H) \
__PMC_EV(IAP, EVENT_C2H_08H) \
__PMC_EV(IAP, EVENT_C3H_00H) \
__PMC_EV(IAP, EVENT_C3H_01H) \
__PMC_EV(IAP, EVENT_C3H_04H) \
__PMC_EV(IAP, EVENT_C4H_00H) \
__PMC_EV(IAP, EVENT_C4H_01H) \
__PMC_EV(IAP, EVENT_C4H_02H) \
__PMC_EV(IAP, EVENT_C4H_04H) \
__PMC_EV(IAP, EVENT_C4H_08H) \
__PMC_EV(IAP, EVENT_C4H_0CH) \
__PMC_EV(IAP, EVENT_C4H_0FH) \
__PMC_EV(IAP, EVENT_C5H_00H) \
__PMC_EV(IAP, EVENT_C6H_00H) \
__PMC_EV(IAP, EVENT_C6H_01H) \
__PMC_EV(IAP, EVENT_C6H_02H) \
__PMC_EV(IAP, EVENT_C7H_00H) \
__PMC_EV(IAP, EVENT_C7H_01H) \
__PMC_EV(IAP, EVENT_C7H_02H) \
__PMC_EV(IAP, EVENT_C7H_04H) \
__PMC_EV(IAP, EVENT_C7H_08H) \
__PMC_EV(IAP, EVENT_C7H_10H) \
__PMC_EV(IAP, EVENT_C7H_1FH) \
__PMC_EV(IAP, EVENT_C8H_00H) \
__PMC_EV(IAP, EVENT_C9H_00H) \
__PMC_EV(IAP, EVENT_CAH_00H) \
__PMC_EV(IAP, EVENT_CAH_01H) \
__PMC_EV(IAP, EVENT_CAH_02H) \
__PMC_EV(IAP, EVENT_CAH_04H) \
__PMC_EV(IAP, EVENT_CAH_08H) \
__PMC_EV(IAP, EVENT_CBH_01H) \
__PMC_EV(IAP, EVENT_CBH_02H) \
__PMC_EV(IAP, EVENT_CBH_04H) \
__PMC_EV(IAP, EVENT_CBH_08H) \
__PMC_EV(IAP, EVENT_CBH_10H) \
__PMC_EV(IAP, EVENT_CCH_00H) \
__PMC_EV(IAP, EVENT_CCH_01H) \
__PMC_EV(IAP, EVENT_CCH_02H) \
__PMC_EV(IAP, EVENT_CDH_00H) \
__PMC_EV(IAP, EVENT_CEH_00H) \
__PMC_EV(IAP, EVENT_CFH_00H) \
__PMC_EV(IAP, EVENT_D0H_00H) \
__PMC_EV(IAP, EVENT_D2H_01H) \
__PMC_EV(IAP, EVENT_D2H_02H) \
__PMC_EV(IAP, EVENT_D2H_04H) \
__PMC_EV(IAP, EVENT_D2H_08H) \
__PMC_EV(IAP, EVENT_D2H_0FH) \
__PMC_EV(IAP, EVENT_D2H_10H) \
__PMC_EV(IAP, EVENT_D4H_01H) \
__PMC_EV(IAP, EVENT_D4H_02H) \
__PMC_EV(IAP, EVENT_D4H_04H) \
__PMC_EV(IAP, EVENT_D4H_08H) \
__PMC_EV(IAP, EVENT_D4H_0FH) \
__PMC_EV(IAP, EVENT_D5H_01H) \
__PMC_EV(IAP, EVENT_D5H_02H) \
__PMC_EV(IAP, EVENT_D5H_04H) \
__PMC_EV(IAP, EVENT_D5H_08H) \
__PMC_EV(IAP, EVENT_D5H_0FH) \
__PMC_EV(IAP, EVENT_D7H_00H) \
__PMC_EV(IAP, EVENT_D8H_00H) \
__PMC_EV(IAP, EVENT_D8H_01H) \
__PMC_EV(IAP, EVENT_D8H_02H) \
__PMC_EV(IAP, EVENT_D8H_03H) \
__PMC_EV(IAP, EVENT_D8H_04H) \
__PMC_EV(IAP, EVENT_D9H_00H) \
__PMC_EV(IAP, EVENT_D9H_01H) \
__PMC_EV(IAP, EVENT_D9H_02H) \
__PMC_EV(IAP, EVENT_D9H_03H) \
__PMC_EV(IAP, EVENT_DAH_00H) \
__PMC_EV(IAP, EVENT_DAH_01H) \
__PMC_EV(IAP, EVENT_DAH_02H) \
__PMC_EV(IAP, EVENT_DBH_00H) \
__PMC_EV(IAP, EVENT_DCH_01H) \
__PMC_EV(IAP, EVENT_DCH_02H) \
__PMC_EV(IAP, EVENT_DCH_04H) \
__PMC_EV(IAP, EVENT_DCH_08H) \
__PMC_EV(IAP, EVENT_DCH_10H) \
__PMC_EV(IAP, EVENT_DCH_1FH) \
__PMC_EV(IAP, EVENT_E0H_00H) \
__PMC_EV(IAP, EVENT_E0H_01H) \
__PMC_EV(IAP, EVENT_E2H_00H) \
__PMC_EV(IAP, EVENT_E4H_00H) \
__PMC_EV(IAP, EVENT_E6H_00H) \
__PMC_EV(IAP, EVENT_E6H_01H) \
__PMC_EV(IAP, EVENT_F0H_00H) \
__PMC_EV(IAP, EVENT_F8H_00H)
#define PMC_EV_IAP_FIRST PMC_EV_IAP_EVENT_02H_81H
#define PMC_EV_IAP_LAST PMC_EV_IAP_EVENT_F8H_00H
/*
* Map "architectural" event names to event ids.
*/
#define __PMC_EV_ALIAS_INTEL_ARCHITECTURAL() \
__PMC_EV_ALIAS("branch-instruction-retired", IAP_EVENT_C4H_00H) \
__PMC_EV_ALIAS("branch-misses-retired", IAP_EVENT_C5H_00H) \
__PMC_EV_ALIAS("instruction-retired", IAP_EVENT_C0H_00H) \
__PMC_EV_ALIAS("llc-misses", IAP_EVENT_2EH_41H) \
__PMC_EV_ALIAS("llc-reference", IAP_EVENT_2EH_4FH) \
__PMC_EV_ALIAS("unhalted-reference-cycles", IAP_EVENT_3CH_01H) \
__PMC_EV_ALIAS("unhalted-core-cycles", IAP_EVENT_3CH_00H)
/*
* Aliases for Atom PMCs.
*/
#define __PMC_EV_ALIAS_ATOM() \
__PMC_EV_ALIAS_INTEL_ARCHITECTURAL() \
__PMC_EV_ALIAS("BACLEARS", IAP_EVENT_E6H_01H) \
__PMC_EV_ALIAS("BOGUS_BR", IAP_EVENT_E4H_00H) \
__PMC_EV_ALIAS("BR_BAC_MISSP_EXEC", IAP_EVENT_8AH_00H) \
__PMC_EV_ALIAS("BR_CALL_EXEC", IAP_EVENT_92H_00H) \
__PMC_EV_ALIAS("BR_CALL_MISSP_EXEC", IAP_EVENT_93H_00H) \
__PMC_EV_ALIAS("BR_CND_EXEC", IAP_EVENT_8BH_00H) \
__PMC_EV_ALIAS("BR_CND_MISSP_EXEC", IAP_EVENT_8CH_00H) \
__PMC_EV_ALIAS("BR_IND_CALL_EXEC", IAP_EVENT_94H_00H) \
__PMC_EV_ALIAS("BR_IND_EXEC", IAP_EVENT_8DH_00H) \
__PMC_EV_ALIAS("BR_IND_MISSP_EXEC", IAP_EVENT_8EH_00H) \
__PMC_EV_ALIAS("BR_INST_DECODED", IAP_EVENT_E0H_01H) \
__PMC_EV_ALIAS("BR_INST_EXEC", IAP_EVENT_88H_00H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.ANY", IAP_EVENT_C4H_00H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.ANY1", IAP_EVENT_C4H_0FH) \
__PMC_EV_ALIAS("BR_INST_RETIRED.MISPRED", IAP_EVENT_C5H_00H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.MISPRED_NOT_TAKEN", \
IAP_EVENT_C4H_02H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.MISPRED_TAKEN", IAP_EVENT_C4H_08H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.PRED_NOT_TAKEN",IAP_EVENT_C4H_01H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.PRED_TAKEN", IAP_EVENT_C4H_04H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.TAKEN", IAP_EVENT_C4H_0CH) \
__PMC_EV_ALIAS("BR_MISSP_EXEC", IAP_EVENT_89H_00H) \
__PMC_EV_ALIAS("BR_RET_BAC_MISSP_EXEC", IAP_EVENT_91H_00H) \
__PMC_EV_ALIAS("BR_RET_EXEC", IAP_EVENT_8FH_00H) \
__PMC_EV_ALIAS("BR_RET_MISSP_EXEC", IAP_EVENT_90H_00H) \
__PMC_EV_ALIAS("BR_TKN_BUBBLE_1", IAP_EVENT_97H_00H) \
__PMC_EV_ALIAS("BR_TKN_BUBBLE_2", IAP_EVENT_98H_00H) \
__PMC_EV_ALIAS("BUSQ_EMPTY", IAP_EVENT_7DH) \
__PMC_EV_ALIAS("BUS_BNR_DRV", IAP_EVENT_61H) \
__PMC_EV_ALIAS("BUS_DATA_RCV", IAP_EVENT_64H) \
__PMC_EV_ALIAS("BUS_DRDY_CLOCKS", IAP_EVENT_62H) \
__PMC_EV_ALIAS("BUS_HITM_DRV", IAP_EVENT_7BH) \
__PMC_EV_ALIAS("BUS_HIT_DRV", IAP_EVENT_7AH) \
__PMC_EV_ALIAS("BUS_IO_WAIT", IAP_EVENT_7FH) \
__PMC_EV_ALIAS("BUS_LOCK_CLOCKS", IAP_EVENT_63H) \
__PMC_EV_ALIAS("BUS_REQUEST_OUTSTANDING", IAP_EVENT_60H) \
__PMC_EV_ALIAS("BUS_TRANS_ANY", IAP_EVENT_70H) \
__PMC_EV_ALIAS("BUS_TRANS_BRD", IAP_EVENT_65H) \
__PMC_EV_ALIAS("BUS_TRANS_BURST", IAP_EVENT_6EH) \
__PMC_EV_ALIAS("BUS_TRANS_DEF", IAP_EVENT_6DH) \
__PMC_EV_ALIAS("BUS_TRANS_IFETCH", IAP_EVENT_68H) \
__PMC_EV_ALIAS("BUS_TRANS_INVAL", IAP_EVENT_69H) \
__PMC_EV_ALIAS("BUS_TRANS_IO", IAP_EVENT_6CH) \
__PMC_EV_ALIAS("BUS_TRANS_MEM", IAP_EVENT_6FH) \
__PMC_EV_ALIAS("BUS_TRANS_P", IAP_EVENT_6BH) \
__PMC_EV_ALIAS("BUS_TRANS_PWR", IAP_EVENT_6AH) \
__PMC_EV_ALIAS("BUS_TRANS_RFO", IAP_EVENT_66H) \
__PMC_EV_ALIAS("BUS_TRANS_WB", IAP_EVENT_67H) \
__PMC_EV_ALIAS("CMP_SNOOP", IAP_EVENT_78H) \
__PMC_EV_ALIAS("CPU_CLK_UNHALTED.BUS", IAP_EVENT_3CH_01H) \
__PMC_EV_ALIAS("CPU_CLK_UNHALTED.CORE_P", IAP_EVENT_3CH_00H) \
__PMC_EV_ALIAS("CPU_CLK_UNHALTED.NO_OTHER", IAP_EVENT_3CH_02H) \
__PMC_EV_ALIAS("CYCLES_DIV_BUSY", IAP_EVENT_14H_01H) \
__PMC_EV_ALIAS("CYCLES_INT_MASKED.CYCLES_INT_MASKED", \
IAP_EVENT_C6H_01H) \
__PMC_EV_ALIAS("CYCLES_INT_MASKED.CYCLES_INT_PENDING_AND_MASKED", \
IAP_EVENT_C6H_02H) \
__PMC_EV_ALIAS("CYCLES_L1I_MEM_STALLED", IAP_EVENT_86H_00H) \
__PMC_EV_ALIAS("DATA_TLB_MISSES.DTLB_MISS", IAP_EVENT_08H_07H) \
__PMC_EV_ALIAS("DATA_TLB_MISSES.DTLB_MISS_LD", IAP_EVENT_08H_05H) \
__PMC_EV_ALIAS("DATA_TLB_MISSES.DTLB_MISS_ST", IAP_EVENT_08H_06H) \
__PMC_EV_ALIAS("DATA_TLB_MISSES.UTLB_MISS_LD", IAP_EVENT_08H_09H) \
__PMC_EV_ALIAS("DELAYED_BYPASS.FP", IAP_EVENT_19H_00H) \
__PMC_EV_ALIAS("DELAYED_BYPASS.LOAD", IAP_EVENT_19H_01H) \
__PMC_EV_ALIAS("DELAYED_BYPASS.SIMD", IAP_EVENT_19H_02H) \
__PMC_EV_ALIAS("DIV", IAP_EVENT_13H_00H) \
__PMC_EV_ALIAS("DIV.AR", IAP_EVENT_13H_81H) \
__PMC_EV_ALIAS("DIV.S", IAP_EVENT_13H_01H) \
__PMC_EV_ALIAS("DTLB_MISSES.ANY", IAP_EVENT_08H_01H) \
__PMC_EV_ALIAS("DTLB_MISSES.L0_MISS_LD", IAP_EVENT_08H_04H) \
__PMC_EV_ALIAS("DTLB_MISSES.MISS_LD", IAP_EVENT_08H_02H) \
__PMC_EV_ALIAS("DTLB_MISSES.MISS_ST", IAP_EVENT_08H_08H) \
__PMC_EV_ALIAS("EIST_TRANS", IAP_EVENT_3AH_00H) \
__PMC_EV_ALIAS("ESP.ADDITIONS", IAP_EVENT_ABH_02H) \
__PMC_EV_ALIAS("ESP.SYNCH", IAP_EVENT_ABH_01H) \
__PMC_EV_ALIAS("EXT_SNOOP", IAP_EVENT_77H) \
__PMC_EV_ALIAS("FP_ASSIST", IAP_EVENT_11H_01H) \
__PMC_EV_ALIAS("FP_ASSIST.AR", IAP_EVENT_11H_81H) \
__PMC_EV_ALIAS("FP_COMP_OPS_EXE", IAP_EVENT_10H_00H) \
__PMC_EV_ALIAS("FP_MMX_TRANS_TO_FP", IAP_EVENT_CCH_02H) \
__PMC_EV_ALIAS("FP_MMX_TRANS_TO_MMX", IAP_EVENT_CCH_01H) \
__PMC_EV_ALIAS("HW_INT_RCV", IAP_EVENT_C8H_00H) \
__PMC_EV_ALIAS("ICACHE.ACCESSES", IAP_EVENT_80H_03H) \
__PMC_EV_ALIAS("ICACHE.MISSES", IAP_EVENT_80H_02H) \
__PMC_EV_ALIAS("IDLE_DURING_DIV", IAP_EVENT_18H_00H) \
__PMC_EV_ALIAS("ILD_STALL", IAP_EVENT_87H_00H) \
__PMC_EV_ALIAS("INST_QUEUE.FULL", IAP_EVENT_83H_02H) \
__PMC_EV_ALIAS("INST_RETIRED.ANY_P", IAP_EVENT_C0H_00H) \
__PMC_EV_ALIAS("INST_RETIRED.LOADS", IAP_EVENT_C0H_01H) \
__PMC_EV_ALIAS("INST_RETIRED.OTHER", IAP_EVENT_C0H_04H) \
__PMC_EV_ALIAS("INST_RETIRED.STORES", IAP_EVENT_C0H_02H) \
__PMC_EV_ALIAS("ITLB.FLUSH", IAP_EVENT_82H_04H) \
__PMC_EV_ALIAS("ITLB.LARGE_MISS", IAP_EVENT_82H_10H) \
__PMC_EV_ALIAS("ITLB.MISSES", IAP_EVENT_82H_02H) \
__PMC_EV_ALIAS("ITLB.SMALL_MISS", IAP_EVENT_82H_02H) \
__PMC_EV_ALIAS("ITLB_MISS_RETIRED", IAP_EVENT_C9H_00H) \
__PMC_EV_ALIAS("L1D_ALL_CACHE_REF", IAP_EVENT_43H_02H) \
__PMC_EV_ALIAS("L1D_ALL_REF", IAP_EVENT_43H_01H) \
__PMC_EV_ALIAS("L1D_CACHE.LD", IAP_EVENT_40H_21H) \
__PMC_EV_ALIAS("L1D_CACHE.ST", IAP_EVENT_41H_22H) \
__PMC_EV_ALIAS("L1D_CACHE_LOCK", IAP_EVENT_42H) \
__PMC_EV_ALIAS("L1D_CACHE_LOCK_DURATION", IAP_EVENT_42H_10H) \
__PMC_EV_ALIAS("L1D_M_EVICT", IAP_EVENT_47H_00H) \
__PMC_EV_ALIAS("L1D_M_REPL", IAP_EVENT_46H_00H) \
__PMC_EV_ALIAS("L1D_PEND_MISS", IAP_EVENT_48H_00H) \
__PMC_EV_ALIAS("L1D_PREFETCH.REQUESTS", IAP_EVENT_4EH_10H) \
__PMC_EV_ALIAS("L1D_REPL", IAP_EVENT_45H_0FH) \
__PMC_EV_ALIAS("L1D_SPLIT.LOADS", IAP_EVENT_49H_01H) \
__PMC_EV_ALIAS("L1D_SPLIT.STORES", IAP_EVENT_49H_02H) \
__PMC_EV_ALIAS("L1I_MISSES", IAP_EVENT_81H_00H) \
__PMC_EV_ALIAS("L1I_READS", IAP_EVENT_80H_00H) \
__PMC_EV_ALIAS("L2_ADS", IAP_EVENT_21H) \
__PMC_EV_ALIAS("L2_DBUS_BUSY_RD", IAP_EVENT_23H) \
__PMC_EV_ALIAS("L2_IFETCH", IAP_EVENT_28H) \
__PMC_EV_ALIAS("L2_LD", IAP_EVENT_29H) \
__PMC_EV_ALIAS("L2_LINES_IN", IAP_EVENT_24H) \
__PMC_EV_ALIAS("L2_LINES_OUT", IAP_EVENT_26H) \
__PMC_EV_ALIAS("L2_LOCK", IAP_EVENT_2BH) \
__PMC_EV_ALIAS("L2_M_LINES_IN", IAP_EVENT_25H) \
__PMC_EV_ALIAS("L2_M_LINES_OUT", IAP_EVENT_27H) \
__PMC_EV_ALIAS("L2_NO_REQ", IAP_EVENT_32H) \
__PMC_EV_ALIAS("L2_REJECT_BUSQ", IAP_EVENT_30H) \
__PMC_EV_ALIAS("L2_RQSTS", IAP_EVENT_2EH) \
__PMC_EV_ALIAS("L2_RQSTS.SELF.DEMAND.I_STATE", IAP_EVENT_2EH_41H) \
__PMC_EV_ALIAS("L2_RQSTS.SELF.DEMAND.MESI", IAP_EVENT_2EH_4FH) \
__PMC_EV_ALIAS("L2_ST", IAP_EVENT_2AH) \
__PMC_EV_ALIAS("LOAD_BLOCK.L1D", IAP_EVENT_03H_20H) \
__PMC_EV_ALIAS("LOAD_BLOCK.OVERLAP_STORE", IAP_EVENT_03H_08H) \
__PMC_EV_ALIAS("LOAD_BLOCK.STA", IAP_EVENT_03H_02H) \
__PMC_EV_ALIAS("LOAD_BLOCK.STD", IAP_EVENT_03H_04H) \
__PMC_EV_ALIAS("LOAD_BLOCK.UNTIL_RETIRE", IAP_EVENT_03H_10H) \
__PMC_EV_ALIAS("LOAD_HIT_PRE", IAP_EVENT_4CH_00H) \
__PMC_EV_ALIAS("MACHINE_CLEARS.SMC", IAP_EVENT_C3H_01H) \
__PMC_EV_ALIAS("MACHINE_NUKES.MEM_ORDER", IAP_EVENT_C3H_04H) \
__PMC_EV_ALIAS("MACRO_INSTS.ALL_DECODED", IAP_EVENT_AAH_03H) \
__PMC_EV_ALIAS("MACRO_INSTS.CISC_DECODED", IAP_EVENT_AAH_02H) \
__PMC_EV_ALIAS("MEMORY_DISAMBIGUATION.RESET", IAP_EVENT_09H_01H) \
__PMC_EV_ALIAS("MEMORY_DISAMBIGUATION.SUCCESS", IAP_EVENT_09H_02H) \
__PMC_EV_ALIAS("MEM_LOAD_RETIRED.DTLB_MISS", IAP_EVENT_CBH_04H) \
__PMC_EV_ALIAS("MEM_LOAD_RETIRED.L2_HIT", IAP_EVENT_CBH_01H) \
__PMC_EV_ALIAS("MEM_LOAD_RETIRED.L2_LINE_MISS", IAP_EVENT_CBH_08H) \
__PMC_EV_ALIAS("MEM_LOAD_RETIRED.L2_MISS", IAP_EVENT_CBH_02H) \
__PMC_EV_ALIAS("MUL", IAP_EVENT_12H_00H) \
__PMC_EV_ALIAS("MUL.AR", IAP_EVENT_12H_81H) \
__PMC_EV_ALIAS("MUL.S", IAP_EVENT_12H_01H) \
__PMC_EV_ALIAS("PAGE_WALKS.CYCLES", IAP_EVENT_0CH_03H) \
__PMC_EV_ALIAS("PAGE_WALKS.WALKS", IAP_EVENT_0CH_03H) \
__PMC_EV_ALIAS("PREFETCH.PREFETCHNTA", IAP_EVENT_07H_08H) \
__PMC_EV_ALIAS("PREFETCH.PREFETCHT0", IAP_EVENT_07H_01H) \
__PMC_EV_ALIAS("PREFETCH.SW_L2", IAP_EVENT_07H_06H) \
__PMC_EV_ALIAS("PREF_RQSTS_DN", IAP_EVENT_F8H_00H) \
__PMC_EV_ALIAS("PREF_RQSTS_UP", IAP_EVENT_F0H_00H) \
__PMC_EV_ALIAS("RAT_STALLS.ANY", IAP_EVENT_D2H_0FH) \
__PMC_EV_ALIAS("RAT_STALLS.FLAGS", IAP_EVENT_D2H_04H) \
__PMC_EV_ALIAS("RAT_STALLS.FPSW", IAP_EVENT_D2H_08H) \
__PMC_EV_ALIAS("RAT_STALLS.PARTIAL_CYCLES", IAP_EVENT_D2H_02H) \
__PMC_EV_ALIAS("RAT_STALLS.ROB_READ_PORT", IAP_EVENT_D2H_01H) \
__PMC_EV_ALIAS("RESOURCE_STALLS.ANY", IAP_EVENT_DCH_1FH) \
__PMC_EV_ALIAS("RESOURCE_STALLS.BR_MISS_CLEAR", IAP_EVENT_DCH_10H) \
__PMC_EV_ALIAS("RESOURCE_STALLS.FPCW", IAP_EVENT_DCH_08H) \
__PMC_EV_ALIAS("RESOURCE_STALLS.LD_ST", IAP_EVENT_DCH_04H) \
__PMC_EV_ALIAS("RESOURCE_STALLS.ROB_FULL", IAP_EVENT_DCH_01H) \
__PMC_EV_ALIAS("RESOURCE_STALLS.RS_FULL", IAP_EVENT_DCH_02H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED", IAP_EVENT_A0H_00H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED.PORT0", IAP_EVENT_A1H_01H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED.PORT1", IAP_EVENT_A1H_02H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED.PORT2", IAP_EVENT_A1H_04H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED.PORT3", IAP_EVENT_A1H_08H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED.PORT4", IAP_EVENT_A1H_10H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED.PORT5", IAP_EVENT_A1H_20H) \
__PMC_EV_ALIAS("SB_DRAIN_CYCLES", IAP_EVENT_04H_01H) \
__PMC_EV_ALIAS("SEGMENT_REG_LOADS.ANY", IAP_EVENT_06H_00H) \
__PMC_EV_ALIAS("SEG_REG_RENAMES.ANY", IAP_EVENT_D5H_0FH) \
__PMC_EV_ALIAS("SEG_REG_RENAMES.DS", IAP_EVENT_D5H_02H) \
__PMC_EV_ALIAS("SEG_REG_RENAMES.ES", IAP_EVENT_D5H_01H) \
__PMC_EV_ALIAS("SEG_REG_RENAMES.FS", IAP_EVENT_D5H_04H) \
__PMC_EV_ALIAS("SEG_REG_RENAMES.GS", IAP_EVENT_D5H_08H) \
__PMC_EV_ALIAS("SEG_RENAME_STALLS.ANY", IAP_EVENT_D4H_0FH) \
__PMC_EV_ALIAS("SEG_RENAME_STALLS.DS", IAP_EVENT_D4H_02H) \
__PMC_EV_ALIAS("SEG_RENAME_STALLS.ES", IAP_EVENT_D4H_01H) \
__PMC_EV_ALIAS("SEG_RENAME_STALLS.FS", IAP_EVENT_D4H_04H) \
__PMC_EV_ALIAS("SEG_RENAME_STALLS.GS", IAP_EVENT_D4H_08H) \
__PMC_EV_ALIAS("SIMD_ASSIST", IAP_EVENT_CDH_00H) \
__PMC_EV_ALIAS("SIMD_COMP_INST_RETIRED.PACKED_DOUBLE", \
IAP_EVENT_CAH_04H) \
__PMC_EV_ALIAS("SIMD_COMP_INST_RETIRED.PACKED_SINGLE", \
IAP_EVENT_CAH_01H) \
__PMC_EV_ALIAS("SIMD_COMP_INST_RETIRED.SCALAR_DOUBLE", \
IAP_EVENT_CAH_08H) \
__PMC_EV_ALIAS("SIMD_COMP_INST_RETIRED.SCALAR_SINGLE", \
IAP_EVENT_CAH_02H) \
__PMC_EV_ALIAS("SIMD_INSTR_RETIRED", IAP_EVENT_CEH_00H) \
__PMC_EV_ALIAS("SIMD_INST_RETIRED.ANY", IAP_EVENT_C7H_1FH) \
__PMC_EV_ALIAS("SIMD_INST_RETIRED.PACKED_DOUBLE", IAP_EVENT_C7H_04H) \
__PMC_EV_ALIAS("SIMD_INST_RETIRED.PACKED_SINGLE", IAP_EVENT_C7H_01H) \
__PMC_EV_ALIAS("SIMD_INST_RETIRED.SCALAR_DOUBLE", IAP_EVENT_C7H_08H) \
__PMC_EV_ALIAS("SIMD_INST_RETIRED.SCALAR_SINGLE", IAP_EVENT_C7H_02H) \
__PMC_EV_ALIAS("SIMD_INST_RETIRED.VECTOR", IAP_EVENT_C7H_10H) \
__PMC_EV_ALIAS("SIMD_SAT_INSTR_RETIRED", IAP_EVENT_CFH_00H) \
__PMC_EV_ALIAS("SIMD_SAT_UOP_EXEC.AR", IAP_EVENT_B1H_80H) \
__PMC_EV_ALIAS("SIMD_SAT_UOP_EXEC.S", IAP_EVENT_B1H_00H) \
__PMC_EV_ALIAS("SIMD_UOPS_EXEC.AR", IAP_EVENT_B0H_80H) \
__PMC_EV_ALIAS("SIMD_UOPS_EXEC.S", IAP_EVENT_B0H_00H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.ARITHMETIC.AR", IAP_EVENT_B3H_A0H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.ARITHMETIC.S", IAP_EVENT_B3H_20H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.LOGICAL.AR", IAP_EVENT_B3H_90H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.LOGICAL.S", IAP_EVENT_B3H_10H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.MUL.AR", IAP_EVENT_B3H_81H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.MUL.S", IAP_EVENT_B3H_01H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.PACK.AR", IAP_EVENT_B3H_84H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.PACK.S", IAP_EVENT_B3H_04H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.SHIFT.AR", IAP_EVENT_B3H_82H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.SHIFT.S", IAP_EVENT_B3H_02H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.UNPACK.AR", IAP_EVENT_B3H_88H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.UNPACK.S", IAP_EVENT_B3H_08H) \
__PMC_EV_ALIAS("SNOOP_STALL_DRV", IAP_EVENT_7EH) \
__PMC_EV_ALIAS("SSE_PRE_EXEC.L2", IAP_EVENT_07H_02H) \
__PMC_EV_ALIAS("SSE_PRE_EXEC.STORES", IAP_EVENT_07H_03H) \
__PMC_EV_ALIAS("SSE_PRE_MISS.L1", IAP_EVENT_4BH_01H) \
__PMC_EV_ALIAS("SSE_PRE_MISS.L2", IAP_EVENT_4BH_02H) \
__PMC_EV_ALIAS("SSE_PRE_MISS.NTA", IAP_EVENT_4BH_00H) \
__PMC_EV_ALIAS("STORE_BLOCK.ORDER", IAP_EVENT_04H_02H) \
__PMC_EV_ALIAS("STORE_BLOCK.SNOOP", IAP_EVENT_04H_08H) \
__PMC_EV_ALIAS("STORE_FORWARDS.GOOD", IAP_EVENT_02H_81H) \
__PMC_EV_ALIAS("THERMAL_TRIP", IAP_EVENT_3BH_C0H) \
__PMC_EV_ALIAS("UOPS_RETIRED.ANY", IAP_EVENT_C2H_10H) \
__PMC_EV_ALIAS("UOPS_RETIRED.FUSED", IAP_EVENT_C2H_07H) \
__PMC_EV_ALIAS("UOPS_RETIRED.LD_IND_BR", IAP_EVENT_C2H_01H) \
__PMC_EV_ALIAS("UOPS_RETIRED.MACRO_FUSION", IAP_EVENT_C2H_04H) \
__PMC_EV_ALIAS("UOPS_RETIRED.NON_FUSED", IAP_EVENT_C2H_08H) \
__PMC_EV_ALIAS("UOPS_RETIRED.STD_STA", IAP_EVENT_C2H_02H) \
__PMC_EV_ALIAS("X87_COMP_OPS_EXE.ANY.AR", IAP_EVENT_10H_81H) \
__PMC_EV_ALIAS("X87_COMP_OPS_EXE.ANY.S", IAP_EVENT_10H_01H) \
__PMC_EV_ALIAS("X87_OPS_RETIRED.ANY", IAP_EVENT_C1H_FEH) \
__PMC_EV_ALIAS("X87_OPS_RETIRED.FXCH", IAP_EVENT_C1H_01H)
/*
* Aliases for Core PMC events.
*/
#define __PMC_EV_ALIAS_CORE() \
__PMC_EV_ALIAS_INTEL_ARCHITECTURAL() \
__PMC_EV_ALIAS("BAClears", IAP_EVENT_E6H_00H) \
__PMC_EV_ALIAS("BTB_Misses", IAP_EVENT_E2H_00H) \
__PMC_EV_ALIAS("Br_BAC_Missp_Exec", IAP_EVENT_8AH_00H) \
__PMC_EV_ALIAS("Br_Bogus", IAP_EVENT_E4H_00H) \
__PMC_EV_ALIAS("Br_Call_Exec", IAP_EVENT_92H_00H) \
__PMC_EV_ALIAS("Br_Call_Missp_Exec", IAP_EVENT_93H_00H) \
__PMC_EV_ALIAS("Br_Cnd_Exec", IAP_EVENT_8BH_00H) \
__PMC_EV_ALIAS("Br_Cnd_Missp_Exec", IAP_EVENT_8CH_00H) \
__PMC_EV_ALIAS("Br_Ind_Call_Exec", IAP_EVENT_94H_00H) \
__PMC_EV_ALIAS("Br_Ind_Exec", IAP_EVENT_8DH_00H) \
__PMC_EV_ALIAS("Br_Ind_Missp_Exec", IAP_EVENT_8EH_00H) \
__PMC_EV_ALIAS("Br_Inst_Exec", IAP_EVENT_88H_00H) \
__PMC_EV_ALIAS("Br_Instr_Decoded", IAP_EVENT_E0H_00H) \
__PMC_EV_ALIAS("Br_Instr_Ret", IAP_EVENT_C4H_00H) \
__PMC_EV_ALIAS("Br_MisPred_Ret", IAP_EVENT_C5H_00H) \
__PMC_EV_ALIAS("Br_MisPred_Taken_Ret", IAP_EVENT_CAH_00H) \
__PMC_EV_ALIAS("Br_Missp_Exec", IAP_EVENT_89H_00H) \
__PMC_EV_ALIAS("Br_Ret_BAC_Missp_Exec", IAP_EVENT_91H_00H) \
__PMC_EV_ALIAS("Br_Ret_Exec", IAP_EVENT_8FH_00H) \
__PMC_EV_ALIAS("Br_Ret_Missp_Exec", IAP_EVENT_90H_00H) \
__PMC_EV_ALIAS("Br_Taken_Ret", IAP_EVENT_C9H_00H) \
__PMC_EV_ALIAS("Bus_BNR_Clocks", IAP_EVENT_61H_00H) \
__PMC_EV_ALIAS("Bus_DRDY_Clocks", IAP_EVENT_62H_00H) \
__PMC_EV_ALIAS("Bus_Data_Rcv", IAP_EVENT_64H_40H) \
__PMC_EV_ALIAS("Bus_Locks_Clocks", IAP_EVENT_63H) \
__PMC_EV_ALIAS("Bus_Not_In_Use", IAP_EVENT_7DH) \
__PMC_EV_ALIAS("Bus_Req_Outstanding", IAP_EVENT_60H) \
__PMC_EV_ALIAS("Bus_Snoop_Stall", IAP_EVENT_7EH_00H) \
__PMC_EV_ALIAS("Bus_Snoops", IAP_EVENT_77H) \
__PMC_EV_ALIAS("Bus_Trans_Any", IAP_EVENT_70H) \
__PMC_EV_ALIAS("Bus_Trans_Brd", IAP_EVENT_65H) \
__PMC_EV_ALIAS("Bus_Trans_Burst", IAP_EVENT_6EH) \
__PMC_EV_ALIAS("Bus_Trans_Def", IAP_EVENT_6DH) \
__PMC_EV_ALIAS("Bus_Trans_IO", IAP_EVENT_6CH) \
__PMC_EV_ALIAS("Bus_Trans_Ifetch", IAP_EVENT_68H) \
__PMC_EV_ALIAS("Bus_Trans_Inval", IAP_EVENT_69H) \
__PMC_EV_ALIAS("Bus_Trans_Mem", IAP_EVENT_6FH) \
__PMC_EV_ALIAS("Bus_Trans_P", IAP_EVENT_6BH) \
__PMC_EV_ALIAS("Bus_Trans_Pwr", IAP_EVENT_6AH) \
__PMC_EV_ALIAS("Bus_Trans_RFO", IAP_EVENT_66H) \
__PMC_EV_ALIAS("Bus_Trans_WB", IAP_EVENT_67H) \
__PMC_EV_ALIAS("Cycles_Div_Busy", IAP_EVENT_14H_00H) \
__PMC_EV_ALIAS("Cycles_Int_Masked", IAP_EVENT_C6H_00H) \
__PMC_EV_ALIAS("Cycles_Int_Pending_Masked", IAP_EVENT_C7H_00H) \
__PMC_EV_ALIAS("DCU_Snoop_To_Share", IAP_EVENT_78H) \
__PMC_EV_ALIAS("DCache_Cache_LD", IAP_EVENT_40H) \
__PMC_EV_ALIAS("DCache_Cache_Lock", IAP_EVENT_42H) \
__PMC_EV_ALIAS("DCache_Cache_ST", IAP_EVENT_41H) \
__PMC_EV_ALIAS("DCache_M_Evict", IAP_EVENT_47H_00H) \
__PMC_EV_ALIAS("DCache_M_Repl", IAP_EVENT_46H_00H) \
__PMC_EV_ALIAS("DCache_Pend_Miss", IAP_EVENT_48H_00H) \
__PMC_EV_ALIAS("DCache_Repl", IAP_EVENT_45H_0FH) \
__PMC_EV_ALIAS("Data_Mem_Cache_Ref", IAP_EVENT_44H_02H) \
__PMC_EV_ALIAS("Data_Mem_Ref", IAP_EVENT_43H_01H) \
__PMC_EV_ALIAS("Dbus_Busy", IAP_EVENT_22H) \
__PMC_EV_ALIAS("Dbus_Busy_Rd", IAP_EVENT_23H) \
__PMC_EV_ALIAS("Div", IAP_EVENT_13H_00H) \
__PMC_EV_ALIAS("Dtlb_Miss", IAP_EVENT_49H_00H) \
__PMC_EV_ALIAS("ESP_Uops", IAP_EVENT_D7H_00H) \
__PMC_EV_ALIAS("EST_Trans", IAP_EVENT_3AH) \
__PMC_EV_ALIAS("FP_Assist", IAP_EVENT_11H_00H) \
__PMC_EV_ALIAS("FP_Comp_Instr_Ret", IAP_EVENT_C1H_00H) \
__PMC_EV_ALIAS("FP_Comps_Op_Exe", IAP_EVENT_10H_00H) \
__PMC_EV_ALIAS("FP_MMX_Trans", IAP_EVENT_CCH_01H) \
__PMC_EV_ALIAS("Fused_Ld_Uops_Ret", IAP_EVENT_DAH_01H) \
__PMC_EV_ALIAS("Fused_St_Uops_Ret", IAP_EVENT_DAH_02H) \
__PMC_EV_ALIAS("Fused_Uops_Ret", IAP_EVENT_DAH_00H) \
__PMC_EV_ALIAS("HW_Int_Rx", IAP_EVENT_C8H_00H) \
__PMC_EV_ALIAS("ICache_Misses", IAP_EVENT_81H_00H) \
__PMC_EV_ALIAS("ICache_Reads", IAP_EVENT_80H_00H) \
__PMC_EV_ALIAS("IFU_Mem_Stall", IAP_EVENT_86H_00H) \
__PMC_EV_ALIAS("ILD_Stall", IAP_EVENT_87H_00H) \
__PMC_EV_ALIAS("ITLB_Misses", IAP_EVENT_85H_00H) \
__PMC_EV_ALIAS("Instr_Decoded", IAP_EVENT_D0H_00H) \
__PMC_EV_ALIAS("Instr_Ret", IAP_EVENT_C0H_00H) \
__PMC_EV_ALIAS("L1_Pref_Req", IAP_EVENT_4FH_00H) \
__PMC_EV_ALIAS("L2_ADS", IAP_EVENT_21H) \
__PMC_EV_ALIAS("L2_IFetch", IAP_EVENT_28H) \
__PMC_EV_ALIAS("L2_LD", IAP_EVENT_29H) \
__PMC_EV_ALIAS("L2_Lines_In", IAP_EVENT_24H) \
__PMC_EV_ALIAS("L2_Lines_Out", IAP_EVENT_26H) \
__PMC_EV_ALIAS("L2_M_Lines_In", IAP_EVENT_25H) \
__PMC_EV_ALIAS("L2_M_Lines_Out", IAP_EVENT_27H) \
__PMC_EV_ALIAS("L2_No_Request_Cycles", IAP_EVENT_32H) \
__PMC_EV_ALIAS("L2_Reject_Cycles", IAP_EVENT_30H) \
__PMC_EV_ALIAS("L2_Rqsts", IAP_EVENT_2EH) \
__PMC_EV_ALIAS("L2_ST", IAP_EVENT_2AH) \
__PMC_EV_ALIAS("LD_Blocks", IAP_EVENT_03H_00H) \
__PMC_EV_ALIAS("LLC_Misses", IAP_EVENT_2EH_41H) \
__PMC_EV_ALIAS("LLC_Reference", IAP_EVENT_2EH_4FH) \
__PMC_EV_ALIAS("MMX_Assist", IAP_EVENT_CDH_00H) \
__PMC_EV_ALIAS("MMX_FP_Trans", IAP_EVENT_CCH_00H) \
__PMC_EV_ALIAS("MMX_Instr_Exec", IAP_EVENT_B0H_00H) \
__PMC_EV_ALIAS("MMX_Instr_Ret", IAP_EVENT_CEH_00H) \
__PMC_EV_ALIAS("Misalign_Mem_Ref", IAP_EVENT_05H_00H) \
__PMC_EV_ALIAS("Mul", IAP_EVENT_12H_00H) \
__PMC_EV_ALIAS("NonHlt_Ref_Cycles", IAP_EVENT_3CH_01H) \
__PMC_EV_ALIAS("Pref_Rqsts_Dn", IAP_EVENT_F8H_00H) \
__PMC_EV_ALIAS("Pref_Rqsts_Up", IAP_EVENT_F0H_00H) \
__PMC_EV_ALIAS("Resource_Stall", IAP_EVENT_A2H_00H) \
__PMC_EV_ALIAS("SD_Drains", IAP_EVENT_04H_00H) \
__PMC_EV_ALIAS("SIMD_FP_DP_P_Comp_Ret", IAP_EVENT_D9H_02H) \
__PMC_EV_ALIAS("SIMD_FP_DP_P_Ret", IAP_EVENT_D8H_02H) \
__PMC_EV_ALIAS("SIMD_FP_DP_S_Comp_Ret", IAP_EVENT_D9H_03H) \
__PMC_EV_ALIAS("SIMD_FP_DP_S_Ret", IAP_EVENT_D8H_03H) \
__PMC_EV_ALIAS("SIMD_FP_SP_P_Comp_Ret", IAP_EVENT_D9H_00H) \
__PMC_EV_ALIAS("SIMD_FP_SP_Ret", IAP_EVENT_D8H_00H) \
__PMC_EV_ALIAS("SIMD_FP_SP_S_Comp_Ret", IAP_EVENT_D9H_01H) \
__PMC_EV_ALIAS("SIMD_FP_SP_S_Ret", IAP_EVENT_D8H_01H) \
__PMC_EV_ALIAS("SIMD_Int_128_Ret", IAP_EVENT_D8H_04H) \
__PMC_EV_ALIAS("SIMD_Int_Pari_Exec", IAP_EVENT_B3H_20H) \
__PMC_EV_ALIAS("SIMD_Int_Pck_Exec", IAP_EVENT_B3H_04H) \
__PMC_EV_ALIAS("SIMD_Int_Plog_Exec", IAP_EVENT_B3H_10H) \
__PMC_EV_ALIAS("SIMD_Int_Pmul_Exec", IAP_EVENT_B3H_01H) \
__PMC_EV_ALIAS("SIMD_Int_Psft_Exec", IAP_EVENT_B3H_02H) \
__PMC_EV_ALIAS("SIMD_Int_Sat_Exec", IAP_EVENT_B1H_00H) \
__PMC_EV_ALIAS("SIMD_Int_Upck_Exec", IAP_EVENT_B3H_08H) \
__PMC_EV_ALIAS("SMC_Detected", IAP_EVENT_C3H_00H) \
__PMC_EV_ALIAS("SSE_NTStores_Miss", IAP_EVENT_4BH_03H) \
__PMC_EV_ALIAS("SSE_NTStores_Ret", IAP_EVENT_07H_03H) \
__PMC_EV_ALIAS("SSE_PrefNta_Miss", IAP_EVENT_4BH_00H) \
__PMC_EV_ALIAS("SSE_PrefNta_Ret", IAP_EVENT_07H_00H) \
__PMC_EV_ALIAS("SSE_PrefT1_Miss", IAP_EVENT_4BH_01H) \
__PMC_EV_ALIAS("SSE_PrefT1_Ret", IAP_EVENT_07H_01H) \
__PMC_EV_ALIAS("SSE_PrefT2_Miss", IAP_EVENT_4BH_02H) \
__PMC_EV_ALIAS("SSE_PrefT2_Ret", IAP_EVENT_07H_02H) \
__PMC_EV_ALIAS("Seg_Reg_Loads", IAP_EVENT_06H_00H) \
__PMC_EV_ALIAS("Serial_Execution_Cycles", IAP_EVENT_3CH_02H) \
__PMC_EV_ALIAS("Thermal_Trip", IAP_EVENT_3BH_C0H) \
__PMC_EV_ALIAS("Unfusion", IAP_EVENT_DBH_00H) \
__PMC_EV_ALIAS("Unhalted_Core_Cycles", IAP_EVENT_3CH_00H) \
__PMC_EV_ALIAS("Uops_Ret", IAP_EVENT_C2H_00H)
/*
* Aliases for Core2 PMC events.
*/
#define __PMC_EV_ALIAS_CORE2() \
__PMC_EV_ALIAS_INTEL_ARCHITECTURAL() \
__PMC_EV_ALIAS("BACLEARS", IAP_EVENT_E6H_00H) \
__PMC_EV_ALIAS("BOGUS_BR", IAP_EVENT_E4H_00H) \
__PMC_EV_ALIAS("BR_BAC_MISSP_EXEC", IAP_EVENT_8AH_00H) \
__PMC_EV_ALIAS("BR_CALL_EXEC", IAP_EVENT_92H_00H) \
__PMC_EV_ALIAS("BR_CALL_MISSP_EXEC", IAP_EVENT_93H_00H) \
__PMC_EV_ALIAS("BR_CND_EXEC", IAP_EVENT_8BH_00H) \
__PMC_EV_ALIAS("BR_CND_MISSP_EXEC", IAP_EVENT_8CH_00H) \
__PMC_EV_ALIAS("BR_IND_CALL_EXEC", IAP_EVENT_94H_00H) \
__PMC_EV_ALIAS("BR_IND_EXEC", IAP_EVENT_8DH_00H) \
__PMC_EV_ALIAS("BR_IND_MISSP_EXEC", IAP_EVENT_8EH_00H) \
__PMC_EV_ALIAS("BR_INST_DECODED", IAP_EVENT_E0H_00H) \
__PMC_EV_ALIAS("BR_INST_EXEC", IAP_EVENT_88H_00H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.ANY", IAP_EVENT_C4H_00H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.MISPRED", IAP_EVENT_C5H_00H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.MISPRED_NOT_TAKEN", \
IAP_EVENT_C4H_02H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.MISPRED_TAKEN", \
IAP_EVENT_C4H_08H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.PRED_NOT_TAKEN", \
IAP_EVENT_C4H_01H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.PRED_TAKEN", \
IAP_EVENT_C4H_04H) \
__PMC_EV_ALIAS("BR_INST_RETIRED.TAKEN", IAP_EVENT_C4H_0CH) \
__PMC_EV_ALIAS("BR_MISSP_EXEC", IAP_EVENT_89H_00H) \
__PMC_EV_ALIAS("BR_RET_BAC_MISSP_EXEC", IAP_EVENT_91H_00H) \
__PMC_EV_ALIAS("BR_RET_EXEC", IAP_EVENT_8FH_00H) \
__PMC_EV_ALIAS("BR_RET_MISSP_EXEC", IAP_EVENT_90H_00H) \
__PMC_EV_ALIAS("BR_TKN_BUBBLE_1", IAP_EVENT_97H_00H) \
__PMC_EV_ALIAS("BR_TKN_BUBBLE_2", IAP_EVENT_98H_00H) \
__PMC_EV_ALIAS("BUSQ_EMPTY", IAP_EVENT_7DH) \
__PMC_EV_ALIAS("BUS_BNR_DRV", IAP_EVENT_61H) \
__PMC_EV_ALIAS("BUS_DATA_RCV", IAP_EVENT_64H) \
__PMC_EV_ALIAS("BUS_DRDY_CLOCKS", IAP_EVENT_62H) \
__PMC_EV_ALIAS("BUS_HITM_DRV", IAP_EVENT_7BH) \
__PMC_EV_ALIAS("BUS_HIT_DRV", IAP_EVENT_7AH) \
__PMC_EV_ALIAS("BUS_IO_WAIT", IAP_EVENT_7FH) \
__PMC_EV_ALIAS("BUS_LOCK_CLOCKS", IAP_EVENT_63H) \
__PMC_EV_ALIAS("BUS_REQUEST_OUTSTANDING", \
IAP_EVENT_60H) \
__PMC_EV_ALIAS("BUS_TRANS_ANY", IAP_EVENT_70H) \
__PMC_EV_ALIAS("BUS_TRANS_BRD", IAP_EVENT_65H) \
__PMC_EV_ALIAS("BUS_TRANS_BURST", IAP_EVENT_6EH) \
__PMC_EV_ALIAS("BUS_TRANS_DEF", IAP_EVENT_6DH) \
__PMC_EV_ALIAS("BUS_TRANS_IFETCH", IAP_EVENT_68H) \
__PMC_EV_ALIAS("BUS_TRANS_INVAL", IAP_EVENT_69H) \
__PMC_EV_ALIAS("BUS_TRANS_IO", IAP_EVENT_6CH) \
__PMC_EV_ALIAS("BUS_TRANS_MEM", IAP_EVENT_6FH) \
__PMC_EV_ALIAS("BUS_TRANS_P", IAP_EVENT_6BH) \
__PMC_EV_ALIAS("BUS_TRANS_PWR", IAP_EVENT_6AH) \
__PMC_EV_ALIAS("BUS_TRANS_RFO", IAP_EVENT_66H) \
__PMC_EV_ALIAS("BUS_TRANS_WB", IAP_EVENT_67H) \
__PMC_EV_ALIAS("CMP_SNOOP", IAP_EVENT_78H) \
__PMC_EV_ALIAS("CPU_CLK_UNHALTED.BUS", IAP_EVENT_3CH_01H) \
__PMC_EV_ALIAS("CPU_CLK_UNHALTED.CORE_P", \
IAP_EVENT_3CH_00H) \
__PMC_EV_ALIAS("CPU_CLK_UNHALTED.NO_OTHER", \
IAP_EVENT_3CH_02H) \
__PMC_EV_ALIAS("CYCLES_DIV_BUSY", IAP_EVENT_14H_00H) \
__PMC_EV_ALIAS("CYCLES_INT_MASKED", IAP_EVENT_C6H_01H) \
__PMC_EV_ALIAS("CYCLES_INT_PENDING_AND_MASKED", \
IAP_EVENT_C6H_02H) \
__PMC_EV_ALIAS("CYCLES_L1I_MEM_STALLED", IAP_EVENT_86H_00H) \
__PMC_EV_ALIAS("DELAYED_BYPASS.FP", IAP_EVENT_19H_00H) \
__PMC_EV_ALIAS("DELAYED_BYPASS.LOAD", IAP_EVENT_19H_01H) \
__PMC_EV_ALIAS("DELAYED_BYPASS.SIMD", IAP_EVENT_19H_02H) \
__PMC_EV_ALIAS("DIV", IAP_EVENT_13H_00H) \
__PMC_EV_ALIAS("DTLB_MISSES.ANY", IAP_EVENT_08H_01H) \
__PMC_EV_ALIAS("DTLB_MISSES.L0_MISS_LD", IAP_EVENT_08H_04H) \
__PMC_EV_ALIAS("DTLB_MISSES.MISS_LD", IAP_EVENT_08H_02H) \
__PMC_EV_ALIAS("DTLB_MISSES.MISS_ST", IAP_EVENT_08H_08H) \
__PMC_EV_ALIAS("EIST_TRANS", IAP_EVENT_3AH_00H) \
__PMC_EV_ALIAS("ESP.ADDITIONS", IAP_EVENT_ABH_02H) \
__PMC_EV_ALIAS("ESP.SYNCH", IAP_EVENT_ABH_01H) \
__PMC_EV_ALIAS("EXT_SNOOP", IAP_EVENT_77H) \
__PMC_EV_ALIAS("FP_ASSIST", IAP_EVENT_11H_00H) \
__PMC_EV_ALIAS("FP_COMP_OPS_EXE", IAP_EVENT_10H_00H) \
__PMC_EV_ALIAS("FP_MMX_TRANS_TO_FP", IAP_EVENT_CCH_02H) \
__PMC_EV_ALIAS("FP_MMX_TRANS_TO_MMX", IAP_EVENT_CCH_01H) \
__PMC_EV_ALIAS("HW_INT_RCV", IAP_EVENT_C8H_00H) \
__PMC_EV_ALIAS("IDLE_DURING_DIV", IAP_EVENT_18H_00H) \
__PMC_EV_ALIAS("ILD_STALL", IAP_EVENT_87H_00H) \
__PMC_EV_ALIAS("INST_QUEUE.FULL", IAP_EVENT_83H_02H) \
__PMC_EV_ALIAS("INST_RETIRED.ANY_P", IAP_EVENT_C0H_00H) \
__PMC_EV_ALIAS("INST_RETIRED.LOADS", IAP_EVENT_C0H_01H) \
__PMC_EV_ALIAS("INST_RETIRED.OTHER", IAP_EVENT_C0H_04H) \
__PMC_EV_ALIAS("INST_RETIRED.STORES", IAP_EVENT_C0H_02H) \
__PMC_EV_ALIAS("INST_RETIRED.VM_H", IAP_EVENT_C0H_08H) \
__PMC_EV_ALIAS("ITLB.FLUSH", IAP_EVENT_82H_40H) \
__PMC_EV_ALIAS("ITLB.LARGE_MISS", IAP_EVENT_82H_10H) \
__PMC_EV_ALIAS("ITLB.MISSES", IAP_EVENT_82H_12H) \
__PMC_EV_ALIAS("ITLB.SMALL_MISS", IAP_EVENT_82H_02H) \
__PMC_EV_ALIAS("ITLB_MISS_RETIRED", IAP_EVENT_C9H_00H) \
__PMC_EV_ALIAS("L1D_ALL_CACHE_REF", IAP_EVENT_43H_02H) \
__PMC_EV_ALIAS("L1D_ALL_REF", IAP_EVENT_43H_01H) \
__PMC_EV_ALIAS("L1D_CACHE_LD", IAP_EVENT_40H) \
__PMC_EV_ALIAS("L1D_CACHE_LOCK", IAP_EVENT_42H) \
__PMC_EV_ALIAS("L1D_CACHE_LOCK_DURATION", IAP_EVENT_42H_10H) \
__PMC_EV_ALIAS("L1D_CACHE_ST", IAP_EVENT_41H) \
__PMC_EV_ALIAS("L1D_M_EVICT", IAP_EVENT_47H_00H) \
__PMC_EV_ALIAS("L1D_M_REPL", IAP_EVENT_46H_00H) \
__PMC_EV_ALIAS("L1D_PEND_MISS", IAP_EVENT_48H_00H) \
__PMC_EV_ALIAS("L1D_PREFETCH.REQUESTS", IAP_EVENT_4EH_10H) \
__PMC_EV_ALIAS("L1D_REPL", IAP_EVENT_45H_0FH) \
__PMC_EV_ALIAS("L1D_SPLIT.LOADS", IAP_EVENT_49H_01H) \
__PMC_EV_ALIAS("L1D_SPLIT.STORES", IAP_EVENT_49H_02H) \
__PMC_EV_ALIAS("L1I_MISSES", IAP_EVENT_81H_00H) \
__PMC_EV_ALIAS("L1I_READS", IAP_EVENT_80H_00H) \
__PMC_EV_ALIAS("L2_ADS", IAP_EVENT_21H) \
__PMC_EV_ALIAS("L2_DBUS_BUSY_RD", IAP_EVENT_23H) \
__PMC_EV_ALIAS("L2_IFETCH", IAP_EVENT_28H) \
__PMC_EV_ALIAS("L2_LD", IAP_EVENT_29H) \
__PMC_EV_ALIAS("L2_LINES_IN", IAP_EVENT_24H) \
__PMC_EV_ALIAS("L2_LINES_OUT", IAP_EVENT_26H) \
__PMC_EV_ALIAS("L2_LOCK", IAP_EVENT_2BH) \
__PMC_EV_ALIAS("L2_M_LINES_IN", IAP_EVENT_25H) \
__PMC_EV_ALIAS("L2_M_LINES_OUT", IAP_EVENT_27H) \
__PMC_EV_ALIAS("L2_NO_REQ", IAP_EVENT_32H) \
__PMC_EV_ALIAS("L2_REJECT_BUSQ", IAP_EVENT_30H) \
__PMC_EV_ALIAS("L2_RQSTS", IAP_EVENT_2EH) \
__PMC_EV_ALIAS("L2_RQSTS.SELF.DEMAND.I_STATE", \
IAP_EVENT_2EH_41H) \
__PMC_EV_ALIAS("L2_RQSTS.SELF.DEMAND.MESI", \
IAP_EVENT_2EH_4FH) \
__PMC_EV_ALIAS("L2_ST", IAP_EVENT_2AH) \
__PMC_EV_ALIAS("LOAD_BLOCK.L1D", IAP_EVENT_03H_20H) \
__PMC_EV_ALIAS("LOAD_BLOCK.OVERLAP_STORE", \
IAP_EVENT_03H_08H) \
__PMC_EV_ALIAS("LOAD_BLOCK.STA", IAP_EVENT_03H_02H) \
__PMC_EV_ALIAS("LOAD_BLOCK.STD", IAP_EVENT_03H_04H) \
__PMC_EV_ALIAS("LOAD_BLOCK.UNTIL_RETIRE", IAP_EVENT_03H_10H) \
__PMC_EV_ALIAS("LOAD_HIT_PRE", IAP_EVENT_4CH_00H) \
__PMC_EV_ALIAS("MACHINE_NUKES.MEM_ORDER", IAP_EVENT_C3H_04H) \
__PMC_EV_ALIAS("MACHINE_NUKES.SMC", IAP_EVENT_C3H_01H) \
__PMC_EV_ALIAS("MACRO_INSTS.CISC_DECODED", IAP_EVENT_AAH_08H) \
__PMC_EV_ALIAS("MACRO_INSTS.DECODED", IAP_EVENT_AAH_01H) \
__PMC_EV_ALIAS("MEMORY_DISAMBIGUATION.RESET", \
IAP_EVENT_09H_01H) \
__PMC_EV_ALIAS("MEMORY_DISAMBIGUATION.SUCCESS", \
IAP_EVENT_09H_02H) \
__PMC_EV_ALIAS("MEM_LOAD_RETIRED.DTLB_MISS", \
IAP_EVENT_CBH_10H) \
__PMC_EV_ALIAS("MEM_LOAD_RETIRED.L1D_LINE_MISS", \
IAP_EVENT_CBH_02H) \
__PMC_EV_ALIAS("MEM_LOAD_RETIRED.L1D_MISS", \
IAP_EVENT_CBH_01H) \
__PMC_EV_ALIAS("MEM_LOAD_RETIRED.L2_LINE_MISS", \
IAP_EVENT_CBH_08H) \
__PMC_EV_ALIAS("MEM_LOAD_RETIRED.L2_MISS", \
IAP_EVENT_CBH_04H) \
__PMC_EV_ALIAS("MUL", IAP_EVENT_12H_00H) \
__PMC_EV_ALIAS("PAGE_WALKS.COUNT", IAP_EVENT_0CH_01H) \
__PMC_EV_ALIAS("PAGE_WALKS.CYCLES", IAP_EVENT_0CH_02H) \
__PMC_EV_ALIAS("PREF_RQSTS_DN", IAP_EVENT_F8H_00H) \
__PMC_EV_ALIAS("PREF_RQSTS_UP", IAP_EVENT_F0H_00H) \
__PMC_EV_ALIAS("RAT_STALLS.ANY", IAP_EVENT_D2H_0FH) \
__PMC_EV_ALIAS("RAT_STALLS.FLAGS", IAP_EVENT_D2H_04H) \
__PMC_EV_ALIAS("RAT_STALLS.FPSW", IAP_EVENT_D2H_08H) \
__PMC_EV_ALIAS("RAT_STALLS.OTHER_SERIALIZATION_STALLS", \
IAP_EVENT_D2H_10H) \
__PMC_EV_ALIAS("RAT_STALLS.PARTIAL_CYCLES", \
IAP_EVENT_D2H_02H) \
__PMC_EV_ALIAS("RAT_STALLS.ROB_READ_PORT", \
IAP_EVENT_D2H_01H) \
__PMC_EV_ALIAS("RESOURCE_STALLS.ANY", IAP_EVENT_DCH_1FH) \
__PMC_EV_ALIAS("RESOURCE_STALLS.BR_MISS_CLEAR", \
IAP_EVENT_DCH_10H) \
__PMC_EV_ALIAS("RESOURCE_STALLS.FPCW", IAP_EVENT_DCH_08H) \
__PMC_EV_ALIAS("RESOURCE_STALLS.LD_ST", IAP_EVENT_DCH_04H) \
__PMC_EV_ALIAS("RESOURCE_STALLS.ROB_FULL", \
IAP_EVENT_DCH_01H) \
__PMC_EV_ALIAS("RESOURCE_STALLS.RS_FULL", IAP_EVENT_DCH_02H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED", IAP_EVENT_A0H_00H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED.PORT0", IAP_EVENT_A1H_01H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED.PORT1", IAP_EVENT_A1H_02H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED.PORT2", IAP_EVENT_A1H_04H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED.PORT3", IAP_EVENT_A1H_08H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED.PORT4", IAP_EVENT_A1H_10H) \
__PMC_EV_ALIAS("RS_UOPS_DISPATCHED.PORT5", IAP_EVENT_A1H_20H) \
__PMC_EV_ALIAS("SB_DRAIN_CYCLES", IAP_EVENT_04H_01H) \
__PMC_EV_ALIAS("SEGMENT_REG_LOADS", IAP_EVENT_06H_00H) \
__PMC_EV_ALIAS("SEG_REG_RENAMES.ANY", IAP_EVENT_D5H_0FH) \
__PMC_EV_ALIAS("SEG_REG_RENAMES.DS", IAP_EVENT_D5H_02H) \
__PMC_EV_ALIAS("SEG_REG_RENAMES.ES", IAP_EVENT_D5H_01H) \
__PMC_EV_ALIAS("SEG_REG_RENAMES.FS", IAP_EVENT_D5H_04H) \
__PMC_EV_ALIAS("SEG_REG_RENAMES.GS", IAP_EVENT_D5H_08H) \
__PMC_EV_ALIAS("SEG_RENAME_STALLS.ANY", IAP_EVENT_D4H_0FH) \
__PMC_EV_ALIAS("SEG_RENAME_STALLS.DS", IAP_EVENT_D4H_02H) \
__PMC_EV_ALIAS("SEG_RENAME_STALLS.ES", IAP_EVENT_D4H_01H) \
__PMC_EV_ALIAS("SEG_RENAME_STALLS.FS", IAP_EVENT_D4H_04H) \
__PMC_EV_ALIAS("SEG_RENAME_STALLS.GS", IAP_EVENT_D4H_08H) \
__PMC_EV_ALIAS("SIMD_ASSIST", IAP_EVENT_CDH_00H) \
__PMC_EV_ALIAS("SIMD_COMP_INST_RETIRED.PACKED_DOUBLE", \
IAP_EVENT_CAH_04H) \
__PMC_EV_ALIAS("SIMD_COMP_INST_RETIRED.PACKED_SINGLE", \
IAP_EVENT_CAH_01H) \
__PMC_EV_ALIAS("SIMD_COMP_INST_RETIRED.SCALAR_DOUBLE", \
IAP_EVENT_CAH_08H) \
__PMC_EV_ALIAS("SIMD_COMP_INST_RETIRED.SCALAR_SINGLE", \
IAP_EVENT_CAH_02H) \
__PMC_EV_ALIAS("SIMD_INSTR_RETIRED", IAP_EVENT_CEH_00H) \
__PMC_EV_ALIAS("SIMD_INST_RETIRED.ANY", IAP_EVENT_C7H_1FH) \
__PMC_EV_ALIAS("SIMD_INST_RETIRED.PACKED_DOUBLE", \
IAP_EVENT_C7H_04H) \
__PMC_EV_ALIAS("SIMD_INST_RETIRED.PACKED_SINGLE", \
IAP_EVENT_C7H_01H) \
__PMC_EV_ALIAS("SIMD_INST_RETIRED.SCALAR_DOUBLE", \
IAP_EVENT_C7H_08H) \
__PMC_EV_ALIAS("SIMD_INST_RETIRED.SCALAR_SINGLE", \
IAP_EVENT_C7H_02H) \
__PMC_EV_ALIAS("SIMD_INST_RETIRED.VECTOR", IAP_EVENT_C7H_10H) \
__PMC_EV_ALIAS("SIMD_SAT_INSTR_RETIRED", IAP_EVENT_CFH_00H) \
__PMC_EV_ALIAS("SIMD_SAT_UOP_EXEC", IAP_EVENT_B1H_00H) \
__PMC_EV_ALIAS("SIMD_UOPS_EXEC", IAP_EVENT_B0H_00H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.ARITHMETIC", IAP_EVENT_B3H_20H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.LOGICAL", IAP_EVENT_B3H_10H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.MUL", IAP_EVENT_B3H_01H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.PACK", IAP_EVENT_B3H_04H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.SHIFT", IAP_EVENT_B3H_02H) \
__PMC_EV_ALIAS("SIMD_UOP_TYPE_EXEC.UNPACK", IAP_EVENT_B3H_08H) \
__PMC_EV_ALIAS("SNOOP_STALL_DRV", IAP_EVENT_7EH) \
__PMC_EV_ALIAS("SSE_PRE_EXEC.L1", IAP_EVENT_07H_01H) \
__PMC_EV_ALIAS("SSE_PRE_EXEC.L2", IAP_EVENT_07H_02H) \
__PMC_EV_ALIAS("SSE_PRE_EXEC.NTA", IAP_EVENT_07H_00H) \
__PMC_EV_ALIAS("SSE_PRE_EXEC.STORES", IAP_EVENT_07H_03H) \
__PMC_EV_ALIAS("SSE_PRE_MISS.L1", IAP_EVENT_4BH_01H) \
__PMC_EV_ALIAS("SSE_PRE_MISS.L2", IAP_EVENT_4BH_02H) \
__PMC_EV_ALIAS("SSE_PRE_MISS.NTA", IAP_EVENT_4BH_00H) \
__PMC_EV_ALIAS("STORE_BLOCK.ORDER", IAP_EVENT_04H_02H) \
__PMC_EV_ALIAS("STORE_BLOCK.SNOOP", IAP_EVENT_04H_08H) \
__PMC_EV_ALIAS("THERMAL_TRIP", IAP_EVENT_3BH_C0H) \
__PMC_EV_ALIAS("UOPS_RETIRED.ANY", IAP_EVENT_C2H_0FH) \
__PMC_EV_ALIAS("UOPS_RETIRED.FUSED", IAP_EVENT_C2H_07H) \
__PMC_EV_ALIAS("UOPS_RETIRED.LD_IND_BR", IAP_EVENT_C2H_01H) \
__PMC_EV_ALIAS("UOPS_RETIRED.MACRO_FUSION", IAP_EVENT_C2H_04H) \
__PMC_EV_ALIAS("UOPS_RETIRED.NON_FUSED", IAP_EVENT_C2H_08H) \
__PMC_EV_ALIAS("UOPS_RETIRED.STD_STA", IAP_EVENT_C2H_02H) \
__PMC_EV_ALIAS("X87_OPS_RETIRED.ANY", IAP_EVENT_C1H_FEH) \
__PMC_EV_ALIAS("X87_OPS_RETIRED.FXCH", IAP_EVENT_C1H_01H)
/* timestamp counters. */
#define __PMC_EV_TSC() \
__PMC_EV(TSC, TSC)
#define PMC_EV_TSC_FIRST PMC_EV_TSC_TSC
#define PMC_EV_TSC_LAST PMC_EV_TSC_TSC
/*
* All known PMC events.
*
* PMC event numbers are allocated sparsely to allow new PMC events to
* be added to a PMC class without breaking ABI compatibility. The
* current allocation scheme is:
*
* START #EVENTS DESCRIPTION
* 0 0x1000 Reserved
* 0x1000 0x0001 TSC
* 0x2000 0x0080 AMD K7 events
* 0x2080 0x0100 AMD K8 events
* 0x10000 0x0080 INTEL architectural fixed-function events
* 0x10080 0x0F80 INTEL architectural programmable events
* 0x11000 0x0080 INTEL Pentium 4 events
* 0x11080 0x0080 INTEL Pentium MMX events
* 0x11100 0x0100 INTEL Pentium Pro/P-II/P-III/Pentium-M events
*/
#define __PMC_EVENTS() \
__PMC_EV_BLOCK(TSC, 0x01000) \
__PMC_EV_TSC() \
__PMC_EV_BLOCK(K7, 0x2000) \
__PMC_EV_K7() \
__PMC_EV_BLOCK(K8, 0x2080) \
__PMC_EV_K8() \
__PMC_EV_BLOCK(IAF, 0x10000) \
__PMC_EV_IAF() \
__PMC_EV_BLOCK(IAP, 0x10080) \
__PMC_EV_IAP() \
__PMC_EV_BLOCK(P4, 0x11000) \
__PMC_EV_P4() \
__PMC_EV_BLOCK(P5, 0x11080) \
__PMC_EV_P5() \
__PMC_EV_BLOCK(P6, 0x11100) \
__PMC_EV_P6()
#define PMC_EVENT_FIRST PMC_EV_TSC_TSC
#define PMC_EVENT_LAST PMC_EV_P6_LAST
#endif /* _DEV_HWPMC_PMC_EVENTS_H_ */