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

Packit Service a1973e
/*
Packit Service a1973e
 * Copyright (c) 2010 Google, Inc
Packit Service a1973e
 * Contributed by Stephane Eranian <eranian@gmail.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
static pme_nhm_entry_t wsm_pe[]={
Packit Service a1973e
	/*
Packit Service a1973e
	 * BEGIN architected events
Packit Service a1973e
	 */
Packit Service a1973e
	{.pme_name = "UNHALTED_CORE_CYCLES",
Packit Service a1973e
		.pme_code = 0x003c,
Packit Service a1973e
		.pme_cntmsk = 0x2000f,
Packit Service a1973e
		.pme_flags = PFMLIB_NHM_FIXED1,
Packit Service a1973e
		.pme_desc =  "count core clock cycles whenever the clock signal on the specific core is running (not halted). Alias to event CPU_CLK_UNHALTED:THREAD"
Packit Service a1973e
	},
Packit Service a1973e
	{.pme_name = "INSTRUCTION_RETIRED",
Packit Service a1973e
		.pme_code = 0x00c0,
Packit Service a1973e
		.pme_cntmsk = 0x1000f,
Packit Service a1973e
		.pme_flags = PFMLIB_NHM_FIXED0|PFMLIB_NHM_PEBS,
Packit Service a1973e
		.pme_desc =  "count the number of instructions at retirement. Alias to event INST_RETIRED:ANY_P",
Packit Service a1973e
	},
Packit Service a1973e
	{.pme_name = "INSTRUCTIONS_RETIRED",
Packit Service a1973e
		.pme_code = 0x00c0,
Packit Service a1973e
		.pme_cntmsk = 0x1000f,
Packit Service a1973e
		.pme_flags = PFMLIB_NHM_FIXED0|PFMLIB_NHM_PEBS,
Packit Service a1973e
		.pme_desc =  "This is an alias for INSTRUCTION_RETIRED",
Packit Service a1973e
	},
Packit Service a1973e
	{.pme_name = "UNHALTED_REFERENCE_CYCLES",
Packit Service a1973e
		.pme_code = 0x013c,
Packit Service a1973e
		.pme_cntmsk = 0x40000,
Packit Service a1973e
		.pme_flags = PFMLIB_NHM_FIXED2_ONLY,
Packit Service a1973e
		.pme_desc =  "Unhalted reference cycles",
Packit Service a1973e
	},
Packit Service a1973e
	{.pme_name = "LLC_REFERENCES",
Packit Service a1973e
		.pme_code = 0x4f2e,
Packit Service a1973e
		.pme_cntmsk = 0xf,
Packit Service a1973e
		.pme_desc =  "count each request originating from the core to reference a cache line in the last level cache. The count may include speculation, but excludes cache line fills due to hardware prefetch. Alias to L2_RQSTS:SELF_DEMAND_MESI",
Packit Service a1973e
	},
Packit Service a1973e
	{.pme_name = "LAST_LEVEL_CACHE_REFERENCES",
Packit Service a1973e
		.pme_code = 0x4f2e,
Packit Service a1973e
		.pme_cntmsk = 0xf,
Packit Service a1973e
		.pme_desc =  "This is an alias for LLC_REFERENCES",
Packit Service a1973e
	},
Packit Service a1973e
	{.pme_name = "LLC_MISSES",
Packit Service a1973e
		.pme_code = 0x412e,
Packit Service a1973e
		.pme_cntmsk = 0xf,
Packit Service a1973e
		.pme_desc =  "count each cache miss condition for references to the last level cache. The event count may include speculation, but excludes cache line fills due to hardware prefetch. Alias to event L2_RQSTS:SELF_DEMAND_I_STATE",
Packit Service a1973e
	},
Packit Service a1973e
	{.pme_name = "LAST_LEVEL_CACHE_MISSES",
Packit Service a1973e
		.pme_code = 0x412e,
Packit Service a1973e
		.pme_cntmsk = 0xf,
Packit Service a1973e
		.pme_desc =  "This is an alias for LLC_MISSES",
Packit Service a1973e
	},
Packit Service a1973e
	{.pme_name = "BRANCH_INSTRUCTIONS_RETIRED",
Packit Service a1973e
		.pme_code = 0x00c4,
Packit Service a1973e
		.pme_cntmsk = 0xf,
Packit Service a1973e
		.pme_desc =  "count branch instructions at retirement. Specifically, this event counts the retirement of the last micro-op of a branch instruction. Alias to event BR_INST_RETIRED:ANY",
Packit Service a1973e
	},
Packit Service a1973e
	/*
Packit Service a1973e
	 * BEGIN core specific events
Packit Service a1973e
	 */
Packit Service a1973e
	{ .pme_name   = "UOPS_DECODED",
Packit Service a1973e
	  .pme_desc   = "micro-ops decoded",
Packit Service a1973e
	  .pme_code   = 0xD1,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ESP_FOLDING",
Packit Service a1973e
		  .pme_udesc  = "Stack pointer instructions decoded",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "ESP_SYNC",
Packit Service a1973e
		  .pme_udesc  = "Stack pointer sync operations",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "MS_CYCLES_ACTIVE",
Packit Service a1973e
		  .pme_udesc  = "cycles in which at least one uop is decoded by Microcode Sequencer",
Packit Service a1973e
		  .pme_ucode  = 0x2 | (1<< 16), /* counter-mask = 1 */
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "STALL_CYCLES",
Packit Service a1973e
		  .pme_udesc  = "Cycles no Uops are decoded",
Packit Service a1973e
		  .pme_ucode  = 0x1 | (1<<16) | (1<<15), /* inv=1, counter-mask=1 */
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 4
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L1D_CACHE_LOCK_FB_HIT",
Packit Service a1973e
	  .pme_desc   = "L1D cacheable load lock speculated or retired accepted into the fill buffer",
Packit Service a1973e
	  .pme_code   = 0x0152,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "BPU_CLEARS",
Packit Service a1973e
	  .pme_desc   = "Branch Prediciton Unit clears",
Packit Service a1973e
	  .pme_code   = 0xE8,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "EARLY",
Packit Service a1973e
		  .pme_udesc  = "Early Branch Prediciton Unit clears",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LATE",
Packit Service a1973e
		  .pme_udesc  = "Late Branch Prediction Unit clears",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 2
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "UOPS_RETIRED",
Packit Service a1973e
	  .pme_desc   = "Cycles Uops are being retired",
Packit Service a1973e
	  .pme_code   = 0xC2,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_PEBS|PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "Uops retired (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "MACRO_FUSED",
Packit Service a1973e
		  .pme_udesc  = "Macro-fused Uops retired (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RETIRE_SLOTS",
Packit Service a1973e
		  .pme_udesc  = "Retirement slots used (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "STALL_CYCLES",
Packit Service a1973e
		  .pme_udesc  = "Cycles Uops are not retiring (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x01 | (1<<16) | (1<<15), /* counter-mask=1, inv=1 */
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "TOTAL_CYCLES",
Packit Service a1973e
		  .pme_udesc  = "Total cycles using precise uop retired event (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x01 | (1<< 16), /* counter mask = 1 */
Packit Service a1973e
		  .pme_uflags = PFMLIB_NHM_PEBS,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "ACTIVE_CYCLES",
Packit Service a1973e
		  .pme_udesc  = "Alias for TOTAL_CYCLES",
Packit Service a1973e
		  .pme_ucode  = 0x01 | (1<< 16), /* counter mask = 1 */
Packit Service a1973e
		  .pme_uflags = PFMLIB_NHM_PEBS,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 6
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "BR_MISP_RETIRED",
Packit Service a1973e
	  .pme_desc   = "Mispredicted retired branches",
Packit Service a1973e
	  .pme_code   = 0xC5,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_PEBS|PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ALL_BRANCHES",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted retired branch instructions",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "NEAR_CALL",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted near retired calls",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "CONDITIONAL",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted conditional branches retired",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		}
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 3
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "EPT",
Packit Service a1973e
	  .pme_desc   = "Extended Page Table",
Packit Service a1973e
	  .pme_code   = 0x4F,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "WALK_CYCLES",
Packit Service a1973e
		  .pme_udesc  = "Extended Page Table walk cycles",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 1
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "UOPS_EXECUTED",
Packit Service a1973e
	  .pme_desc   = "micro-ops executed",
Packit Service a1973e
	  .pme_code   = 0xB1,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
			{ .pme_uname  = "PORT0",
Packit Service a1973e
				.pme_udesc  = "Uops executed on port 0 (integer arithmetic, SIMD and FP add uops)",
Packit Service a1973e
				.pme_ucode  = 0x01,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PORT1",
Packit Service a1973e
				.pme_udesc  = "Uops executed on port 1 (integer arithmetic, SIMD, integer shift, FP multiply, FP divide uops)",
Packit Service a1973e
				.pme_ucode  = 0x02,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PORT2_CORE",
Packit Service a1973e
				.pme_udesc  = "Uops executed on port 2 from any thread (load uops) (core count only)",
Packit Service a1973e
				.pme_ucode  = 0x04 | (1<< 13), /* any=1 */
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PORT3_CORE",
Packit Service a1973e
				.pme_udesc  = "Uops executed on port 3 from any thread (store uops) (core count only)",
Packit Service a1973e
				.pme_ucode  = 0x08 | (1<<13), /* any=1 */
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PORT4_CORE",
Packit Service a1973e
				.pme_udesc  = "Uops executed on port 4 from any thread (handle store values for stores on port 3) (core count only)",
Packit Service a1973e
				.pme_ucode  = 0x10 | (1<<13), /* any=1 */
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PORT5",
Packit Service a1973e
				.pme_udesc  = "Uops executed on port 5",
Packit Service a1973e
				.pme_ucode  = 0x20,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PORT015",
Packit Service a1973e
				.pme_udesc  = "Uops issued on ports 0, 1 or 5",
Packit Service a1973e
				.pme_ucode  = 0x40,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PORT234_CORE",
Packit Service a1973e
				.pme_udesc  = "Uops issued on ports 2, 3 or 4 from any thread (core count only)",
Packit Service a1973e
				.pme_ucode  = 0x80 | (1<<13), /* any=1 */
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PORT015_STALL_CYCLES",
Packit Service a1973e
				.pme_udesc  = "Cycles no Uops issued on ports 0, 1 or 5",
Packit Service a1973e
				.pme_ucode  = 0x40 | (1<<16) | (1<<15), /* counter-mask=1, inv=1 */
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "CORE_ACTIVE_CYCLES_NO_PORT5",
Packit Service a1973e
		  		.pme_udesc  = "Cycles in which uops are executed only on port0-4 on any thread (core count only)",
Packit Service a1973e
				.pme_ucode  = 0x1f | (1<<13) | (1<<16), /* counter-mask = 1, any=1 */
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "CORE_ACTIVE_CYCLES",
Packit Service a1973e
		  		.pme_udesc  = "Cycles in which uops are executed on any port any thread (core count only)",
Packit Service a1973e
		  		.pme_ucode  = 0x3f | (1<<13) | (1<<16), /* counter-mask = 1, any=1 */
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "CORE_STALL_CYCLES",
Packit Service a1973e
		  		.pme_udesc  = "Cycles in which no uops are executed on any port any thread (core count only)",
Packit Service a1973e
		  		.pme_ucode  = 0x3f | (1<<13) | (1<<15) | (1<<16), /* counter-mask = 1, inv = 1,any=1 */
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "CORE_STALL_CYCLES_NO_PORT5",
Packit Service a1973e
		  		.pme_udesc  = "Cycles in which no uops are executed on any port0-4 on any thread (core count only)",
Packit Service a1973e
		  		.pme_ucode  = 0x1f | (1<<13) | (1<<15) | (1<<16), /* counter-mask = 1, inv = 1,any=1 */
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "CORE_STALL_COUNT",
Packit Service a1973e
		  		.pme_udesc  = "number of transitions from stalled to uops to execute on any port any thread(core count only)",
Packit Service a1973e
		  		.pme_ucode  = 0x3f | (1<<13) | (1<<15) | (1<<16) | (1<<10), /* counter-mask = 1, inv = 1, any=1, edge=1 */
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "CORE_STALL_COUNT_NO_PORT5",
Packit Service a1973e
		  		.pme_udesc  = "number of transitions from stalled to uops to execute on port0-4 on any thread (core count only)",
Packit Service a1973e
		  		.pme_ucode  = 0x1f | (1<<13) | (1<<15) | (1<<16) | (1<<10), /* counter-mask = 1, inv = 1, any=1, edge=1 */
Packit Service a1973e
			},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 15
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "IO_TRANSACTIONS",
Packit Service a1973e
	  .pme_desc   = "I/O transactions",
Packit Service a1973e
	  .pme_code   = 0x016C,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "ES_REG_RENAMES",
Packit Service a1973e
	  .pme_desc   = "ES segment renames",
Packit Service a1973e
	  .pme_code   = 0x01D5,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "INST_RETIRED",
Packit Service a1973e
		.pme_desc   = "Instructions retired",
Packit Service a1973e
		.pme_code   = 0xC0,
Packit Service a1973e
		.pme_flags  = PFMLIB_NHM_PEBS|PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
			{ .pme_uname  = "ANY_P",
Packit Service a1973e
				.pme_udesc  = "Instructions Retired (Precise Event)",
Packit Service a1973e
				.pme_ucode  = 0x00,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "X87",
Packit Service a1973e
				.pme_udesc  = "Retired floating-point operations (Precise Event)",
Packit Service a1973e
				.pme_ucode  = 0x02,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "MMX",
Packit Service a1973e
		  		.pme_udesc  = "Retired MMX instructions (Precise Event)",
Packit Service a1973e
		  		.pme_ucode  = 0x4,
Packit Service a1973e
		  		.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "TOTAL_CYCLES",
Packit Service a1973e
				.pme_udesc  = "Total cycles (Precise Event)",
Packit Service a1973e
				.pme_ucode  = 0x1 | (16 << 16) | (1 <<15), /* inv=1, cmask = 16 */
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
		},
Packit Service a1973e
		.pme_numasks = 4
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "ILD_STALL",
Packit Service a1973e
	  .pme_desc   = "Instruction Length Decoder stalls",
Packit Service a1973e
	  .pme_code   = 0x87,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "Any Instruction Length Decoder stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0xF,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "IQ_FULL",
Packit Service a1973e
		  .pme_udesc  = "Instruction Queue full stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LCP",
Packit Service a1973e
		  .pme_udesc  = "Length Change Prefix stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "MRU",
Packit Service a1973e
		  .pme_udesc  = "Stall cycles due to BPU MRU bypass",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "REGEN",
Packit Service a1973e
		  .pme_udesc  = "Regen stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 5
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "DTLB_LOAD_MISSES",
Packit Service a1973e
	  .pme_desc   = "DTLB load misses",
Packit Service a1973e
	  .pme_code   = 0x8,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "DTLB load misses",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PDE_MISS",
Packit Service a1973e
		  .pme_udesc  = "DTLB load miss caused by low part of address",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "STLB_HIT",
Packit Service a1973e
		  .pme_udesc  = "DTLB second level hit",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "WALK_COMPLETED",
Packit Service a1973e
		  .pme_udesc  = "DTLB load miss page walks complete",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "WALK_CYCLES",
Packit Service a1973e
		  .pme_udesc  = "DTLB load miss page walk cycles",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 5
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L2_LINES_IN",
Packit Service a1973e
	  .pme_desc   = "L2 lines alloacated",
Packit Service a1973e
	  .pme_code   = 0xF1,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "L2 lines alloacated",
Packit Service a1973e
		  .pme_ucode  = 0x7,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "E_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 lines allocated in the E state",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "S_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 lines allocated in the S state",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 3
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "SSEX_UOPS_RETIRED",
Packit Service a1973e
	  .pme_desc   = "SIMD micro-ops retired (Precise Event)",
Packit Service a1973e
	  .pme_code   = 0xC7,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_PEBS|PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "PACKED_DOUBLE",
Packit Service a1973e
		  .pme_udesc  = "SIMD Packed-Double Uops retired (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PACKED_SINGLE",
Packit Service a1973e
		  .pme_udesc  = "SIMD Packed-Single Uops retired (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "SCALAR_DOUBLE",
Packit Service a1973e
		  .pme_udesc  = "SIMD Scalar-Double Uops retired (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "SCALAR_SINGLE",
Packit Service a1973e
		  .pme_udesc  = "SIMD Scalar-Single Uops retired (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "VECTOR_INTEGER",
Packit Service a1973e
		  .pme_udesc  = "SIMD Vector Integer Uops retired (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 5
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "STORE_BLOCKS",
Packit Service a1973e
	  .pme_desc   = "Load delayed by block code",
Packit Service a1973e
	  .pme_code   = 0x6,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "AT_RET",
Packit Service a1973e
		  .pme_udesc  = "Loads delayed with at-Retirement block code",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "L1D_BLOCK",
Packit Service a1973e
		  .pme_udesc  = "Cacheable loads delayed with L1D block code",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 2
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "FP_MMX_TRANS",
Packit Service a1973e
	  .pme_desc   = "Floating Point to and from MMX transitions",
Packit Service a1973e
	  .pme_code   = 0xCC,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "All Floating Point to and from MMX transitions",
Packit Service a1973e
		  .pme_ucode  = 0x3,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "TO_FP",
Packit Service a1973e
		  .pme_udesc  = "Transitions from MMX to Floating Point instructions",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "TO_MMX",
Packit Service a1973e
		  .pme_udesc  = "Transitions from Floating Point to MMX instructions",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 3
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "CACHE_LOCK_CYCLES",
Packit Service a1973e
	  .pme_desc   = "Cache locked",
Packit Service a1973e
	  .pme_code   = 0x63,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_PMC01,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "L1D",
Packit Service a1973e
		  .pme_udesc  = "Cycles L1D locked",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "L1D_L2",
Packit Service a1973e
		  .pme_udesc  = "Cycles L1D and L2 locked",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 2
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "OFFCORE_REQUESTS_SQ_FULL",
Packit Service a1973e
	  .pme_desc   = "Offcore requests blocked due to Super Queue full",
Packit Service a1973e
	  .pme_code   = 0x01B2,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L3_LAT_CACHE",
Packit Service a1973e
	  .pme_desc   = "Last level cache accesses",
Packit Service a1973e
	  .pme_code   = 0x2E,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "MISS",
Packit Service a1973e
		  .pme_udesc  = "Last level cache miss",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "REFERENCE",
Packit Service a1973e
		  .pme_udesc  = "Last level cache reference",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 2
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "SIMD_INT_64",
Packit Service a1973e
	  .pme_desc   = "SIMD 64-bit integer operations",
Packit Service a1973e
	  .pme_code   = 0xFD,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "PACK",
Packit Service a1973e
		  .pme_udesc  = "SIMD integer 64 bit pack operations",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PACKED_ARITH",
Packit Service a1973e
		  .pme_udesc  = "SIMD integer 64 bit arithmetic operations",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PACKED_LOGICAL",
Packit Service a1973e
		  .pme_udesc  = "SIMD integer 64 bit logical operations",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PACKED_MPY",
Packit Service a1973e
		  .pme_udesc  = "SIMD integer 64 bit packed multiply operations",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PACKED_SHIFT",
Packit Service a1973e
		  .pme_udesc  = "SIMD integer 64 bit shift operations",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "SHUFFLE_MOVE",
Packit Service a1973e
		  .pme_udesc  = "SIMD integer 64 bit shuffle/move operations",
Packit Service a1973e
		  .pme_ucode  = 0x40,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "UNPACK",
Packit Service a1973e
		  .pme_udesc  = "SIMD integer 64 bit unpack operations",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 7
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "BR_INST_DECODED",
Packit Service a1973e
	  .pme_desc   = "Branch instructions decoded",
Packit Service a1973e
	  .pme_code   = 0x01E0,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "BR_MISP_EXEC",
Packit Service a1973e
	  .pme_desc   = "Mispredicted branches executed",
Packit Service a1973e
	  .pme_code   = 0x89,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x7F,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "COND",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted conditional branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DIRECT",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted unconditional branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DIRECT_NEAR_CALL",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted non call branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "INDIRECT_NEAR_CALL",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted indirect call branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "INDIRECT_NON_CALL",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted indirect non call branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "NEAR_CALLS",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted call branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x30,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "NON_CALLS",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted non call branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x7,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RETURN_NEAR",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted return branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "TAKEN",
Packit Service a1973e
		  .pme_udesc  = "Mispredicted taken branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x40,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 10
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "SQ_FULL_STALL_CYCLES",
Packit Service a1973e
	  .pme_desc   = "Super Queue full stall cycles",
Packit Service a1973e
	  .pme_code   = 0x01F6,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	/*
Packit Service a1973e
	 * BEGIN OFFCORE_RESPONSE
Packit Service a1973e
	 */
Packit Service a1973e
	{ .pme_name   = "OFFCORE_RESPONSE_0",
Packit Service a1973e
		.pme_desc   = "Offcore response 0",
Packit Service a1973e
		.pme_code   = 0x01B7,
Packit Service a1973e
		.pme_flags  = PFMLIB_NHM_OFFCORE_RSP0,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
			{ .pme_uname  = "DMND_DATA_RD",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of demand and DCU prefetch data reads of full and partial cachelines as well as demand data page table entry cacheline reads. Does not count L2 data read prefetches or instruction fetches",
Packit Service a1973e
				.pme_ucode  = 0x01,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "DMND_RFO",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of demand and DCU prefetch reads for ownership (RFO) requests generated by a write to data cacheline. Does not count L2 RFO",
Packit Service a1973e
				.pme_ucode  = 0x02,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "DMND_IFETCH",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of demand and DCU prefetch instruction cacheline reads. Does not count L2 code read prefetches",
Packit Service a1973e
				.pme_ucode  = 0x04,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "WB",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of writeback (modified to exclusive) transactions",
Packit Service a1973e
				.pme_ucode  = 0x08,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PF_DATA_RD",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of data cacheline reads generated by L2 prefetchers",
Packit Service a1973e
				.pme_ucode  = 0x10,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PF_RFO",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of RFO requests generated by L2 prefetchers",
Packit Service a1973e
				.pme_ucode  = 0x20,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PF_IFETCH",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of code reads generated by L2 prefetchers",
Packit Service a1973e
				.pme_ucode  = 0x40,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "OTHER",
Packit Service a1973e
				.pme_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 Service a1973e
				.pme_ucode  = 0x80,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "ANY_REQUEST",
Packit Service a1973e
				.pme_udesc  = "Request. Counts any request type",
Packit Service a1973e
				.pme_ucode  = 0xff,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "UNCORE_HIT",
Packit Service a1973e
				.pme_udesc  = "Response. Counts L3 Hit: local or remote home requests that hit L3 cache in the uncore with no coherency actions required (snooping)",
Packit Service a1973e
				.pme_ucode  = 0x100,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "OTHER_CORE_HIT_SNP",
Packit Service a1973e
				.pme_udesc  = "Response. Counts L3 Hit: local or remote home requests that hit L3 cache in the uncore and was serviced by another core with a cross core snoop where no modified copies were found (clean)",
Packit Service a1973e
				.pme_ucode  = 0x200,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "OTHER_CORE_HITM",
Packit Service a1973e
				.pme_udesc  = "Response. Counts L3 Hit: local or remote home requests that hit L3 cache in the uncore and was serviced by another core with a cross core snoop where modified copies were found (HITM)",
Packit Service a1973e
				.pme_ucode  = 0x400,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "REMOTE_CACHE_FWD",
Packit Service a1973e
				.pme_udesc  = "Response. Counts L3 Miss: local homed requests that missed the L3 cache and was serviced by forwarded data following a cross package snoop where no modified copies found. (Remote home requests are not counted)",
Packit Service a1973e
				.pme_ucode  = 0x1000,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "REMOTE_DRAM",
Packit Service a1973e
				.pme_udesc  = "Response. Counts L3 Miss: remote home requests that missed the L3 cache and were serviced by remote DRAM",
Packit Service a1973e
				.pme_ucode  = 0x2000,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "LOCAL_DRAM",
Packit Service a1973e
				.pme_udesc  = "Response. Counts L3 Miss: local home requests that missed the L3 cache and were serviced by local DRAM",
Packit Service a1973e
				.pme_ucode  = 0x4000,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "NON_DRAM",
Packit Service a1973e
				.pme_udesc  = "Response. Non-DRAM requests that were serviced by IOH",
Packit Service a1973e
				.pme_ucode  = 0x8000,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "ANY_RESPONSE",
Packit Service a1973e
				.pme_udesc  = "Response. Counts any response type",
Packit Service a1973e
				.pme_ucode  = 0xf700,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
		},
Packit Service a1973e
		.pme_numasks = 17
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "OFFCORE_RESPONSE_1",
Packit Service a1973e
		.pme_desc   = "Offcore response 1",
Packit Service a1973e
		.pme_code   = 0x01BB,
Packit Service a1973e
		.pme_flags  = PFMLIB_NHM_OFFCORE_RSP1,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
			{ .pme_uname  = "DMND_DATA_RD",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of demand and DCU prefetch data reads of full and partial cachelines as well as demand data page table entry cacheline reads. Does not count L2 data read prefetches or instruction fetches",
Packit Service a1973e
				.pme_ucode  = 0x01,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "DMND_RFO",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of demand and DCU prefetch reads for ownership (RFO) requests generated by a write to data cacheline. Does not count L2 RFO",
Packit Service a1973e
				.pme_ucode  = 0x02,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "DMND_IFETCH",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of demand and DCU prefetch instruction cacheline reads. Does not count L2 code read prefetches",
Packit Service a1973e
				.pme_ucode  = 0x04,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "WB",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of writeback (modified to exclusive) transactions",
Packit Service a1973e
				.pme_ucode  = 0x08,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PF_DATA_RD",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of data cacheline reads generated by L2 prefetchers",
Packit Service a1973e
				.pme_ucode  = 0x10,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PF_RFO",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of RFO requests generated by L2 prefetchers",
Packit Service a1973e
				.pme_ucode  = 0x20,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "PF_IFETCH",
Packit Service a1973e
				.pme_udesc  = "Request. Counts the number of code reads generated by L2 prefetchers",
Packit Service a1973e
				.pme_ucode  = 0x40,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "OTHER",
Packit Service a1973e
				.pme_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 Service a1973e
				.pme_ucode  = 0x80,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "ANY_REQUEST",
Packit Service a1973e
				.pme_udesc  = "Request. Counts any request type",
Packit Service a1973e
				.pme_ucode  = 0xff,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "UNCORE_HIT",
Packit Service a1973e
				.pme_udesc  = "Response. Counts L3 Hit: local or remote home requests that hit L3 cache in the uncore with no coherency actions required (snooping)",
Packit Service a1973e
				.pme_ucode  = 0x100,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "OTHER_CORE_HIT_SNP",
Packit Service a1973e
				.pme_udesc  = "Response. Counts L3 Hit: local or remote home requests that hit L3 cache in the uncore and was serviced by another core with a cross core snoop where no modified copies were found (clean)",
Packit Service a1973e
				.pme_ucode  = 0x200,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "OTHER_CORE_HITM",
Packit Service a1973e
				.pme_udesc  = "Response. Counts L3 Hit: local or remote home requests that hit L3 cache in the uncore and was serviced by another core with a cross core snoop where modified copies were found (HITM)",
Packit Service a1973e
				.pme_ucode  = 0x400,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "REMOTE_CACHE_FWD",
Packit Service a1973e
				.pme_udesc  = "Response. Counts L3 Miss: local homed requests that missed the L3 cache and was serviced by forwarded data following a cross package snoop where no modified copies found. (Remote home requests are not counted)",
Packit Service a1973e
				.pme_ucode  = 0x1000,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "REMOTE_DRAM",
Packit Service a1973e
				.pme_udesc  = "Response. Counts L3 Miss: remote home requests that missed the L3 cache and were serviced by remote DRAM",
Packit Service a1973e
				.pme_ucode  = 0x2000,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "LOCAL_DRAM",
Packit Service a1973e
				.pme_udesc  = "Response. Counts L3 Miss: local home requests that missed the L3 cache and were serviced by local DRAM",
Packit Service a1973e
				.pme_ucode  = 0x4000,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "NON_DRAM",
Packit Service a1973e
				.pme_udesc  = "Response. Non-DRAM requests that were serviced by IOH",
Packit Service a1973e
				.pme_ucode  = 0x8000,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "ANY_RESPONSE",
Packit Service a1973e
				.pme_udesc  = "Response. Counts any response type",
Packit Service a1973e
				.pme_ucode  = 0xf700,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
		},
Packit Service a1973e
		.pme_numasks = 17
Packit Service a1973e
	},
Packit Service a1973e
	/*
Packit Service a1973e
	 * END OFFCORE_RESPONSE
Packit Service a1973e
	 */
Packit Service a1973e
	{ .pme_name   = "BACLEAR",
Packit Service a1973e
	  .pme_desc   = "Branch address calculator clears",
Packit Service a1973e
	  .pme_code   = 0xE6,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "BAD_TARGET",
Packit Service a1973e
		  .pme_udesc  = "BACLEAR asserted with bad target address",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "CLEAR",
Packit Service a1973e
		  .pme_udesc  = "BACLEAR asserted, regardless of cause",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 2
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "DTLB_MISSES",
Packit Service a1973e
	  .pme_desc   = "Data TLB misses",
Packit Service a1973e
	  .pme_code   = 0x49,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "DTLB misses",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LARGE_WALK_COMPLETED",
Packit Service a1973e
		  .pme_udesc  = "DTLB miss large page walks",
Packit Service a1973e
		  .pme_ucode  = 0x80,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "STLB_HIT",
Packit Service a1973e
		  .pme_udesc  = "DTLB first level misses but second level hit",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "WALK_COMPLETED",
Packit Service a1973e
		  .pme_udesc  = "DTLB miss page walks",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "WALK_CYCLES",
Packit Service a1973e
		  .pme_udesc  = "DTLB miss page walk cycles",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 5
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "MEM_INST_RETIRED",
Packit Service a1973e
		.pme_desc   = "Memory instructions retired",
Packit Service a1973e
		.pme_code   = 0x0B,
Packit Service a1973e
		.pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
			{ .pme_uname  = "LATENCY_ABOVE_THRESHOLD",
Packit Service a1973e
				.pme_udesc  = "Memory instructions retired above programmed clocks, minimum value threhold is 4, requires PEBS",
Packit Service a1973e
				.pme_ucode  = 0x10,
Packit Service a1973e
				.pme_uflags = PFMLIB_NHM_PEBS,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "LOADS",
Packit Service a1973e
				.pme_udesc  = "Instructions retired which contains a load (Precise Event)",
Packit Service a1973e
				.pme_ucode  = 0x01,
Packit Service a1973e
				.pme_uflags = PFMLIB_NHM_PEBS,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "STORES",
Packit Service a1973e
				.pme_udesc  = "Instructions retired which contains a store (Precise Event)",
Packit Service a1973e
				.pme_ucode  = 0x02,
Packit Service a1973e
				.pme_uflags = PFMLIB_NHM_PEBS,
Packit Service a1973e
			},
Packit Service a1973e
		},
Packit Service a1973e
		.pme_numasks = 3
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "UOPS_ISSUED",
Packit Service a1973e
		.pme_desc   = "Uops issued",
Packit Service a1973e
		.pme_code   = 0x0E,
Packit Service a1973e
		.pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
			{ .pme_uname  = "ANY",
Packit Service a1973e
				.pme_udesc  = "Uops issued",
Packit Service a1973e
				.pme_ucode  = 0x01,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "STALL_CYCLES",
Packit Service a1973e
				.pme_udesc  = "Cycles stalled no issued uops",
Packit Service a1973e
				.pme_ucode  = 0x01 | (1<<16) | (1<<15), /* counter-mask=1, inv=1 */
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "FUSED",
Packit Service a1973e
				.pme_udesc  = "Fused Uops issued",
Packit Service a1973e
				.pme_ucode  = 0x02,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "CYCLES_ALL_THREADS",
Packit Service a1973e
		  		.pme_udesc  = "Cycles uops issued on either threads (core count)",
Packit Service a1973e
		  		.pme_ucode  = 0x01 | (1<<16) | (1<<13), /* counter-mask=1, any=1 */
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "CORE_STALL_CYCLES",
Packit Service a1973e
		  		.pme_udesc  = "Cycles no uops issued on any threads (core count)",
Packit Service a1973e
		  		.pme_ucode  = 0x01 | (1<<16) | (1<<15) | (1<<13), /* counter-mask=1, any=1, inv=1 */
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
		},
Packit Service a1973e
		.pme_numasks = 5
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L2_RQSTS",
Packit Service a1973e
	  .pme_desc   = "L2 requests",
Packit Service a1973e
	  .pme_code   = 0x24,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "IFETCH_HIT",
Packit Service a1973e
		  .pme_udesc  = "L2 instruction fetch hits",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "IFETCH_MISS",
Packit Service a1973e
		  .pme_udesc  = "L2 instruction fetch misses",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "IFETCHES",
Packit Service a1973e
		  .pme_udesc  = "L2 instruction fetches",
Packit Service a1973e
		  .pme_ucode  = 0x30,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LD_HIT",
Packit Service a1973e
		  .pme_udesc  = "L2 load hits",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LD_MISS",
Packit Service a1973e
		  .pme_udesc  = "L2 load misses",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LOADS",
Packit Service a1973e
		  .pme_udesc  = "L2 requests",
Packit Service a1973e
		  .pme_ucode  = 0x3,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "MISS",
Packit Service a1973e
		  .pme_udesc  = "All L2 misses",
Packit Service a1973e
		  .pme_ucode  = 0xAA,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PREFETCH_HIT",
Packit Service a1973e
		  .pme_udesc  = "L2 prefetch hits",
Packit Service a1973e
		  .pme_ucode  = 0x40,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PREFETCH_MISS",
Packit Service a1973e
		  .pme_udesc  = "L2 prefetch misses",
Packit Service a1973e
		  .pme_ucode  = 0x80,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PREFETCHES",
Packit Service a1973e
		  .pme_udesc  = "All L2 prefetches",
Packit Service a1973e
		  .pme_ucode  = 0xC0,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "REFERENCES",
Packit Service a1973e
		  .pme_udesc  = "All L2 requests",
Packit Service a1973e
		  .pme_ucode  = 0xFF,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RFO_HIT",
Packit Service a1973e
		  .pme_udesc  = "L2 RFO hits",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RFO_MISS",
Packit Service a1973e
		  .pme_udesc  = "L2 RFO misses",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RFOS",
Packit Service a1973e
		  .pme_udesc  = "L2 RFO requests",
Packit Service a1973e
		  .pme_ucode  = 0xC,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 14
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "TWO_UOP_INSTS_DECODED",
Packit Service a1973e
	  .pme_desc   = "Two Uop instructions decoded",
Packit Service a1973e
	  .pme_code   = 0x0119,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "LOAD_DISPATCH",
Packit Service a1973e
	  .pme_desc   = "Loads dispatched",
Packit Service a1973e
	  .pme_code   = 0x13,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "All loads dispatched",
Packit Service a1973e
		  .pme_ucode  = 0x7,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RS",
Packit Service a1973e
		  .pme_udesc  = "Number of loads dispatched from the Reservation Station (RS) that bypass the Memory Order Buffer",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RS_DELAYED",
Packit Service a1973e
		  .pme_udesc  = "Number of delayed RS dispatches at the stage latch",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "MOB",
Packit Service a1973e
		  .pme_udesc  = "Number of loads dispatched from Reservation Station (RS)",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 4
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "BACLEAR_FORCE_IQ",
Packit Service a1973e
	  .pme_desc   = "BACLEAR forced by Instruction queue",
Packit Service a1973e
	  .pme_code   = 0x01A7,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "SNOOPQ_REQUESTS",
Packit Service a1973e
	  .pme_desc   = "Snoopq requests",
Packit Service a1973e
	  .pme_code   = 0xB4,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "CODE",
Packit Service a1973e
		  .pme_udesc  = "Snoop code requests",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DATA",
Packit Service a1973e
		  .pme_udesc  = "Snoop data requests",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "INVALIDATE",
Packit Service a1973e
		  .pme_udesc  = "Snoop invalidate requests",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 3
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "OFFCORE_REQUESTS",
Packit Service a1973e
	  .pme_desc   = "offcore requests",
Packit Service a1973e
	  .pme_code   = 0xB0,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "All offcore requests",
Packit Service a1973e
		  .pme_ucode  = 0x80,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "ANY_READ",
Packit Service a1973e
		  .pme_udesc  = "Offcore read requests",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "ANY_RFO",
Packit Service a1973e
		  .pme_udesc  = "Offcore RFO requests",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_READ_CODE",
Packit Service a1973e
		  .pme_udesc  = "Offcore demand code read requests",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_READ_DATA",
Packit Service a1973e
		  .pme_udesc  = "Offcore demand data read requests",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_RFO",
Packit Service a1973e
		  .pme_udesc  = "Offcore demand RFO requests",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "L1D_WRITEBACK",
Packit Service a1973e
		  .pme_udesc  = "Offcore L1 data cache writebacks",
Packit Service a1973e
		  .pme_ucode  = 0x40,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 7
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "LOAD_BLOCK",
Packit Service a1973e
	  .pme_desc   = "Loads blocked",
Packit Service a1973e
	  .pme_code   = 0x3,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "OVERLAP_STORE",
Packit Service a1973e
		  .pme_udesc  = "lods that partially overlap an earlier store",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 1
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "MISALIGN_MEMORY",
Packit Service a1973e
	  .pme_desc   = "Misaligned accesses",
Packit Service a1973e
	  .pme_code   = 0x5,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "STORE",
Packit Service a1973e
		  .pme_udesc  = "store referenced with misaligned address",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 1
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "INST_QUEUE_WRITE_CYCLES",
Packit Service a1973e
	  .pme_desc   = "Cycles instructions are written to the instruction queue",
Packit Service a1973e
	  .pme_code   = 0x011E,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "MACHINE_CLEARS",
Packit Service a1973e
	  .pme_desc   = "Machine clear asserted",
Packit Service a1973e
	  .pme_code   = 0xC3,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "MEM_ORDER",
Packit Service a1973e
		  .pme_udesc  = "Execution pipeline restart due to Memory ordering conflicts ",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "CYCLES",
Packit Service a1973e
		  .pme_udesc  = "cycles machine clear is asserted",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  	{ .pme_uname  = "SMC",
Packit Service a1973e
		  .pme_udesc  = "Self-modifying code detected",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 3
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "FP_COMP_OPS_EXE",
Packit Service a1973e
	  .pme_desc   = "SSE/MMX micro-ops",
Packit Service a1973e
	  .pme_code   = 0x10,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "MMX",
Packit Service a1973e
		  .pme_udesc  = "MMX Uops",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "SSE_DOUBLE_PRECISION",
Packit Service a1973e
		  .pme_udesc  = "SSE FP double precision Uops",
Packit Service a1973e
		  .pme_ucode  = 0x80,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "SSE_FP",
Packit Service a1973e
		  .pme_udesc  = "SSE and SSE2 FP Uops",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "SSE_FP_PACKED",
Packit Service a1973e
		  .pme_udesc  = "SSE FP packed Uops",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "SSE_FP_SCALAR",
Packit Service a1973e
		  .pme_udesc  = "SSE FP scalar Uops",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "SSE_SINGLE_PRECISION",
Packit Service a1973e
		  .pme_udesc  = "SSE FP single precision Uops",
Packit Service a1973e
		  .pme_ucode  = 0x40,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "SSE2_INTEGER",
Packit Service a1973e
		  .pme_udesc  = "SSE2 integer Uops",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "X87",
Packit Service a1973e
		  .pme_udesc  = "Computational floating-point operations executed",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 8
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "ITLB_FLUSH",
Packit Service a1973e
	  .pme_desc   = "ITLB flushes",
Packit Service a1973e
	  .pme_code   = 0x01AE,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "BR_INST_RETIRED",
Packit Service a1973e
	  .pme_desc   = "Retired branch instructions (Precise Event)",
Packit Service a1973e
	  .pme_code   = 0xC4,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_PEBS|PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ALL_BRANCHES",
Packit Service a1973e
		  .pme_udesc  = "Retired branch instructions (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x0,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "CONDITIONAL",
Packit Service a1973e
		  .pme_udesc  = "Retired conditional branch instructions (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "NEAR_CALL",
Packit Service a1973e
		  .pme_udesc  = "Retired near call instructions (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 3
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L1D_CACHE_PREFETCH_LOCK_FB_HIT",
Packit Service a1973e
	  .pme_desc   = "L1D prefetch load lock accepted in fill buffer",
Packit Service a1973e
	  .pme_code   = 0x0152,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "LARGE_ITLB",
Packit Service a1973e
	  .pme_desc   = "Large ITLB accesses",
Packit Service a1973e
	  .pme_code   = 0x82,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "HIT",
Packit Service a1973e
		  .pme_udesc  = "Large ITLB hit",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 1
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "LSD",
Packit Service a1973e
		.pme_desc   = "Loop stream detector",
Packit Service a1973e
		.pme_code   = 0xA8,
Packit Service a1973e
		.pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
			{ .pme_uname  = "UOPS",
Packit Service a1973e
				.pme_udesc  = "counts the number of micro-ops delivered by LSD",
Packit Service a1973e
				.pme_ucode  = 0x01,
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
			{ .pme_uname  = "ACTIVE",
Packit Service a1973e
				.pme_udesc  = "Cycles is which at least one micro-op delivered by LSD",
Packit Service a1973e
				.pme_ucode  = 0x01 | (1<<16),
Packit Service a1973e
				.pme_uflags = 0,
Packit Service a1973e
			},
Packit Service a1973e
		},
Packit Service a1973e
		.pme_numasks = 2
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L2_LINES_OUT",
Packit Service a1973e
	  .pme_desc   = "L2 lines evicted",
Packit Service a1973e
	  .pme_code   = 0xF2,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "L2 lines evicted",
Packit Service a1973e
		  .pme_ucode  = 0xF,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_CLEAN",
Packit Service a1973e
		  .pme_udesc  = "L2 lines evicted by a demand request",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_DIRTY",
Packit Service a1973e
		  .pme_udesc  = "L2 modified lines evicted by a demand request",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PREFETCH_CLEAN",
Packit Service a1973e
		  .pme_udesc  = "L2 lines evicted by a prefetch request",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PREFETCH_DIRTY",
Packit Service a1973e
		  .pme_udesc  = "L2 modified lines evicted by a prefetch request",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 5
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "ITLB_MISSES",
Packit Service a1973e
	  .pme_desc   = "ITLB miss",
Packit Service a1973e
	  .pme_code   = 0x85,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "ITLB miss",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "WALK_COMPLETED",
Packit Service a1973e
		  .pme_udesc  = "ITLB miss page walks",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "WALK_CYCLES",
Packit Service a1973e
		  .pme_udesc  = "ITLB miss page walk cycles",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LARGE_WALK_COMPLETED",
Packit Service a1973e
		  .pme_udesc  = "Number of completed large page walks due to misses in the STLB",
Packit Service a1973e
		  .pme_ucode  = 0x80,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 4
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L1D_PREFETCH",
Packit Service a1973e
	  .pme_desc   = "L1D hardware prefetch",
Packit Service a1973e
	  .pme_code   = 0x4E,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "MISS",
Packit Service a1973e
		  .pme_udesc  = "L1D hardware prefetch misses",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "REQUESTS",
Packit Service a1973e
		  .pme_udesc  = "L1D hardware prefetch requests",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "TRIGGERS",
Packit Service a1973e
		  .pme_udesc  = "L1D hardware prefetch requests triggered",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 3
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "SQ_MISC",
Packit Service a1973e
	  .pme_desc   = "Super Queue miscellaneous",
Packit Service a1973e
	  .pme_code   = 0xF4,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "LRU_HINTS",
Packit Service a1973e
		  .pme_udesc  = "Super Queue LRU hints sent to LLC",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "SPLIT_LOCK",
Packit Service a1973e
		  .pme_udesc  = "Super Queue lock splits across a cache line",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 2
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "SEG_RENAME_STALLS",
Packit Service a1973e
	  .pme_desc   = "Segment rename stall cycles",
Packit Service a1973e
	  .pme_code   = 0x01D4,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "FP_ASSIST",
Packit Service a1973e
	  .pme_desc   = "X87 Floating point assists (Precise Event)",
Packit Service a1973e
	  .pme_code   = 0xF7,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_PEBS|PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ALL",
Packit Service a1973e
		  .pme_udesc  = "All X87 Floating point assists (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "INPUT",
Packit Service a1973e
		  .pme_udesc  = "X87 Floating poiint assists for invalid input value (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "OUTPUT",
Packit Service a1973e
		  .pme_udesc  = "X87 Floating point assists for invalid output value (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 3
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "SIMD_INT_128",
Packit Service a1973e
	  .pme_desc   = "128 bit SIMD operations",
Packit Service a1973e
	  .pme_code   = 0x12,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "PACK",
Packit Service a1973e
		  .pme_udesc  = "128 bit SIMD integer pack operations",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PACKED_ARITH",
Packit Service a1973e
		  .pme_udesc  = "128 bit SIMD integer arithmetic operations",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PACKED_LOGICAL",
Packit Service a1973e
		  .pme_udesc  = "128 bit SIMD integer logical operations",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PACKED_MPY",
Packit Service a1973e
		  .pme_udesc  = "128 bit SIMD integer multiply operations",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PACKED_SHIFT",
Packit Service a1973e
		  .pme_udesc  = "128 bit SIMD integer shift operations",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "SHUFFLE_MOVE",
Packit Service a1973e
		  .pme_udesc  = "128 bit SIMD integer shuffle/move operations",
Packit Service a1973e
		  .pme_ucode  = 0x40,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "UNPACK",
Packit Service a1973e
		  .pme_udesc  = "128 bit SIMD integer unpack operations",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 7
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "OFFCORE_REQUESTS_OUTSTANDING",
Packit Service a1973e
	  .pme_desc   = "Outstanding offcore requests",
Packit Service a1973e
	  .pme_code   = 0x60,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_PMC0|PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY_READ",
Packit Service a1973e
		  .pme_udesc  = "Outstanding offcore reads",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_READ_CODE",
Packit Service a1973e
		  .pme_udesc  = "Outstanding offcore demand code reads",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_READ_DATA",
Packit Service a1973e
		  .pme_udesc  = "Outstanding offcore demand data reads",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_RFO",
Packit Service a1973e
		  .pme_udesc  = "Outstanding offcore demand RFOs",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 4
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "MEM_STORE_RETIRED",
Packit Service a1973e
	  .pme_desc   = "Retired stores",
Packit Service a1973e
	  .pme_code   = 0xC,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "DTLB_MISS",
Packit Service a1973e
		  .pme_udesc  = "Retired stores that miss the DTLB (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 1
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "INST_DECODED",
Packit Service a1973e
	  .pme_desc   = "Instructions decoded",
Packit Service a1973e
	  .pme_code   = 0x18,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "DEC0",
Packit Service a1973e
		  .pme_udesc  = "Instructions that must be decoded by decoder 0",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 1
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "MACRO_INSTS_FUSIONS_DECODED",
Packit Service a1973e
	  .pme_desc   = "Count the number of instructions decoded that are macros-fused but not necessarily executed or retired",
Packit Service a1973e
	  .pme_code   = 0x01A6,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "MACRO_INSTS",
Packit Service a1973e
	  .pme_desc   = "macro-instructions",
Packit Service a1973e
	  .pme_code   = 0xD0,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "DECODED",
Packit Service a1973e
		  .pme_udesc  = "Instructions decoded",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 1
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "PARTIAL_ADDRESS_ALIAS",
Packit Service a1973e
	  .pme_desc   = "False dependencies due to partial address aliasing",
Packit Service a1973e
	  .pme_code   = 0x0107,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "ARITH",
Packit Service a1973e
	  .pme_desc   = "Counts arithmetic multiply and divide operations",
Packit Service a1973e
	  .pme_code   = 0x14,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "CYCLES_DIV_BUSY",
Packit Service a1973e
		  .pme_udesc  = "Counts the number of cycles the divider is busy executing divide or square root operations. The divide can be integer, X87 or Streaming SIMD Extensions (SSE). The square root operation can be either X87 or SSE. Count may be incorrect when HT is on",
Packit Service a1973e
		  .pme_ucode  = 0x01,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DIV",
Packit Service a1973e
		  .pme_udesc  = "Counts the number of divide or square root operations. The divide can be integer, X87 or Streaming SIMD Extensions (SSE). The square root operation can be either X87 or SSE. Count may be incorrect when HT is on",
Packit Service a1973e
		  .pme_ucode  = 0x01 | (1<<16) | (1<<15) | (1<<10),    /* cmask=1  invert=1  edge=1 */
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "MUL",
Packit Service a1973e
		  .pme_udesc  = "Counts the number of multiply operations executed. This includes integer as well as floating point multiply operations but excludes DPPS mul and MPSAD. Count may be incorrect when HT is on",
Packit Service a1973e
		  .pme_ucode  = 0x02,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 3
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L2_TRANSACTIONS",
Packit Service a1973e
	  .pme_desc   = "All L2 transactions",
Packit Service a1973e
	  .pme_code   = 0xF0,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "All L2 transactions",
Packit Service a1973e
		  .pme_ucode  = 0x80,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "FILL",
Packit Service a1973e
		  .pme_udesc  = "L2 fill transactions",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "IFETCH",
Packit Service a1973e
		  .pme_udesc  = "L2 instruction fetch transactions",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "L1D_WB",
Packit Service a1973e
		  .pme_udesc  = "L1D writeback to L2 transactions",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LOAD",
Packit Service a1973e
		  .pme_udesc  = "L2 Load transactions",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PREFETCH",
Packit Service a1973e
		  .pme_udesc  = "L2 prefetch transactions",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RFO",
Packit Service a1973e
		  .pme_udesc  = "L2 RFO transactions",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "WB",
Packit Service a1973e
		  .pme_udesc  = "L2 writeback to LLC transactions",
Packit Service a1973e
		  .pme_ucode  = 0x40,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 8
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "INST_QUEUE_WRITES",
Packit Service a1973e
	  .pme_desc   = "Instructions written to instruction queue.",
Packit Service a1973e
	  .pme_code   = 0x0117,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "LSD_OVERFLOW",
Packit Service a1973e
	  .pme_desc   = "Number of loops that cannot stream from the instruction queue.",
Packit Service a1973e
	  .pme_code = 0x0120,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "SB_DRAIN",
Packit Service a1973e
	  .pme_desc   = "store buffer",
Packit Service a1973e
	  .pme_code   = 0x4,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "All Store buffer stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x7,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 1
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "LOAD_HIT_PRE",
Packit Service a1973e
	  .pme_desc   = "Load operations conflicting with software prefetches",
Packit Service a1973e
	  .pme_code   = 0x014C,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_PMC01,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "MEM_UNCORE_RETIRED",
Packit Service a1973e
	  .pme_desc   = "Load instructions retired (Precise Event)",
Packit Service a1973e
	  .pme_code = 0xF,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_PEBS|PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "LOCAL_HITM",
Packit Service a1973e
		  .pme_udesc  = "Load instructions retired that HIT modified data in sibling core (Precise Event) (Model 44 only)",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_umodel = 44,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LOCAL_DRAM_AND_REMOTE_CACHE_HIT",
Packit Service a1973e
		  .pme_udesc  = "Load instructions retired local dram and remote cache HIT data sources (Precise Event) (Model 44 only)",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_umodel = 44,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "REMOTE_DRAM",
Packit Service a1973e
		  .pme_udesc  = "Load instructions retired remote DRAM and remote home-remote cache HITM (Precise Event) (Model 44 only)",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_umodel = 44,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "UNCACHEABLE",
Packit Service a1973e
		  .pme_udesc  = "Load instructions retired IO (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x80,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "REMOTE_HITM",
Packit Service a1973e
		  .pme_udesc  = "Retired lods that hit remote socket in modified state (Precise Event) (Model 44 only)",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_umodel = 44,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "OTHER_LLC_MISS",
Packit Service a1973e
		  .pme_udesc  = "Load instructions retired other LLC miss (Precise Event) (Model 44 only)",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_umodel = 44,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "UNKNOWN_SOURCE",
Packit Service a1973e
		  .pme_udesc  = "Load instructions retired unknown LLC miss(Precise Event) (Model 44 only)",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_umodel = 44,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LOCAL_DRAM",
Packit Service a1973e
		  .pme_udesc  = "Retired loads with a data source of local DRAM or locally homed remote cache HITM (Precise Event) (Model 37 only)",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_umodel = 37,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "OTHER_CORE_L2_HITM",
Packit Service a1973e
		  .pme_udesc  = "Retired loads instruction that hit modified data in sibling core (Precise Event) (Model 37 only)",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_umodel = 37,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "REMOTE_CACHE_LOCAL_HOME_HIT",
Packit Service a1973e
		  .pme_udesc  = "Retired loads instruction that hit remote cache hit data source (Precise Event) (Model 37 only)",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_umodel = 37,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "REMOTE_DRAM",
Packit Service a1973e
		  .pme_udesc  = "Retired loads instruction remote DRAM and remote home-remote cache HITM (Precise Event) (Model 37 only)",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_umodel = 37,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 11,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L2_DATA_RQSTS",
Packit Service a1973e
	  .pme_desc   = "All L2 data requests",
Packit Service a1973e
	  .pme_code   = 0x26,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "All L2 data requests",
Packit Service a1973e
		  .pme_ucode  = 0xFF,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_E_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 data demand loads in E state",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_I_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 data demand loads in I state (misses)",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_M_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 data demand loads in M state",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_MESI",
Packit Service a1973e
		  .pme_udesc  = "L2 data demand requests",
Packit Service a1973e
		  .pme_ucode  = 0xF,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DEMAND_S_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 data demand loads in S state",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PREFETCH_E_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 data prefetches in E state",
Packit Service a1973e
		  .pme_ucode  = 0x40,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PREFETCH_I_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 data prefetches in the I state (misses)",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PREFETCH_M_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 data prefetches in M state",
Packit Service a1973e
		  .pme_ucode  = 0x80,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PREFETCH_MESI",
Packit Service a1973e
		  .pme_udesc  = "All L2 data prefetches",
Packit Service a1973e
		  .pme_ucode  = 0xF0,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "PREFETCH_S_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 data prefetches in the S state",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 11
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "BR_INST_EXEC",
Packit Service a1973e
	  .pme_desc   = "Branch instructions executed",
Packit Service a1973e
	  .pme_code   = 0x88,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "Branch instructions executed",
Packit Service a1973e
		  .pme_ucode  = 0x7F,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "COND",
Packit Service a1973e
		  .pme_udesc  = "Conditional branch instructions executed",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DIRECT",
Packit Service a1973e
		  .pme_udesc  = "Unconditional branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DIRECT_NEAR_CALL",
Packit Service a1973e
		  .pme_udesc  = "Unconditional call branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "INDIRECT_NEAR_CALL",
Packit Service a1973e
		  .pme_udesc  = "Indirect call branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "INDIRECT_NON_CALL",
Packit Service a1973e
		  .pme_udesc  = "Indirect non call branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "NEAR_CALLS",
Packit Service a1973e
		  .pme_udesc  = "Call branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x30,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "NON_CALLS",
Packit Service a1973e
		  .pme_udesc  = "All non call branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x7,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RETURN_NEAR",
Packit Service a1973e
		  .pme_udesc  = "Indirect return branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "TAKEN",
Packit Service a1973e
		  .pme_udesc  = "Taken branches executed",
Packit Service a1973e
		  .pme_ucode  = 0x40,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 10
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "ITLB_MISS_RETIRED",
Packit Service a1973e
	  .pme_desc   = "Retired instructions that missed the ITLB (Precise Event)",
Packit Service a1973e
	  .pme_code   = 0x20C8,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "BPU_MISSED_CALL_RET",
Packit Service a1973e
	  .pme_desc   = "Branch prediction unit missed call or return",
Packit Service a1973e
	  .pme_code   = 0x01E5,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "SNOOPQ_REQUESTS_OUTSTANDING",
Packit Service a1973e
	  .pme_desc   = "Outstanding snoop requests",
Packit Service a1973e
	  .pme_code   = 0xB3,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_PMC0|PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "CODE",
Packit Service a1973e
		  .pme_udesc  = "Outstanding snoop code requests",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "CODE_NOT_EMPTY",
Packit Service a1973e
		  .pme_udesc  = "Cycles snoop code requests queue not empty",
Packit Service a1973e
		  .pme_ucode  = 0x4 | (1 << 16), /* cmask=1 */
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DATA",
Packit Service a1973e
		  .pme_udesc  = "Outstanding snoop data requests",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "DATA_NOT_EMPTY",
Packit Service a1973e
		  .pme_udesc  = "Cycles snoop data requests queue not empty",
Packit Service a1973e
		  .pme_ucode  = 0x1 | (1 << 16), /* cmask=1 */
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "INVALIDATE",
Packit Service a1973e
		  .pme_udesc  = "Outstanding snoop invalidate requests",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "INVALIDATE_NOT_EMPTY",
Packit Service a1973e
		  .pme_udesc  = "Cycles snoop invalidate requests queue not empty",
Packit Service a1973e
		  .pme_ucode  = 0x2 | (1 << 16), /* cmask=1 */
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 6
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "MEM_LOAD_RETIRED",
Packit Service a1973e
	  .pme_desc   = "memory load retired (Precise Event)",
Packit Service a1973e
	  .pme_code   = 0xCB,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_PEBS|PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "DTLB_MISS",
Packit Service a1973e
		  .pme_udesc  = "Retired loads that miss the DTLB (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x80,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "HIT_LFB",
Packit Service a1973e
		  .pme_udesc  = "Retired loads that miss L1D and hit an previously allocated LFB (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x40,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "L1D_HIT",
Packit Service a1973e
		  .pme_udesc  = "Retired loads that hit the L1 data cache (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "L2_HIT",
Packit Service a1973e
		  .pme_udesc  = "Retired loads that hit the L2 cache (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "L3_MISS",
Packit Service a1973e
		  .pme_udesc  = "Retired loads that miss the LLC cache (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "L3_UNSHARED_HIT",
Packit Service a1973e
		  .pme_udesc  = "Retired loads that hit valid versions in the LLC cache (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "OTHER_CORE_L2_HIT_HITM",
Packit Service a1973e
		  .pme_udesc  = "Retired loads that hit sibling core's L2 in modified or unmodified states (Precise Event)",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 7
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L1I",
Packit Service a1973e
	  .pme_desc   = "L1I instruction fetch",
Packit Service a1973e
	  .pme_code   = 0x80,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "CYCLES_STALLED",
Packit Service a1973e
		  .pme_udesc  = "L1I instruction fetch stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "HITS",
Packit Service a1973e
		  .pme_udesc  = "L1I instruction fetch hits",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "MISSES",
Packit Service a1973e
		  .pme_udesc  = "L1I instruction fetch misses",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "READS",
Packit Service a1973e
		  .pme_udesc  = "L1I Instruction fetches",
Packit Service a1973e
		  .pme_ucode  = 0x3,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 4
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L2_WRITE",
Packit Service a1973e
	  .pme_desc   = "L2 demand lock/store RFO",
Packit Service a1973e
	  .pme_code   = 0x27,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "LOCK_E_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 demand lock RFOs in E state",
Packit Service a1973e
		  .pme_ucode  = 0x40,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LOCK_HIT",
Packit Service a1973e
		  .pme_udesc  = "All demand L2 lock RFOs that hit the cache",
Packit Service a1973e
		  .pme_ucode  = 0xE0,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LOCK_I_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 demand lock RFOs in I state (misses)",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LOCK_M_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 demand lock RFOs in M state",
Packit Service a1973e
		  .pme_ucode  = 0x80,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LOCK_MESI",
Packit Service a1973e
		  .pme_udesc  = "All demand L2 lock RFOs",
Packit Service a1973e
		  .pme_ucode  = 0xF0,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LOCK_S_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 demand lock RFOs in S state",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RFO_HIT",
Packit Service a1973e
		  .pme_udesc  = "All L2 demand store RFOs that hit the cache",
Packit Service a1973e
		  .pme_ucode  = 0xE,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RFO_I_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 demand store RFOs in I state (misses)",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RFO_M_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 demand store RFOs in M state",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RFO_MESI",
Packit Service a1973e
		  .pme_udesc  = "All L2 demand store RFOs",
Packit Service a1973e
		  .pme_ucode  = 0xF,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RFO_S_STATE",
Packit Service a1973e
		  .pme_udesc  = "L2 demand store RFOs in S state",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 11
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "SNOOP_RESPONSE",
Packit Service a1973e
	  .pme_desc   = "Snoop",
Packit Service a1973e
	  .pme_code   = 0xB8,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "HIT",
Packit Service a1973e
		  .pme_udesc  = "Thread responded HIT to snoop",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "HITE",
Packit Service a1973e
		  .pme_udesc  = "Thread responded HITE to snoop",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "HITM",
Packit Service a1973e
		  .pme_udesc  = "Thread responded HITM to snoop",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 3
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L1D",
Packit Service a1973e
	  .pme_desc   = "L1D cache",
Packit Service a1973e
	  .pme_code   = 0x51,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_PMC01|PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "M_EVICT",
Packit Service a1973e
		  .pme_udesc  = "L1D cache lines replaced in M state ",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "M_REPL",
Packit Service a1973e
		  .pme_udesc  = "L1D cache lines allocated in the M state",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "M_SNOOP_EVICT",
Packit Service a1973e
		  .pme_udesc  = "L1D snoop eviction of cache lines in M state",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "REPL",
Packit Service a1973e
		  .pme_udesc  = "L1 data cache lines allocated",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 4
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "RESOURCE_STALLS",
Packit Service a1973e
	  .pme_desc   = "Resource related stall cycles",
Packit Service a1973e
	  .pme_code   = 0xA2,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "Resource related stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "FPCW",
Packit Service a1973e
		  .pme_udesc  = "FPU control word write stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x20,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "LOAD",
Packit Service a1973e
		  .pme_udesc  = "Load buffer stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "MXCSR",
Packit Service a1973e
		  .pme_udesc  = "MXCSR rename stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x40,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "OTHER",
Packit Service a1973e
		  .pme_udesc  = "Other Resource related stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x80,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "ROB_FULL",
Packit Service a1973e
		  .pme_udesc  = "ROB full stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x10,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "RS_FULL",
Packit Service a1973e
		  .pme_udesc  = "Reservation Station full stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "STORE",
Packit Service a1973e
		  .pme_udesc  = "Store buffer stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 8
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "RAT_STALLS",
Packit Service a1973e
	  .pme_desc   = "All RAT stall cycles",
Packit Service a1973e
	  .pme_code   = 0xD2,
Packit Service a1973e
	  .pme_flags  = 0,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "ANY",
Packit Service a1973e
		  .pme_udesc  = "All RAT stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0xF,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "FLAGS",
Packit Service a1973e
		  .pme_udesc  = "Flag stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "REGISTERS",
Packit Service a1973e
		  .pme_udesc  = "Partial register stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "ROB_READ_PORT",
Packit Service a1973e
		  .pme_udesc  = "ROB read port stalls cycles",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "SCOREBOARD",
Packit Service a1973e
		  .pme_udesc  = "Scoreboard stall cycles",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 5
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "CPU_CLK_UNHALTED",
Packit Service a1973e
	  .pme_desc   = "Cycles when processor is not in halted state",
Packit Service a1973e
	  .pme_code   = 0x3C,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "THREAD_P",
Packit Service a1973e
		  .pme_udesc  = "Cycles when thread is not halted (programmable counter)",
Packit Service a1973e
		  .pme_ucode  = 0x00,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "REF_P",
Packit Service a1973e
		  .pme_udesc  = "Reference base clock (133 Mhz) cycles when thread is not halted",
Packit Service a1973e
		  .pme_ucode  = 0x01,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 2
Packit Service a1973e
	},
Packit Service a1973e
	{ .pme_name   = "L1D_WB_L2",
Packit Service a1973e
	  .pme_desc   = "L1D writebacks to L2",
Packit Service a1973e
	  .pme_code   = 0x28,
Packit Service a1973e
	  .pme_flags  = PFMLIB_NHM_UMASK_NCOMBO,
Packit Service a1973e
	  .pme_umasks = {
Packit Service a1973e
		{ .pme_uname  = "E_STATE",
Packit Service a1973e
		  .pme_udesc  = "L1 writebacks to L2 in E state",
Packit Service a1973e
		  .pme_ucode  = 0x4,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "I_STATE",
Packit Service a1973e
		  .pme_udesc  = "L1 writebacks to L2 in I state (misses)",
Packit Service a1973e
		  .pme_ucode  = 0x1,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "M_STATE",
Packit Service a1973e
		  .pme_udesc  = "L1 writebacks to L2 in M state",
Packit Service a1973e
		  .pme_ucode  = 0x8,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "MESI",
Packit Service a1973e
		  .pme_udesc  = "All L1 writebacks to L2",
Packit Service a1973e
		  .pme_ucode  = 0xF,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
		{ .pme_uname  = "S_STATE",
Packit Service a1973e
		  .pme_udesc  = "L1 writebacks to L2 in S state",
Packit Service a1973e
		  .pme_ucode  = 0x2,
Packit Service a1973e
		  .pme_uflags = 0,
Packit Service a1973e
		},
Packit Service a1973e
	  },
Packit Service a1973e
	  .pme_numasks = 5
Packit Service a1973e
	},
Packit Service a1973e
	{.pme_name = "MISPREDICTED_BRANCH_RETIRED",
Packit Service a1973e
	 .pme_code = 0x00c5,
Packit Service a1973e
	 .pme_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 Service a1973e
	},
Packit Service a1973e
        {.pme_name = "THREAD_ACTIVE",
Packit Service a1973e
         .pme_code= 0x01ec,
Packit Service a1973e
         .pme_desc =  "Cycles thread is active",
Packit Service a1973e
        },
Packit Service a1973e
        {.pme_name = "UOP_UNFUSION",
Packit Service a1973e
         .pme_code= 0x01db,
Packit Service a1973e
         .pme_desc =  "Counts unfusion events due to floating point exception to a fused uop",
Packit Service a1973e
        }
Packit Service a1973e
};
Packit Service a1973e
#define PME_WSM_UNHALTED_CORE_CYCLES 0
Packit Service a1973e
#define PME_WSM_INSTRUCTIONS_RETIRED 1
Packit Service a1973e
#define PME_WSM_EVENT_COUNT	  (sizeof(wsm_pe)/sizeof(pme_nhm_entry_t))