Blame src/libpfm4/lib/events/intel_nhm_events.h

Packit 577717
/*
Packit 577717
 * Copyright (c) 2011 Google, Inc
Packit 577717
 * Contributed by Stephane Eranian <eranian@gmail.com>
Packit 577717
 *
Packit 577717
 * Permission is hereby granted, free of charge, to any person obtaining a copy
Packit 577717
 * of this software and associated documentation files (the "Software"), to deal
Packit 577717
 * in the Software without restriction, including without limitation the rights
Packit 577717
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
Packit 577717
 * of the Software, and to permit persons to whom the Software is furnished to do so,
Packit 577717
 * subject to the following conditions:
Packit 577717
 *
Packit 577717
 * The above copyright notice and this permission notice shall be included in all
Packit 577717
 * copies or substantial portions of the Software.
Packit 577717
 *
Packit 577717
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
Packit 577717
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
Packit 577717
 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
Packit 577717
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
Packit 577717
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
Packit 577717
 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Packit 577717
 *
Packit 577717
 * This file is part of libpfm, a performance monitoring support library for
Packit 577717
 * applications on Linux.
Packit 577717
 *
Packit 577717
 * This file has been automatically generated.
Packit 577717
 *
Packit 577717
 * PMU: nhm (Intel Nehalem)
Packit 577717
 */
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_arith[]={
Packit 577717
   { .uname  = "CYCLES_DIV_BUSY",
Packit 577717
     .udesc  = "Counts the number of cycles the divider is busy executing divide or square root operations. The divide can be integer, X87 or Streaming SIMD Extensions (SSE). The square root operation can be either X87 or SSE.",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DIV",
Packit 577717
     .udesc  = "Counts the number of divide or square root operations. The divide can be integer, X87 or Streaming SIMD Extensions (SSE). The square root operation can be either X87 or SSE.",
Packit 577717
     .uequiv = "CYCLES_DIV_BUSY:c=1:i=1:e=1",
Packit 577717
     .ucode = 0x100 | INTEL_X86_MOD_EDGE | INTEL_X86_MOD_INV | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "MUL",
Packit 577717
     .udesc  = "Counts the number of multiply operations executed. This includes integer as well as floating point multiply operations but excludes DPPS mul and MPSAD.",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_baclear[]={
Packit 577717
   { .uname  = "BAD_TARGET",
Packit 577717
     .udesc  = "BACLEAR asserted with bad target address",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "CLEAR",
Packit 577717
     .udesc  = "BACLEAR asserted, regardless of cause",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_bpu_clears[]={
Packit 577717
   { .uname  = "EARLY",
Packit 577717
     .udesc  = "Early Branch Prediction Unit clears",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LATE",
Packit 577717
     .udesc  = "Late Branch Prediction Unit clears",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Count any Branch Prediction Unit clears",
Packit 577717
     .ucode = 0x300,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_br_inst_exec[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Branch instructions executed",
Packit 577717
     .ucode = 0x7f00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "COND",
Packit 577717
     .udesc  = "Conditional branch instructions executed",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DIRECT",
Packit 577717
     .udesc  = "Unconditional branches executed",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DIRECT_NEAR_CALL",
Packit 577717
     .udesc  = "Unconditional call branches executed",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "INDIRECT_NEAR_CALL",
Packit 577717
     .udesc  = "Indirect call branches executed",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "INDIRECT_NON_CALL",
Packit 577717
     .udesc  = "Indirect non call branches executed",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "NEAR_CALLS",
Packit 577717
     .udesc  = "Call branches executed",
Packit 577717
     .ucode = 0x3000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "NON_CALLS",
Packit 577717
     .udesc  = "All non call branches executed",
Packit 577717
     .ucode = 0x700,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RETURN_NEAR",
Packit 577717
     .udesc  = "Indirect return branches executed",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "TAKEN",
Packit 577717
     .udesc  = "Taken branches executed",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_br_inst_retired[]={
Packit 577717
   { .uname  = "ALL_BRANCHES",
Packit 577717
     .udesc  = "Retired branch instructions (Precise Event)",
Packit 577717
     .ucode = 0x0,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "CONDITIONAL",
Packit 577717
     .udesc  = "Retired conditional branch instructions (Precise Event)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "NEAR_CALL",
Packit 577717
     .udesc  = "Retired near call instructions (Precise Event)",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_br_misp_exec[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Mispredicted branches executed",
Packit 577717
     .ucode = 0x7f00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "COND",
Packit 577717
     .udesc  = "Mispredicted conditional branches executed",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DIRECT",
Packit 577717
     .udesc  = "Mispredicted unconditional branches executed",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DIRECT_NEAR_CALL",
Packit 577717
     .udesc  = "Mispredicted non call branches executed",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "INDIRECT_NEAR_CALL",
Packit 577717
     .udesc  = "Mispredicted indirect call branches executed",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "INDIRECT_NON_CALL",
Packit 577717
     .udesc  = "Mispredicted indirect non call branches executed",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "NEAR_CALLS",
Packit 577717
     .udesc  = "Mispredicted call branches executed",
Packit 577717
     .ucode = 0x3000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "NON_CALLS",
Packit 577717
     .udesc  = "Mispredicted non call branches executed",
Packit 577717
     .ucode = 0x700,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RETURN_NEAR",
Packit 577717
     .udesc  = "Mispredicted return branches executed",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "TAKEN",
Packit 577717
     .udesc  = "Mispredicted taken branches executed",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_br_misp_retired[]={
Packit 577717
   { .uname  = "NEAR_CALL",
Packit 577717
     .udesc  = "Counts mispredicted direct and indirect near unconditional retired calls",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_PEBS | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_cache_lock_cycles[]={
Packit 577717
   { .uname  = "L1D",
Packit 577717
     .udesc  = "Cycles L1D locked",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "L1D_L2",
Packit 577717
     .udesc  = "Cycles L1D and L2 locked",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_cpu_clk_unhalted[]={
Packit 577717
   { .uname  = "THREAD_P",
Packit 577717
     .udesc  = "Cycles when thread is not halted (programmable counter)",
Packit 577717
     .ucode = 0x0,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "REF_P",
Packit 577717
     .udesc  = "Reference base clock (133 Mhz) cycles when thread is not halted",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "TOTAL_CYCLES",
Packit 577717
     .udesc  = "Total number of elapsed cycles. Does not work when C-state enabled",
Packit 577717
     .uequiv = "THREAD_P:c=2:i=1",
Packit 577717
     .ucode = 0x0 | INTEL_X86_MOD_INV | (0x2 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_dtlb_load_misses[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "DTLB load misses",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "PDE_MISS",
Packit 577717
     .udesc  = "DTLB load miss caused by low part of address",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "WALK_COMPLETED",
Packit 577717
     .udesc  = "DTLB load miss page walks complete",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "STLB_HIT",
Packit 577717
     .udesc  = "DTLB second level hit",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PDP_MISS",
Packit 577717
     .udesc  = "Number of DTLB cache load misses where the high part of the linear to physical address translation was missed",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LARGE_WALK_COMPLETED",
Packit 577717
     .udesc  = "Counts number of completed large page walks due to load miss in the STLB",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_dtlb_misses[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "DTLB misses",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "STLB_HIT",
Packit 577717
     .udesc  = "DTLB first level misses but second level hit",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "WALK_COMPLETED",
Packit 577717
     .udesc  = "DTLB miss page walks",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PDE_MISS",
Packit 577717
     .udesc  = "Number of DTLB cache misses where the low part of the linear to physical address translation was missed",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PDP_MISS",
Packit 577717
     .udesc  = "Number of DTLB misses where the high part of the linear to physical address translation was missed",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LARGE_WALK_COMPLETED",
Packit 577717
     .udesc  = "Counts number of completed large page walks due to misses in the STLB",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_ept[]={
Packit 577717
   { .uname  = "EPDE_MISS",
Packit 577717
     .udesc  = "Extended Page Directory Entry miss",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "EPDPE_MISS",
Packit 577717
     .udesc  = "Extended Page Directory Pointer miss",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "EPDPE_HIT",
Packit 577717
     .udesc  = "Extended Page Directory Pointer hit",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_fp_assist[]={
Packit 577717
   { .uname  = "ALL",
Packit 577717
     .udesc  = "Floating point assists (Precise Event)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "INPUT",
Packit 577717
     .udesc  = "Floating point assists for invalid input value (Precise Event)",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "OUTPUT",
Packit 577717
     .udesc  = "Floating point assists for invalid output value (Precise Event)",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_fp_comp_ops_exe[]={
Packit 577717
   { .uname  = "MMX",
Packit 577717
     .udesc  = "MMX Uops",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "SSE_DOUBLE_PRECISION",
Packit 577717
     .udesc  = "SSE* FP double precision Uops",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "SSE_FP",
Packit 577717
     .udesc  = "SSE and SSE2 FP Uops",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "SSE_FP_PACKED",
Packit 577717
     .udesc  = "SSE FP packed Uops",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "SSE_FP_SCALAR",
Packit 577717
     .udesc  = "SSE FP scalar Uops",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "SSE_SINGLE_PRECISION",
Packit 577717
     .udesc  = "SSE* FP single precision Uops",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "SSE2_INTEGER",
Packit 577717
     .udesc  = "SSE2 integer Uops",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "X87",
Packit 577717
     .udesc  = "Computational floating-point operations executed",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_fp_mmx_trans[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "All Floating Point to and from MMX transitions",
Packit 577717
     .ucode = 0x300,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "TO_FP",
Packit 577717
     .udesc  = "Transitions from MMX to Floating Point instructions",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "TO_MMX",
Packit 577717
     .udesc  = "Transitions from Floating Point to MMX instructions",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_ifu_ivc[]={
Packit 577717
   { .uname  = "FULL",
Packit 577717
     .udesc  = "Instruction Fetche unit victim cache full",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "L1I_EVICTION",
Packit 577717
     .udesc  = "L1 Instruction cache evictions",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_ild_stall[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Any Instruction Length Decoder stall cycles",
Packit 577717
     .uequiv = "IQ_FULL:LCP:MRU:REGEN",
Packit 577717
     .ucode = 0xf00,
Packit 577717
     .uflags= INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "IQ_FULL",
Packit 577717
     .udesc  = "Instruction Queue full stall cycles",
Packit 577717
     .ucode = 0x400,
Packit 577717
   },
Packit 577717
   { .uname  = "LCP",
Packit 577717
     .udesc  = "Length Change Prefix stall cycles",
Packit 577717
     .ucode = 0x100,
Packit 577717
   },
Packit 577717
   { .uname  = "MRU",
Packit 577717
     .udesc  = "Stall cycles due to BPU MRU bypass",
Packit 577717
     .ucode = 0x200,
Packit 577717
   },
Packit 577717
   { .uname  = "REGEN",
Packit 577717
     .udesc  = "Regen stall cycles",
Packit 577717
     .ucode = 0x800,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_inst_decoded[]={
Packit 577717
   { .uname  = "DEC0",
Packit 577717
     .udesc  = "Instructions that must be decoded by decoder 0",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_inst_retired[]={
Packit 577717
   { .uname  = "ANY_P",
Packit 577717
     .udesc  = "Instructions Retired (Precise Event)",
Packit 577717
     .ucode = 0x0,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "X87",
Packit 577717
     .udesc  = "Retired floating-point operations (Precise Event)",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l1d[]={
Packit 577717
   { .uname  = "M_EVICT",
Packit 577717
     .udesc  = "L1D cache lines replaced in M state",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "M_REPL",
Packit 577717
     .udesc  = "L1D cache lines allocated in the M state",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "M_SNOOP_EVICT",
Packit 577717
     .udesc  = "L1D snoop eviction of cache lines in M state",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "REPL",
Packit 577717
     .udesc  = "L1 data cache lines allocated",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l1d_all_ref[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "All references to the L1 data cache",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "CACHEABLE",
Packit 577717
     .udesc  = "L1 data cacheable reads and writes",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l1d_cache_ld[]={
Packit 577717
   { .uname  = "E_STATE",
Packit 577717
     .udesc  = "L1 data cache read in E state",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "I_STATE",
Packit 577717
     .udesc  = "L1 data cache read in I state (misses)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "M_STATE",
Packit 577717
     .udesc  = "L1 data cache read in M state",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "MESI",
Packit 577717
     .udesc  = "L1 data cache reads",
Packit 577717
     .ucode = 0xf00,
Packit 577717
     .uflags= INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "S_STATE",
Packit 577717
     .udesc  = "L1 data cache read in S state",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l1d_cache_lock[]={
Packit 577717
   { .uname  = "E_STATE",
Packit 577717
     .udesc  = "L1 data cache load locks in E state",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "HIT",
Packit 577717
     .udesc  = "L1 data cache load lock hits",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "M_STATE",
Packit 577717
     .udesc  = "L1 data cache load locks in M state",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "S_STATE",
Packit 577717
     .udesc  = "L1 data cache load locks in S state",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l1d_cache_st[]={
Packit 577717
   { .uname  = "E_STATE",
Packit 577717
     .udesc  = "L1 data cache stores in E state",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "I_STATE",
Packit 577717
     .udesc  = "L1 data cache store in the I state",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "M_STATE",
Packit 577717
     .udesc  = "L1 data cache stores in M state",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "S_STATE",
Packit 577717
     .udesc  = "L1 data cache stores in S state",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "MESI",
Packit 577717
     .udesc  = "L1 data cache store in all states",
Packit 577717
     .ucode = 0xf00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l1d_prefetch[]={
Packit 577717
   { .uname  = "MISS",
Packit 577717
     .udesc  = "L1D hardware prefetch misses",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "REQUESTS",
Packit 577717
     .udesc  = "L1D hardware prefetch requests",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "TRIGGERS",
Packit 577717
     .udesc  = "L1D hardware prefetch requests triggered",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l1d_wb_l2[]={
Packit 577717
   { .uname  = "E_STATE",
Packit 577717
     .udesc  = "L1 writebacks to L2 in E state",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "I_STATE",
Packit 577717
     .udesc  = "L1 writebacks to L2 in I state (misses)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "M_STATE",
Packit 577717
     .udesc  = "L1 writebacks to L2 in M state",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "S_STATE",
Packit 577717
     .udesc  = "L1 writebacks to L2 in S state",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "MESI",
Packit 577717
     .udesc  = "All L1 writebacks to L2",
Packit 577717
     .ucode = 0xf00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l1i[]={
Packit 577717
   { .uname  = "CYCLES_STALLED",
Packit 577717
     .udesc  = "L1I instruction fetch stall cycles",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "HITS",
Packit 577717
     .udesc  = "L1I instruction fetch hits",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "MISSES",
Packit 577717
     .udesc  = "L1I instruction fetch misses",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "READS",
Packit 577717
     .udesc  = "L1I Instruction fetches",
Packit 577717
     .ucode = 0x300,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l2_data_rqsts[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "All L2 data requests",
Packit 577717
     .ucode = 0xff00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_E_STATE",
Packit 577717
     .udesc  = "L2 data demand loads in E state",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_I_STATE",
Packit 577717
     .udesc  = "L2 data demand loads in I state (misses)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_M_STATE",
Packit 577717
     .udesc  = "L2 data demand loads in M state",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_MESI",
Packit 577717
     .udesc  = "L2 data demand requests",
Packit 577717
     .ucode = 0xf00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_S_STATE",
Packit 577717
     .udesc  = "L2 data demand loads in S state",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PREFETCH_E_STATE",
Packit 577717
     .udesc  = "L2 data prefetches in E state",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PREFETCH_I_STATE",
Packit 577717
     .udesc  = "L2 data prefetches in the I state (misses)",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PREFETCH_M_STATE",
Packit 577717
     .udesc  = "L2 data prefetches in M state",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PREFETCH_MESI",
Packit 577717
     .udesc  = "All L2 data prefetches",
Packit 577717
     .ucode = 0xf000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PREFETCH_S_STATE",
Packit 577717
     .udesc  = "L2 data prefetches in the S state",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l2_hw_prefetch[]={
Packit 577717
   { .uname  = "HIT",
Packit 577717
     .udesc  = "Count L2 HW prefetcher detector hits",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ALLOC",
Packit 577717
     .udesc  = "Count L2 HW prefetcher allocations",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DATA_TRIGGER",
Packit 577717
     .udesc  = "Count L2 HW data prefetcher triggered",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "CODE_TRIGGER",
Packit 577717
     .udesc  = "Count L2 HW code prefetcher triggered",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DCA_TRIGGER",
Packit 577717
     .udesc  = "Count L2 HW DCA prefetcher triggered",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "KICK_START",
Packit 577717
     .udesc  = "Count L2 HW prefetcher kick started",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l2_lines_in[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "L2 lines allocated",
Packit 577717
     .ucode = 0x700,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "E_STATE",
Packit 577717
     .udesc  = "L2 lines allocated in the E state",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "S_STATE",
Packit 577717
     .udesc  = "L2 lines allocated in the S state",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l2_lines_out[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "L2 lines evicted",
Packit 577717
     .ucode = 0xf00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_CLEAN",
Packit 577717
     .udesc  = "L2 lines evicted by a demand request",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_DIRTY",
Packit 577717
     .udesc  = "L2 modified lines evicted by a demand request",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PREFETCH_CLEAN",
Packit 577717
     .udesc  = "L2 lines evicted by a prefetch request",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PREFETCH_DIRTY",
Packit 577717
     .udesc  = "L2 modified lines evicted by a prefetch request",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l2_rqsts[]={
Packit 577717
   { .uname  = "MISS",
Packit 577717
     .udesc  = "All L2 misses",
Packit 577717
     .ucode = 0xaa00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "REFERENCES",
Packit 577717
     .udesc  = "All L2 requests",
Packit 577717
     .ucode = 0xff00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "IFETCH_HIT",
Packit 577717
     .udesc  = "L2 instruction fetch hits",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "IFETCH_MISS",
Packit 577717
     .udesc  = "L2 instruction fetch misses",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "IFETCHES",
Packit 577717
     .udesc  = "L2 instruction fetches",
Packit 577717
     .ucode = 0x3000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LD_HIT",
Packit 577717
     .udesc  = "L2 load hits",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LD_MISS",
Packit 577717
     .udesc  = "L2 load misses",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LOADS",
Packit 577717
     .udesc  = "L2 requests",
Packit 577717
     .ucode = 0x300,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PREFETCH_HIT",
Packit 577717
     .udesc  = "L2 prefetch hits",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PREFETCH_MISS",
Packit 577717
     .udesc  = "L2 prefetch misses",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PREFETCHES",
Packit 577717
     .udesc  = "All L2 prefetches",
Packit 577717
     .ucode = 0xc000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RFO_HIT",
Packit 577717
     .udesc  = "L2 RFO hits",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RFO_MISS",
Packit 577717
     .udesc  = "L2 RFO misses",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RFOS",
Packit 577717
     .udesc  = "L2 RFO requests",
Packit 577717
     .ucode = 0xc00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l2_transactions[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "All L2 transactions",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "FILL",
Packit 577717
     .udesc  = "L2 fill transactions",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "IFETCH",
Packit 577717
     .udesc  = "L2 instruction fetch transactions",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "L1D_WB",
Packit 577717
     .udesc  = "L1D writeback to L2 transactions",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LOAD",
Packit 577717
     .udesc  = "L2 Load transactions",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PREFETCH",
Packit 577717
     .udesc  = "L2 prefetch transactions",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RFO",
Packit 577717
     .udesc  = "L2 RFO transactions",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "WB",
Packit 577717
     .udesc  = "L2 writeback to LLC transactions",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_l2_write[]={
Packit 577717
   { .uname  = "LOCK_E_STATE",
Packit 577717
     .udesc  = "L2 demand lock RFOs in E state",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LOCK_I_STATE",
Packit 577717
     .udesc  = "L2 demand lock RFOs in I state (misses)",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LOCK_S_STATE",
Packit 577717
     .udesc  = "L2 demand lock RFOs in S state",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LOCK_HIT",
Packit 577717
     .udesc  = "All demand L2 lock RFOs that hit the cache",
Packit 577717
     .ucode = 0xe000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LOCK_M_STATE",
Packit 577717
     .udesc  = "L2 demand lock RFOs in M state",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LOCK_MESI",
Packit 577717
     .udesc  = "All demand L2 lock RFOs",
Packit 577717
     .ucode = 0xf000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RFO_HIT",
Packit 577717
     .udesc  = "All L2 demand store RFOs that hit the cache",
Packit 577717
     .ucode = 0xe00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RFO_I_STATE",
Packit 577717
     .udesc  = "L2 demand store RFOs in I state (misses)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RFO_E_STATE",
Packit 577717
     .udesc  = "L2 demand store RFOs in the E state (exclusive)",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RFO_M_STATE",
Packit 577717
     .udesc  = "L2 demand store RFOs in M state",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RFO_MESI",
Packit 577717
     .udesc  = "All L2 demand store RFOs",
Packit 577717
     .ucode = 0xf00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RFO_S_STATE",
Packit 577717
     .udesc  = "L2 demand store RFOs in S state",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_large_itlb[]={
Packit 577717
   { .uname  = "HIT",
Packit 577717
     .udesc  = "Large ITLB hit",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_load_dispatch[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "All loads dispatched",
Packit 577717
     .ucode = 0x700,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "MOB",
Packit 577717
     .udesc  = "Loads dispatched from the MOB",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RS",
Packit 577717
     .udesc  = "Loads dispatched that bypass the MOB",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RS_DELAYED",
Packit 577717
     .udesc  = "Loads dispatched from stage 305",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_longest_lat_cache[]={
Packit 577717
   { .uname  = "REFERENCE",
Packit 577717
     .udesc  = "Longest latency cache reference",
Packit 577717
     .ucode = 0x4f00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "MISS",
Packit 577717
     .udesc  = "Longest latency cache miss",
Packit 577717
     .ucode = 0x4100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_lsd[]={
Packit 577717
   { .uname  = "ACTIVE",
Packit 577717
     .udesc  = "Cycles when uops were delivered by the LSD",
Packit 577717
     .ucode = 0x100 | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .modhw = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "INACTIVE",
Packit 577717
     .udesc  = "Cycles no uops were delivered by the LSD",
Packit 577717
     .uequiv = "ACTIVE:i=1",
Packit 577717
     .ucode = 0x100 | INTEL_X86_MOD_INV | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_machine_clears[]={
Packit 577717
   { .uname  = "SMC",
Packit 577717
     .udesc  = "Self-Modifying Code detected",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES",
Packit 577717
     .udesc  = "Cycles machine clear asserted",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "MEM_ORDER",
Packit 577717
     .udesc  = "Execution pipeline restart due to Memory ordering conflicts",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "FUSION_ASSIST",
Packit 577717
     .udesc  = "Counts the number of macro-fusion assists",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_macro_insts[]={
Packit 577717
   { .uname  = "DECODED",
Packit 577717
     .udesc  = "Instructions decoded",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "FUSIONS_DECODED",
Packit 577717
     .udesc  = "Macro-fused instructions decoded",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_memory_disambiguation[]={
Packit 577717
   { .uname  = "RESET",
Packit 577717
     .udesc  = "Counts memory disambiguation reset cycles",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "WATCHDOG",
Packit 577717
     .udesc  = "Counts the number of times the memory disambiguation watchdog kicked in",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "WATCH_CYCLES",
Packit 577717
     .udesc  = "Counts the cycles that the memory disambiguation watchdog is active",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_mem_inst_retired[]={
Packit 577717
   { .uname  = "LATENCY_ABOVE_THRESHOLD",
Packit 577717
     .udesc  = "Memory instructions retired above programmed clocks, minimum threshold value is 3, (Precise Event and ldlat required)",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS | INTEL_X86_LDLAT,
Packit 577717
   },
Packit 577717
   { .uname  = "LOADS",
Packit 577717
     .udesc  = "Instructions retired which contains a load (Precise Event)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "STORES",
Packit 577717
     .udesc  = "Instructions retired which contains a store (Precise Event)",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_mem_load_retired[]={
Packit 577717
   { .uname  = "DTLB_MISS",
Packit 577717
     .udesc  = "Retired loads that miss the DTLB (Precise Event)",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "HIT_LFB",
Packit 577717
     .udesc  = "Retired loads that miss L1D and hit an previously allocated LFB (Precise Event)",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "L1D_HIT",
Packit 577717
     .udesc  = "Retired loads that hit the L1 data cache (Precise Event)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "L2_HIT",
Packit 577717
     .udesc  = "Retired loads that hit the L2 cache (Precise Event)",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_MISS",
Packit 577717
     .udesc  = "Retired loads that miss the L3 cache (Precise Event)",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "LLC_MISS",
Packit 577717
     .udesc  = "This is an alias for L3_MISS",
Packit 577717
     .uequiv = "L3_MISS",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_UNSHARED_HIT",
Packit 577717
     .udesc  = "Retired loads that hit valid versions in the L3 cache (Precise Event)",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "LLC_UNSHARED_HIT",
Packit 577717
     .udesc  = "This is an alias for L3_UNSHARED_HIT",
Packit 577717
     .uequiv = "L3_UNSHARED_HIT",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "OTHER_CORE_L2_HIT_HITM",
Packit 577717
     .udesc  = "Retired loads that hit sibling core's L2 in modified or unmodified states (Precise Event)",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_mem_store_retired[]={
Packit 577717
   { .uname  = "DTLB_MISS",
Packit 577717
     .udesc  = "Retired stores that miss the DTLB (Precise Event)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_mem_uncore_retired[]={
Packit 577717
   { .uname  = "OTHER_CORE_L2_HITM",
Packit 577717
     .udesc  = "Load instructions retired that HIT modified data in sibling core (Precise Event)",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "REMOTE_CACHE_LOCAL_HOME_HIT",
Packit 577717
     .udesc  = "Load instructions retired remote cache HIT data source (Precise Event)",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "REMOTE_DRAM",
Packit 577717
     .udesc  = "Load instructions retired remote DRAM and remote home-remote cache HITM (Precise Event)",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "LOCAL_DRAM",
Packit 577717
     .udesc  = "Load instructions retired with a data source of local DRAM or locally homed remote hitm (Precise Event)",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_DATA_MISS_UNKNOWN",
Packit 577717
     .udesc  = "Load instructions retired where the memory reference missed L3 and data source is unknown (Model 46 only, Precise Event)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
     .umodel = PFM_PMU_INTEL_NHM_EX,
Packit 577717
   },
Packit 577717
   { .uname  = "UNCACHEABLE",
Packit 577717
     .udesc  = "Load instructions retired where the memory reference missed L1, L2, L3 caches and to perform I/O (Model 46 only, Precise Event)",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
     .umodel = PFM_PMU_INTEL_NHM_EX,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_offcore_requests[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "All offcore requests",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_READ",
Packit 577717
     .udesc  = "Offcore read requests",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_RFO",
Packit 577717
     .udesc  = "Offcore RFO requests",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_READ_CODE",
Packit 577717
     .udesc  = "Counts number of offcore demand code read requests. Does not count L2 prefetch requests.",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_READ_DATA",
Packit 577717
     .udesc  = "Offcore demand data read requests",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_RFO",
Packit 577717
     .udesc  = "Offcore demand RFO requests",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "L1D_WRITEBACK",
Packit 577717
     .udesc  = "Offcore L1 data cache writebacks",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "UNCACHED_MEM",
Packit 577717
     .udesc  = "Counts number of offcore uncached memory requests",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_pic_accesses[]={
Packit 577717
   { .uname  = "TPR_READS",
Packit 577717
     .udesc  = "Counts number of TPR reads",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "TPR_WRITES",
Packit 577717
     .udesc  = "Counts number of TPR writes",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_rat_stalls[]={
Packit 577717
   { .uname  = "FLAGS",
Packit 577717
     .udesc  = "Flag stall cycles",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "REGISTERS",
Packit 577717
     .udesc  = "Partial register stall cycles",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ROB_READ_PORT",
Packit 577717
     .udesc  = "ROB read port stalls cycles",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "SCOREBOARD",
Packit 577717
     .udesc  = "Scoreboard stall cycles",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "All RAT stall cycles",
Packit 577717
     .ucode = 0xf00,
Packit 577717
     .uflags= INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_resource_stalls[]={
Packit 577717
   { .uname  = "FPCW",
Packit 577717
     .udesc  = "FPU control word write stall cycles",
Packit 577717
     .ucode = 0x2000,
Packit 577717
   },
Packit 577717
   { .uname  = "LOAD",
Packit 577717
     .udesc  = "Load buffer stall cycles",
Packit 577717
     .ucode = 0x200,
Packit 577717
   },
Packit 577717
   { .uname  = "MXCSR",
Packit 577717
     .udesc  = "MXCSR rename stall cycles",
Packit 577717
     .ucode = 0x4000,
Packit 577717
   },
Packit 577717
   { .uname  = "RS_FULL",
Packit 577717
     .udesc  = "Reservation Station full stall cycles",
Packit 577717
     .ucode = 0x400,
Packit 577717
   },
Packit 577717
   { .uname  = "STORE",
Packit 577717
     .udesc  = "Store buffer stall cycles",
Packit 577717
     .ucode = 0x800,
Packit 577717
   },
Packit 577717
   { .uname  = "OTHER",
Packit 577717
     .udesc  = "Other Resource related stall cycles",
Packit 577717
     .ucode = 0x8000,
Packit 577717
   },
Packit 577717
   { .uname  = "ROB_FULL",
Packit 577717
     .udesc  = "ROB full stall cycles",
Packit 577717
     .ucode = 0x1000,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Resource related stall cycles",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_simd_int_128[]={
Packit 577717
   { .uname  = "PACK",
Packit 577717
     .udesc  = "128 bit SIMD integer pack operations",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PACKED_ARITH",
Packit 577717
     .udesc  = "128 bit SIMD integer arithmetic operations",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PACKED_LOGICAL",
Packit 577717
     .udesc  = "128 bit SIMD integer logical operations",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PACKED_MPY",
Packit 577717
     .udesc  = "128 bit SIMD integer multiply operations",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PACKED_SHIFT",
Packit 577717
     .udesc  = "128 bit SIMD integer shift operations",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "SHUFFLE_MOVE",
Packit 577717
     .udesc  = "128 bit SIMD integer shuffle/move operations",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "UNPACK",
Packit 577717
     .udesc  = "128 bit SIMD integer unpack operations",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_simd_int_64[]={
Packit 577717
   { .uname  = "PACK",
Packit 577717
     .udesc  = "SIMD integer 64 bit pack operations",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PACKED_ARITH",
Packit 577717
     .udesc  = "SIMD integer 64 bit arithmetic operations",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PACKED_LOGICAL",
Packit 577717
     .udesc  = "SIMD integer 64 bit logical operations",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PACKED_MPY",
Packit 577717
     .udesc  = "SIMD integer 64 bit packed multiply operations",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PACKED_SHIFT",
Packit 577717
     .udesc  = "SIMD integer 64 bit shift operations",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "SHUFFLE_MOVE",
Packit 577717
     .udesc  = "SIMD integer 64 bit shuffle/move operations",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "UNPACK",
Packit 577717
     .udesc  = "SIMD integer 64 bit unpack operations",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_snoop_response[]={
Packit 577717
   { .uname  = "HIT",
Packit 577717
     .udesc  = "Thread responded HIT to snoop",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "HITE",
Packit 577717
     .udesc  = "Thread responded HITE to snoop",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "HITM",
Packit 577717
     .udesc  = "Thread responded HITM to snoop",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_sq_misc[]={
Packit 577717
   { .uname  = "PROMOTION",
Packit 577717
     .udesc  = "Counts the number of L2 secondary misses that hit the Super Queue",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PROMOTION_POST_GO",
Packit 577717
     .udesc  = "Counts the number of L2 secondary misses during the Super Queue filling L2",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LRU_HINTS",
Packit 577717
     .udesc  = "Counts number of Super Queue LRU hints sent to L3",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "FILL_DROPPED",
Packit 577717
     .udesc  = "Counts the number of SQ L2 fills dropped due to L2 busy",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "SPLIT_LOCK",
Packit 577717
     .udesc  = "Super Queue lock splits across a cache line",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_sse_mem_exec[]={
Packit 577717
   { .uname  = "NTA",
Packit 577717
     .udesc  = "Streaming SIMD L1D NTA prefetch miss",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_ssex_uops_retired[]={
Packit 577717
   { .uname  = "PACKED_DOUBLE",
Packit 577717
     .udesc  = "SIMD Packed-Double Uops retired (Precise Event)",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "PACKED_SINGLE",
Packit 577717
     .udesc  = "SIMD Packed-Single Uops retired (Precise Event)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "SCALAR_DOUBLE",
Packit 577717
     .udesc  = "SIMD Scalar-Double Uops retired (Precise Event)",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "SCALAR_SINGLE",
Packit 577717
     .udesc  = "SIMD Scalar-Single Uops retired (Precise Event)",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "VECTOR_INTEGER",
Packit 577717
     .udesc  = "SIMD Vector Integer Uops retired (Precise Event)",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_store_blocks[]={
Packit 577717
   { .uname  = "AT_RET",
Packit 577717
     .udesc  = "Loads delayed with at-Retirement block code",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "L1D_BLOCK",
Packit 577717
     .udesc  = "Cacheable loads delayed with L1D block code",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "NOT_STA",
Packit 577717
     .udesc  = "Loads delayed due to a store blocked for unknown data",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "STA",
Packit 577717
     .udesc  = "Loads delayed due to a store blocked for an unknown address",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_uops_decoded[]={
Packit 577717
   { .uname  = "ESP_FOLDING",
Packit 577717
     .udesc  = "Stack pointer instructions decoded",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ESP_SYNC",
Packit 577717
     .udesc  = "Stack pointer sync operations",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "MS",
Packit 577717
     .udesc  = "Uops decoded by Microcode Sequencer",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "MS_CYCLES_ACTIVE",
Packit 577717
     .udesc  = "Cycles in which at least one uop is decoded by Microcode Sequencer",
Packit 577717
     .uequiv = "MS:c=1",
Packit 577717
     .ucode = 0x200 | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_uops_executed[]={
Packit 577717
   { .uname  = "PORT0",
Packit 577717
     .udesc  = "Uops executed on port 0",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PORT1",
Packit 577717
     .udesc  = "Uops executed on port 1",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PORT2_CORE",
Packit 577717
     .udesc  = "Uops executed on port 2 on any thread (core count only)",
Packit 577717
     .ucode = 0x400 | INTEL_X86_MOD_ANY,
Packit 577717
     .modhw = _INTEL_X86_ATTR_T,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PORT3_CORE",
Packit 577717
     .udesc  = "Uops executed on port 3 on any thread (core count only)",
Packit 577717
     .ucode = 0x800 | INTEL_X86_MOD_ANY,
Packit 577717
     .modhw = _INTEL_X86_ATTR_T,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PORT4_CORE",
Packit 577717
     .udesc  = "Uops executed on port 4 on any thread (core count only)",
Packit 577717
     .ucode = 0x1000 | INTEL_X86_MOD_ANY,
Packit 577717
     .modhw = _INTEL_X86_ATTR_T,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PORT5",
Packit 577717
     .udesc  = "Uops executed on port 5",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PORT015",
Packit 577717
     .udesc  = "Uops issued on ports 0, 1 or 5",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PORT234_CORE",
Packit 577717
     .udesc  = "Uops issued on ports 2, 3 or 4 on any thread (core count only)",
Packit 577717
     .ucode = 0x8000 | INTEL_X86_MOD_ANY,
Packit 577717
     .modhw = _INTEL_X86_ATTR_T,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PORT015_STALL_CYCLES",
Packit 577717
     .udesc  = "Cycles no Uops issued on ports 0, 1 or 5",
Packit 577717
     .uequiv = "PORT015:c=1:i=1",
Packit 577717
     .ucode = 0x4000 | INTEL_X86_MOD_INV | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_uops_issued[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Uops issued",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "STALLED_CYCLES",
Packit 577717
     .udesc  = "Cycles stalled no issued uops",
Packit 577717
     .uequiv = "ANY:c=1:i=1",
Packit 577717
     .ucode = 0x100 | INTEL_X86_MOD_INV | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "FUSED",
Packit 577717
     .udesc  = "Fused Uops issued",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_uops_retired[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Uops retired (Precise Event)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "RETIRE_SLOTS",
Packit 577717
     .udesc  = "Retirement slots used (Precise Event)",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "ACTIVE_CYCLES",
Packit 577717
     .udesc  = "Cycles Uops are being retired (Precise Event)",
Packit 577717
     .uequiv = "ANY:c=1",
Packit 577717
     .ucode = 0x100 | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "STALL_CYCLES",
Packit 577717
     .udesc  = "Cycles No Uops retired (Precise Event)",
Packit 577717
     .uequiv = "ANY:c=1:i=1",
Packit 577717
     .ucode = 0x100 | INTEL_X86_MOD_INV | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "MACRO_FUSED",
Packit 577717
     .udesc  = "Macro-fused Uops retired (Precise Event)",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t nhm_offcore_response_0[]={
Packit 577717
   { .uname  = "DMND_DATA_RD",
Packit 577717
     .udesc  = "Request: counts the number of demand and DCU prefetch data reads of full and partial cachelines as well as demand data page table entry cacheline reads. Does not count L2 data read prefetches or instruction fetches",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "DMND_RFO",
Packit 577717
     .udesc  = "Request: counts the number of demand and DCU prefetch reads for ownership (RFO) requests generated by a write to data cacheline. Does not count L2 RFO",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "DMND_IFETCH",
Packit 577717
     .udesc  = "Request: counts the number of demand and DCU prefetch instruction cacheline reads. Does not count L2 code read prefetches",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "WB",
Packit 577717
     .udesc  = "Request: counts the number of writeback (modified to exclusive) transactions",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PF_DATA_RD",
Packit 577717
     .udesc  = "Request: counts the number of data cacheline reads generated by L2 prefetchers",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PF_RFO",
Packit 577717
     .udesc  = "Request: counts the number of RFO requests generated by L2 prefetchers",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PF_IFETCH",
Packit 577717
     .udesc  = "Request: counts the number of code reads generated by L2 prefetchers",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "OTHER",
Packit 577717
     .udesc  = "Request: counts one of the following transaction types, including L3 invalidate, I/O, full or partial writes, WC or non-temporal stores, CLFLUSH, Fences, lock, unlock, split lock",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_IFETCH",
Packit 577717
     .udesc  = "Request: combination of PF_IFETCH | DMND_IFETCH",
Packit 577717
     .uequiv = "PF_IFETCH:DMND_IFETCH",
Packit 577717
     .ucode = 0x4400,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_REQUEST",
Packit 577717
     .udesc  = "Request: combination of all requests umasks",
Packit 577717
     .uequiv = "DMND_DATA_RD:DMND_RFO:DMND_IFETCH:WB:PF_DATA_RD:PF_RFO:PF_IFETCH:OTHER",
Packit 577717
     .ucode = 0xff00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_DATA",
Packit 577717
     .udesc  = "Request: any data read/write request",
Packit 577717
     .uequiv = "DMND_DATA_RD:PF_DATA_RD:DMND_RFO:PF_RFO",
Packit 577717
     .ucode = 0x3300,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_DATA_RD",
Packit 577717
     .udesc  = "Request: any data read in request",
Packit 577717
     .uequiv = "DMND_DATA_RD:PF_DATA_RD",
Packit 577717
     .ucode = 0x1100,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
Packit 577717
   { .uname  = "ANY_RFO",
Packit 577717
     .udesc  = "Request: combination of DMND_RFO | PF_RFO",
Packit 577717
     .uequiv = "DMND_RFO:PF_RFO",
Packit 577717
     .ucode = 0x2200,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "UNCORE_HIT",
Packit 577717
     .udesc  = "Response: counts L3 Hit: local or remote home requests that hit L3 cache in the uncore with no coherency actions required (snooping)",
Packit 577717
     .ucode = 0x10000,
Packit 577717
     .grpid = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "OTHER_CORE_HIT_SNP",
Packit 577717
     .udesc  = "Response: counts L3 Hit: local or remote home requests that hit L3 cache in the uncore and was serviced by another core with a cross core snoop where no modified copies were found (clean)",
Packit 577717
     .ucode = 0x20000,
Packit 577717
     .grpid = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "OTHER_CORE_HITM",
Packit 577717
     .udesc  = "Response: counts L3 Hit: local or remote home requests that hit L3 cache in the uncore and was serviced by another core with a cross core snoop where modified copies were found (HITM)",
Packit 577717
     .ucode = 0x40000,
Packit 577717
     .grpid = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "REMOTE_CACHE_HITM",
Packit 577717
     .udesc  = "Response: counts L3 Hit: local or remote home requests that hit a remote L3 cacheline in modified (HITM) state",
Packit 577717
     .ucode = 0x80000,
Packit 577717
     .grpid = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "REMOTE_CACHE_FWD",
Packit 577717
     .udesc  = "Response: counts L3 Miss: local homed requests that missed the L3 cache and was serviced by forwarded data following a cross package snoop where no modified copies found. (Remote home requests are not counted)",
Packit 577717
     .ucode = 0x100000,
Packit 577717
     .grpid = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "REMOTE_DRAM",
Packit 577717
     .udesc  = "Response: counts L3 Miss: remote home requests that missed the L3 cache and were serviced by remote DRAM",
Packit 577717
     .ucode = 0x200000,
Packit 577717
     .grpid = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "LOCAL_DRAM",
Packit 577717
     .udesc  = "Response: counts L3 Miss: local home requests that missed the L3 cache and were serviced by local DRAM",
Packit 577717
     .ucode = 0x400000,
Packit 577717
     .grpid = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "NON_DRAM",
Packit 577717
     .udesc  = "Response: Non-DRAM requests that were serviced by IOH",
Packit 577717
     .ucode = 0x800000,
Packit 577717
     .grpid = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_CACHE_DRAM",
Packit 577717
     .udesc  = "Response: requests serviced by any source but IOH",
Packit 577717
     .uequiv = "UNCORE_HIT:OTHER_CORE_HIT_SNP:OTHER_CORE_HITM:REMOTE_CACHE_FWD:REMOTE_CACHE_HITM:REMOTE_DRAM:LOCAL_DRAM",
Packit 577717
     .ucode  = 0x7f0000,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_DRAM",
Packit 577717
     .udesc  = "Response: requests serviced by local or remote DRAM",
Packit 577717
     .uequiv = "REMOTE_DRAM:LOCAL_DRAM",
Packit 577717
     .ucode  = 0x600000,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_LLC_MISS",
Packit 577717
     .udesc  = "Response: requests that missed in L3",
Packit 577717
     .uequiv = "REMOTE_CACHE_HITM:REMOTE_CACHE_FWD:REMOTE_DRAM:LOCAL_DRAM:NON_DRAM",
Packit 577717
     .ucode  = 0xf80000,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "LOCAL_CACHE_DRAM",
Packit 577717
     .udesc  = "Response: requests hit local core or uncore caches or local DRAM",
Packit 577717
     .uequiv = "UNCORE_HIT:OTHER_CORE_HIT_SNP:OTHER_CORE_HITM:LOCAL_DRAM",
Packit 577717
     .ucode  = 0x470000,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "REMOTE_CACHE_DRAM",
Packit 577717
     .udesc  = "Response: requests that miss L3 and hit remote caches or DRAM",
Packit 577717
     .uequiv = "REMOTE_CACHE_HITM:REMOTE_CACHE_FWD:REMOTE_DRAM",
Packit 577717
     .ucode  = 0x380000,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_RESPONSE",
Packit 577717
     .udesc  = "Response: combination of all response umasks",
Packit 577717
     .uequiv = "UNCORE_HIT:OTHER_CORE_HIT_SNP:OTHER_CORE_HITM:REMOTE_CACHE_FWD:REMOTE_CACHE_HITM:REMOTE_DRAM:LOCAL_DRAM:NON_DRAM",
Packit 577717
     .ucode  = 0xff0000,
Packit 577717
     .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_entry_t intel_nhm_pe[]={
Packit 577717
{ .name   = "UNHALTED_CORE_CYCLES",
Packit 577717
  .desc   = "Count core clock cycles whenever the clock signal on the specific core is running (not halted)",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0x20000000full,
Packit 577717
  .code = 0x3c,
Packit 577717
},
Packit 577717
{ .name   = "INSTRUCTION_RETIRED",
Packit 577717
  .desc   = "Count the number of instructions at retirement",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0x10000000full,
Packit 577717
  .code = 0xc0,
Packit 577717
},
Packit 577717
{ .name   = "INSTRUCTIONS_RETIRED",
Packit 577717
  .desc   = "This is an alias for INSTRUCTION_RETIRED",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .equiv = "INSTRUCTION_RETIRED",
Packit 577717
  .cntmsk = 0x10000000full,
Packit 577717
  .code = 0xc0,
Packit 577717
},
Packit 577717
{ .name   = "UNHALTED_REFERENCE_CYCLES",
Packit 577717
  .desc   = "Unhalted reference cycles",
Packit 577717
  .modmsk = INTEL_FIXED3_ATTRS,
Packit 577717
  .cntmsk = 0x400000000ull,
Packit 577717
  .code = 0x0300, /* pseudo encoding */
Packit 577717
  .flags = INTEL_X86_FIXED,
Packit 577717
},
Packit 577717
{ .name   = "LLC_REFERENCES",
Packit 577717
  .desc   = "Count each request originating equiv the core to reference a cache line in the last level cache. The count may include speculation, but excludes cache line fills due to hardware prefetch. Alias to L2_RQSTS:SELF_DEMAND_MESI",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x4f2e,
Packit 577717
},
Packit 577717
{ .name   = "LAST_LEVEL_CACHE_REFERENCES",
Packit 577717
  .desc   = "This is an alias for LLC_REFERENCES",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .equiv = "LLC_REFERENCES",
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x4f2e,
Packit 577717
},
Packit 577717
{ .name   = "LLC_MISSES",
Packit 577717
  .desc   = "Count each cache miss condition for references to the last level cache. The event count may include speculation, but excludes cache line fills due to hardware prefetch. Alias to event L2_RQSTS:SELF_DEMAND_I_STATE",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x412e,
Packit 577717
},
Packit 577717
{ .name   = "LAST_LEVEL_CACHE_MISSES",
Packit 577717
  .desc   = "This is an equiv for LLC_MISSES",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .equiv = "LLC_MISSES",
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x412e,
Packit 577717
},
Packit 577717
{ .name   = "BRANCH_INSTRUCTIONS_RETIRED",
Packit 577717
  .desc   = "Count branch instructions at retirement. Specifically, this event counts the retirement of the last micro-op of a branch instruction.",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .equiv = "BR_INST_RETIRED:ALL_BRANCHES",
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xc4,
Packit 577717
},
Packit 577717
{ .name   = "ARITH",
Packit 577717
  .desc   = "Counts arithmetic multiply and divide operations",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x14,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_arith),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_arith,
Packit 577717
},
Packit 577717
{ .name   = "BACLEAR",
Packit 577717
  .desc   = "Branch address calculator",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xe6,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_baclear),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_baclear,
Packit 577717
},
Packit 577717
{ .name   = "BACLEAR_FORCE_IQ",
Packit 577717
  .desc   = "Instruction queue forced BACLEAR",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x1a7,
Packit 577717
},
Packit 577717
{ .name   = "BOGUS_BR",
Packit 577717
  .desc   = "Counts the number of bogus branches.",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x1e4,
Packit 577717
},
Packit 577717
{ .name   = "BPU_CLEARS",
Packit 577717
  .desc   = "Branch prediction Unit clears",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xe8,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_bpu_clears),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_bpu_clears,
Packit 577717
},
Packit 577717
{ .name   = "BPU_MISSED_CALL_RET",
Packit 577717
  .desc   = "Branch prediction unit missed call or return",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x1e5,
Packit 577717
},
Packit 577717
{ .name   = "BR_INST_DECODED",
Packit 577717
  .desc   = "Branch instructions decoded",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x1e0,
Packit 577717
},
Packit 577717
{ .name   = "BR_INST_EXEC",
Packit 577717
  .desc   = "Branch instructions executed",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x88,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_br_inst_exec),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_br_inst_exec,
Packit 577717
},
Packit 577717
{ .name   = "BR_INST_RETIRED",
Packit 577717
  .desc   = "Retired branch instructions",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xc4,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_br_inst_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_br_inst_retired,
Packit 577717
},
Packit 577717
{ .name   = "BR_MISP_EXEC",
Packit 577717
  .desc   = "Mispredicted branches executed",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x89,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_br_misp_exec),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_br_misp_exec,
Packit 577717
},
Packit 577717
{ .name   = "BR_MISP_RETIRED",
Packit 577717
  .desc   = "Count Mispredicted Branch Activity",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xc5,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_br_misp_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_br_misp_retired,
Packit 577717
},
Packit 577717
{ .name   = "CACHE_LOCK_CYCLES",
Packit 577717
  .desc   = "Cache lock cycles",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x63,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_cache_lock_cycles),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_cache_lock_cycles,
Packit 577717
},
Packit 577717
{ .name   = "CPU_CLK_UNHALTED",
Packit 577717
  .desc   = "Cycles when processor is not in halted state",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x3c,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_cpu_clk_unhalted),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_cpu_clk_unhalted,
Packit 577717
},
Packit 577717
{ .name   = "DTLB_LOAD_MISSES",
Packit 577717
  .desc   = "Data TLB load misses",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x8,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_dtlb_load_misses),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_dtlb_load_misses,
Packit 577717
},
Packit 577717
{ .name   = "DTLB_MISSES",
Packit 577717
  .desc   = "Data TLB misses",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x49,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_dtlb_misses),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_dtlb_misses,
Packit 577717
},
Packit 577717
{ .name   = "EPT",
Packit 577717
  .desc   = "Extended Page Directory",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x4f,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_ept),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_ept,
Packit 577717
},
Packit 577717
{ .name   = "ES_REG_RENAMES",
Packit 577717
  .desc   = "ES segment renames",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x1d5,
Packit 577717
},
Packit 577717
{ .name   = "FP_ASSIST",
Packit 577717
  .desc   = "Floating point assists",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xf7,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_fp_assist),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_fp_assist,
Packit 577717
},
Packit 577717
{ .name   = "FP_COMP_OPS_EXE",
Packit 577717
  .desc   = "Floating point computational micro-ops",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x10,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_fp_comp_ops_exe),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_fp_comp_ops_exe,
Packit 577717
},
Packit 577717
{ .name   = "FP_MMX_TRANS",
Packit 577717
  .desc   = "Floating Point to and from MMX transitions",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xcc,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_fp_mmx_trans),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_fp_mmx_trans,
Packit 577717
},
Packit 577717
{ .name   = "IFU_IVC",
Packit 577717
  .desc   = "Instruction Fetch unit victim cache",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x81,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_ifu_ivc),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_ifu_ivc,
Packit 577717
},
Packit 577717
{ .name   = "ILD_STALL",
Packit 577717
  .desc   = "Instruction Length Decoder stalls",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x87,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_ild_stall),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_ild_stall,
Packit 577717
},
Packit 577717
{ .name   = "INST_DECODED",
Packit 577717
  .desc   = "Instructions decoded",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x18,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_inst_decoded),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_inst_decoded,
Packit 577717
},
Packit 577717
{ .name   = "INST_QUEUE_WRITES",
Packit 577717
  .desc   = "Instructions written to instruction queue.",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x117,
Packit 577717
},
Packit 577717
{ .name   = "INST_QUEUE_WRITE_CYCLES",
Packit 577717
  .desc   = "Cycles instructions are written to the instruction queue",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x11e,
Packit 577717
},
Packit 577717
{ .name   = "INST_RETIRED",
Packit 577717
  .desc   = "Instructions retired",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xc0,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_inst_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_inst_retired,
Packit 577717
},
Packit 577717
{ .name   = "IO_TRANSACTIONS",
Packit 577717
  .desc   = "I/O transactions",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x16c,
Packit 577717
},
Packit 577717
{ .name   = "ITLB_FLUSH",
Packit 577717
  .desc   = "Counts the number of ITLB flushes",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x1ae,
Packit 577717
},
Packit 577717
{ .name   = "ITLB_MISSES",
Packit 577717
  .desc   = "Instruction TLB misses",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x85,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_dtlb_misses),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_dtlb_misses, /* identical to actual umasks list for this event */
Packit 577717
},
Packit 577717
{ .name   = "ITLB_MISS_RETIRED",
Packit 577717
  .desc   = "Retired instructions that missed the ITLB (Precise Event)",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x20c8,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
},
Packit 577717
{ .name   = "L1D",
Packit 577717
  .desc   = "L1D cache",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x51,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l1d),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l1d,
Packit 577717
},
Packit 577717
{ .name   = "L1D_ALL_REF",
Packit 577717
  .desc   = "L1D references",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x43,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l1d_all_ref),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l1d_all_ref,
Packit 577717
},
Packit 577717
{ .name   = "L1D_CACHE_LD",
Packit 577717
  .desc   = "L1D  cacheable loads. WARNING: event may overcount loads",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x40,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l1d_cache_ld),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l1d_cache_ld,
Packit 577717
},
Packit 577717
{ .name   = "L1D_CACHE_LOCK",
Packit 577717
  .desc   = "L1 data cache load lock",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x42,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l1d_cache_lock),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l1d_cache_lock,
Packit 577717
},
Packit 577717
{ .name   = "L1D_CACHE_LOCK_FB_HIT",
Packit 577717
  .desc   = "L1D load lock accepted in fill buffer",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x153,
Packit 577717
},
Packit 577717
{ .name   = "L1D_CACHE_PREFETCH_LOCK_FB_HIT",
Packit 577717
  .desc   = "L1D prefetch load lock accepted in fill buffer",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x152,
Packit 577717
},
Packit 577717
{ .name   = "L1D_CACHE_ST",
Packit 577717
  .desc   = "L1 data cache stores",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x41,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l1d_cache_st),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l1d_cache_st,
Packit 577717
},
Packit 577717
{ .name   = "L1D_PREFETCH",
Packit 577717
  .desc   = "L1D hardware prefetch",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x4e,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l1d_prefetch),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l1d_prefetch,
Packit 577717
},
Packit 577717
{ .name   = "L1D_WB_L2",
Packit 577717
  .desc   = "L1 writebacks to L2",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x28,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l1d_wb_l2),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l1d_wb_l2,
Packit 577717
},
Packit 577717
{ .name   = "L1I",
Packit 577717
  .desc   = "L1I instruction fetches",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x80,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l1i),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l1i,
Packit 577717
},
Packit 577717
{ .name   = "L1I_OPPORTUNISTIC_HITS",
Packit 577717
  .desc   = "Opportunistic hits in streaming",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x183,
Packit 577717
},
Packit 577717
{ .name   = "L2_DATA_RQSTS",
Packit 577717
  .desc   = "L2 data requests",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x26,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l2_data_rqsts),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l2_data_rqsts,
Packit 577717
},
Packit 577717
{ .name   = "L2_HW_PREFETCH",
Packit 577717
  .desc   = "L2 HW prefetches",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xf3,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l2_hw_prefetch),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l2_hw_prefetch,
Packit 577717
},
Packit 577717
{ .name   = "L2_LINES_IN",
Packit 577717
  .desc   = "L2 lines allocated",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xf1,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l2_lines_in),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l2_lines_in,
Packit 577717
},
Packit 577717
{ .name   = "L2_LINES_OUT",
Packit 577717
  .desc   = "L2 lines evicted",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xf2,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l2_lines_out),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l2_lines_out,
Packit 577717
},
Packit 577717
{ .name   = "L2_RQSTS",
Packit 577717
  .desc   = "L2 requests",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x24,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l2_rqsts),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l2_rqsts,
Packit 577717
},
Packit 577717
{ .name   = "L2_TRANSACTIONS",
Packit 577717
  .desc   = "L2 transactions",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xf0,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l2_transactions),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l2_transactions,
Packit 577717
},
Packit 577717
{ .name   = "L2_WRITE",
Packit 577717
  .desc   = "L2 demand lock/store RFO",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x27,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_l2_write),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_l2_write,
Packit 577717
},
Packit 577717
{ .name   = "LARGE_ITLB",
Packit 577717
  .desc   = "Large instruction TLB",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x82,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_large_itlb),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_large_itlb,
Packit 577717
},
Packit 577717
{ .name   = "LOAD_DISPATCH",
Packit 577717
  .desc   = "Loads dispatched",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x13,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_load_dispatch),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_load_dispatch,
Packit 577717
},
Packit 577717
{ .name   = "LOAD_HIT_PRE",
Packit 577717
  .desc   = "Load operations conflicting with software prefetches",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x14c,
Packit 577717
},
Packit 577717
{ .name   = "LONGEST_LAT_CACHE",
Packit 577717
  .desc   = "Longest latency cache reference",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x2e,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_longest_lat_cache),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_longest_lat_cache,
Packit 577717
},
Packit 577717
{ .name   = "LSD",
Packit 577717
  .desc   = "Loop stream detector",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xa8,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_lsd),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_lsd,
Packit 577717
},
Packit 577717
{ .name   = "MACHINE_CLEARS",
Packit 577717
  .desc   = "Machine Clear",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xc3,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_machine_clears),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_machine_clears,
Packit 577717
},
Packit 577717
{ .name   = "MACRO_INSTS",
Packit 577717
  .desc   = "Macro-fused instructions",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xd0,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_macro_insts),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_macro_insts,
Packit 577717
},
Packit 577717
{ .name   = "MEMORY_DISAMBIGUATION",
Packit 577717
  .desc   = "Memory Disambiguation Activity",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x9,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_memory_disambiguation),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_memory_disambiguation,
Packit 577717
},
Packit 577717
{ .name   = "MEM_INST_RETIRED",
Packit 577717
  .desc   = "Memory instructions retired",
Packit 577717
  .modmsk = INTEL_V3_ATTRS | _INTEL_X86_ATTR_LDLAT,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xb,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_mem_inst_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_mem_inst_retired,
Packit 577717
},
Packit 577717
{ .name   = "MEM_LOAD_RETIRED",
Packit 577717
  .desc   = "Retired loads",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xcb,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_mem_load_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_mem_load_retired,
Packit 577717
},
Packit 577717
{ .name   = "MEM_STORE_RETIRED",
Packit 577717
  .desc   = "Retired stores",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xc,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_mem_store_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_mem_store_retired,
Packit 577717
},
Packit 577717
{ .name   = "MEM_UNCORE_RETIRED",
Packit 577717
  .desc   = "Load instructions retired which hit offcore",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xf,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_mem_uncore_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_mem_uncore_retired,
Packit 577717
},
Packit 577717
{ .name   = "OFFCORE_REQUESTS",
Packit 577717
  .desc   = "Offcore memory requests",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xb0,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_offcore_requests),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_offcore_requests,
Packit 577717
},
Packit 577717
{ .name   = "OFFCORE_REQUESTS_SQ_FULL",
Packit 577717
  .desc   = "Counts cycles the Offcore Request buffer or Super Queue is full.",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x1b2,
Packit 577717
},
Packit 577717
{ .name   = "PARTIAL_ADDRESS_ALIAS",
Packit 577717
  .desc   = "False dependencies due to partial address forming",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x107,
Packit 577717
},
Packit 577717
{ .name   = "PIC_ACCESSES",
Packit 577717
  .desc   = "Programmable interrupt controller",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xba,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_pic_accesses),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_pic_accesses,
Packit 577717
},
Packit 577717
{ .name   = "RAT_STALLS",
Packit 577717
  .desc   = "Register allocation table stalls",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xd2,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_rat_stalls),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_rat_stalls,
Packit 577717
},
Packit 577717
{ .name   = "RESOURCE_STALLS",
Packit 577717
  .desc   = "Processor stalls",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xa2,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_resource_stalls),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_resource_stalls,
Packit 577717
},
Packit 577717
{ .name   = "SEG_RENAME_STALLS",
Packit 577717
  .desc   = "Segment rename stall cycles",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x1d4,
Packit 577717
},
Packit 577717
{ .name   = "SEGMENT_REG_LOADS",
Packit 577717
  .desc   = "Counts number of segment register loads",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x1f8,
Packit 577717
},
Packit 577717
{ .name   = "SIMD_INT_128",
Packit 577717
  .desc   = "128 bit SIMD integer operations",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x12,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_simd_int_128),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_simd_int_128,
Packit 577717
},
Packit 577717
{ .name   = "SIMD_INT_64",
Packit 577717
  .desc   = "64 bit SIMD integer operations",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xfd,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_simd_int_64),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_simd_int_64,
Packit 577717
},
Packit 577717
{ .name   = "SNOOP_RESPONSE",
Packit 577717
  .desc   = "Snoop",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xb8,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_snoop_response),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_snoop_response,
Packit 577717
},
Packit 577717
{ .name   = "SQ_FULL_STALL_CYCLES",
Packit 577717
  .desc   = "Counts cycles the Offcore Request buffer or Super Queue is full and request(s) are outstanding.",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x1f6,
Packit 577717
},
Packit 577717
{ .name   = "SQ_MISC",
Packit 577717
  .desc   = "Super Queue Activity Related to L2 Cache Access",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xf4,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_sq_misc),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_sq_misc,
Packit 577717
},
Packit 577717
{ .name   = "SSE_MEM_EXEC",
Packit 577717
  .desc   = "Streaming SIMD executed",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x4b,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_sse_mem_exec),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_sse_mem_exec,
Packit 577717
},
Packit 577717
{ .name   = "SSEX_UOPS_RETIRED",
Packit 577717
  .desc   = "SIMD micro-ops retired",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xc7,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_ssex_uops_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_ssex_uops_retired,
Packit 577717
},
Packit 577717
{ .name   = "STORE_BLOCKS",
Packit 577717
  .desc   = "Delayed loads",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x6,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_store_blocks),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_store_blocks,
Packit 577717
},
Packit 577717
{ .name   = "TWO_UOP_INSTS_DECODED",
Packit 577717
  .desc   = "Two micro-ops instructions decoded",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x119,
Packit 577717
},
Packit 577717
{ .name   = "UOPS_DECODED_DEC0",
Packit 577717
  .desc   = "Micro-ops decoded by decoder 0",
Packit 577717
  .modmsk =0x0,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x13d,
Packit 577717
},
Packit 577717
{ .name   = "UOPS_DECODED",
Packit 577717
  .desc   = "Micro-ops decoded",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xd1,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_uops_decoded),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_uops_decoded,
Packit 577717
},
Packit 577717
{ .name   = "UOPS_EXECUTED",
Packit 577717
  .desc   = "Micro-ops executed",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xb1,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_uops_executed),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_uops_executed,
Packit 577717
},
Packit 577717
{ .name   = "UOPS_ISSUED",
Packit 577717
  .desc   = "Micro-ops issued",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xe,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_uops_issued),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_uops_issued,
Packit 577717
},
Packit 577717
{ .name   = "UOPS_RETIRED",
Packit 577717
  .desc   = "Micro-ops retired",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0xc2,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_uops_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = nhm_uops_retired,
Packit 577717
},
Packit 577717
{ .name   = "UOP_UNFUSION",
Packit 577717
  .desc   = "Micro-ops unfusions due to FP exceptions",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x1db,
Packit 577717
},
Packit 577717
{ .name   = "OFFCORE_RESPONSE_0",
Packit 577717
  .desc   = "Offcore response 0 (must provide at least one request and one response umasks)",
Packit 577717
  .modmsk = INTEL_V3_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x1b7,
Packit 577717
  .flags= INTEL_X86_NHM_OFFCORE,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(nhm_offcore_response_0),
Packit 577717
  .ngrp = 2,
Packit 577717
  .umasks = nhm_offcore_response_0,
Packit 577717
},
Packit 577717
};