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

Packit 577717
/*
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: skl (Intel SkyLake)
Packit 577717
 */
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_baclears[]={
Packit 577717
  { .uname = "ANY",
Packit 577717
    .udesc  = "Number of front-end re-steers due to BPU misprediction",
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 skl_br_inst_retired[]={
Packit 577717
  { .uname = "CONDITIONAL",
Packit 577717
    .udesc  = "Counts all taken and not taken macro conditional branch instructions",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "COND",
Packit 577717
    .udesc  = "Counts all taken and not taken macro conditional branch instructions",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uequiv = "CONDITIONAL",
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "NEAR_CALL",
Packit 577717
    .udesc  = "Counts all macro direct and indirect near calls",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_BRANCHES",
Packit 577717
    .udesc  = "Counts all taken and not taken macro branches including far branches (architectural event)",
Packit 577717
    .ucode  = 0x0,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "NEAR_RETURN",
Packit 577717
    .udesc  = "Counts the number of near ret instructions retired",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "NOT_TAKEN",
Packit 577717
    .udesc  = "Counts all not taken macro branch instructions retired",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "NEAR_TAKEN",
Packit 577717
    .udesc  = "Counts the number of near branch taken instructions retired",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "FAR_BRANCH",
Packit 577717
    .udesc  = "Counts the number of far branch instructions retired",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_br_misp_retired[]={
Packit 577717
  { .uname = "CONDITIONAL",
Packit 577717
    .udesc  = "All mispredicted macro conditional branch instructions",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "COND",
Packit 577717
    .udesc  = "All mispredicted macro conditional branch instructions",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uequiv = "CONDITIONAL",
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_BRANCHES",
Packit 577717
    .udesc  = "All mispredicted macro branches (architectural event)",
Packit 577717
    .ucode  = 0x0, /* architectural encoding */
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "NEAR_TAKEN",
Packit 577717
    .udesc  = "Number of near branch instructions retired that were mispredicted and taken",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "NEAR_CALL",
Packit 577717
    .udesc  = "Counts both taken and not taken retired mispredicted direct and indirect near calls, including both register and memory indirect.",
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 skl_cpu_clk_thread_unhalted[]={
Packit 577717
  { .uname = "REF_XCLK",
Packit 577717
    .udesc  = "Count Xclk pulses (100Mhz) when the core is unhalted",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REF_XCLK_ANY",
Packit 577717
    .udesc  = "Count Xclk pulses (100Mhz) when the at least one thread on the physical core is unhalted",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_ANY, /* any=1 */
Packit 577717
    .uequiv = "REF_XCLK:t",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_T,
Packit 577717
  },
Packit 577717
  { .uname  = "REF_P",
Packit 577717
    .udesc  = "Cycles when the core is unhalted (count at 100 Mhz)",
Packit 577717
    .ucode = 0x100,
Packit 577717
    .uequiv = "REF_XCLK",
Packit 577717
    .uflags= INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname  = "THREAD_P",
Packit 577717
    .udesc  = "Cycles when thread is not halted",
Packit 577717
    .ucode = 0x000,
Packit 577717
    .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname  = "ONE_THREAD_ACTIVE",
Packit 577717
    .udesc  = "Counts Xclk (100Mhz) pulses when this thread is unhalted and the other thread is halted",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags= INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname  = "RING0_TRANS",
Packit 577717
    .udesc  = "Counts when the current privilege level transitions from ring 1, 2 or 3 to ring 0 (kernel)",
Packit 577717
    .ucode  = 0x000 | INTEL_X86_MOD_EDGE | (1 << INTEL_X86_CMASK_BIT), /* edge=1 cnt=1 */
Packit 577717
    .uequiv = "THREAD_P:e:c=1",
Packit 577717
    .uflags= INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_cycle_activity[]={
Packit 577717
   { .uname  = "CYCLES_L2_MISS",
Packit 577717
     .udesc  = "Cycles with pending L2 miss demand loads outstanding",
Packit 577717
     .ucode  = 0x0100 | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES_L2_PENDING",
Packit 577717
     .udesc  = "Cycles with pending L2 miss demand loads outstanding",
Packit 577717
     .ucode  = 0x0100 | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
     .uequiv = "CYCLES_L2_MISS",
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES_L3_MISS",
Packit 577717
     .udesc  = "Cycles with L3 cache miss demand loads outstanding",
Packit 577717
     .ucode  = 0x0200 | (0x2 << INTEL_X86_CMASK_BIT),
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES_LDM_PENDING",
Packit 577717
     .udesc  = "Cycles with L3 cache miss demand loads outstanding",
Packit 577717
     .ucode  = 0x0200 | (0x2 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uequiv = "CYCLES_L3_MISS",
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES_L1D_MISS",
Packit 577717
     .udesc  = "Cycles with pending L1D load cache misses",
Packit 577717
     .ucode  = 0x0800 | (0x8 << INTEL_X86_CMASK_BIT),
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES_L1D_PENDING",
Packit 577717
     .udesc  = "Cycles with pending L1D load cache misses",
Packit 577717
     .ucode  = 0x0800 | (0x8 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uequiv = "CYCLES_L1D_MISS",
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES_MEM_ANY",
Packit 577717
     .udesc  = "Cycles when memory subsystem has at least one outstanding load",
Packit 577717
     .ucode  = 0x1000 | (0x10 << INTEL_X86_CMASK_BIT),
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
Packit 577717
   { .uname  = "STALLS_L1D_MISS",
Packit 577717
     .udesc  = "Execution stalls while at least one L1D demand load cache miss is outstanding",
Packit 577717
     .ucode  = 0x0c00 | (0xc << INTEL_X86_CMASK_BIT),
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .ucntmsk= 0x4,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "STALLS_L2_MISS",
Packit 577717
     .udesc  = "Execution stalls while at least one L2 demand load is outstanding",
Packit 577717
     .ucode  = 0x0500 | (0x5 << INTEL_X86_CMASK_BIT),
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .ucntmsk= 0xf,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "STALLS_L3_MISS",
Packit 577717
     .udesc  = "Execution stalls while at least one L3 demand load is outstanding",
Packit 577717
     .ucode  = 0x0600 | (0x6 << INTEL_X86_CMASK_BIT),
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "STALLS_MEM_ANY",
Packit 577717
     .udesc  = "Execution stalls while at least one demand load is outstanding in the memory subsystem",
Packit 577717
     .ucode  = 0x1400 | (20 << INTEL_X86_CMASK_BIT), /* cnt=20 */
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "STALLS_TOTAL",
Packit 577717
     .udesc  = "Total execution stalls in cycles",
Packit 577717
     .ucode  = 0x0400 | (0x4 << INTEL_X86_CMASK_BIT),
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_dtlb_load_misses[]={
Packit 577717
  { .uname = "MISS_CAUSES_A_WALK",
Packit 577717
    .udesc  = "Misses in all DTLB levels that cause page walks",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_COMPLETED",
Packit 577717
    .udesc  = "Number of misses in all TLB levels causing a page walk of any page size that completes",
Packit 577717
    .ucode  = 0xe00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_COMPLETED_4K",
Packit 577717
    .udesc  = "Number of misses in all TLB levels causing a page walk of 4KB page size that completes",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_COMPLETED_2M_4M",
Packit 577717
    .udesc  = "Number of misses in all TLB levels causing a page walk of 2MB/4MB page size that completes",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_COMPLETED_1G",
Packit 577717
    .udesc  = "Number of misses in all TLB levels causing a page walk of 1GB page size that completes",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_ACTIVE",
Packit 577717
    .udesc  = "Cycles with at least one hardware walker active for a load",
Packit 577717
    .ucode  = 0x1000 | (0x1 <<  INTEL_X86_CMASK_BIT),
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_DURATION",
Packit 577717
    .udesc  = "Cycles when hardware page walker is busy with page walks",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_PENDING",
Packit 577717
    .udesc  = "Cycles when hardware page walker is busy with page walks",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uequiv = "WALK_DURATION",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "STLB_HIT",
Packit 577717
    .udesc  = "Number of cache load STLB hits. No page walk",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_itlb_misses[]={
Packit 577717
  { .uname = "MISS_CAUSES_A_WALK",
Packit 577717
    .udesc  = "Misses in all DTLB levels that cause page walks",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_COMPLETED",
Packit 577717
    .udesc  = "Number of misses in all TLB levels causing a page walk of any page size that completes",
Packit 577717
    .ucode  = 0xe00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_COMPLETED_4K",
Packit 577717
    .udesc  = "Number of misses in all TLB levels causing a page walk of 4KB page size that completes",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_COMPLETED_2M_4M",
Packit 577717
    .udesc  = "Number of misses in all TLB levels causing a page walk of 2MB/4MB page size that completes",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_COMPLETED_1G",
Packit 577717
    .udesc  = "Number of misses in all TLB levels causing a page walk of 1GB page size that completes",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_DURATION",
Packit 577717
    .udesc  = "Cycles when PMH is busy with page walks",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "WALK_PENDING",
Packit 577717
    .udesc  = "Cycles when PMH is busy with page walks",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uequiv = "WALK_DURATION",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "STLB_HIT",
Packit 577717
    .udesc  = "Number of cache load STLB hits. No page walk",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_fp_assist[]={
Packit 577717
  { .uname = "ANY",
Packit 577717
    .udesc  = "Cycles with any input/output SEE or FP assists",
Packit 577717
    .ucode  = 0x1e00 | (1 << INTEL_X86_CMASK_BIT), /* cnt=1 */
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_icache_16b[]={
Packit 577717
  { .uname = "IFDATA_STALL",
Packit 577717
    .udesc  = "Cycles where a code fetch is stalled due to L1 instruction cache miss",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_icache_64b[]={
Packit 577717
  { .uname = "IFTAG_HIT",
Packit 577717
    .udesc  = "Number of instruction fetch tag lookups that hit in the instruction cache (L1I). Counts at 64-byte cache-line granularity",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "IFTAG_MISS",
Packit 577717
    .udesc  = "Number of instruction fetch tag lookups that miss in the instruction cache (L1I). Counts at 64-byte cache-line granularity",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "IFTAG_STALL",
Packit 577717
    .udesc  = "Cycles where a code fetch is stalled due to L1 instruction cache tag miss",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_idq[]={
Packit 577717
  { .uname = "MITE_UOPS",
Packit 577717
    .udesc  = "Number of uops delivered to Instruction Decode Queue (IDQ) from MITE path",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "DSB_UOPS",
Packit 577717
    .udesc  = "Number of uops delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "MS_DSB_UOPS",
Packit 577717
    .udesc  = "Uops initiated by Decode Stream Buffer (DSB) that are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequencer (MS) is busy",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "MS_MITE_UOPS",
Packit 577717
    .udesc  = "Uops initiated by MITE and delivered to Instruction Decode Queue (IDQ) while Microcode Sequencer (MS) is busy",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "MS_UOPS",
Packit 577717
    .udesc  = "Number of Uops were delivered into Instruction Decode Queue (IDQ) from MS, initiated by Decode Stream Buffer (DSB) or MITE",
Packit 577717
    .ucode  = 0x3000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "MS_UOPS_CYCLES",
Packit 577717
    .udesc  = "Number of cycles that Uops were delivered into Instruction Decode Queue (IDQ) when MS_Busy, initiated by Decode Stream Buffer (DSB) or MITE",
Packit 577717
    .ucode  = 0x3000 | (1 << INTEL_X86_CMASK_BIT), /* cnt=1 */
Packit 577717
    .uequiv = "MS_UOPS:c=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "MS_SWITCHES",
Packit 577717
    .udesc  = "Number of switches from DSB (Decode Stream Buffer) or MITE (legacy decode pipeline) to the Microcode Sequencer",
Packit 577717
     .ucode  = 0x3000 | INTEL_X86_MOD_EDGE | (1 << INTEL_X86_CMASK_BIT), /* edge=1 cnt=1 */
Packit 577717
    .uequiv = "MS_UOPS:c=1:e",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_E | _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "MITE_UOPS_CYCLES",
Packit 577717
    .udesc  = "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from MITE path",
Packit 577717
    .ucode  = 0x400 | (1 << INTEL_X86_CMASK_BIT), /* cnt=1 */
Packit 577717
    .uequiv = "MITE_UOPS:c=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "DSB_UOPS_CYCLES",
Packit 577717
    .udesc  = "Cycles when uops are being delivered to Instruction Decode Queue (IDQ) from Decode Stream Buffer (DSB) path",
Packit 577717
    .ucode  = 0x800 | (1 << INTEL_X86_CMASK_BIT), /* cnt=1 */
Packit 577717
    .uequiv = "DSB_UOPS:c=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "MS_DSB_UOPS_CYCLES",
Packit 577717
    .udesc  = "Cycles when uops initiated by Decode Stream Buffer (DSB) are being delivered to Instruction Decode Queue (IDQ) while Microcode Sequencer (MS) is busy",
Packit 577717
    .ucode  = 0x1000 | (1 << INTEL_X86_CMASK_BIT), /* cnt=1 */
Packit 577717
    .uequiv = "MS_DSB_UOPS:c=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "MS_DSB_OCCUR",
Packit 577717
    .udesc  = "Deliveries to Instruction Decode Queue (IDQ) initiated by Decode Stream Buffer (DSB) while Microcode Sequencer (MS) is busy",
Packit 577717
    .ucode  = 0x1000 | INTEL_X86_MOD_EDGE | (1 << INTEL_X86_CMASK_BIT), /* edge=1 cnt=1 */
Packit 577717
    .uequiv = "MS_DSB_UOPS:c=1:e=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_E | _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_DSB_CYCLES_4_UOPS",
Packit 577717
    .udesc  = "Cycles Decode Stream Buffer (DSB) is delivering 4 Uops",
Packit 577717
    .ucode  = 0x1800 | (4 << INTEL_X86_CMASK_BIT), /* cnt=4 */
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_DSB_CYCLES_ANY_UOPS",
Packit 577717
    .udesc  = "Cycles Decode Stream Buffer (DSB) is delivering any Uop",
Packit 577717
    .ucode  = 0x1800 | (1 << INTEL_X86_CMASK_BIT), /* cnt=1 */
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_MITE_CYCLES_4_UOPS",
Packit 577717
    .udesc  = "Cycles MITE is delivering 4 Uops",
Packit 577717
    .ucode  = 0x2400 | (4 << INTEL_X86_CMASK_BIT), /* cnt=4 */
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_MITE_CYCLES_ANY_UOPS",
Packit 577717
    .udesc  = "Cycles MITE is delivering any Uop",
Packit 577717
    .ucode  = 0x2400 | (1 << INTEL_X86_CMASK_BIT), /* cnt=1 */
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_MITE_UOPS",
Packit 577717
    .udesc  = "Number of uops delivered to Instruction Decode Queue (IDQ) from any path",
Packit 577717
    .ucode  = 0x3c00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_idq_uops_not_delivered[]={
Packit 577717
  { .uname = "CORE",
Packit 577717
    .udesc  = "Count number of non-delivered uops to Resource Allocation Table (RAT)",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "CYCLES_0_UOPS_DELIV_CORE",
Packit 577717
    .udesc  = "Number of uops not delivered to Resource Allocation Table (RAT) per thread when backend is not stalled",
Packit 577717
    .ucode  = 0x100 | (4 << INTEL_X86_CMASK_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "CYCLES_FE_WAS_OK",
Packit 577717
    .udesc  = "Count cycles front-end (FE) delivered 4 uops or Resource Allocation Table (RAT) was stalling front-end",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_INV | (1 << INTEL_X86_CMASK_BIT), /* cnt=1 inv=1 */
Packit 577717
    .uequiv = "CORE:c=1:i",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C | _INTEL_X86_ATTR_I,
Packit 577717
  },
Packit 577717
  { .uname = "CYCLES_LE_1_UOPS_DELIV_CORE",
Packit 577717
    .udesc  = "Count cycles per thread when 3 or more uops are not delivered to Resource Allocation Table (RAT) when backend is not stalled",
Packit 577717
    .ucode  = 0x100 | (3 << INTEL_X86_CMASK_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "CYCLES_LE_2_UOPS_DELIV_CORE",
Packit 577717
    .udesc  = "Count cycles with less than 2 uops delivered by the front-end",
Packit 577717
    .ucode  = 0x100 | (2 << INTEL_X86_CMASK_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "CYCLES_LE_3_UOPS_DELIV_CORE",
Packit 577717
    .udesc  = "Count cycles with less then 3 uops delivered by the front-end",
Packit 577717
    .ucode  = 0x100 | (1 << INTEL_X86_CMASK_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_inst_retired[]={
Packit 577717
  { .uname = "ANY_P",
Packit 577717
    .udesc  = "Number of instructions retired. General Counter - architectural event",
Packit 577717
    .ucode  = 0x000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution (Precise Event)",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uequiv = "PREC_DIST",
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "TOTAL_CYCLES",
Packit 577717
    .udesc  = "Number of cycles using always true condition",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_INV | (10 << INTEL_X86_CMASK_BIT), /* inv=1 cnt=10 */
Packit 577717
    .uequiv = "PREC_DIST:i=1:c=10",
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_I | _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "PREC_DIST",
Packit 577717
    .udesc  = "Precise instruction retired event with HW to reduce effect of PEBS shadow in IP distribution (Precise event)",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .ucntmsk= 0x2,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_int_misc[]={
Packit 577717
  { .uname = "RECOVERY_CYCLES",
Packit 577717
    .udesc  = "Cycles waiting for the checkpoints in Resource Allocation Table (RAT) to be recovered after Nuke due to all other cases except JEClear (e.g. whenever a ucode assist is needed like SSE exception, memory disambiguation, etc...)",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "RECOVERY_CYCLES_ANY",
Packit 577717
    .udesc  = "Core cycles the allocator was stalled due to recovery from earlier clear event for any thread running on the physical core (e.g. misprediction or memory nuke)",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_ANY, /* any=1 */
Packit 577717
    .uequiv = "RECOVERY_CYCLES:t",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_T,
Packit 577717
  },
Packit 577717
  { .uname = "RECOVERY_STALLS_COUNT",
Packit 577717
    .udesc  = "Number of occurrences waiting for Machine Clears",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_EDGE | (1 << INTEL_X86_CMASK_BIT), /* edge=1 cnt=1 */
Packit 577717
    .uequiv = "RECOVERY_CYCLES:e:c=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_E,
Packit 577717
  },
Packit 577717
  { .uname = "CLEAR_RESTEER_CYCLES",
Packit 577717
    .udesc  = "Number of cycles the issue-stage is waiting for front-end to fetch from resteered path following branch misprediction or machine clear events",
Packit 577717
    .ucode  = 0x8000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_itlb[]={
Packit 577717
  { .uname = "ITLB_FLUSH",
Packit 577717
    .udesc  = "Flushing of the Instruction TLB (ITLB) pages independent of page size",
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 skl_l1d[]={
Packit 577717
  { .uname = "REPLACEMENT",
Packit 577717
    .udesc  = "L1D Data line replacements",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_sq_misc[]={
Packit 577717
  { .uname = "SPLIT_LOCK",
Packit 577717
    .udesc  = "Number of split locks in the super queue (SQ)",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_l1d_pend_miss[]={
Packit 577717
  { .uname = "PENDING",
Packit 577717
    .udesc  = "Cycles with L1D load misses outstanding",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .ucntmsk = 0x4,
Packit 577717
    .uflags = INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "FB_FULL",
Packit 577717
    .udesc  = "Number of times a request needed a fill buffer (FB) entry but there was no entry available for it. That is the FB unavailability was dominant reason for blocking the request. A request includes cacheable/uncacheable demands load, store or SW prefetch",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "PENDING_CYCLES",
Packit 577717
    .udesc  = "Cycles with L1D load misses outstanding",
Packit 577717
    .ucode  = 0x100 | (1 << INTEL_X86_CMASK_BIT), /* cnt=1 */
Packit 577717
    .uequiv = "PENDING:c=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "PENDING_CYCLES_ANY",
Packit 577717
    .udesc  = "Cycles with L1D load misses outstanding from any thread",
Packit 577717
    .ucode  = 0x100 | (1 << INTEL_X86_CMASK_BIT) | INTEL_X86_MOD_ANY, /* cnt=1 any=1 */
Packit 577717
    .uequiv = "PENDING:c=1:t",
Packit 577717
    .ucntmsk = 0x4,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C | _INTEL_X86_ATTR_T,
Packit 577717
  },
Packit 577717
  { .uname = "OCCURRENCES",
Packit 577717
    .udesc  = "Number L1D miss outstanding",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_EDGE | (1 << INTEL_X86_CMASK_BIT), /* edge=1 cnt=1 */
Packit 577717
    .uequiv = "PENDING:c=1:e=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_E | _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "EDGE",
Packit 577717
    .udesc  = "Number L1D miss outstanding",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_EDGE | (1 << INTEL_X86_CMASK_BIT), /* edge=1 cnt=1 */
Packit 577717
    .uequiv = "PENDING:c=1:e=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_E | _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_l2_lines_in[]={
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "L2 cache lines filling L2",
Packit 577717
    .ucode  = 0x1f00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "ANY",
Packit 577717
    .udesc  = "L2 cache lines filling L2",
Packit 577717
    .uequiv = "ALL",
Packit 577717
    .ucode  = 0x1f00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_l2_lines_out[]={
Packit 577717
  { .uname = "NON_SILENT",
Packit 577717
    .udesc  = "Counts the number of lines that are evicted by L2 cache when triggered by an L2 cache fill. Those lines can be either in modified state or clean state. Modified lines may either be written back to L3 or directly written to memory and not allocated in L3.  Clean lines may either be allocated in L3 or dropped ",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "USELESS_HWPREF",
Packit 577717
    .udesc  = "Counts the number of lines that have been hardware prefetched but not used and now evicted by L2 cache",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uequiv = "USELESS_HWPF",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "USELESS_HWPF",
Packit 577717
    .udesc  = "Counts the number of lines that have been hardware prefetched but not used and now evicted by L2 cache",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "SILENT",
Packit 577717
    .udesc  = "Counts the number of lines that are silently dropped by L2 cache when triggered by an L2 cache fill. These lines are typically in Shared state. This is a per-core event.",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_l2_rqsts[]={
Packit 577717
  { .uname = "DEMAND_DATA_RD_MISS",
Packit 577717
    .udesc  = "Demand Data Read requests that miss L2 cache",
Packit 577717
    .ucode  = 0x2100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "DEMAND_DATA_RD_HIT",
Packit 577717
    .udesc  = "Demand Data Read requests that hit L2 cache",
Packit 577717
    .ucode  = 0x4100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "DEMAND_RFO_MISS",
Packit 577717
    .udesc  = "RFO requests that miss L2 cache",
Packit 577717
    .ucode  = 0x2200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "RFO_MISS",
Packit 577717
    .udesc  = "RFO requests that miss L2 cache",
Packit 577717
    .ucode  = 0x2200,
Packit 577717
    .uequiv = "DEMAND_RFO_MISS",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "DEMAND_RFO_HIT",
Packit 577717
    .udesc  = "RFO requests that hit L2 cache",
Packit 577717
    .ucode  = 0x4200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "RFO_HIT",
Packit 577717
    .udesc  = "RFO requests that hit L2 cache",
Packit 577717
    .ucode  = 0x4200,
Packit 577717
    .uequiv = "DEMAND_RFO_HIT",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "CODE_RD_MISS",
Packit 577717
    .udesc  = "L2 cache misses when fetching instructions",
Packit 577717
    .ucode  = 0x2400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_DEMAND_MISS",
Packit 577717
    .udesc  = "All demand requests that miss the L2 cache",
Packit 577717
    .ucode  = 0x2700,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "CODE_RD_HIT",
Packit 577717
    .udesc  = "L2 cache hits when fetching instructions, code reads",
Packit 577717
    .ucode  = 0x4400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "MISS",
Packit 577717
    .udesc  = "All requests that miss the L2 cache",
Packit 577717
    .ucode  = 0x3f00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "PF_MISS",
Packit 577717
    .udesc  = "Requests from the L1/L2/L3 hardware prefetchers or Load software prefetches that miss L2 cache",
Packit 577717
    .ucode  = 0x3800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "PF_HIT",
Packit 577717
    .udesc  = "Requests from the L1/L2/L3 hardware prefetchers or Load software prefetches that hit L2 cache",
Packit 577717
    .ucode  = 0xd800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_DEMAND_DATA_RD",
Packit 577717
    .udesc  = "Any data read request to L2 cache",
Packit 577717
    .ucode  = 0xe100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_RFO",
Packit 577717
    .udesc  = "Any data RFO request to L2 cache",
Packit 577717
    .ucode  = 0xe200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_CODE_RD",
Packit 577717
    .udesc  = "Any code read request to L2 cache",
Packit 577717
    .ucode  = 0xe400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_DEMAND_REFERENCES",
Packit 577717
    .udesc  = "All demand requests to L2 cache ",
Packit 577717
    .ucode  = 0xe700,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_PF",
Packit 577717
    .udesc  = "Any L2 HW prefetch request to L2 cache",
Packit 577717
    .ucode  = 0xf800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REFERENCES",
Packit 577717
    .udesc  = "All requests to L2 cache",
Packit 577717
    .ucode  = 0xff00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_l2_trans[]={
Packit 577717
  { .uname = "L2_WB",
Packit 577717
    .udesc  = "L2 writebacks that access L2 cache",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_ld_blocks[]={
Packit 577717
  { .uname = "STORE_FORWARD",
Packit 577717
    .udesc  = "Counts the number of loads blocked by overlapping with store buffer entries that cannot be forwarded",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "NO_SR",
Packit 577717
    .udesc  = "number of times that split load operations are temporarily blocked because all resources for handling the split accesses are in use",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_ld_blocks_partial[]={
Packit 577717
  { .uname = "ADDRESS_ALIAS",
Packit 577717
    .udesc  = "False dependencies in MOB due to partial compare on address",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_load_hit_pre[]={
Packit 577717
  { .uname = "SW_PF",
Packit 577717
    .udesc  = "Demand load dispatches that hit L1D fill buffer (FB) allocated for software prefetch",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_lock_cycles[]={
Packit 577717
  { .uname = "CACHE_LOCK_DURATION",
Packit 577717
    .udesc  = "cycles that the L1D is locked",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_longest_lat_cache[]={
Packit 577717
  { .uname = "MISS",
Packit 577717
    .udesc  = "Core-originated cacheable demand requests missed LLC - architectural event",
Packit 577717
    .ucode  = 0x4100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "REFERENCE",
Packit 577717
    .udesc  = "Core-originated cacheable demand requests that refer to LLC - architectural event",
Packit 577717
    .ucode  = 0x4f00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_machine_clears[]={
Packit 577717
  { .uname = "COUNT",
Packit 577717
    .udesc  = "Number of machine clears (Nukes) of any type",
Packit 577717
    .ucode  = 0x100| (1 << INTEL_X86_CMASK_BIT) | (1 << INTEL_X86_EDGE_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_E | _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "MEMORY_ORDERING",
Packit 577717
    .udesc  = "Number of Memory Ordering Machine Clears detected",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "SMC",
Packit 577717
    .udesc  = "Number of Self-modifying code (SMC) Machine Clears detected",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_mem_load_l3_hit_retired[]={
Packit 577717
  { .uname = "XSNP_MISS",
Packit 577717
    .udesc  = "Retired load uops which data sources were L3 hit and cross-core snoop missed in on-pkg core cache",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "XSNP_HIT",
Packit 577717
    .udesc  = "Retired load uops which data sources were L3 and cross-core snoop hits in on-pkg core cache",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "XSNP_HITM",
Packit 577717
    .udesc  = "Load had HitM Response from a core on same socket (shared L3). (Non PEBS",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "XSNP_NONE",
Packit 577717
    .udesc  = "Retired load uops which data sources were hits in L3 without snoops required",
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 skl_mem_load_l3_miss_retired[]={
Packit 577717
  { .uname = "LOCAL_DRAM",
Packit 577717
    .udesc  = "Retired load instructions which data sources missed L3 but serviced from local dram",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "REMOTE_DRAM",
Packit 577717
    .udesc  = "Retired load instructions which data sources missed L3 but serviced from remote dram",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "REMOTE_HITM",
Packit 577717
    .udesc  = "Retired load instructions whose data sources was remote HITM",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "REMOTE_FWD",
Packit 577717
    .udesc  = "Retired load instructions whose data sources was remote HITM",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_mem_load_retired[]={
Packit 577717
  { .uname = "L1_HIT",
Packit 577717
    .udesc  = "Retired load uops with L1 cache hits as data source",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "L2_HIT",
Packit 577717
    .udesc  = "Retired load uops with L2 cache hits as data source",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "L3_HIT",
Packit 577717
    .udesc  = "Retired load uops with L3 cache hits as data source",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "L1_MISS",
Packit 577717
    .udesc  = "Retired load uops which missed the L1D",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "L2_MISS",
Packit 577717
    .udesc  = "Retired load uops which missed the L2. Unknown data source excluded",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "L3_MISS",
Packit 577717
    .udesc  = "Retired load uops which missed the L3",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "HIT_LFB",
Packit 577717
    .udesc  = "Retired load uops which missed L1 but hit line fill buffer (LFB)",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "FB_HIT",
Packit 577717
    .udesc  = "Retired load uops which missed L1 but hit line fill buffer (LFB)",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
    .uequiv = "HIT_LFB",
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_mem_trans_retired[]={
Packit 577717
  { .uname  = "LOAD_LATENCY",
Packit 577717
    .udesc  = "Memory load instructions retired above programmed clocks, minimum threshold value is 3 (Precise Event and ldlat required)",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS | INTEL_X86_LDLAT | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname  = "LATENCY_ABOVE_THRESHOLD",
Packit 577717
    .udesc  = "Memory load instructions retired above programmed clocks, minimum threshold value is 3 (Precise Event and ldlat required)",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uequiv = "LOAD_LATENCY",
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS | INTEL_X86_LDLAT | INTEL_X86_NO_AUTOENCODE,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_mem_inst_retired[]={
Packit 577717
  { .uname = "STLB_MISS_LOADS",
Packit 577717
    .udesc  = "Load uops with true STLB miss retired to architected path",
Packit 577717
    .ucode  = 0x1100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "STLB_MISS_STORES",
Packit 577717
    .udesc  = "Store uops with true STLB miss retired to architected path",
Packit 577717
    .ucode  = 0x1200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "LOCK_LOADS",
Packit 577717
    .udesc  = "Load uops with locked access retired",
Packit 577717
    .ucode  = 0x2100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "SPLIT_LOADS",
Packit 577717
    .udesc  = "Line-splitted load uops retired",
Packit 577717
    .ucode  = 0x4100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "SPLIT_STORES",
Packit 577717
    .udesc  = "Line-splitted store uops retired",
Packit 577717
    .ucode  = 0x4200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_LOADS",
Packit 577717
    .udesc  = "All load uops retired",
Packit 577717
    .ucode  = 0x8100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_STORES",
Packit 577717
    .udesc  = "All store uops retired",
Packit 577717
    .ucode  = 0x8200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_misalign_mem_ref[]={
Packit 577717
  { .uname = "LOADS",
Packit 577717
    .udesc  = "Speculative cache-line split load uops dispatched to the L1D",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "STORES",
Packit 577717
    .udesc  = "Speculative cache-line split store-address uops dispatched to L1D",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_move_elimination[]={
Packit 577717
  { .uname = "INT_ELIMINATED",
Packit 577717
    .udesc  = "Number of integer Move Elimination candidate uops that were eliminated",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "SIMD_ELIMINATED",
Packit 577717
    .udesc  = "Number of SIMD Move Elimination candidate uops that were eliminated",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "INT_NOT_ELIMINATED",
Packit 577717
    .udesc  = "Number of integer Move Elimination candidate uops that were not eliminated",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "SIMD_NOT_ELIMINATED",
Packit 577717
    .udesc  = "Number of SIMD Move Elimination candidate uops that were not eliminated",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_offcore_requests[]={
Packit 577717
  { .uname  = "DEMAND_DATA_RD",
Packit 577717
    .udesc  = "Demand data read requests sent to uncore (use with HT off only)",
Packit 577717
    .ucode = 0x100,
Packit 577717
    .uflags= INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "DEMAND_CODE_RD",
Packit 577717
    .udesc  = "Demand code read requests sent to uncore (use with HT off only)",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "DEMAND_RFO",
Packit 577717
    .udesc  = "Demand RFOs requests sent to uncore (use with HT off only)",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_DATA_RD",
Packit 577717
    .udesc  = "Data read requests sent to uncore (use with HT off only)",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ALL_REQUESTS",
Packit 577717
    .udesc  = "Number of memory transactions that reached the superqueue (SQ)",
Packit 577717
    .ucode  = 0x8000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "L3_MISS_DEMAND_DATA_RD",
Packit 577717
    .udesc  = "Number of demand data read requests which missed the L3 cache",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_other_assists[]={
Packit 577717
  { .uname = "ANY",
Packit 577717
    .udesc  = "Number of times a microcode assist is invoked by HW other than FP-assist. Examples include AD (page Access Dirty) and AVX* related assists",
Packit 577717
    .ucode  = 0x3f00,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_resource_stalls[]={
Packit 577717
  { .uname = "ANY",
Packit 577717
    .udesc  = "Cycles Allocation is stalled due to Resource Related reason",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "Cycles Allocation is stalled due to Resource Related reason",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uequiv = "ANY",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "RS",
Packit 577717
    .udesc  = "Stall cycles caused by absence of eligible entries in Reservation Station (RS)",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "SB",
Packit 577717
    .udesc  = "Cycles Allocator is stalled due to Store Buffer full (not including draining from synch)",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ROB",
Packit 577717
    .udesc  = "ROB full stall cycles",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_rob_misc_events[]={
Packit 577717
  { .uname = "LBR_INSERTS",
Packit 577717
    .udesc  = "Count each time an new Last Branch Record (LBR) is inserted",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_rs_events[]={
Packit 577717
  { .uname = "EMPTY_CYCLES",
Packit 577717
    .udesc  = "Cycles the Reservation Station (RS) is empty for this thread",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "EMPTY_END",
Packit 577717
    .udesc  = "Number of times the reservation station (RS) was empty",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_INV |  (1 << INTEL_X86_CMASK_BIT) | INTEL_X86_MOD_EDGE, /* inv=1, cmask=1,edge=1 */
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 skl_tlb_flush[]={
Packit 577717
  { .uname = "DTLB_THREAD",
Packit 577717
    .udesc  = "Count number of DTLB flushes of thread-specific entries",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "STLB_ANY",
Packit 577717
    .udesc  = "Count number of any STLB flushes",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_uops_executed[]={
Packit 577717
  { .uname = "THREAD",
Packit 577717
    .udesc  = "Number of uops executed per thread in each cycle",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "THREAD_CYCLES_GE_1",
Packit 577717
    .udesc  = "Number of cycles with at least 1 uop is executed per thread",
Packit 577717
    .ucode  = 0x100 | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "THREAD_CYCLES_GE_2",
Packit 577717
    .udesc  = "Number of cycles with at least 2 uops are executed per thread",
Packit 577717
    .ucode  = 0x100 | (0x2 << INTEL_X86_CMASK_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO
Packit 577717
  },
Packit 577717
  { .uname = "THREAD_CYCLES_GE_3",
Packit 577717
    .udesc  = "Number of cycles with at least 3 uops are executed per thread",
Packit 577717
    .ucode  = 0x100 | (0x3 << INTEL_X86_CMASK_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "THREAD_CYCLES_GE_4",
Packit 577717
    .udesc  = "Number of cycles with at least 4 uops are executed per thread",
Packit 577717
    .ucode  = 0x100 | (0x4 << INTEL_X86_CMASK_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "CORE",
Packit 577717
    .udesc  = "Number of uops executed from any thread in each cycle",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "CORE_CYCLES_GE_1",
Packit 577717
    .udesc  = "Number of cycles with at least 1 uop is executed for any thread",
Packit 577717
    .ucode  = 0x200 | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO
Packit 577717
  },
Packit 577717
  { .uname = "CORE_CYCLES_GE_2",
Packit 577717
    .udesc  = "Number of cycles with at least 2 uops are executed for any thread",
Packit 577717
    .ucode  = 0x200 | (0x2 << INTEL_X86_CMASK_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO
Packit 577717
  },
Packit 577717
  { .uname = "CORE_CYCLES_GE_3",
Packit 577717
    .udesc  = "Number of cycles with at least 3 uops are executed for any thread",
Packit 577717
    .ucode  = 0x200 | (0x3 << INTEL_X86_CMASK_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "CORE_CYCLES_GE_4",
Packit 577717
    .udesc  = "Number of cycles with at least 4 uops are executed for any thread",
Packit 577717
    .ucode  = 0x200 | (0x4 << INTEL_X86_CMASK_BIT),
Packit 577717
    .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "STALL_CYCLES",
Packit 577717
    .udesc  = "Number of cycles with no uops executed by thread",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_INV | (1 << INTEL_X86_CMASK_BIT), /* inv=1 cnt=1 */
Packit 577717
    .uequiv = "THREAD:c=1:i",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_I | _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "CORE_CYCLES_NONE",
Packit 577717
    .udesc  = "Number of cycles with no uops executed from any thread",
Packit 577717
    .ucode  = 0x200 | INTEL_X86_MOD_INV | (1 << INTEL_X86_CMASK_BIT), /* inv=1 cnt=1 */
Packit 577717
    .uequiv = "CORE:c=1:i",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_I | _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "X87",
Packit 577717
    .udesc  = "Number of x87 uops executed per thread",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_uops_dispatched_port[]={
Packit 577717
  { .uname = "PORT_0",
Packit 577717
    .udesc  = "Cycles which a Uop is executed on port 0",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_1",
Packit 577717
    .udesc  = "Cycles which a Uop is executed on port 1",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_2",
Packit 577717
    .udesc  = "Cycles which a Uop is executed on port 2",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_3",
Packit 577717
    .udesc  = "Cycles which a Uop is executed on port 3",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_4",
Packit 577717
    .udesc  = "Cycles which a Uop is executed on port 4",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_5",
Packit 577717
    .udesc  = "Cycles which a Uop is executed on port 5",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_6",
Packit 577717
    .udesc  = "Cycles which a Uop is executed on port 6",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_7",
Packit 577717
    .udesc  = "Cycles which a Uop is executed on port 7",
Packit 577717
    .ucode  = 0x8000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_0_CORE",
Packit 577717
    .udesc  = "tbd",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_ANY, /* any=1 */
Packit 577717
    .uequiv = "PORT_0:t=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_T,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_1_CORE",
Packit 577717
    .udesc  = "tbd",
Packit 577717
    .ucode  = 0x200 | INTEL_X86_MOD_ANY, /* any=1 */
Packit 577717
    .uequiv = "PORT_1:t=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_T,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_2_CORE",
Packit 577717
    .udesc  = "tbd",
Packit 577717
    .ucode  = 0x400 | INTEL_X86_MOD_ANY, /* any=1 */
Packit 577717
    .uequiv = "PORT_2:t=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_T,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_3_CORE",
Packit 577717
    .udesc  = "tbd",
Packit 577717
    .ucode  = 0x800 | INTEL_X86_MOD_ANY, /* any=1 */
Packit 577717
    .uequiv = "PORT_3:t=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_T,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_4_CORE",
Packit 577717
    .udesc  = "tbd",
Packit 577717
    .ucode  = 0x1000 | INTEL_X86_MOD_ANY, /* any=1 */
Packit 577717
    .uequiv = "PORT_4:t=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_T,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_5_CORE",
Packit 577717
    .udesc  = "tbd",
Packit 577717
    .ucode  = 0x2000 | INTEL_X86_MOD_ANY, /* any=1 */
Packit 577717
    .uequiv = "PORT_5:t=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_T,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_6_CORE",
Packit 577717
    .udesc  = "tbd",
Packit 577717
    .ucode  = 0x4000 | INTEL_X86_MOD_ANY, /* any=1 */
Packit 577717
    .uequiv = "PORT_6:t=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_T,
Packit 577717
  },
Packit 577717
  { .uname = "PORT_7_CORE",
Packit 577717
    .udesc  = "tbd",
Packit 577717
    .ucode  = 0x8000 | INTEL_X86_MOD_ANY, /* any=1 */
Packit 577717
    .uequiv = "PORT_7:t=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_T,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_uops_issued[]={
Packit 577717
  { .uname = "ANY",
Packit 577717
    .udesc  = "Number of Uops issued by the Resource Allocation Table (RAT) to the Reservation Station (RS)",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "Number of Uops issued by the Resource Allocation Table (RAT) to the Reservation Station (RS)",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uequiv = "ANY",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "VECTOR_WIDTH_MISMATCH",
Packit 577717
    .udesc  = "Number of blend uops issued by the Resource Allocation table (RAT) to the Reservation Station (RS) in order to preserve upper bits of vector registers",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "FLAGS_MERGE",
Packit 577717
    .udesc  = "Number of flags-merge uops being allocated. Such uops adds delay",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "SLOW_LEA",
Packit 577717
    .udesc  = "Number of slow LEA or similar uops allocated. Such uop has 3 sources regardless if result of LEA instruction or not",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "SINGLE_MUL",
Packit 577717
    .udesc  = "Number of Multiply packed/scalar single precision uops allocated",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "STALL_CYCLES",
Packit 577717
    .udesc  = "Counts the number of cycles no uops issued by this thread",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_INV | (1 << INTEL_X86_CMASK_BIT), /* inv=1 cnt=1 */
Packit 577717
    .uequiv = "ANY:c=1:i=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .ucntmsk = 0xf,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_I | _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "CORE_STALL_CYCLES",
Packit 577717
    .udesc  = "Counts the number of cycles no uops issued on this core",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_ANY | INTEL_X86_MOD_INV | (1 << INTEL_X86_CMASK_BIT), /* any=1 inv=1 cnt=1 */
Packit 577717
    .uequiv = "ANY:c=1:i=1:t=1",
Packit 577717
    .ucntmsk = 0xf,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_T | _INTEL_X86_ATTR_I | _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_uops_retired[]={
Packit 577717
  { .uname = "ALL",
Packit 577717
    .udesc  = "All uops that actually retired",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "ANY",
Packit 577717
    .udesc  = "All uops that actually retired",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uequiv = "ALL",
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "RETIRE_SLOTS",
Packit 577717
    .udesc  = "number of retirement slots used non PEBS",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "STALL_CYCLES",
Packit 577717
    .udesc  = "Cycles no executable uops retired (Precise Event)",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_INV | (1 << INTEL_X86_CMASK_BIT), /* inv=1 cnt=1 */
Packit 577717
    .uequiv = "ALL:c=1:i",
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_I | _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "TOTAL_CYCLES",
Packit 577717
    .udesc  = "Number of cycles using always true condition applied to PEBS uops retired event",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_INV | (10 << INTEL_X86_CMASK_BIT), /* inv=1 cnt=10 */
Packit 577717
    .uequiv = "ALL:c=10:i",
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_I | _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "CORE_STALL_CYCLES",
Packit 577717
    .udesc  = "Cycles no executable uops retired on core (Precise Event)",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_INV | (1 << INTEL_X86_CMASK_BIT), /* inv=1 cnt=1 */
Packit 577717
    .uequiv = "ALL:c=1:i:t=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
    .modhw  = _INTEL_X86_ATTR_I | _INTEL_X86_ATTR_C,
Packit 577717
  },
Packit 577717
  { .uname = "STALL_OCCURRENCES",
Packit 577717
    .udesc  = "Number of transitions from stalled to unstalled execution (Precise Event)",
Packit 577717
    .ucode  = 0x100 | INTEL_X86_MOD_INV | INTEL_X86_MOD_EDGE| (1 << INTEL_X86_CMASK_BIT), /* inv=1 edge=1 cnt=1 */
Packit 577717
    .uequiv = "ALL:c=1:i=1:e=1",
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
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 skl_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_CODE_RD",
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
Packit 577717
   { .uname  = "PF_L2_DATA_RD",
Packit 577717
     .udesc  = "Request: number of data prefetch requests to L2",
Packit 577717
     .ucode  = 1ULL << (4 + 8),
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid  = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PF_L2_RFO",
Packit 577717
     .udesc  = "Request: number of RFO prefetch requests to L2",
Packit 577717
     .ucode = 1ULL << (5 + 8),
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PF_L3_DATA_RD",
Packit 577717
     .udesc  = "Request: number of data prefetch requests for loads that end up in L3",
Packit 577717
     .ucode = 1ULL << (7 + 8),
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PF_L3_RFO",
Packit 577717
     .udesc  = "Request: number of RFO prefetch requests that end up in L3",
Packit 577717
     .ucode = 1ULL << (8 + 8),
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "PF_L1D_AND_SW",
Packit 577717
     .udesc  = "Request: number of L1 data cache hardware prefetch requests and software prefetch requests",
Packit 577717
     .ucode = 1ULL << (10 + 8),
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
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 = 1ULL << (15+8),
Packit 577717
     .grpid = 0,
Packit 577717
   },
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_CODE_RD:OTHER",
Packit 577717
     .ucode = 0x1800700,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
     .umodel = PFM_PMU_INTEL_SKL,
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_CODE_RD:PF_L2_DATA_RD:PF_L2_RFO:PF_L3_DATA_RD:PF_L3_RFO:PF_L1D_AND_SW:OTHER",
Packit 577717
     .ucode = 0x85b700,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_DATA_RD",
Packit 577717
     .udesc  = "Request: combination of DMND_DATA_RD | PF_L2_DATA_RD | PF_L3_DATA_RD | PF_L1D_AND_SW",
Packit 577717
     .uequiv = "DMND_DATA_RD:PF_L2_DATA_RD:PF_L3_DATA_RD:PF_L1D_AND_SW",
Packit 577717
     .ucode = 0x1049100,
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_DATA",
Packit 577717
     .udesc  = "Request: combination of ANY_DATA_RD | PF_L2_RFO | PF_L3_RFO | DMND_RFO",
Packit 577717
     .uequiv = "ANY_DATA_RD:DMND_RFO:PF_L2_RFO:PF_L3_RFO",
Packit 577717
     .ucode = 0x105b300,
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_DATA_PF",
Packit 577717
     .udesc  = "Request: combination of PF_L2_DATA_RD | PF_L3_DATA_RD | PF_L1D_AND_SW",
Packit 577717
     .uequiv = "PF_L2_DATA_RD:PF_L3_DATA_RD:PF_L1D_AND_SW",
Packit 577717
     .ucode = 0x1049000,
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid = 0,
Packit 577717
   },
Packit 577717
   { .uname  = "ANY_RFO",
Packit 577717
     .udesc  = "Request: combination of DMND_RFO | PF_L2_RFO | PF_L3_RFO",
Packit 577717
     .uequiv = "DMND_RFO:PF_L2_RFO:PF_L3_RFO",
Packit 577717
     .ucode = 0x1012200,
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid = 0,
Packit 577717
   },
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  = "SUPPLIER_NONE",
Packit 577717
     .udesc  = "Supplier: counts number of times supplier information is not available",
Packit 577717
     .ucode  = 1ULL << (17+8),
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "NO_SUPP",
Packit 577717
     .udesc  = "Supplier: counts number of times supplier information is not available",
Packit 577717
     .ucode  = 1ULL << (17+8),
Packit 577717
     .uequiv = "SUPPLIER_NONE",
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_HITM",
Packit 577717
     .udesc  = "Supplier: counts L3 hits in M-state (initial lookup)",
Packit 577717
     .ucode  = 1ULL << (18+8),
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_HITE",
Packit 577717
     .udesc  = "Supplier: counts L3 hits in E-state",
Packit 577717
     .ucode  = 1ULL << (19+8),
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_HITS",
Packit 577717
     .udesc  = "Supplier: counts L3 hits in S-state",
Packit 577717
     .ucode  = 1ULL << (20+8),
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_HITF",
Packit 577717
     .udesc  = "Supplier: counts L3 hits in F-state",
Packit 577717
     .ucode  = 1ULL << (21+8),
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_HITMES",
Packit 577717
     .udesc  = "Supplier: counts L3 hits in any state (M, E, S)",
Packit 577717
     .ucode  = 0x3ULL << (18+8),
Packit 577717
     .uequiv = "L3_HITM:L3_HITE:L3_HITS",
Packit 577717
     .umodel = PFM_PMU_INTEL_SKL,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_HIT",
Packit 577717
     .udesc  = "Alias for L3_HITMES",
Packit 577717
     .ucode  = 0x3ULL << (18+8),
Packit 577717
     .uequiv = "L3_HITMES",
Packit 577717
     .umodel = PFM_PMU_INTEL_SKL,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_HITMESF",
Packit 577717
     .udesc  = "Supplier: counts L3 hits in any state (M, E, S, F)",
Packit 577717
     .ucode  = 0xfULL << (18+8),
Packit 577717
     .uequiv = "L3_HITM:L3_HITE:L3_HITS:L3_HITF",
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_HIT",
Packit 577717
     .udesc  = "Alias for L3_HITMES",
Packit 577717
     .ucode  = 0x3ULL << (18+8),
Packit 577717
     .uequiv = "L3_HITMESF",
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
Packit 577717
   { .uname  = "L4_HIT_LOCAL_L4",
Packit 577717
     .udesc  = "Supplier: L4 local hit",
Packit 577717
     .ucode  = 0x1ULL << (22+8),
Packit 577717
     .umodel = PFM_PMU_INTEL_SKL,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_MISS_LOCAL",
Packit 577717
     .udesc  = "Supplier: counts L3 misses to local DRAM",
Packit 577717
     .ucode  = 1ULL << (26+8),
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_MISS_MISS_REMOTE_HOP1_DRAM",
Packit 577717
     .udesc  = "Supplier: counts L3 misses to remote DRAM with 1 hop",
Packit 577717
     .ucode  = 1ULL << (28+8),
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_MISS",
Packit 577717
     .udesc  = "Supplier: counts L3 misses",
Packit 577717
     .ucode  = 0x1ULL << (26+8),
Packit 577717
     .uequiv = "L3_MISS_LOCAL",
Packit 577717
     .umodel = PFM_PMU_INTEL_SKL,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_MISS",
Packit 577717
     .udesc  = "Supplier: counts L3 misses (local or remote)",
Packit 577717
     .ucode  = 0xfULL << (26+8),
Packit 577717
     .uequiv = "L3_MISS_LOCAL",
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .grpid  = 1,
Packit 577717
   },
Packit 577717
Packit 577717
   { .uname  = "SPL_HIT",
Packit 577717
     .udesc  = "Snoop: counts L3 supplier hit",
Packit 577717
     .ucode  = 0x1ULL << (30+8),
Packit 577717
     .umodel = PFM_PMU_INTEL_SKL,
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_NOT_NEEDED",
Packit 577717
     .udesc  = "Snoop: counts the number of times no snoop was needed to satisfy the request",
Packit 577717
     .ucode  = 1ULL << (32+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_NO_FWD",
Packit 577717
     .udesc  = "Snoop: counts number of times a snoop was needed and it hit in at leas one snooped cache",
Packit 577717
     .ucode  = 1ULL << (34+8),
Packit 577717
     .grpid  = 2,
Packit 577717
   },
Packit 577717
   { .uname  = "SNP_HIT_WITH_FWD",
Packit 577717
     .udesc  = "Snoop: counts number of times a snoop was needed and data was forwarded from a remote socket",
Packit 577717
     .ucode  = 1ULL << (35+8),
Packit 577717
     .grpid  = 2,
Packit 577717
   },
Packit 577717
   { .uname  = "SNP_HITM",
Packit 577717
     .udesc  = "Snoop: counts number of times a snoop was needed and it hitM-ed in local or remote cache",
Packit 577717
     .ucode = 1ULL << (36+8),
Packit 577717
     .grpid = 2,
Packit 577717
   },
Packit 577717
   { .uname  = "SNP_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 = 0x7fULL << (31+8),
Packit 577717
     .uequiv = "SNP_NONE:SNP_NOT_NEEDED:SNP_MISS:SNP_HIT_NO_FWD:SNP_HIT_WITH_FWD:SNP_HITM:SNP_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 skl_hle_retired[]={
Packit 577717
  { .uname = "START",
Packit 577717
    .udesc  = "Number of times an HLE execution started",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "COMMIT",
Packit 577717
    .udesc  = "Number of times an HLE execution successfully committed",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORTED",
Packit 577717
    .udesc  = "Number of times an HLE execution aborted due to any reasons (multiple categories may count as one) (Precise Event)",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "ABORTED_MEM",
Packit 577717
    .udesc  = "Number of times an HLE execution aborted due to various memory events",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORTED_TMR",
Packit 577717
    .udesc  = "Number of times an HLE execution aborted due to hardware timer expiration",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORTED_UNFRIENDLY",
Packit 577717
    .udesc  = "Number of times an HLE execution aborted due to HLE-unfriendly instructions and certain events such as AD-assists",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORTED_MEMTYPE",
Packit 577717
    .udesc  = "Number of times an HLE execution aborted due to incompatible memory type",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORTED_EVENTS",
Packit 577717
    .udesc  = "Number of times an HLE execution aborted due to none of the other 4 reasons (e.g., interrupt)",
Packit 577717
    .ucode  = 0x8000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_rtm_retired[]={
Packit 577717
  { .uname = "START",
Packit 577717
    .udesc  = "Number of times an RTM execution started",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
  },
Packit 577717
  { .uname = "COMMIT",
Packit 577717
    .udesc  = "Number of times an RTM execution successfully committed",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORTED",
Packit 577717
    .udesc  = "Number of times an RTM execution aborted due to any reasons (multiple categories may count as one) (Precise Event)",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
  },
Packit 577717
  { .uname = "ABORTED_MEM",
Packit 577717
    .udesc  = "Number of times an RTM execution aborted due to various memory events",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORTED_TMR",
Packit 577717
    .udesc  = "Number of times an RTM execution aborted due to uncommon conditions",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORTED_UNFRIENDLY",
Packit 577717
    .udesc  = "Number of times an RTM execution aborted due to RTM-unfriendly instructions",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORTED_MEMTYPE",
Packit 577717
    .udesc  = "Number of times an RTM execution aborted due to incompatible memory type",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORTED_EVENTS",
Packit 577717
    .udesc  = "Number of times an RTM execution aborted due to none of the other 4 reasons (e.g., interrupt)",
Packit 577717
    .ucode  = 0x8000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_tx_mem[]={
Packit 577717
  { .uname = "ABORT_CONFLICT",
Packit 577717
    .udesc  = "Number of times a transactional abort was signaled due to data conflict on a transactionally accessed address",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORT_CAPACITY",
Packit 577717
    .udesc  = "Number of times a transactional abort was signaled due to data capacity limitation",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORT_HLE_STORE_TO_ELIDED_LOCK",
Packit 577717
    .udesc  = "Number of times a HLE transactional execution aborted due to a non xrelease prefixed instruction writing to an elided lock in the elision buffer",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORT_HLE_ELISION_BUFFER_NOT_EMPTY",
Packit 577717
    .udesc  = "Number of times a HLE transactional execution aborted due to NoAllocatedElisionBuffer being non-zero",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORT_HLE_ELISION_BUFFER_MISMATCH",
Packit 577717
    .udesc  = "Number of times a HLE transaction execution aborted due to xrelease lock not satisfying the address and value requirements in the elision buffer",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORT_HLE_ELISION_BUFFER_UNSUPPORTED_ALIGNMENT",
Packit 577717
    .udesc  = "Number of times a HLE transaction execution aborted due to an unsupported read alignment from the elision buffer",
Packit 577717
    .ucode  = 0x2000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "ABORT_HLE_ELISION_BUFFER_FULL",
Packit 577717
    .udesc  = "Number of times a HLE clock could not be elided due to ElisionBufferAvailable being zero",
Packit 577717
    .ucode  = 0x4000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_tx_exec[]={
Packit 577717
  { .uname = "MISC1",
Packit 577717
    .udesc  = "Number of times a class of instructions that may cause a transactional abort was executed. Since this is the count of execution, it may not always cause a transactional abort",
Packit 577717
    .ucode  = 0x100,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "MISC2",
Packit 577717
    .udesc  = "Number of times a class of instructions that may cause a transactional abort was executed inside a transactional region",
Packit 577717
    .ucode  = 0x200,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "MISC3",
Packit 577717
    .udesc  = "Number of times an instruction execution caused the supported nest count to be exceeded",
Packit 577717
    .ucode  = 0x400,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "MISC4",
Packit 577717
    .udesc  = "Number of times an instruction a xbegin instruction was executed inside HLE transactional region",
Packit 577717
    .ucode  = 0x800,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
  { .uname = "MISC5",
Packit 577717
    .udesc  = "Number of times an instruction with HLE xacquire prefix was executed inside a RTM transactional region",
Packit 577717
    .ucode  = 0x1000,
Packit 577717
    .uflags = INTEL_X86_NCOMBO,
Packit 577717
  },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_offcore_requests_outstanding[]={
Packit 577717
   { .uname  = "ALL_DATA_RD_CYCLES",
Packit 577717
     .udesc  = "Cycles with cacheable data read transactions in the superQ (use with HT off only)",
Packit 577717
     .uequiv = "ALL_DATA_RD:c=1",
Packit 577717
     .ucode = 0x800 | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_CODE_RD_CYCLES",
Packit 577717
     .udesc  = "Cycles with demand code reads transactions in the superQ (use with HT off only)",
Packit 577717
     .uequiv = "DEMAND_CODE_RD:c=1",
Packit 577717
     .ucode = 0x200 | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES_WITH_DEMAND_CODE_RD",
Packit 577717
     .udesc  = "Cycles with demand code reads transactions in the superQ (use with HT off only)",
Packit 577717
     .uequiv = "DEMAND_CODE_RD:c=1",
Packit 577717
     .ucode = 0x200 | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_DATA_RD_CYCLES",
Packit 577717
     .udesc  = "Cycles with demand data read transactions in the superQ (use with HT off only)",
Packit 577717
     .uequiv = "DEMAND_DATA_RD:c=1",
Packit 577717
     .ucode = 0x100 | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES_WITH_DEMAND_DATA_RD",
Packit 577717
     .udesc  = "Cycles with demand data read transactions in the superQ (use with HT off only)",
Packit 577717
     .uequiv = "DEMAND_DATA_RD:c=1",
Packit 577717
     .ucode = 0x100 | (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "ALL_DATA_RD",
Packit 577717
     .udesc  = "Cacheable data read transactions in the superQ every cycle (use with HT off only)",
Packit 577717
     .ucode = 0x800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_CODE_RD",
Packit 577717
     .udesc  = "Code read transactions in the superQ every cycle (use with HT off only)",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_DATA_RD",
Packit 577717
     .udesc  = "Demand data read transactions in the superQ every cycle (use with HT off only)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_DATA_RD_GE_6",
Packit 577717
     .udesc  = "Cycles with at lesat 6 offcore outstanding demand data read requests in the uncore queue",
Packit 577717
     .uequiv = "DEMAND_DATA_RD:c=6",
Packit 577717
     .ucode  = 0x100 | (6 << INTEL_X86_CMASK_BIT), /* cnt=1 */
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_RFO",
Packit 577717
     .udesc  = "Outstanding RFO (store) transactions in the superQ every cycle (use with HT off only)",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "DEMAND_RFO_CYCLES",
Packit 577717
     .udesc  = "Cycles with outstanding RFO (store) transactions in the superQ (use with HT off only)",
Packit 577717
     .uequiv = "DEMAND_RFO:c=1",
Packit 577717
     .ucode = 0x400 | (0x1 << INTEL_X86_CMASK_BIT), /* cnt=1 */
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES_WITH_DEMAND_RFO",
Packit 577717
     .udesc  = "Cycles with outstanding RFO (store) transactions in the superQ (use with HT off only)",
Packit 577717
     .uequiv = "DEMAND_RFO:c=1",
Packit 577717
     .ucode = 0x400 | (0x1 << INTEL_X86_CMASK_BIT), /* cnt=1 */
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_MISS_DEMAND_DATA_RD",
Packit 577717
     .udesc  = "Number of offcore outstanding demand data read requests missing the L3 cache every cycle",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "L3_MISS_DEMAND_DATA_RD_GE_6",
Packit 577717
     .udesc  = "Number of cycles in which at least 6 demand data read requests missing the L3",
Packit 577717
     .ucode = 0x1000 | (0x6 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES_WITH_L3_MISS_DEMAND_DATA_RD",
Packit 577717
     .udesc  = "Cycles with at least 1 Demand Data Read requests who miss L3 cache in the superQ",
Packit 577717
     .ucode = 0x1000 | (0x1 << INTEL_X86_CMASK_BIT), /* cnt=1 */
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_ild_stall[]={
Packit 577717
   { .uname  = "LCP",
Packit 577717
     .udesc  = "Stall caused by changing prefix length of the instruction",
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 skl_lsd[]={
Packit 577717
   { .uname  = "UOPS",
Packit 577717
     .udesc  = "Number of uops delivered by the Loop Stream Detector (LSD)",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_DFL | INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES_4_UOPS",
Packit 577717
     .udesc  = "Number of cycles the LSD delivered 4 uops which did not come from the decoder",
Packit 577717
     .ucode = 0x100| (0x4 << INTEL_X86_CMASK_BIT),
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "CYCLES_ACTIVE",
Packit 577717
     .udesc  = "Number of cycles the LSD delivered uops which did not come from the decoder",
Packit 577717
     .ucode = 0x100| (0x1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_dsb2mite_switches[]={
Packit 577717
   { .uname  = "PENALTY_CYCLES",
Packit 577717
     .udesc  = "Number of DSB to MITE switch true penalty cycles",
Packit 577717
     .ucode = 0x0200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_ept[]={
Packit 577717
   { .uname  = "WALK_DURATION",
Packit 577717
     .udesc  = "Cycles for an extended page table walk of any type",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
   { .uname  = "WALK_PENDING",
Packit 577717
     .udesc  = "Cycles for an extended page table walk of any type",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uequiv = "WALK_DURATION",
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_arith[]={
Packit 577717
   { .uname  = "DIVIDER_ACTIVE",
Packit 577717
     .udesc  = "Cycles when divider is busy executing divide or square root operations on integers or floating-points",
Packit 577717
     .ucode  = 0x100 | (1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uflags = INTEL_X86_DFL | INTEL_X86_NCOMBO,
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
   },
Packit 577717
   { .uname  = "FPU_DIV_ACTIVE",
Packit 577717
     .udesc  = "Cycles when divider is busy executing divide or square root operations on integers or floating-points",
Packit 577717
     .ucode  = 0x100 | (1 << INTEL_X86_CMASK_BIT),
Packit 577717
     .uequiv = "DIVIDER_ACTIVE",
Packit 577717
     .uflags = INTEL_X86_NCOMBO,
Packit 577717
     .modhw  = _INTEL_X86_ATTR_C,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_fp_arith[]={
Packit 577717
   { .uname  = "SCALAR_DOUBLE",
Packit 577717
     .udesc  = "Number of scalar double precision floating-point arithmetic instructions (multiply by 1 to get flops)",
Packit 577717
     .ucode = 0x0100,
Packit 577717
   },
Packit 577717
   { .uname  = "SCALAR_SINGLE",
Packit 577717
     .udesc  = "Number of scalar single precision floating-point arithmetic instructions (multiply by 1 to get flops)",
Packit 577717
     .ucode = 0x0200,
Packit 577717
   },
Packit 577717
   { .uname  = "128B_PACKED_DOUBLE",
Packit 577717
     .udesc  = "Number of scalar 128-bit packed double precision floating-point arithmetic instructions (multiply by 2 to get flops)",
Packit 577717
     .ucode = 0x0400,
Packit 577717
   },
Packit 577717
   { .uname  = "128B_PACKED_SINGLE",
Packit 577717
     .udesc  = "Number of scalar 128-bit packed single precision floating-point arithmetic instructions (multiply by 4 to get flops)",
Packit 577717
     .ucode = 0x0800,
Packit 577717
   },
Packit 577717
   { .uname  = "256B_PACKED_DOUBLE",
Packit 577717
     .udesc  = "Number of scalar 256-bit packed double precision floating-point arithmetic instructions (multiply by 4 to get flops)",
Packit 577717
     .ucode = 0x1000,
Packit 577717
   },
Packit 577717
   { .uname  = "256B_PACKED_SINGLE",
Packit 577717
     .udesc  = "Number of scalar 256-bit packed single precision floating-point arithmetic instructions (multiply by 8 to get flops)",
Packit 577717
     .ucode = 0x2000,
Packit 577717
   },
Packit 577717
   { .uname  = "512B_PACKED_DOUBLE",
Packit 577717
     .udesc  = "Number of scalar 512-bit packed double precision floating-point arithmetic instructions (multiply by 8 to get flops)",
Packit 577717
     .ucode = 0x4000,
Packit 577717
   },
Packit 577717
   { .uname  = "512B_PACKED_SINGLE",
Packit 577717
     .udesc  = "Number of scalar 512-bit packed single precision floating-point arithmetic instructions (multiply by 16 to get flops)",
Packit 577717
     .ucode = 0x8000,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_exe_activity[]={
Packit 577717
   { .uname  = "1_PORTS_UTIL",
Packit 577717
     .udesc  = "Cycles with 1 uop executing across all ports and Reservation Station is not empty",
Packit 577717
     .ucode = 0x0200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "2_PORTS_UTIL",
Packit 577717
     .udesc  = "Cycles with 2 uops executing across all ports and Reservation Station is not empty",
Packit 577717
     .ucode = 0x0400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "3_PORTS_UTIL",
Packit 577717
     .udesc  = "Cycles with 3 uops executing across all ports and Reservation Station is not empty",
Packit 577717
     .ucode = 0x0800,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "4_PORTS_UTIL",
Packit 577717
     .udesc  = "Cycles with 4 uops executing across all ports and Reservation Station is not empty",
Packit 577717
     .ucode = 0x1000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "BOUND_ON_STORES",
Packit 577717
     .udesc  = "Cycles where the store buffer is full and no outstanding load",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "EXE_BOUND_0_PORTS",
Packit 577717
     .udesc  = "Cycles where no uop is executed and the Reservation Station was not empty",
Packit 577717
     .ucode = 0x0100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_frontend_retired[]={
Packit 577717
   { .uname  = "DSB_MISS",
Packit 577717
     .udesc  = "Retired instructions experiencing decode stream buffer (DSB) miss",
Packit 577717
     .ucode = 0x11 << 8,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "ITLB_MISS",
Packit 577717
     .udesc  = "Retired instructions experiencing ITLB true miss",
Packit 577717
     .ucode  = 0x14 << 8,
Packit 577717
     .uflags = INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "L1I_MISS",
Packit 577717
     .udesc  = "Retired instructions experiencing L1I cache true miss",
Packit 577717
     .ucode = 0x12 << 8,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "L2_MISS",
Packit 577717
     .udesc  = "Retired instructions experiencing instruction L2 cache true miss",
Packit 577717
     .ucode = 0x13 << 8,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "STLB_MISS",
Packit 577717
     .udesc  = "Retired instructions experiencing STLB (2nd level TLB) true miss",
Packit 577717
     .ucode  = 0x15 << 8,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "IDQ_4_BUBBLES",
Packit 577717
     .udesc  = "Retired instructions after an interval where the front-end did not deliver any uops (4 bubbles) for a period determined by the fe_thres modifier and which was not interrupted by a back-end stall",
Packit 577717
     .ucode  = (4 << 20 | 0x6) << 8,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_FETHR | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "IDQ_3_BUBBLES",
Packit 577717
     .udesc  = "Counts instructions retired after an interval where the front-end did not deliver more than 1 uop (3 bubbles) for a period determined by the fe_thres modifier and which was not interrupted by a back-end stall",
Packit 577717
     .ucode  = (3 << 20 | 0x6) << 8,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_FETHR | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "IDQ_2_BUBBLES",
Packit 577717
     .udesc  = "Counts instructions retired after an interval where the front-end did not deliver more than 2 uops (2 bubbles) for a period determined by the fe_thres modifier and which was not interrupted by a back-end stall",
Packit 577717
     .ucode  = (2 << 20 | 0x6) << 8,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_FETHR | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
   { .uname  = "IDQ_1_BUBBLE",
Packit 577717
     .udesc  = "Counts instructions retired after an interval where the front-end did not deliver more than 3 uops (1 bubble) for a period determined by the fe_thres modifier and which was not interrupted by a back-end stall",
Packit 577717
     .ucode  = (1 << 20 | 0x6) << 8,
Packit 577717
     .uflags= INTEL_X86_NCOMBO | INTEL_X86_FETHR | INTEL_X86_PEBS,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_hw_interrupts[]={
Packit 577717
   { .uname  = "RECEIVED",
Packit 577717
     .udesc  = "Number of hardware interrupts received by the processor",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_offcore_requests_buffer[]={
Packit 577717
   { .uname  = "SQ_FULL",
Packit 577717
     .udesc  = "Number of requests for which the offcore buffer (SQ) is full",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_mem_load_misc_retired[]={
Packit 577717
   { .uname  = "UC",
Packit 577717
     .udesc  = "Number of uncached load retired",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_PEBS | INTEL_X86_DFL,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_idi_misc[]={
Packit 577717
   { .uname  = "WB_UPGRADE",
Packit 577717
     .udesc  = "Counts number of cache lines that are allocated and written back to L3 with the intention that they are more likely to be reused shortly",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "WB_DOWNGRADE",
Packit 577717
     .udesc  = "Counts number of cache lines that are dropped and not written back to L3 as they are deemed to be less likely to be reused shortly",
Packit 577717
     .ucode = 0x400,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_core_power[]={
Packit 577717
   { .uname  = "LVL0_TURBO_LICENSE",
Packit 577717
     .udesc  = "Number of core cycles where the core was running in a manner where Turbo may be clipped to the Non-AVX turbo schedule.",
Packit 577717
     .ucode = 0x700,
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LVL1_TURBO_LICENSE",
Packit 577717
     .udesc  = "Number of core cycles where the core was running in a manner where Turbo may be clipped to the AVX2 turbo schedule.",
Packit 577717
     .ucode = 0x1800,
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "LVL2_TURBO_LICENSE",
Packit 577717
     .udesc  = "Number of core cycles where the core was running in a manner where Turbo may be clipped to the AVX512 turbo schedule.",
Packit 577717
     .ucode = 0x2000,
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "THROTTLE",
Packit 577717
     .udesc  = "Number of core cycles where the core was throttled due to a pending power level request.",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .umodel = PFM_PMU_INTEL_SKX,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_umask_t skl_sw_prefetch[]={
Packit 577717
   { .uname  = "NTA",
Packit 577717
     .udesc  = "Number of prefetch.nta instructions executed",
Packit 577717
     .ucode = 0x100,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "T0",
Packit 577717
     .udesc  = "Number of prefetch.t0 instructions executed",
Packit 577717
     .ucode = 0x200,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "T1_T2",
Packit 577717
     .udesc  = "Number prefetch.t1 or prefetch.t2 instructions executed",
Packit 577717
     .ucode = 0x4000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
   { .uname  = "PREFETCHW",
Packit 577717
     .udesc  = "Number prefetch.w instructions executed",
Packit 577717
     .ucode = 0x8000,
Packit 577717
     .uflags= INTEL_X86_NCOMBO,
Packit 577717
   },
Packit 577717
};
Packit 577717
Packit 577717
static const intel_x86_entry_t intel_skl_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_V4_ATTRS,
Packit 577717
    .cntmsk = 0x20000000full,
Packit 577717
    .code = 0x3c,
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   = "INSTRUCTION_RETIRED",
Packit 577717
    .desc   = "Number of instructions at retirement",
Packit 577717
    .modmsk = INTEL_V4_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_V4_ATTRS,
Packit 577717
    .equiv = "INSTRUCTION_RETIRED",
Packit 577717
    .cntmsk = 0x10000000full,
Packit 577717
    .code = 0xc0,
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_V4_ATTRS,
Packit 577717
    .equiv = "BR_INST_RETIRED:ALL_BRANCHES",
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .code = 0xc4,
Packit 577717
  },
Packit 577717
  { .name   = "MISPREDICTED_BRANCH_RETIRED",
Packit 577717
    .desc   = "Count mispredicted branch instructions at retirement. Specifically, this event counts at retirement of the last micro-op of a branch instruction in the architectural path of the execution and experienced misprediction in the branch prediction hardware",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .equiv = "BR_MISP_RETIRED:ALL_BRANCHES",
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .code = 0xc5,
Packit 577717
  },
Packit 577717
  { .name = "BACLEARS",
Packit 577717
    .desc   = "Branch re-steered",
Packit 577717
    .code = 0xe6,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_baclears),
Packit 577717
    .umasks  = skl_baclears
Packit 577717
  },
Packit 577717
  { .name = "BR_INST_RETIRED",
Packit 577717
    .desc   = "Branch instructions retired (Precise Event)",
Packit 577717
    .code = 0xc4,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_br_inst_retired),
Packit 577717
    .umasks  = skl_br_inst_retired
Packit 577717
  },
Packit 577717
  { .name = "BR_MISP_RETIRED",
Packit 577717
    .desc   = "Mispredicted retired branches (Precise Event)",
Packit 577717
    .code = 0xc5,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_br_misp_retired),
Packit 577717
    .umasks  = skl_br_misp_retired
Packit 577717
  },
Packit 577717
  { .name = "CPU_CLK_THREAD_UNHALTED",
Packit 577717
    .desc   = "Count core clock cycles whenever the clock signal on the specific core is running (not halted)",
Packit 577717
    .code = 0x3c,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_cpu_clk_thread_unhalted),
Packit 577717
    .umasks  = skl_cpu_clk_thread_unhalted
Packit 577717
  },
Packit 577717
  { .name = "CPU_CLK_UNHALTED",
Packit 577717
    .desc   = "Count core clock cycles whenever the clock signal on the specific core is running (not halted)",
Packit 577717
    .code = 0x3c,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .equiv = "CPU_CLK_THREAD_UNHALTED",
Packit 577717
  },
Packit 577717
  { .name = "CYCLE_ACTIVITY",
Packit 577717
    .desc   = "Stalled cycles",
Packit 577717
    .code = 0xa3,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_cycle_activity),
Packit 577717
    .umasks  = skl_cycle_activity
Packit 577717
  },
Packit 577717
  { .name = "DTLB_LOAD_MISSES",
Packit 577717
    .desc   = "Data TLB load misses",
Packit 577717
    .code = 0x8,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_dtlb_load_misses),
Packit 577717
    .umasks  = skl_dtlb_load_misses
Packit 577717
  },
Packit 577717
  { .name = "DTLB_STORE_MISSES",
Packit 577717
    .desc = "Data TLB store misses",
Packit 577717
    .code = 0x49,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_dtlb_load_misses),
Packit 577717
    .umasks  = skl_dtlb_load_misses /* shared */
Packit 577717
  },
Packit 577717
  { .name = "FP_ASSIST",
Packit 577717
    .desc = "X87 floating-point assists",
Packit 577717
    .code = 0xca,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_fp_assist),
Packit 577717
    .umasks  = skl_fp_assist
Packit 577717
  },
Packit 577717
  { .name = "HLE_RETIRED",
Packit 577717
    .desc = "HLE execution (Precise Event)",
Packit 577717
    .code = 0xc8,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_hle_retired),
Packit 577717
    .umasks  = skl_hle_retired
Packit 577717
  },
Packit 577717
  { .name = "ICACHE_16B",
Packit 577717
    .desc = "Instruction Cache",
Packit 577717
    .code = 0x80,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_icache_16b),
Packit 577717
    .umasks  = skl_icache_16b
Packit 577717
  },
Packit 577717
  { .name = "ICACHE_64B",
Packit 577717
    .desc = "Instruction Cache",
Packit 577717
    .code = 0x83,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_icache_64b),
Packit 577717
    .umasks  = skl_icache_64b
Packit 577717
  },
Packit 577717
  { .name = "IDQ",
Packit 577717
    .desc   = "IDQ operations",
Packit 577717
    .code = 0x79,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_idq),
Packit 577717
    .umasks  = skl_idq
Packit 577717
  },
Packit 577717
  { .name = "IDQ_UOPS_NOT_DELIVERED",
Packit 577717
    .desc   = "Uops not delivered",
Packit 577717
    .code = 0x9c,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_idq_uops_not_delivered),
Packit 577717
    .umasks  = skl_idq_uops_not_delivered
Packit 577717
  },
Packit 577717
  { .name = "INST_RETIRED",
Packit 577717
    .desc = "Number of instructions retired (Precise Event)",
Packit 577717
    .code = 0xc0,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_inst_retired),
Packit 577717
    .umasks  = skl_inst_retired
Packit 577717
  },
Packit 577717
  { .name = "INT_MISC",
Packit 577717
    .desc = "Miscellaneous interruptions",
Packit 577717
    .code = 0xd,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_int_misc),
Packit 577717
    .umasks  = skl_int_misc
Packit 577717
  },
Packit 577717
  { .name = "ITLB",
Packit 577717
    .desc   = "Instruction TLB",
Packit 577717
    .code = 0xae,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_itlb),
Packit 577717
    .umasks  = skl_itlb
Packit 577717
  },
Packit 577717
  { .name = "ITLB_MISSES",
Packit 577717
    .desc = "Instruction TLB misses",
Packit 577717
    .code = 0x85,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_itlb_misses),
Packit 577717
    .umasks  = skl_itlb_misses
Packit 577717
  },
Packit 577717
  { .name = "L1D",
Packit 577717
    .desc   = "L1D cache",
Packit 577717
    .code = 0x51,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_l1d),
Packit 577717
    .umasks  = skl_l1d
Packit 577717
  },
Packit 577717
  { .name = "L1D_PEND_MISS",
Packit 577717
    .desc   = "L1D pending misses",
Packit 577717
    .code = 0x48,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_l1d_pend_miss),
Packit 577717
    .umasks  = skl_l1d_pend_miss
Packit 577717
  },
Packit 577717
  { .name = "L2_LINES_IN",
Packit 577717
    .desc   = "L2 lines allocated",
Packit 577717
    .code = 0xf1,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_l2_lines_in),
Packit 577717
    .umasks  = skl_l2_lines_in
Packit 577717
  },
Packit 577717
  { .name = "L2_LINES_OUT",
Packit 577717
    .desc   = "L2 lines evicted",
Packit 577717
    .code = 0xf2,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_l2_lines_out),
Packit 577717
    .umasks  = skl_l2_lines_out
Packit 577717
  },
Packit 577717
  { .name = "L2_RQSTS",
Packit 577717
    .desc   = "L2 requests",
Packit 577717
    .code = 0x24,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_l2_rqsts),
Packit 577717
    .umasks  = skl_l2_rqsts
Packit 577717
  },
Packit 577717
  { .name = "L2_TRANS",
Packit 577717
    .desc   = "L2 transactions",
Packit 577717
    .code = 0xf0,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_l2_trans),
Packit 577717
    .umasks  = skl_l2_trans
Packit 577717
  },
Packit 577717
  { .name = "LD_BLOCKS",
Packit 577717
    .desc   = "Blocking loads",
Packit 577717
    .code = 0x3,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_ld_blocks),
Packit 577717
    .umasks  = skl_ld_blocks
Packit 577717
  },
Packit 577717
  { .name = "LD_BLOCKS_PARTIAL",
Packit 577717
    .desc   = "Partial load blocks",
Packit 577717
    .code = 0x7,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_ld_blocks_partial),
Packit 577717
    .umasks  = skl_ld_blocks_partial
Packit 577717
  },
Packit 577717
  { .name = "LOAD_HIT_PRE",
Packit 577717
    .desc   = "Load dispatches",
Packit 577717
    .code = 0x4c,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_load_hit_pre),
Packit 577717
    .umasks  = skl_load_hit_pre
Packit 577717
  },
Packit 577717
  { .name = "LOCK_CYCLES",
Packit 577717
    .desc   = "Locked cycles in L1D and L2",
Packit 577717
    .code = 0x63,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_lock_cycles),
Packit 577717
    .umasks  = skl_lock_cycles
Packit 577717
  },
Packit 577717
  { .name = "LONGEST_LAT_CACHE",
Packit 577717
    .desc   = "L3 cache",
Packit 577717
    .code = 0x2e,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_longest_lat_cache),
Packit 577717
    .umasks  = skl_longest_lat_cache
Packit 577717
  },
Packit 577717
  { .name = "MACHINE_CLEARS",
Packit 577717
    .desc   = "Machine clear asserted",
Packit 577717
    .code = 0xc3,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_machine_clears),
Packit 577717
    .umasks  = skl_machine_clears
Packit 577717
  },
Packit 577717
  { .name = "MEM_LOAD_L3_HIT_RETIRED",
Packit 577717
    .desc   = "L3 hit load uops retired (Precise Event)",
Packit 577717
    .code = 0xd2,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_mem_load_l3_hit_retired),
Packit 577717
    .umasks  = skl_mem_load_l3_hit_retired
Packit 577717
  },
Packit 577717
  { .name = "MEM_LOAD_UOPS_L3_HIT_RETIRED",
Packit 577717
    .desc   = "L3 hit load uops retired (Precise Event)",
Packit 577717
    .equiv = "MEM_LOAD_L3_HIT_RETIRED",
Packit 577717
    .code = 0xd2,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_mem_load_l3_hit_retired),
Packit 577717
    .umasks  = skl_mem_load_l3_hit_retired
Packit 577717
  },
Packit 577717
  { .name = "MEM_LOAD_UOPS_L3_MISS_RETIRED",
Packit 577717
    .desc   = "L3 miss load uops retired (Precise Event)",
Packit 577717
    .code = 0xd3,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_mem_load_l3_miss_retired),
Packit 577717
    .umasks  = skl_mem_load_l3_miss_retired
Packit 577717
  },
Packit 577717
  { .name = "MEM_LOAD_UOPS_LLC_HIT_RETIRED",
Packit 577717
    .desc   = "L3 hit load uops retired (Precise Event)",
Packit 577717
    .equiv = "MEM_LOAD_L3_HIT_RETIRED",
Packit 577717
    .code = 0xd2,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_mem_load_l3_hit_retired),
Packit 577717
    .umasks  = skl_mem_load_l3_hit_retired
Packit 577717
  },
Packit 577717
  { .name = "MEM_LOAD_RETIRED",
Packit 577717
    .desc = "Retired load uops (Precise Event)",
Packit 577717
    .code = 0xd1,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_mem_load_retired),
Packit 577717
    .umasks  = skl_mem_load_retired
Packit 577717
  },
Packit 577717
  { .name = "MEM_LOAD_UOPS_RETIRED",
Packit 577717
    .desc = "Retired load uops (Precise Event)",
Packit 577717
    .code = 0xd1,
Packit 577717
    .equiv = "MEM_LOAD_RETIRED",
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_mem_load_retired),
Packit 577717
    .umasks  = skl_mem_load_retired
Packit 577717
  },
Packit 577717
  { .name = "MEM_TRANS_RETIRED",
Packit 577717
    .desc   = "Memory transactions retired (Precise Event)",
Packit 577717
    .code = 0xcd,
Packit 577717
    .cntmsk = 0x8,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS | _INTEL_X86_ATTR_LDLAT,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_mem_trans_retired),
Packit 577717
    .umasks  = skl_mem_trans_retired
Packit 577717
  },
Packit 577717
  { .name = "MEM_INST_RETIRED",
Packit 577717
    .desc = "Memory instructions retired (Precise Event)",
Packit 577717
    .code = 0xd0,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_mem_inst_retired),
Packit 577717
    .umasks  = skl_mem_inst_retired
Packit 577717
  },
Packit 577717
  { .name = "MEM_UOPS_RETIRED",
Packit 577717
    .desc = "Memory instructions retired (Precise Event)",
Packit 577717
    .code = 0xd0,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .equiv = "MEM_INST_RETIRED",
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_mem_inst_retired),
Packit 577717
    .umasks  = skl_mem_inst_retired
Packit 577717
  },
Packit 577717
  { .name = "MISALIGN_MEM_REF",
Packit 577717
    .desc = "Misaligned memory references",
Packit 577717
    .code = 0x5,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_misalign_mem_ref),
Packit 577717
    .umasks  = skl_misalign_mem_ref
Packit 577717
  },
Packit 577717
  { .name = "MOVE_ELIMINATION",
Packit 577717
    .desc = "Move Elimination",
Packit 577717
    .code = 0x58,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_move_elimination),
Packit 577717
    .umasks  = skl_move_elimination
Packit 577717
  },
Packit 577717
  { .name = "OFFCORE_REQUESTS",
Packit 577717
    .desc = "Demand Data Read requests sent to uncore",
Packit 577717
    .code = 0xb0,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_offcore_requests),
Packit 577717
    .umasks  = skl_offcore_requests
Packit 577717
  },
Packit 577717
  { .name = "OTHER_ASSISTS",
Packit 577717
    .desc = "Software assist",
Packit 577717
    .code = 0xc1,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_other_assists),
Packit 577717
    .umasks  = skl_other_assists
Packit 577717
  },
Packit 577717
  { .name = "RESOURCE_STALLS",
Packit 577717
    .desc = "Cycles Allocation is stalled due to Resource Related reason",
Packit 577717
    .code = 0xa2,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_resource_stalls),
Packit 577717
    .umasks  = skl_resource_stalls
Packit 577717
  },
Packit 577717
  { .name = "ROB_MISC_EVENTS",
Packit 577717
    .desc = "ROB miscellaneous events",
Packit 577717
    .code = 0xcc,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_rob_misc_events),
Packit 577717
    .umasks  = skl_rob_misc_events
Packit 577717
  },
Packit 577717
  { .name = "RS_EVENTS",
Packit 577717
    .desc = "Reservation Station",
Packit 577717
    .code = 0x5e,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_rs_events),
Packit 577717
    .umasks  = skl_rs_events
Packit 577717
  },
Packit 577717
  { .name = "RTM_RETIRED",
Packit 577717
    .desc = "Restricted Transaction Memory execution (Precise Event)",
Packit 577717
    .code = 0xc9,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_rtm_retired),
Packit 577717
    .umasks  = skl_rtm_retired
Packit 577717
  },
Packit 577717
  { .name = "TLB_FLUSH",
Packit 577717
    .desc   = "TLB flushes",
Packit 577717
    .code = 0xbd,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_tlb_flush),
Packit 577717
    .umasks  = skl_tlb_flush
Packit 577717
  },
Packit 577717
  { .name = "UOPS_EXECUTED",
Packit 577717
    .desc   = "Uops executed",
Packit 577717
    .code = 0xb1,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_uops_executed),
Packit 577717
    .umasks  = skl_uops_executed
Packit 577717
  },
Packit 577717
  { .name = "LSD",
Packit 577717
    .desc   = "Loop stream detector",
Packit 577717
    .code = 0xa8,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_lsd),
Packit 577717
    .umasks  = skl_lsd,
Packit 577717
  },
Packit 577717
  { .name = "UOPS_DISPATCHED_PORT",
Packit 577717
    .desc   = "Uops dispatched to specific ports",
Packit 577717
    .code = 0xa1,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_uops_dispatched_port),
Packit 577717
    .umasks  = skl_uops_dispatched_port,
Packit 577717
  },
Packit 577717
  { .name = "UOPS_DISPATCHED",
Packit 577717
    .desc   = "Uops dispatched to specific ports",
Packit 577717
    .equiv = "UOPS_DISPATCHED_PORT",
Packit 577717
    .code = 0xa1,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_uops_dispatched_port),
Packit 577717
    .umasks  = skl_uops_dispatched_port,
Packit 577717
  },
Packit 577717
  { .name = "UOPS_ISSUED",
Packit 577717
    .desc   = "Uops issued",
Packit 577717
    .code = 0xe,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_uops_issued),
Packit 577717
    .umasks  = skl_uops_issued
Packit 577717
  },
Packit 577717
  { .name = "ARITH",
Packit 577717
    .desc   = "Arithmetic uop",
Packit 577717
    .code = 0x14,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_arith),
Packit 577717
    .umasks  = skl_arith
Packit 577717
  },
Packit 577717
  { .name = "UOPS_RETIRED",
Packit 577717
    .desc = "Uops retired (Precise Event)",
Packit 577717
    .code = 0xc2,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .flags = INTEL_X86_PEBS,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_uops_retired),
Packit 577717
    .umasks  = skl_uops_retired
Packit 577717
  },
Packit 577717
  { .name = "TX_MEM",
Packit 577717
    .desc = "Transactional memory aborts",
Packit 577717
    .code = 0x54,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_tx_mem),
Packit 577717
    .umasks  = skl_tx_mem,
Packit 577717
  },
Packit 577717
  { .name = "TX_EXEC",
Packit 577717
    .desc = "Transactional execution",
Packit 577717
    .code = 0x5d,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .ngrp = 1,
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_tx_exec),
Packit 577717
    .umasks  = skl_tx_exec
Packit 577717
  },
Packit 577717
  { .name   = "OFFCORE_REQUESTS_OUTSTANDING",
Packit 577717
    .desc   = "Outstanding offcore requests",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .code = 0x60,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_offcore_requests_outstanding),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_offcore_requests_outstanding,
Packit 577717
  },
Packit 577717
  { .name   = "ILD_STALL",
Packit 577717
    .desc   = "Instruction Length Decoder stalls",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .code = 0x87,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_ild_stall),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_ild_stall,
Packit 577717
  },
Packit 577717
  { .name   = "DSB2MITE_SWITCHES",
Packit 577717
    .desc   = "Number of DSB to MITE switches",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .code = 0xab,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_dsb2mite_switches),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_dsb2mite_switches,
Packit 577717
  },
Packit 577717
  { .name   = "EPT",
Packit 577717
    .desc   = "Extended page table",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .code = 0x4f,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_ept),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_ept,
Packit 577717
  },
Packit 577717
  { .name   = "FP_ARITH",
Packit 577717
    .desc   = "Floating-point",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code = 0xc7,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_fp_arith),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_fp_arith,
Packit 577717
  },
Packit 577717
  { .name   = "EXE_ACTIVITY",
Packit 577717
    .desc   = "Execution activity",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code = 0xa6,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_exe_activity),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_exe_activity,
Packit 577717
  },
Packit 577717
  { .name   = "FRONTEND_RETIRED",
Packit 577717
    .desc   = "Precise Front-End activity",
Packit 577717
    .modmsk = INTEL_SKL_FE_ATTRS,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code   = 0x1c6,
Packit 577717
    .flags  = INTEL_X86_FRONTEND | INTEL_X86_PEBS,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_frontend_retired),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_frontend_retired,
Packit 577717
  },
Packit 577717
  { .name   = "HW_INTERRUPTS",
Packit 577717
    .desc   = "Number of hardware interrupts received by the processor",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .code   = 0xcb,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_hw_interrupts),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_hw_interrupts,
Packit 577717
  },
Packit 577717
  { .name   = "SQ_MISC",
Packit 577717
    .desc   = "SuperQueue miscellaneous",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code = 0xf4,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_sq_misc),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_sq_misc,
Packit 577717
  },
Packit 577717
  { .name   = "MEM_LOAD_MISC_RETIRED",
Packit 577717
    .desc   = "Load retired miscellaneous",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .flags  = INTEL_X86_PEBS,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code = 0xd4,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_mem_load_misc_retired),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_mem_load_misc_retired,
Packit 577717
  },
Packit 577717
  { .name   = "IDI_MISC",
Packit 577717
    .desc   = "Miscellaneous",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code = 0xfe,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_idi_misc),
Packit 577717
    .model = PFM_PMU_INTEL_SKX,
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_idi_misc,
Packit 577717
  },
Packit 577717
  { .name   = "CORE_POWER",
Packit 577717
    .desc   = "Power power cycles",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code = 0x28,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_core_power),
Packit 577717
    .model  = PFM_PMU_INTEL_SKX,
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_core_power,
Packit 577717
  },
Packit 577717
  { .name   = "SW_PREFETCH",
Packit 577717
    .desc   = "Software prefetches",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .equiv  = "SW_PREFETCH_ACCESS",
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code = 0x32,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_sw_prefetch),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_sw_prefetch,
Packit 577717
  },
Packit 577717
  { .name   = "SW_PREFETCH_ACCESS",
Packit 577717
    .desc   = "Software prefetches",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code = 0x32,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_sw_prefetch),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_sw_prefetch,
Packit 577717
  },
Packit 577717
  { .name   = "OFFCORE_REQUESTS_BUFFER",
Packit 577717
    .desc   = "Offcore requests buffer",
Packit 577717
    .modmsk = INTEL_V4_ATTRS,
Packit 577717
    .cntmsk = 0xff,
Packit 577717
    .code   = 0xb2,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_offcore_requests_buffer),
Packit 577717
    .ngrp = 1,
Packit 577717
    .umasks = skl_offcore_requests_buffer,
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_V4_ATTRS,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code = 0x1b7,
Packit 577717
    .flags= INTEL_X86_NHM_OFFCORE,
Packit 577717
    .numasks = LIBPFM_ARRAY_SIZE(skl_offcore_response),
Packit 577717
    .ngrp = 3,
Packit 577717
    .umasks = skl_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_V4_ATTRS,
Packit 577717
    .cntmsk = 0xf,
Packit 577717
    .code = 0x1bb,
Packit 577717
    .flags= INTEL_X86_NHM_OFFCORE,
Packit 577717
    .numasks =  LIBPFM_ARRAY_SIZE(skl_offcore_response),
Packit 577717
    .ngrp = 3,
Packit 577717
    .umasks = skl_offcore_response, /* identical to actual umasks list for this event */
Packit 577717
  },
Packit 577717
};