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

Packit 577717
/*
Packit 577717
 * Copyright (c) 2013 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
 * PMU: slm (Intel Silvermont)
Packit 577717
 */
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_icache[]={
Packit 577717
   { .uname  = "ACCESSES",
Packit 577717
     .udesc  = "Instruction fetches, including uncacheacble fetches",
Packit 577717
     .ucode = 0x300,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "MISSES",
Packit 577717
     .udesc  = "Count all instructions fetches that miss the icache or produce memory requests. This includes uncacheache fetches. Any instruction fetch miss is counted only once and not once for every cycle it is outstanding",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "HIT",
Packit 577717
     .udesc  = "Count all instructions fetches from the instruction cache",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_uops_retired[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Micro-ops retired",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "MS",
Packit 577717
     .udesc  = "Micro-ops retired that were supplied fro MSROM",
Packit 577717
     .ucode = 0x0100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "STALLED_CYCLES",
Packit 577717
     .udesc  = "Cycles no micro-ops retired",
Packit 577717
     .ucode = 0x1000 | INTEL_X86_MOD_INV | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_I | _INTEL_X86_ATTR_C,
Packit 577717
   },
Packit 577717
   { .uname  = "STALLS",
Packit 577717
     .udesc  = "Periods no micro-ops retired",
Packit 577717
     .ucode = 0x1000 | INTEL_X86_MOD_EDGE | INTEL_X86_MOD_INV | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
     .modhw  = _INTEL_X86_ATTR_I | _INTEL_X86_ATTR_C | _INTEL_X86_ATTR_E,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_inst_retired[]={
Packit 577717
   { .uname  = "ANY_P",
Packit 577717
     .udesc  = "Instructions retired using generic counter (precise event)",
Packit 577717
     .ucode = 0x0,
Packit 577717
     .uflags= INTEL_X86_PEBS | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Instructions retired using generic counter (precise event)",
Packit 577717
     .uequiv = "ANY_P",
Packit 577717
     .ucode = 0x0,
Packit 577717
     .uflags= INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_l2_reject_xq[]={
Packit 577717
   { .uname  = "ALL",
Packit 577717
     .udesc  = "Number of demand and prefetch transactions that the L2 XQ rejects due to a full or near full condition which likely indicates back pressure from the IDI link. The XQ may reject transactions from the L2Q (non-cacheable requests), BBS (L2 misses) and WOB (L2 write-back victims)",
Packit 577717
     .ucode = 0x000,
Packit 577717
     .uflags= INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_machine_clears[]={
Packit 577717
   { .uname  = "SMC",
Packit 577717
     .udesc  = "Self-Modifying Code detected",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "MEMORY_ORDERING",
Packit 577717
     .udesc  = "Number of stalled cycles due to memory ordering",
Packit 577717
     .ucode = 0x200,
Packit 577717
   },
Packit 577717
   { .uname  = "FP_ASSIST",
Packit 577717
     .udesc  = "Number of stalled cycle due to FPU assist",
Packit 577717
     .ucode = 0x400,
Packit 577717
   },
Packit 577717
   { .uname  = "ALL",
Packit 577717
     .udesc  = "Count any the machine clears",
Packit 577717
     .ucode = 0x800,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Count any the machine clears",
Packit 577717
     .uequiv = "ALL",
Packit 577717
     .ucode = 0x800,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_br_inst_retired[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Any retired branch instruction (Precise Event)",
Packit 577717
     .ucode = 0x0,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "ALL_BRANCHES",
Packit 577717
     .udesc  = "Any Retired branch instruction (Precise Event)",
Packit 577717
     .uequiv = "ANY",
Packit 577717
     .ucode = 0x0,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname   = "ALL_TAKEN_BRANCHES",
Packit 577717
      .udesc   = "Retired branch instructions (Precise Event)",
Packit 577717
      .ucode   = 0x8000,
Packit 577717
      .uflags  = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
      .grpid   = 0,
Packit 577717
      .ucntmsk = 0xfull,
Packit 577717
   },
Packit 577717
   { .uname  = "JCC",
Packit 577717
     .udesc  = "JCC instructions retired (Precise Event)",
Packit 577717
     .ucode = 0x7e00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "TAKEN_JCC",
Packit 577717
     .udesc  = "Taken JCC instructions retired (Precise Event)",
Packit 577717
     .ucode = 0xfe00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "CALL",
Packit 577717
     .udesc  = "Near call instructions retired (Precise Event)",
Packit 577717
     .ucode = 0xf900,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "REL_CALL",
Packit 577717
     .udesc  = "Near relative call instructions retired (Precise Event)",
Packit 577717
     .ucode = 0xfd00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "IND_CALL",
Packit 577717
     .udesc  = "Near indirect call instructions retired (Precise Event)",
Packit 577717
     .ucode = 0xfb00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "RETURN",
Packit 577717
     .udesc  = "Near ret instructions retired (Precise Event)",
Packit 577717
     .ucode = 0xf700,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "NON_RETURN_IND",
Packit 577717
     .udesc  = "Number of near indirect jmp and near indirect call instructions retired (Precise Event)",
Packit 577717
     .ucode = 0xeb00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "FAR_BRANCH",
Packit 577717
     .udesc  = "Far branch instructions retired (Precise Event)",
Packit 577717
     .uequiv = "FAR",
Packit 577717
     .ucode = 0xbf00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "FAR",
Packit 577717
     .udesc  = "Far branch instructions retired (Precise Event)",
Packit 577717
     .ucode = 0xbf00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_baclears[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "BACLEARS asserted",
Packit 577717
     .uequiv = "ALL",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ALL",
Packit 577717
     .udesc  = "BACLEARS asserted",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_DFL | INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RETURN",
Packit 577717
     .udesc  = "Number of baclears for return branches",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "COND",
Packit 577717
     .udesc  = "Number of baclears for conditional branches",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_cpu_clk_unhalted[]={
Packit 577717
   { .uname  = "CORE_P",
Packit 577717
     .udesc  = "Core cycles when core is not halted",
Packit 577717
     .ucode = 0x0,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "BUS",
Packit 577717
     .udesc  = "Bus cycles when core is not halted. This event can give a measurement of the elapsed time. This events has a constant ratio with CPU_CLK_UNHALTED:REF event, which is the maximum bus to processor frequency ratio",
Packit 577717
     .uequiv = "REF",
Packit 577717
     .ucode  = 0x100,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "REF",
Packit 577717
     .udesc  = "Number of reference cycles that the core is not in a halted state. The core enters the halted state when it is running the HLT instruction. In mobile systems, the core frequency may change from time to time. This event is not affected by core frequency changes but counts as if the core is running a the same maximum frequency all the time",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_mem_uop_retired[]={
Packit 577717
   { .uname  = "LD_DCU_MISS",
Packit 577717
     .udesc  = "Number of load uops retired that miss in L1 data cache. Note that prefetch misses will not be counted",
Packit 577717
     .ucode = 0x100,
Packit 577717
   },
Packit 577717
   { .uname  = "LD_L2_HIT",
Packit 577717
     .udesc  = "Number of load uops retired that hit L2 (Precise Event)",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "LD_L2_MISS",
Packit 577717
     .udesc  = "Number of load uops retired that missed L2 (Precise Event)",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "LD_DTLB_MISS",
Packit 577717
     .udesc  = "Number of load uops retired that had a DTLB miss (Precise Event)",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "LD_UTLB_MISS",
Packit 577717
     .udesc  = "Number of load uops retired that had a UTLB miss",
Packit 577717
     .ucode = 0x1000,
Packit 577717
   },
Packit 577717
   { .uname  = "HITM",
Packit 577717
     .udesc  = "Number of load uops retired that got data from the other core or from the other module and the line was modified (Precise Event)",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_LD",
Packit 577717
     .udesc  = "Number of load uops retired",
Packit 577717
     .ucode = 0x4000,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_ST",
Packit 577717
     .udesc  = "Number of store uops retired",
Packit 577717
     .ucode = 0x8000,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_llc_rqsts[]={
Packit 577717
   { .uname  = "MISS",
Packit 577717
     .udesc  = "Number of L2 cache misses",
Packit 577717
     .ucode = 0x4100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Number of L2 cache references",
Packit 577717
     .ucode = 0x4f00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_rehabq[]={
Packit 577717
   { .uname  = "LD_BLOCK_ST_FORWARD",
Packit 577717
     .udesc  = "Number of retired loads that were prohibited from receiving forwarded data from the store because of address mismatch (Precise Event)",
Packit 577717
     .ucode = 0x0100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "LD_BLOCK_STD_NOTREADY",
Packit 577717
     .udesc  = "Number of times forward was technically possible but did not occur because the store data was not available at the right time",
Packit 577717
     .ucode = 0x0200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ST_SPLITS",
Packit 577717
     .udesc  = "Number of retired stores that experienced cache line boundary splits",
Packit 577717
     .ucode = 0x0400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LD_SPLITS",
Packit 577717
     .udesc  = "Number of retired loads that experienced cache line boundary splits (Precise Event)",
Packit 577717
     .ucode = 0x0800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "LOCK",
Packit 577717
     .udesc  = "Number of retired memory operations with lock semantics. These are either implicit locked instructions such as XCHG or instructions with an explicit LOCK prefix",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "STA_FULL",
Packit 577717
     .udesc  = "Number of retired stores that are delayed because there is not a store address buffer available",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_LD",
Packit 577717
     .udesc  = "Number of load uops reissued from RehabQ",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_ST",
Packit 577717
     .udesc  = "Number of store uops reissued from RehabQ",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_offcore_response[]={
Packit 577717
   { .uname  = "DMND_DATA_RD",
Packit 577717
     .udesc  = "Request: 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 = 1ULL << (0 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "DMND_RFO",
Packit 577717
     .udesc  = "Request: number of demand and DCU prefetch reads for ownership (RFO) requests generated by a write to data cacheline. Does not count L2 RFO prefetches",
Packit 577717
     .ucode = 1ULL << (1 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "DMND_IFETCH",
Packit 577717
     .udesc  = "Request: number of demand and DCU prefetch instruction cacheline reads. Does not count L2 code read prefetches",
Packit 577717
     .ucode = 1ULL << (2 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "WB",
Packit 577717
     .udesc  = "Request: number of writebacks (modified to exclusive) transactions",
Packit 577717
     .ucode = 1ULL << (3 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PF_L2_DATA_RD",
Packit 577717
     .udesc  = "Request: number of data cacheline reads generated by L2 prefetchers",
Packit 577717
     .ucode = 1ULL << (4 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PF_RFO",
Packit 577717
     .udesc  = "Request: number of RFO requests generated by L2 prefetchers",
Packit 577717
     .ucode = 1ULL << (5 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PF_IFETCH",
Packit 577717
     .udesc  = "Request: number of code reads generated by L2 prefetchers",
Packit 577717
     .ucode = 1ULL << (6 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PARTIAL_READ",
Packit 577717
     .udesc  = "Request: number of demand reads of partial cachelines (including UC, WC)",
Packit 577717
     .ucode = 1ULL << (7 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PARTIAL_WRITE",
Packit 577717
     .udesc  = "Request: number of demand RFO requests to write to partial cache lines (includes UC, WT, WP)",
Packit 577717
     .ucode = 1ULL << (8 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "UC_IFETCH",
Packit 577717
     .udesc  = "Request: number of UC instruction fetches",
Packit 577717
     .ucode = 1ULL << (9 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "BUS_LOCKS",
Packit 577717
     .udesc  = "Request: number bus lock and split lock requests",
Packit 577717
     .ucode = 1ULL << (10 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "STRM_ST",
Packit 577717
     .udesc  = "Request: number of streaming store requests",
Packit 577717
     .ucode = 1ULL << (11 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "SW_PREFETCH",
Packit 577717
     .udesc  = "Request: number of software prefetch requests",
Packit 577717
     .ucode = 1ULL << (12 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PF_L1_DATA_RD",
Packit 577717
     .udesc  = "Request: number of data cacheline reads generated by L1 prefetchers",
Packit 577717
     .ucode = 1ULL << (13 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PARTIAL_STRM_ST",
Packit 577717
     .udesc  = "Request: number of partial streaming store requests",
Packit 577717
     .ucode = 1ULL << (14 + 8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "OTHER",
Packit 577717
     .udesc  = "Request: counts one any other request that crosses IDI, including I/O",
Packit 577717
     .ucode = 1ULL << (15+8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_IFETCH",
Packit 577717
     .udesc  = "Request: combination of PF_IFETCH | DMND_IFETCH | UC_IFETCH",
Packit 577717
     .uequiv = "PF_IFETCH:DMND_IFETCH:UC_IFETCH",
Packit 577717
     .ucode =  (1ULL << 6 | 1ULL << 2 | 1ULL << 9)  << 8,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_REQUEST",
Packit 577717
     .udesc  = "Request: combination of all request umasks",
Packit 577717
     .uequiv = "DMND_DATA_RD:DMND_RFO:DMND_IFETCH:WB:PF_L2_DATA_RD:PF_RFO:PF_IFETCH:PARTIAL_READ:PARTIAL_WRITE:UC_IFETCH:BUS_LOCKS:STRM_ST:SW_PREFETCH:PF_L1_DATA_RD:PARTIAL_STRM_ST:OTHER",
Packit 577717
     .ucode = 0xffff00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_DATA",
Packit 577717
     .udesc  = "Request: combination of DMND_DATA | PF_L1_DATA_RD | PF_L2_DATA_RD",
Packit 577717
     .uequiv = "DMND_DATA_RD:PF_L1_DATA_RD:PF_L2_DATA_RD",
Packit 577717
     .ucode =  (1ULL << 0 | 1ULL << 4 | 1ULL << 13) << 8,
Packit 577717
     .grpid = 0,
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 =  (1ULL << 1 | 1ULL << 5) << 8,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_RESPONSE",
Packit 577717
     .udesc  = "Response: count any response type",
Packit 577717
     .ucode = 1ULL << (16+8),
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL | INTEL_X86_EXCL_GRP_GT,
Packit 577717
     .grpid = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L2_HIT",
Packit 577717
     .udesc  = "Supplier: counts L2 hits in M/E/S states",
Packit 577717
     .ucode = 1ULL << (18+8),
Packit 577717
     .grpid = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "SNP_NONE",
Packit 577717
     .udesc  = "Snoop: counts number of times no snoop-related information is available",
Packit 577717
     .ucode = 1ULL << (31+8),
Packit 577717
     .grpid = 2,
Packit 577717
   },
Packit 577717
   { .uname  = "SNP_MISS",
Packit 577717
     .udesc  = "Snoop: counts number of times a snoop was needed and it missed all snooped caches",
Packit 577717
     .ucode = 1ULL << (33+8),
Packit 577717
     .grpid = 2,
Packit 577717
   },
Packit 577717
   { .uname  = "SNP_HIT",
Packit 577717
     .udesc  = "Snoop: counts number of times a snoop hits in the other module where no modified copies were found in the L1 cache of the other core",
Packit 577717
     .ucode = 1ULL << (34+8),
Packit 577717
     .grpid = 2,
Packit 577717
   },
Packit 577717
   { .uname  = "SNP_HITM",
Packit 577717
     .udesc  = "Snoop: counts number of times a snoop hits in the other module where modified copies were found in the L1 cache of the other core",
Packit 577717
     .ucode = 1ULL << (36+8),
Packit 577717
     .grpid = 2,
Packit 577717
   },
Packit 577717
   { .uname  = "NON_DRAM",
Packit 577717
     .udesc  = "Snoop:  counts number of times target was a non-DRAM system address. This includes MMIO transactions",
Packit 577717
     .ucode = 1ULL << (37+8),
Packit 577717
     .grpid = 2,
Packit 577717
   },
Packit 577717
   { .uname  = "SNP_ANY",
Packit 577717
     .udesc  = "Snoop: any snoop reason",
Packit 577717
     .ucode = 0x7dULL << (31+8),
Packit 577717
     .uequiv = "SNP_NONE:SNP_MISS:SNP_HIT:SNP_HITM:NON_DRAM",
Packit 577717
     .uflags= INTEL_X86_DFL,
Packit 577717
     .grpid = 2,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_br_misp_retired[]={
Packit 577717
   { .uname  = "ALL_BRANCHES",
Packit 577717
     .udesc  = "All mispredicted branches (Precise Event)",
Packit 577717
     .uequiv = "ANY",
Packit 577717
     .ucode = 0x0000, /* architectural encoding */
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "All mispredicted branches (Precise Event)",
Packit 577717
     .ucode = 0x0000, /* architectural encoding */
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "JCC",
Packit 577717
     .udesc  = "Number of mispredicted conditional branch instructions retired (Precise Event)",
Packit 577717
     .ucode = 0x7e00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "NON_RETURN_IND",
Packit 577717
     .udesc  = "Number of mispredicted non-return branch instructions retired (Precise Event)",
Packit 577717
     .ucode = 0xeb00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "RETURN",
Packit 577717
     .udesc  = "Number of mispredicted return branch instructions retired (Precise Event)",
Packit 577717
     .ucode = 0xf700,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "IND_CALL",
Packit 577717
     .udesc  = "Number of mispredicted indirect call branch instructions retired (Precise Event)",
Packit 577717
     .ucode = 0xfb00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "TAKEN_JCC",
Packit 577717
     .udesc  = "Number of mispredicted taken conditional branch instructions retired (Precise Event)",
Packit 577717
     .ucode = 0xfe00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_no_alloc_cycles[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Number of cycles when the front-end does not provide any instructions to be allocated for any reason",
Packit 577717
     .ucode  = 0x3f00,
Packit 577717
     .uequiv = "ALL",
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ALL",
Packit 577717
     .udesc  = "Number of cycles when the front-end does not provide any instructions to be allocated for any reason",
Packit 577717
     .ucode = 0x3f00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "NOT_DELIVERED",
Packit 577717
     .udesc  = "Number of cycles when the front-end does not provide any instructions to be allocated but the back-end is not stalled",
Packit 577717
     .ucode = 0x5000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "MISPREDICTS",
Packit 577717
     .udesc  = "Number of cycles when no uops are allocated and the alloc pipe is stalled waiting for a mispredicted jump to retire",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "RAT_STALL",
Packit 577717
     .udesc  = "Number of cycles when no uops are allocated and a RAT stall is asserted",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ROB_FULL",
Packit 577717
     .udesc  = "Number of cycles when no uops are allocated and the ROB is full (less than 2 entries available)",
Packit 577717
     .ucode = 0x0100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_rs_full_stall[]={
Packit 577717
   { .uname  = "MEC",
Packit 577717
     .udesc  = "Number of cycles when the allocation pipeline is stalled due to the RS for the MEC cluster is full",
Packit 577717
     .ucode = 0x0100,
Packit 577717
   },
Packit 577717
   { .uname  = "ALL",
Packit 577717
     .udesc  = "Number of cycles when the allocation pipeline is stalled due any one of the RS being full",
Packit 577717
     .ucode = 0x1f00,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Number of cycles when the allocation pipeline is stalled due any one of the RS being full",
Packit 577717
     .ucode  = 0x1f00,
Packit 577717
     .uequiv = "ALL",
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_cycles_div_busy[]={
Packit 577717
   { .uname  = "ANY",
Packit 577717
     .udesc  = "Number of cycles the divider is busy",
Packit 577717
     .ucode = 0x0100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_ms_decoded[]={
Packit 577717
   { .uname  = "ENTRY",
Packit 577717
     .udesc  = "Number of times the MSROM starts a flow of uops",
Packit 577717
     .ucode = 0x0100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_decode_restriction[]={
Packit 577717
   { .uname  = "PREDECODE_WRONG",
Packit 577717
     .udesc  = "Number of times the prediction (from the predecode cache) for instruction length is incorrect",
Packit 577717
     .ucode = 0x0100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_fetch_stall[]={
Packit 577717
   { .uname  = "ICACHE_FILL_PENDING_CYCLES",
Packit 577717
     .udesc  = "Number of cycles the NIP stalls because of an icache miss. This is a cumulative count of cycles the NIP stalled for all icache misses",
Packit 577717
     .ucode = 0x0400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_core_reject_l2q[]={
Packit 577717
   { .uname  = "ALL",
Packit 577717
     .udesc  = "Number of requests that were not accepted into the L2Q because the L2Q was FULL",
Packit 577717
     .ucode  = 0x0000,
Packit 577717
     .uflags = INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t slm_page_walks[]={
Packit 577717
   { .uname  = "CYCLES",
Packit 577717
     .udesc  = "Total cycles for all the page walks. (I-side and D-side)",
Packit 577717
     .ucode  = 0x0300,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "WALKS",
Packit 577717
     .udesc  = "Total number of page walks. (I-side and D-side)",
Packit 577717
     .ucode  = 0x0300 | INTEL_X86_MOD_EDGE,
Packit 577717
     .uequiv = "D_SIDE_WALKS:I_SIDE_WALKS",
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "D_SIDE_CYCLES",
Packit 577717
     .udesc  = "Number of cycles when a D-side page walk is in progress",
Packit 577717
     .ucode  = 0x0100,
Packit 577717
   },
Packit 577717
   { .uname  = "D_SIDE_WALKS",
Packit 577717
     .udesc  = "Number of D-side page walks",
Packit 577717
     .ucode  = 0x0100 | INTEL_X86_MOD_EDGE,
Packit 577717
     .uequiv = "D_SIDE_CYCLES:e",
Packit 577717
   },
Packit 577717
   { .uname  = "I_SIDE_CYCLES",
Packit 577717
     .udesc  = "Number of cycles when a I-side page walk is in progress",
Packit 577717
     .ucode  = 0x0200,
Packit 577717
   },
Packit 577717
   { .uname  = "I_SIDE_WALKS",
Packit 577717
     .udesc  = "Number of I-side page walks",
Packit 577717
     .ucode  = 0x0200 | INTEL_X86_MOD_EDGE,
Packit 577717
     .uequiv = "I_SIDE_CYCLES:e",
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_entry_t intel_slm_pe[]={
Packit 577717
{ .name   = "UNHALTED_CORE_CYCLES",
Packit 577717
  .desc   = "Unhalted core cycles",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x200000003ull,
Packit 577717
  .code = 0x3c,
Packit 577717
},
Packit 577717
{ .name   = "UNHALTED_REFERENCE_CYCLES",
Packit 577717
  .desc   = "Unhalted reference cycle",
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   = "INSTRUCTION_RETIRED",
Packit 577717
  .desc   = "Instructions retired",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x100000003ull,
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_V2_ATTRS,
Packit 577717
  .equiv = "INSTRUCTION_RETIRED",
Packit 577717
  .cntmsk = 0x10003,
Packit 577717
  .code = 0xc0,
Packit 577717
},
Packit 577717
{ .name   = "LLC_REFERENCES",
Packit 577717
  .desc   = "Last level of cache references",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
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_V2_ATTRS,
Packit 577717
  .equiv = "LLC_REFERENCES",
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x4f2e,
Packit 577717
},
Packit 577717
{ .name   = "LLC_MISSES",
Packit 577717
  .desc   = "Last level of cache misses",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x412e,
Packit 577717
},
Packit 577717
{ .name   = "LAST_LEVEL_CACHE_MISSES",
Packit 577717
  .desc   = "This is an alias for LLC_MISSES",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .equiv = "LLC_MISSES",
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x412e,
Packit 577717
},
Packit 577717
{ .name   = "BRANCH_INSTRUCTIONS_RETIRED",
Packit 577717
  .desc   = "Branch instructions retired",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .equiv = "BR_INST_RETIRED:ANY",
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xc4,
Packit 577717
},
Packit 577717
{ .name   = "MISPREDICTED_BRANCH_RETIRED",
Packit 577717
  .desc   = "Mispredicted branch instruction retired",
Packit 577717
  .equiv  = "BR_MISP_RETIRED",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xc5,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
},
Packit 577717
/* begin model specific events */
Packit 577717
{ .name   = "DECODE_RESTRICTION",
Packit 577717
  .desc   = "Instruction length prediction delay",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xe9,
Packit 577717
  .ngrp = 1,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_decode_restriction),
Packit 577717
  .umasks = slm_decode_restriction,
Packit 577717
},
Packit 577717
{ .name   = "L2_REJECT_XQ",
Packit 577717
  .desc   = "Rejected L2 requests to XQ",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x30,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_l2_reject_xq),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_l2_reject_xq,
Packit 577717
},
Packit 577717
{ .name   = "ICACHE",
Packit 577717
  .desc   = "Instruction fetches",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x80,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_icache),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_icache,
Packit 577717
},
Packit 577717
{ .name   = "UOPS_RETIRED",
Packit 577717
  .desc   = "Micro-ops retired",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xc2,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_uops_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_uops_retired,
Packit 577717
},
Packit 577717
{ .name   = "INST_RETIRED",
Packit 577717
  .desc   = "Instructions retired",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xc0,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_inst_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_inst_retired,
Packit 577717
},
Packit 577717
{ .name   = "CYCLES_DIV_BUSY",
Packit 577717
  .desc   = "Cycles the divider is busy",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xcd,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_cycles_div_busy),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_cycles_div_busy,
Packit 577717
},
Packit 577717
{ .name   = "RS_FULL_STALL",
Packit 577717
  .desc   = "RS full",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xcb,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_rs_full_stall),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_rs_full_stall,
Packit 577717
},
Packit 577717
{ .name   = "LLC_RQSTS",
Packit 577717
  .desc   = "L2 cache requests",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x2e,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_llc_rqsts),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_llc_rqsts,
Packit 577717
},
Packit 577717
{ .name   = "MACHINE_CLEARS",
Packit 577717
  .desc   = "Self-Modifying Code detected",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xc3,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_machine_clears),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_machine_clears,
Packit 577717
},
Packit 577717
{ .name   = "BR_INST_RETIRED",
Packit 577717
  .desc   = "Retired branch instructions",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xc4,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_br_inst_retired),
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_br_inst_retired,
Packit 577717
},
Packit 577717
{ .name   = "BR_MISP_RETIRED",
Packit 577717
  .desc   = "Mispredicted retired branch instructions (Precise Event)",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xc5,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_br_misp_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_br_misp_retired,
Packit 577717
},
Packit 577717
{ .name   = "BR_MISP_INST_RETIRED", /* for backward compatibility with older version */
Packit 577717
  .desc   = "Mispredicted retired branch instructions (Precise Event)",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .equiv  = "BR_MISP_RETIRED",
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xc5,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_br_misp_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_br_misp_retired,
Packit 577717
},
Packit 577717
{ .name   = "MS_DECODED",
Packit 577717
  .desc   = "MS decoder",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xe7,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_ms_decoded),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_ms_decoded,
Packit 577717
},
Packit 577717
{ .name   = "BACLEARS",
Packit 577717
  .desc   = "Branch address calculator",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xe6,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_baclears),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_baclears,
Packit 577717
},
Packit 577717
{ .name   = "NO_ALLOC_CYCLES",
Packit 577717
  .desc   = "Front-end allocation",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0xca,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_no_alloc_cycles),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_no_alloc_cycles,
Packit 577717
},
Packit 577717
{ .name   = "CPU_CLK_UNHALTED",
Packit 577717
  .desc   = "Core cycles when core is not halted",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x3c,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_cpu_clk_unhalted),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_cpu_clk_unhalted,
Packit 577717
},
Packit 577717
{ .name   = "MEM_UOP_RETIRED",
Packit 577717
  .desc   = "Retired loads micro-ops",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x4,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_mem_uop_retired),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_mem_uop_retired,
Packit 577717
},
Packit 577717
{ .name   = "CORE_REJECT_L2Q",
Packit 577717
  .desc   = "Demand and L1 prefetcher requests rejected by L2",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x31,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_core_reject_l2q),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_core_reject_l2q,
Packit 577717
},
Packit 577717
{ .name   = "REHABQ",
Packit 577717
  .desc   = "Memory reference queue",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x03,
Packit 577717
  .flags= INTEL_X86_PEBS,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_rehabq),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_rehabq,
Packit 577717
},
Packit 577717
{ .name   = "FETCH_STALL",
Packit 577717
  .desc   = "Fetch stalls",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x86,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_fetch_stall),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_fetch_stall,
Packit 577717
},
Packit 577717
{ .name   = "PAGE_WALKS",
Packit 577717
  .desc   = "Page walker",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0x3,
Packit 577717
  .code = 0x5,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_page_walks),
Packit 577717
  .ngrp = 1,
Packit 577717
  .umasks = slm_page_walks,
Packit 577717
},
Packit 577717
{ .name   = "OFFCORE_RESPONSE_0",
Packit 577717
  .desc   = "Offcore response event (must provide at least one request type and either any_response or any combination of supplier + snoop)",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x01b7,
Packit 577717
  .flags= INTEL_X86_NHM_OFFCORE,
Packit 577717
  .numasks = LIBPFM_ARRAY_SIZE(slm_offcore_response),
Packit 577717
  .ngrp = 3,
Packit 577717
  .umasks = slm_offcore_response,
Packit 577717
},
Packit 577717
{ .name   = "OFFCORE_RESPONSE_1",
Packit 577717
  .desc   = "Offcore response event (must provide at least one request type and either any_response or any combination of supplier + snoop)",
Packit 577717
  .modmsk = INTEL_V2_ATTRS,
Packit 577717
  .cntmsk = 0xf,
Packit 577717
  .code = 0x02b7,
Packit 577717
  .flags= INTEL_X86_NHM_OFFCORE,
Packit 577717
  .numasks =  LIBPFM_ARRAY_SIZE(slm_offcore_response),
Packit 577717
  .ngrp = 3,
Packit 577717
  .umasks = slm_offcore_response, /* identical to actual umasks list for this event */
Packit 577717
},
Packit 577717
};