Blame src/libpfm-3.y/lib/coreduo_events.h

Packit Service a1973e
/*
Packit Service a1973e
 * Copyright (c) 2009 Google, Inc
Packit Service a1973e
 * Contributed by Stephane Eranian <eranian@gmail.com>
Packit Service a1973e
 * Contributions by James Ralph <ralph@eecs.utk.edu>
Packit Service a1973e
 *
Packit Service a1973e
 * Based on:
Packit Service a1973e
 * Copyright (c) 2006 Hewlett-Packard Development Company, L.P.
Packit Service a1973e
 * Contributed by Stephane Eranian <eranian@hpl.hp.com>
Packit Service a1973e
 *
Packit Service a1973e
 * Permission is hereby granted, free of charge, to any person obtaining a copy
Packit Service a1973e
 * of this software and associated documentation files (the "Software"), to deal
Packit Service a1973e
 * in the Software without restriction, including without limitation the rights
Packit Service a1973e
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
Packit Service a1973e
 * of the Software, and to permit persons to whom the Software is furnished to do so,
Packit Service a1973e
 * subject to the following conditions:
Packit Service a1973e
 *
Packit Service a1973e
 * The above copyright notice and this permission notice shall be included in all
Packit Service a1973e
 * copies or substantial portions of the Software.
Packit Service a1973e
 *
Packit Service a1973e
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
Packit Service a1973e
 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
Packit Service a1973e
 * PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
Packit Service a1973e
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
Packit Service a1973e
 * CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
Packit Service a1973e
 * OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Packit Service a1973e
 *
Packit Service a1973e
 * This file is part of libpfm, a performance monitoring support library for
Packit Service a1973e
 * applications on Linux.
Packit Service a1973e
 */
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
#define INTEL_COREDUO_MESI_UMASKS \
Packit Service a1973e
	{ .pme_uname = "MESI",\
Packit Service a1973e
		  .pme_udesc = "Any cacheline access",\
Packit Service a1973e
		  .pme_ucode = 0xf\
Packit Service a1973e
		},\
Packit Service a1973e
	{ .pme_uname = "I_STATE",\
Packit Service a1973e
		  .pme_udesc = "Invalid cacheline",\
Packit Service a1973e
		  .pme_ucode = 0x1\
Packit Service a1973e
		},\
Packit Service a1973e
	{ .pme_uname = "S_STATE",\
Packit Service a1973e
		  .pme_udesc = "Shared cacheline",\
Packit Service a1973e
		  .pme_ucode = 0x2\
Packit Service a1973e
		},\
Packit Service a1973e
	{ .pme_uname = "E_STATE",\
Packit Service a1973e
		  .pme_udesc = "Exclusive cacheline",\
Packit Service a1973e
		  .pme_ucode = 0x4\
Packit Service a1973e
		},\
Packit Service a1973e
	{ .pme_uname = "M_STATE",\
Packit Service a1973e
		  .pme_udesc = "Modified cacheline",\
Packit Service a1973e
		  .pme_ucode = 0x8\
Packit Service a1973e
		}
Packit Service a1973e
Packit Service a1973e
#define INTEL_COREDUO_SPECIFICITY_UMASKS \
Packit Service a1973e
	{ .pme_uname = "SELF",\
Packit Service a1973e
		  .pme_udesc = "This core",\
Packit Service a1973e
		  .pme_ucode = 0x40\
Packit Service a1973e
		},\
Packit Service a1973e
	{ .pme_uname = "BOTH_CORES",\
Packit Service a1973e
		  .pme_udesc = "Both cores",\
Packit Service a1973e
		  .pme_ucode = 0xc0\
Packit Service a1973e
		}
Packit Service a1973e
Packit Service a1973e
#define INTEL_COREDUO_HW_PREFETCH_UMASKS \
Packit Service a1973e
	{ .pme_uname = "ANY",\
Packit Service a1973e
		  .pme_udesc = "All inclusive",\
Packit Service a1973e
		  .pme_ucode = 0x30\
Packit Service a1973e
		},\
Packit Service a1973e
	{ .pme_uname = "PREFETCH",\
Packit Service a1973e
		  .pme_udesc = "Hardware prefetch only",\
Packit Service a1973e
		  .pme_ucode = 0x10\
Packit Service a1973e
		}
Packit Service a1973e
Packit Service a1973e
#define INTEL_COREDUO_AGENT_UMASKS \
Packit Service a1973e
	{ .pme_uname = "THIS_AGENT",\
Packit Service a1973e
		  .pme_udesc = "This agent",\
Packit Service a1973e
		  .pme_ucode = 0x00\
Packit Service a1973e
		},\
Packit Service a1973e
	{ .pme_uname = "ALL_AGENTS",\
Packit Service a1973e
		  .pme_udesc = "Any agent on the bus",\
Packit Service a1973e
		  .pme_ucode = 0x20\
Packit Service a1973e
		}
Packit Service a1973e
Packit Service a1973e
static pme_coreduo_entry_t coreduo_pe[]={
Packit Service a1973e
  /*
Packit Service a1973e
   * BEGIN architectural perfmon events
Packit Service a1973e
   */
Packit Service a1973e
  /* 0 */{
Packit Service a1973e
	.pme_name = "UNHALTED_CORE_CYCLES",
Packit Service a1973e
	.pme_code    = 0x003c,
Packit Service a1973e
	.pme_desc    = "Unhalted core cycles",
Packit Service a1973e
  },
Packit Service a1973e
  /* 1 */{
Packit Service a1973e
	.pme_name = "UNHALTED_REFERENCE_CYCLES",
Packit Service a1973e
	.pme_code = 0x013c,
Packit Service a1973e
	.pme_desc = "Unhalted reference cycles. Measures bus cycles"
Packit Service a1973e
  },
Packit Service a1973e
  /* 2 */{
Packit Service a1973e
	.pme_name = "INSTRUCTIONS_RETIRED",
Packit Service a1973e
	.pme_code = 0xc0,
Packit Service a1973e
	.pme_desc = "Instructions retired"
Packit Service a1973e
  },
Packit Service a1973e
  /* 3 */{
Packit Service a1973e
	.pme_name = "LAST_LEVEL_CACHE_REFERENCES",
Packit Service a1973e
	.pme_code = 0x4f2e,
Packit Service a1973e
	.pme_desc = "Last level of cache references"
Packit Service a1973e
  },
Packit Service a1973e
  /* 4 */{
Packit Service a1973e
	.pme_name = "LAST_LEVEL_CACHE_MISSES",
Packit Service a1973e
	.pme_code = 0x412e,
Packit Service a1973e
	.pme_desc = "Last level of cache misses",
Packit Service a1973e
  },
Packit Service a1973e
  /* 5  */{
Packit Service a1973e
	.pme_name = "BRANCH_INSTRUCTIONS_RETIRED",
Packit Service a1973e
	.pme_code = 0xc4,
Packit Service a1973e
	.pme_desc = "Branch instructions retired"
Packit Service a1973e
  },
Packit Service a1973e
  /* 6  */{
Packit Service a1973e
	.pme_name = "MISPREDICTED_BRANCH_RETIRED",
Packit Service a1973e
	.pme_code = 0xc5,
Packit Service a1973e
	.pme_desc = "Mispredicted branch instruction retired"
Packit Service a1973e
  },
Packit Service a1973e
Packit Service a1973e
  /*
Packit Service a1973e
   * BEGIN non architectural events
Packit Service a1973e
   */
Packit Service a1973e
Packit Service a1973e
  { .pme_code = 0x3,
Packit Service a1973e
	.pme_name = "LD_BLOCKS",
Packit Service a1973e
	.pme_desc = "Load operations delayed due to store buffer blocks. The preceding store may be blocked due to unknown address, unknown data, or conflict due to partial overlap between the load and store.",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x4,
Packit Service a1973e
	.pme_name = "SD_DRAINS",
Packit Service a1973e
	.pme_desc = "Cycles while draining store buffers",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x5,
Packit Service a1973e
	.pme_name = "MISALIGN_MEM_REF",
Packit Service a1973e
	.pme_desc = "Misaligned data memory references (MOB splits of loads and stores).",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x6,
Packit Service a1973e
	.pme_name = "SEG_REG_LOADS",
Packit Service a1973e
	.pme_desc = "Segment register loads",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x7,
Packit Service a1973e
	.pme_name = "SSE_PREFETCH",
Packit Service a1973e
	.pme_flags = 0,
Packit Service a1973e
	.pme_desc = "Streaming SIMD Extensions (SSE) Prefetch instructions executed",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	{ .pme_uname = "NTA",
Packit Service a1973e
		.pme_udesc =  "Streaming SIMD Extensions (SSE) Prefetch NTA instructions executed",
Packit Service a1973e
		.pme_ucode = 0x0
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "T1",
Packit Service a1973e
		.pme_udesc = "SSE software prefetch instruction PREFE0xTCT1 retired",
Packit Service a1973e
		.pme_ucode = 0x01
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "T2",
Packit Service a1973e
		.pme_udesc = "SSE software prefetch instruction PREFE0xTCT2 retired",
Packit Service a1973e
		.pme_ucode = 0x02
Packit Service a1973e
	  },
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 3
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_name = "SSE_NTSTORES_RET",
Packit Service a1973e
    .pme_desc = "SSE streaming store instruction retired",
Packit Service a1973e
    .pme_code = 0x0307
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x10,
Packit Service a1973e
	.pme_name = "FP_COMPS_OP_EXE",
Packit Service a1973e
	.pme_desc = "FP computational Instruction executed. FADD, FSUB, FCOM, FMULs, MUL, IMUL, FDIVs, DIV, IDIV, FPREMs, FSQRT are included; but exclude FADD or FMUL used in the middle of a transcendental instruction.",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x11,
Packit Service a1973e
	.pme_name = "FP_ASSIST",
Packit Service a1973e
	.pme_desc = "FP exceptions experienced microcode assists",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_PMC1
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x12,
Packit Service a1973e
	.pme_name = "MUL",
Packit Service a1973e
	.pme_desc = "Multiply operations (a speculative count, including FP and integer multiplies).",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_PMC1
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x13,
Packit Service a1973e
	.pme_name = "DIV",
Packit Service a1973e
	.pme_desc = "Divide operations (a speculative count, including FP and integer multiplies). ",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_PMC1   
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x14,
Packit Service a1973e
	.pme_name = "CYCLES_DIV_BUSY",
Packit Service a1973e
	.pme_desc = "Cycles the divider is busy ",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_PMC0 
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x21,
Packit Service a1973e
	.pme_name = "L2_ADS",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "L2 Address strobes ",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x22,
Packit Service a1973e
	.pme_name = "DBUS_BUSY",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "Core cycle during which data buswas busy (increments by 4)",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x23,
Packit Service a1973e
	.pme_name = "DBUS_BUSY_RD",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "Cycles data bus is busy transferring data to a core (increments by 4) ",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x24,
Packit Service a1973e
	.pme_name = "L2_LINES_IN",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "L2 cache lines allocated",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_HW_PREFETCH_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 4
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x25,
Packit Service a1973e
	.pme_name = "L2_M_LINES_IN",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "L2 Modified-state cache lines allocated",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x26,
Packit Service a1973e
	.pme_name = "L2_LINES_OUT",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "L2 cache lines evicted ",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_HW_PREFETCH_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 4
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x27,
Packit Service a1973e
	.pme_name = "L2_M_LINES_OUT",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "L2 Modified-state cache lines evicted ",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_HW_PREFETCH_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 4
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x28,
Packit Service a1973e
	.pme_name = "L2_IFETCH",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC|PFMLIB_COREDUO_MESI,
Packit Service a1973e
	.pme_desc = "L2 instruction fetches from nstruction fetch unit (includes speculative fetches) ",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_MESI_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 7
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x29,
Packit Service a1973e
	.pme_name = "L2_LD",
Packit Service a1973e
	.pme_desc = "L2 cache reads (includes speculation) ",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC|PFMLIB_COREDUO_MESI,
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_MESI_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 7
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x2A,
Packit Service a1973e
	.pme_name = "L2_ST",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC|PFMLIB_COREDUO_MESI,
Packit Service a1973e
	.pme_desc = "L2 cache writes (includes speculation)",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_MESI_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 7
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x2E,
Packit Service a1973e
	.pme_name = "L2_RQSTS",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC|PFMLIB_COREDUO_MESI,
Packit Service a1973e
	.pme_desc = "L2 cache reference requests ",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_MESI_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_HW_PREFETCH_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 9
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x30,
Packit Service a1973e
	.pme_name = "L2_REJECT_CYCLES",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC|PFMLIB_COREDUO_MESI,
Packit Service a1973e
	.pme_desc = "Cycles L2 is busy and rejecting new requests.",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_MESI_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_HW_PREFETCH_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 9
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x32,
Packit Service a1973e
	.pme_name = "L2_NO_REQUEST_CYCLES",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC|PFMLIB_COREDUO_MESI,
Packit Service a1973e
	.pme_desc = "Cycles there is no request to access L2.",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_MESI_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_HW_PREFETCH_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 9
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x3A,
Packit Service a1973e
	.pme_name = "EST_TRANS_ALL",
Packit Service a1973e
	.pme_desc = "Any Intel Enhanced SpeedStep(R) Technology transitions",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x103A,
Packit Service a1973e
	.pme_name = "EST_TRANS_ALL",
Packit Service a1973e
	.pme_desc = "Intel Enhanced SpeedStep Technology frequency transitions",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x3B,
Packit Service a1973e
	.pme_name = "THERMAL_TRIP",
Packit Service a1973e
	.pme_desc = "Duration in a thermal trip based on the current core clock ",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	{ .pme_uname = "CYCLES",
Packit Service a1973e
		.pme_udesc = "Duration in a thermal trip based on the current core clock",
Packit Service a1973e
		.pme_ucode = 0xC0
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "TRIPS",
Packit Service a1973e
		.pme_udesc = "Number of thermal trips",
Packit Service a1973e
		.pme_ucode = 0xC0 | (1<<10) /* Edge detect pin (Figure 18-13) */
Packit Service a1973e
	  }
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2 
Packit Service a1973e
  },
Packit Service a1973e
  {
Packit Service a1973e
	.pme_name = "CPU_CLK_UNHALTED",
Packit Service a1973e
	.pme_code = 0x3c,
Packit Service a1973e
	.pme_desc = "Core cycles when core is not halted",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	{ .pme_uname = "NONHLT_REF_CYCLES",
Packit Service a1973e
		.pme_udesc = "Non-halted bus cycles",
Packit Service a1973e
		.pme_ucode = 0x01
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "SERIAL_EXECUTION_CYCLES",
Packit Service a1973e
		.pme_udesc ="Non-halted bus cycles of this core executing code while the other core is halted",
Packit Service a1973e
		.pme_ucode = 0x02
Packit Service a1973e
	  }
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x40,
Packit Service a1973e
	.pme_name = "DCACHE_CACHE_LD",
Packit Service a1973e
	.pme_desc = "L1 cacheable data read operations",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_MESI_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 5
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x41,
Packit Service a1973e
	.pme_name = "DCACHE_CACHE_ST",
Packit Service a1973e
	.pme_desc = "L1 cacheable data write operations",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_MESI_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 5
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x42,
Packit Service a1973e
	.pme_name = "DCACHE_CACHE_LOCK",
Packit Service a1973e
	.pme_desc = "L1 cacheable lock read operations to invalid state",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_MESI_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 5
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x0143,
Packit Service a1973e
	.pme_name = "DATA_MEM_REF",
Packit Service a1973e
	.pme_desc = "L1 data read and writes of cacheable and non-cacheable types",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x0244,
Packit Service a1973e
	.pme_name = "DATA_MEM_CACHE_REF",
Packit Service a1973e
	.pme_desc = "L1 data cacheable read and write operations.",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x0f45,
Packit Service a1973e
	.pme_name = "DCACHE_REPL",
Packit Service a1973e
	.pme_desc = "L1 data cache line replacements",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x46,
Packit Service a1973e
	.pme_name = "DCACHE_M_REPL",
Packit Service a1973e
	.pme_desc = "L1 data M-state cache line  allocated",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x47,
Packit Service a1973e
	.pme_name = "DCACHE_M_EVICT",
Packit Service a1973e
	.pme_desc = "L1 data M-state cache line evicted",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x48,
Packit Service a1973e
	.pme_name = "DCACHE_PEND_MISS",
Packit Service a1973e
	.pme_desc = "Weighted cycles of L1 miss outstanding",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x49,
Packit Service a1973e
	.pme_name = "DTLB_MISS",
Packit Service a1973e
	.pme_desc = "Data references that missed TLB",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x4B,
Packit Service a1973e
	.pme_name = "SSE_PRE_MISS",
Packit Service a1973e
	.pme_flags = 0,
Packit Service a1973e
	.pme_desc = "Streaming SIMD Extensions (SSE) instructions missing all cache levels",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	{ .pme_uname = "NTA_MISS",
Packit Service a1973e
		.pme_udesc = "PREFETCHNTA missed all caches",
Packit Service a1973e
		.pme_ucode = 0x00
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "T1_MISS",
Packit Service a1973e
		.pme_udesc = "PREFETCHT1 missed all caches",
Packit Service a1973e
		.pme_ucode = 0x01
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "T2_MISS",
Packit Service a1973e
		.pme_udesc = "PREFETCHT2 missed all caches",
Packit Service a1973e
		.pme_ucode = 0x02
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "STORES_MISS",
Packit Service a1973e
		.pme_udesc = "SSE streaming store instruction missed all caches",
Packit Service a1973e
		.pme_ucode = 0x03
Packit Service a1973e
	  }
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 4
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x4F,
Packit Service a1973e
	.pme_name = "L1_PREF_REQ",
Packit Service a1973e
	.pme_desc = "L1 prefetch requests due to DCU cache misses",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x60,
Packit Service a1973e
	.pme_name = "BUS_REQ_OUTSTANDING",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "Weighted cycles of cacheable bus data read requests. This event counts full-line read request from DCU or HW prefetcher, but not RFO, write, instruction fetches, or others.",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 4
Packit Service a1973e
	/* TODO: umasks bit 12 to include HWP or exclude HWP separately. */,
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x61,
Packit Service a1973e
	.pme_name = "BUS_BNR_CLOCKS",
Packit Service a1973e
	.pme_desc = "External bus cycles while BNR asserted",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x62,
Packit Service a1973e
	.pme_name = "BUS_DRDY_CLOCKS",
Packit Service a1973e
	.pme_desc = "External bus cycles while DRDY asserted",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x63,
Packit Service a1973e
	.pme_name = "BUS_LOCKS_CLOCKS",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "External bus cycles while bus lock signal asserted",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x4064,
Packit Service a1973e
	.pme_name = "BUS_DATA_RCV",
Packit Service a1973e
	.pme_desc = "External bus cycles while bus lock signal asserted",
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x65,
Packit Service a1973e
	.pme_name = "BUS_TRANS_BRD",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "Burst read bus transactions (data or code)",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x66,
Packit Service a1973e
	.pme_name = "BUS_TRANS_RFO",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "Completed read for ownership ",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 4
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x68,
Packit Service a1973e
	.pme_name = "BUS_TRANS_IFETCH",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "Completed instruction fetch transactions",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 4
Packit Service a1973e
 
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x69,
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_name = "BUS_TRANS_INVAL",
Packit Service a1973e
	.pme_desc = "Completed invalidate transactions",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 4
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x6A,
Packit Service a1973e
	.pme_name = "BUS_TRANS_PWR",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "Completed partial write transactions",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 4
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x6B,
Packit Service a1973e
	.pme_name = "BUS_TRANS_P",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "Completed partial transactions (include partial read + partial write + line write)",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 4
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x6C,
Packit Service a1973e
	.pme_name = "BUS_TRANS_IO",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "Completed I/O transactions (read and write)",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 4
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x206D,
Packit Service a1973e
	.pme_name = "BUS_TRANS_DEF",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "Completed defer transactions ",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xc067,
Packit Service a1973e
	.pme_name = "BUS_TRANS_WB",
Packit Service a1973e
	.pme_desc = "Completed writeback transactions from DCU (does not include L2 writebacks)",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xc06E,
Packit Service a1973e
	.pme_name = "BUS_TRANS_BURST",
Packit Service a1973e
	.pme_desc = "Completed burst transactions (full line transactions include reads, write, RFO, and writebacks) ",
Packit Service a1973e
	/* TODO .pme_umasks = 0xC0, */
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xc06F,
Packit Service a1973e
	.pme_name = "BUS_TRANS_MEM",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "Completed memory transactions. This includes Bus_Trans_Burst + Bus_Trans_P + Bus_Trans_Inval.",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xc070,
Packit Service a1973e
	.pme_name = "BUS_TRANS_ANY",
Packit Service a1973e
	.pme_desc = "Any completed bus transactions",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x77,
Packit Service a1973e
	.pme_name = "BUS_SNOOPS",
Packit Service a1973e
	.pme_desc = "External bus cycles while bus lock signal asserted",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_MESI,
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_MESI_UMASKS,
Packit Service a1973e
	  INTEL_COREDUO_AGENT_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 7
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x0178,
Packit Service a1973e
	.pme_name = "DCU_SNOOP_TO_SHARE",
Packit Service a1973e
	.pme_desc = "DCU snoops to share-state L1 cache line due to L1 misses ",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x7D,
Packit Service a1973e
	.pme_name = "BUS_NOT_IN_USE",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_CSPEC,
Packit Service a1973e
	.pme_desc = "Number of cycles there is no transaction from the core",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	  INTEL_COREDUO_SPECIFICITY_UMASKS
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x7E,
Packit Service a1973e
	.pme_name = "BUS_SNOOP_STALL",
Packit Service a1973e
	.pme_desc = "Number of bus cycles while bus snoop is stalled"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x80,
Packit Service a1973e
	.pme_name = "ICACHE_READS",
Packit Service a1973e
	.pme_desc = "Number of instruction fetches from ICache, streaming buffers (both cacheable and uncacheable fetches)"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x81,
Packit Service a1973e
	.pme_name = "ICACHE_MISSES",
Packit Service a1973e
	.pme_desc = "Number of instruction fetch misses from ICache, streaming buffers."
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x85,
Packit Service a1973e
	.pme_name = "ITLB_MISSES",
Packit Service a1973e
	.pme_desc = "Number of iITLB misses"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x86,
Packit Service a1973e
	.pme_name = "IFU_MEM_STALL",
Packit Service a1973e
	.pme_desc = "Cycles IFU is stalled while waiting for data from memory"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x87,
Packit Service a1973e
	.pme_name = "ILD_STALL",
Packit Service a1973e
	.pme_desc = "Number of instruction length decoder stalls (Counts number of LCP stalls)"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x88,
Packit Service a1973e
	.pme_name = "BR_INST_EXEC",
Packit Service a1973e
	.pme_desc = "Branch instruction executed (includes speculation)."
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x89,
Packit Service a1973e
	.pme_name = "BR_MISSP_EXEC",
Packit Service a1973e
	.pme_desc = "Branch instructions executed and mispredicted at execution  (includes branches that do not have prediction or mispredicted)"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x8A,
Packit Service a1973e
	.pme_name = "BR_BAC_MISSP_EXEC",
Packit Service a1973e
	.pme_desc = "Branch instructions executed that were mispredicted at front end"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x8B,
Packit Service a1973e
	.pme_name = "BR_CND_EXEC",
Packit Service a1973e
	.pme_desc = "Conditional branch instructions executed"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x8C,
Packit Service a1973e
	.pme_name = "BR_CND_MISSP_EXEC",
Packit Service a1973e
	.pme_desc = "Conditional branch instructions executed that were mispredicted"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x8D,
Packit Service a1973e
	.pme_name = "BR_IND_EXEC",
Packit Service a1973e
	.pme_desc = "Indirect branch instructions executed"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x8E,
Packit Service a1973e
	.pme_name = "BR_IND_MISSP_EXEC",
Packit Service a1973e
	.pme_desc = "Indirect branch instructions executed that were mispredicted"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x8F,
Packit Service a1973e
	.pme_name = "BR_RET_EXEC",
Packit Service a1973e
	.pme_desc = "Return branch instructions executed"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x90,
Packit Service a1973e
	.pme_name = "BR_RET_MISSP_EXEC",
Packit Service a1973e
	.pme_desc = "Return branch instructions executed that were mispredicted"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x91,
Packit Service a1973e
	.pme_name = "BR_RET_BAC_MISSP_EXEC",
Packit Service a1973e
	.pme_desc = "Return branch instructions executed that were mispredicted at the front end"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x92,
Packit Service a1973e
	.pme_name = "BR_CALL_EXEC",
Packit Service a1973e
	.pme_desc = "Return call instructions executed"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x93,
Packit Service a1973e
	.pme_name = "BR_CALL_MISSP_EXEC",
Packit Service a1973e
	.pme_desc = "Return call instructions executed that were mispredicted"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0x94,
Packit Service a1973e
	.pme_name = "BR_IND_CALL_EXEC",
Packit Service a1973e
	.pme_desc = "Indirect call branch instructions executed"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xA2,
Packit Service a1973e
	.pme_name = "RESOURCE_STALL",
Packit Service a1973e
	.pme_desc = "Cycles while there is a resource related stall (renaming, buffer entries) as seen by allocator"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xB0,
Packit Service a1973e
	.pme_name = "MMX_INSTR_EXEC",
Packit Service a1973e
	.pme_desc = "Number of MMX instructions executed (does not include MOVQ and MOVD stores)"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xB1,
Packit Service a1973e
	.pme_name = "SIMD_INT_SAT_EXEC",
Packit Service a1973e
	.pme_desc = "Number of SIMD Integer saturating instructions executed"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xB3,
Packit Service a1973e
	.pme_name = "SIMD_INT_INSTRUCTIONS",
Packit Service a1973e
	.pme_desc = "Number of SIMD Integer instructions executed",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	{ .pme_uname = "MUL",
Packit Service a1973e
		.pme_udesc = "Number of SIMD Integer packed multiply instructions executed",
Packit Service a1973e
		.pme_ucode = 0x01
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "SHIFT",
Packit Service a1973e
		.pme_udesc = "Number of SIMD Integer packed shift instructions executed",
Packit Service a1973e
		.pme_ucode = 0x02
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "PACK",
Packit Service a1973e
		.pme_udesc = "Number of SIMD Integer pack operations instruction executed",
Packit Service a1973e
		.pme_ucode = 0x04
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "UNPACK",
Packit Service a1973e
		.pme_udesc = "Number of SIMD Integer unpack instructions executed",
Packit Service a1973e
		.pme_ucode = 0x08
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "LOGICAL",
Packit Service a1973e
		.pme_udesc = "Number of SIMD Integer packed logical instructions executed",
Packit Service a1973e
		.pme_ucode = 0x10
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "ARITHMETIC",
Packit Service a1973e
		.pme_udesc = "Number of SIMD Integer packed arithmetic instructions executed",
Packit Service a1973e
		.pme_ucode = 0x20
Packit Service a1973e
	  }
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 6
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xC0,
Packit Service a1973e
	.pme_name = "INSTR_RET",
Packit Service a1973e
	.pme_desc = "Number of instruction retired (Macro fused instruction count as 2)"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xC1,
Packit Service a1973e
	.pme_name = "FP_COMP_INSTR_RET",
Packit Service a1973e
	.pme_desc = "Number of FP compute instructions retired (X87 instruction or instruction that contain X87 operations)",
Packit Service a1973e
	.pme_flags = PFMLIB_COREDUO_PMC0
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xC2,
Packit Service a1973e
	.pme_name = "UOPS_RET",
Packit Service a1973e
	.pme_desc = "Number of micro-ops retired (include fused uops)"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xC3,
Packit Service a1973e
	.pme_name = "SMC_DETECTED",
Packit Service a1973e
	.pme_desc = "Number of times self-modifying code condition detected"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xC4,
Packit Service a1973e
	.pme_name = "BR_INSTR_RET",
Packit Service a1973e
	.pme_desc = "Number of branch instructions retired"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xC5,
Packit Service a1973e
	.pme_name = "BR_MISPRED_RET",
Packit Service a1973e
	.pme_desc = "Number of mispredicted branch instructions retired"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xC6,
Packit Service a1973e
	.pme_name = "CYCLES_INT_MASKED",
Packit Service a1973e
	.pme_desc = "Cycles while interrupt is disabled"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xC7,
Packit Service a1973e
	.pme_name = "CYCLES_INT_PEDNING_MASKED",
Packit Service a1973e
	.pme_desc = "Cycles while interrupt is disabled and interrupts are pending"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xC8,
Packit Service a1973e
	.pme_name = "HW_INT_RX",
Packit Service a1973e
	.pme_desc = "Number of hardware interrupts received"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xC9,
Packit Service a1973e
	.pme_name = "BR_TAKEN_RET",
Packit Service a1973e
	.pme_desc = "Number of taken branch instruction retired"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xCA,
Packit Service a1973e
	.pme_name = "BR_MISPRED_TAKEN_RET",
Packit Service a1973e
	.pme_desc = "Number of taken and mispredicted branch instructions retired"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xCC,
Packit Service a1973e
	.pme_name = "FP_MMX_TRANS",
Packit Service a1973e
	.pme_name = "MMX_FP_TRANS",
Packit Service a1973e
	.pme_desc = "Transitions from MMX (TM) Instructions to Floating Point Instructions",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	{ .pme_uname = "TO_FP",
Packit Service a1973e
		.pme_udesc = "Number of transitions from MMX to X87",
Packit Service a1973e
		.pme_ucode = 0x00
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "TO_MMX",
Packit Service a1973e
		.pme_udesc = "Number of transitions from X87 to MMX",
Packit Service a1973e
		.pme_ucode = 0x01
Packit Service a1973e
	  }
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 2
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xCD,
Packit Service a1973e
	.pme_name = "MMX_ASSIST",
Packit Service a1973e
	.pme_desc = "Number of EMMS executed"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xCE,
Packit Service a1973e
	.pme_name = "MMX_INSTR_RET",
Packit Service a1973e
	.pme_desc = "Number of MMX instruction retired"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xD0,
Packit Service a1973e
	.pme_name = "INSTR_DECODED",
Packit Service a1973e
	.pme_desc = "Number of instruction decoded"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xD7,
Packit Service a1973e
	.pme_name = "ESP_UOPS",
Packit Service a1973e
	.pme_desc = "Number of ESP folding instruction decoded"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xD8,
Packit Service a1973e
	.pme_name = "SSE_INSTRUCTIONS_RETIRED",
Packit Service a1973e
	.pme_desc = "Number of SSE/SSE2 instructions retired (packed and scalar)",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	{ .pme_uname = "SINGLE",
Packit Service a1973e
		.pme_udesc = "Number of SSE/SSE2 single precision instructions retired (packed and scalar)",
Packit Service a1973e
		.pme_ucode = 0x00
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "SCALAR_SINGLE",
Packit Service a1973e
		.pme_udesc = "Number of SSE/SSE2 scalar single precision instructions retired",
Packit Service a1973e
		.pme_ucode = 0x01,
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "PACKED_DOUBLE",
Packit Service a1973e
		.pme_udesc = "Number of SSE/SSE2 packed double percision instructions retired",
Packit Service a1973e
		.pme_ucode = 0x02,
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "DOUBLE",
Packit Service a1973e
		.pme_udesc = "Number of SSE/SSE2 scalar double percision instructions retired",
Packit Service a1973e
		.pme_ucode = 0x03,
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "INT_128",
Packit Service a1973e
		.pme_udesc = "Number of SSE2 128 bit integer  instructions retired",
Packit Service a1973e
		.pme_ucode = 0x04,
Packit Service a1973e
	 },
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 5
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xD9,
Packit Service a1973e
	.pme_name = "SSE_COMP_INSTRUCTIONS_RETIRED",
Packit Service a1973e
	.pme_desc = "Number of computational SSE/SSE2 instructions retired (does not include AND, OR, XOR)",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
	{ .pme_uname = "PACKED_SINGLE",
Packit Service a1973e
		.pme_udesc = "Number of SSE/SSE2 packed single precision compute instructions retired (does not include AND, OR, XOR)",
Packit Service a1973e
		.pme_ucode = 0x00
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "SCALAR_SINGLE",
Packit Service a1973e
		.pme_udesc = "Number of SSE/SSE2 scalar single precision compute instructions retired (does not include AND, OR, XOR)",
Packit Service a1973e
		.pme_ucode = 0x01
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "PACKED_DOUBLE",
Packit Service a1973e
		.pme_udesc = "Number of SSE/SSE2 packed double precision compute instructions retired (does not include AND, OR, XOR)",
Packit Service a1973e
		.pme_ucode = 0x02
Packit Service a1973e
	  },
Packit Service a1973e
	{ .pme_uname = "SCALAR_DOUBLE",
Packit Service a1973e
		.pme_udesc = "Number of SSE/SSE2 scalar double precision compute instructions retired (does not include AND, OR, XOR)",
Packit Service a1973e
		.pme_ucode = 0x03
Packit Service a1973e
	  }
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 4
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xDA,
Packit Service a1973e
	.pme_name = "FUSED_UOPS",
Packit Service a1973e
	.pme_desc = "fused uops retired",
Packit Service a1973e
	.pme_umasks = {
Packit Service a1973e
  	{ .pme_uname = "ALL",
Packit Service a1973e
		.pme_udesc = "All fused uops retired",
Packit Service a1973e
		.pme_ucode = 0x00
Packit Service a1973e
	  },
Packit Service a1973e
  	{ .pme_uname = "LOADS",
Packit Service a1973e
		.pme_udesc = "Fused load uops retired",
Packit Service a1973e
		.pme_ucode = 0x01
Packit Service a1973e
	},
Packit Service a1973e
  	{ .pme_uname = "STORES",
Packit Service a1973e
		.pme_udesc = "Fused load uops retired",
Packit Service a1973e
		.pme_ucode = 0x02
Packit Service a1973e
	 },
Packit Service a1973e
	},
Packit Service a1973e
	.pme_numasks = 3
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xDB,
Packit Service a1973e
	.pme_name = "UNFUSION",
Packit Service a1973e
	.pme_desc = "Number of unfusion events in the ROB (due to exception)"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xE0,
Packit Service a1973e
	.pme_name = "BR_INSTR_DECODED",
Packit Service a1973e
	.pme_desc = "Branch instructions decoded"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xE2,
Packit Service a1973e
	.pme_name = "BTB_MISSES",
Packit Service a1973e
	.pme_desc = "Number of branches the BTB did not produce a prediction"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xE4,
Packit Service a1973e
	.pme_name = "BR_BOGUS",
Packit Service a1973e
	.pme_desc = "Number of bogus branches"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xE6,
Packit Service a1973e
	.pme_name = "BACLEARS",
Packit Service a1973e
	.pme_desc = "Number of BAClears asserted"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xF0,
Packit Service a1973e
	.pme_name = "PREF_RQSTS_UP",
Packit Service a1973e
	.pme_desc = "Number of hardware prefetch requests issued in forward streams"
Packit Service a1973e
  },
Packit Service a1973e
  { .pme_code = 0xF8,
Packit Service a1973e
	.pme_name = "PREF_RQSTS_DN",
Packit Service a1973e
	.pme_desc = "Number of hardware prefetch requests issued in backward streams"
Packit Service a1973e
  }
Packit Service a1973e
};
Packit Service a1973e
Packit Service a1973e
Packit Service a1973e
#define PME_COREDUO_UNHALTED_CORE_CYCLES 0
Packit Service a1973e
#define PME_COREDUO_INSTRUCTIONS_RETIRED 2
Packit Service a1973e
#define PME_COREDUO_EVENT_COUNT (sizeof(coreduo_pe)/sizeof(pme_coreduo_entry_t))