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

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