1[ {
2	"mnemonic": "Core::X86::Pmc::Core::FpRetx87FpOps",
3	"name": "FpRetx87FpOps",
4	"code": "0x002",
5	"summary": "Retired x87 FP Ops",
6	"description": "The number of x87 floating-point Ops that have retired.",
7	"units": [ {
8		"name": "DivSqrROps",
9		"bit": 2,
10		"rw": "Read-write",
11		"description": "Divide and square root Ops. "
12	}, {
13		"name": "MulOps",
14		"bit": 1,
15		"rw": "Read-write",
16		"description": "Multiply Ops. "
17	}, {
18		"name": "AddSubOps",
19		"bit": 0,
20		"rw": "Read-write",
21		"description": "Add/subtract Ops. "
22	} ]
23},
24{
25	"mnemonic": "Core::X86::Pmc::Core::FpRetSseAvxOps",
26	"name": "FpRetSseAvxOps",
27	"code": "0x003",
28	"summary": "Retired SSE/AVX FLOPs",
29	"description": "This is a retire-based event. The number of retired SSE/AVX FLOPs. The number of events logged per cycle can vary from 0 to 64. This event requires the use of the MergeEvent since it can count above 15 events per cycle. See 2.1.13.3 [Large Increment per Cycle Events]. It does not provide a useful count without the use of the MergeEvent.",
30	"units": [ {
31		"name": "BfloatMacFLOPs",
32		"bit": 4,
33		"rw": "Read-write",
34		"description": "bfloat Multiply-Accumulate FLOPs.  Each bfloat MAC operation is counted as 2 FLOPS."
35	}, {
36		"name": "MacFLOPs",
37		"bit": 3,
38		"rw": "Read-write",
39		"description": "Multiply-Accumulate FLOPs.  Each MAC operation is counted as 2 FLOPS.  This event does not include bfloat MAC operations."
40	}, {
41		"name": "DivFLOPs",
42		"bit": 2,
43		"rw": "Read-write",
44		"description": "Divide/square root FLOPs. "
45	}, {
46		"name": "MultFLOPs",
47		"bit": 1,
48		"rw": "Read-write",
49		"description": "Multiply FLOPs. "
50	}, {
51		"name": "AddSubFLOPs",
52		"bit": 0,
53		"rw": "Read-write",
54		"description": "Add/subtract FLOPs. "
55	} ]
56},
57{
58	"mnemonic": "Core::X86::Pmc::Core::FpRetiredSerOps",
59	"name": "FpRetiredSerOps",
60	"code": "0x005",
61	"summary": "Retired Serializing Ops",
62	"description": "The number of serializing Ops retired.",
63	"units": [ {
64		"name": "SseBotRet",
65		"bit": 3,
66		"rw": "Read-write",
67		"description": "SSE/AVX bottom-executing ops retired."
68	}, {
69		"name": "SseCtrlRet",
70		"bit": 2,
71		"rw": "Read-write",
72		"description": "SSE/AVX control word mispredict traps."
73	}, {
74		"name": "X87BotRet",
75		"bit": 1,
76		"rw": "Read-write",
77		"description": "x87 bottom-executing ops retired."
78	}, {
79		"name": "X87CtrlRet",
80		"bit": 0,
81		"rw": "Read-write",
82		"description": "x87 control word mispredict traps due to mispredictions in RC or PC, or changes in Exception Mask bits."
83	} ]
84},
85{
86	"mnemonic": "Core::X86::Pmc::Core::FpOpsRetiredByWidth",
87	"name": "FpOpsRetiredByWidth",
88	"code": "0x008",
89	"summary": "Retired FP Ops By Width",
90	"units": [ {
91		"name": "Pack512uOpsRetired",
92		"bit": 5,
93		"rw": "Read-write",
94		"description": "Number of packed 512-bit ops retired."
95	}, {
96		"name": "Pack256uOpsRetired",
97		"bit": 4,
98		"rw": "Read-write",
99		"description": "Number of packed 256-bit ops retired."
100	}, {
101		"name": "Pack128uOpsRetired",
102		"bit": 3,
103		"rw": "Read-write",
104		"description": "Number of packed 128-bit ops retired."
105	}, {
106		"name": "ScalaruOpsRetired",
107		"bit": 2,
108		"rw": "Read-write",
109		"description": "Number of scalar ops retired."
110	}, {
111		"name": "MMXuOpsRetired",
112		"bit": 1,
113		"rw": "Read-write",
114		"description": "Number of MMX ops retired."
115	}, {
116		"name": "x87uOpsRetired",
117		"bit": 0,
118		"rw": "Read-write",
119		"description": "Number of x87 ops retired."
120	} ]
121},
122{
123	"mnemonic": "Core::X86::Pmc::Core::FpOpsRetiredByType",
124	"name": "FpOpsRetiredByType",
125	"code": "0x00A",
126	"summary": "Retired FP Ops By Type",
127	"description": "Note: Shuffle op counts may count for instructions that are not necessarily thought of as including shuffles. For example, Horizontal Add, Dot Product, and certain MOV instructions may include or use only shuffle type ops.",
128	"unit_mode": "or-value",
129	"units": [ {
130		"name": "VectorFpOpType",
131		"bit-range": "7:4",
132		"rw": "read-write",
133		"values": [
134			{ "value": "0x0", "description": "None" },
135			{ "value": "0x1", "description": "Add" },
136			{ "value": "0x2", "description": "Sub" },
137			{ "value": "0x3", "description": "Mul" },
138			{ "value": "0x4", "description": "Mac" },
139			{ "value": "0x5", "description": "Div" },
140			{ "value": "0x6", "description": "Sqrt" },
141			{ "value": "0x7", "description": "Cmp" },
142			{ "value": "0x8", "description": "Cvt" },
143			{ "value": "0x9", "description": "Blend" },
144			{ "value": "0xB", "description": "Shuffle" },
145			{ "value": "0xD", "description": "Logical" },
146			{ "value": "0xE", "description": "Other" },
147			{ "value": "0xF", "description": "All" }
148		]
149	}, {
150		"name": "ScalarFpOpType",
151		"bit-range": "3:0",
152		"rw": "read-write",
153		"values": [
154			{ "value": "0x0", "description": "None" },
155			{ "value": "0x1", "description": "Add" },
156			{ "value": "0x2", "description": "Sub" },
157			{ "value": "0x3", "description": "Mul" },
158			{ "value": "0x4", "description": "Mac" },
159			{ "value": "0x5", "description": "Div" },
160			{ "value": "0x6", "description": "Sqrt" },
161			{ "value": "0x7", "description": "Cmp" },
162			{ "value": "0x8", "description": "Cvt" },
163			{ "value": "0x9", "description": "Blend" },
164			{ "value": "0xE", "description": "Other" },
165			{ "value": "0xF", "description": "All" }
166		]
167	} ]
168},
169{
170	"mnemonic": "Core::X86::Pmc::Core::SseAvxOpsRetired",
171	"name": "SseAvxOpsRetired",
172	"code": "0x00B",
173	"summary": "INT Ops Retired",
174	"description": "Note: Shuffle op counts may count for instructions that are not necessarily thought of as including shuffles. For example, Horizontal Add, Dot Product, and certain MOV instructions may include or use only shuffle type ops.",
175	"unit_mode": "or-value",
176	"units": [ {
177		"name": "SseAvxOpType",
178		"bit-range": "7:4",
179		"rw": "read-write",
180		"values": [
181			{ "value": "0x0", "description": "None" },
182			{ "value": "0x1", "description": "Add" },
183			{ "value": "0x2", "description": "Sub" },
184			{ "value": "0x3", "description": "Mul" },
185			{ "value": "0x4", "description": "Mac" },
186			{ "value": "0x5", "description": "AES" },
187			{ "value": "0x6", "description": "SHA" },
188			{ "value": "0x7", "description": "Cmp" },
189			{ "value": "0x8", "description": "CLM" },
190			{ "value": "0x9", "description": "Shift" },
191			{ "value": "0xA", "description": "Mov" },
192			{ "value": "0xB", "description": "Shuffle" },
193			{ "value": "0xC", "description": "Pack" },
194			{ "value": "0xD", "description": "Logical" },
195			{ "value": "0xE", "description": "Other" },
196			{ "value": "0xF", "description": "All" }
197		]
198	}, {
199		"name": "MmxOpType",
200		"bit-range": "3:0",
201		"rw": "read-write",
202		"values": [
203			{ "value": "0x0", "description": "None" },
204			{ "value": "0x1", "description": "Add" },
205			{ "value": "0x2", "description": "Sub" },
206			{ "value": "0x3", "description": "Mul" },
207			{ "value": "0x4", "description": "Mac" },
208			{ "value": "0x7", "description": "Cmp" },
209			{ "value": "0x9", "description": "Shift" },
210			{ "value": "0xA", "description": "Mov" },
211			{ "value": "0xB", "description": "Shuffle" },
212			{ "value": "0xC", "description": "Pack" },
213			{ "value": "0xD", "description": "Logical" },
214			{ "value": "0xE", "description": "Other" },
215			{ "value": "0xF", "description": "All" }
216		]
217	} ]
218},
219{
220	"mnemonic": "Core::X86::Pmc::Core::FpPackOpsRetired",
221	"name": "FpPackOpsRetired",
222	"code": "0x00C",
223	"summary": "Packed FP Ops Retired",
224	"description": "Note: Shuffle op counts may count for instructions that are not necessarily thought of as including shuffles. For example, Horizontal Add, Dot Product, and certain MOV instructions may include or use only shuffle type ops.",
225	"unit_mode": "or-value",
226	"units": [ {
227		"name": "Fp256OpType",
228		"bit-range": "7:4",
229		"rw": "read-write",
230		"values": [
231			{ "value": "0x0", "description": "None" },
232			{ "value": "0x1", "description": "Add" },
233			{ "value": "0x2", "description": "Sub" },
234			{ "value": "0x3", "description": "Mul" },
235			{ "value": "0x4", "description": "Mac" },
236			{ "value": "0x5", "description": "Div" },
237			{ "value": "0x6", "description": "Sqrt" },
238			{ "value": "0x7", "description": "Cmp" },
239			{ "value": "0x8", "description": "Cvt" },
240			{ "value": "0x9", "description": "Blend" },
241			{ "value": "0xB", "description": "Shuffle" },
242			{ "value": "0xD", "description": "Logical" },
243			{ "value": "0xE", "description": "Other" },
244			{ "value": "0xF", "description": "All" }
245		]
246	}, {
247		"name": "Fp128OpType",
248		"bit-range": "3:0",
249		"rw": "read-write",
250		"values": [
251			{ "value": "0x0", "description": "None" },
252			{ "value": "0x1", "description": "Add" },
253			{ "value": "0x2", "description": "Sub" },
254			{ "value": "0x3", "description": "Mul" },
255			{ "value": "0x4", "description": "Mac" },
256			{ "value": "0x5", "description": "Div" },
257			{ "value": "0x6", "description": "Sqrt" },
258			{ "value": "0x7", "description": "Cmp" },
259			{ "value": "0x8", "description": "Cvt" },
260			{ "value": "0x9", "description": "Blend" },
261			{ "value": "0xA", "description": "Reserved." },
262			{ "value": "0xB", "description": "Shuffle" },
263			{ "value": "0xC", "description": "Reserved." },
264			{ "value": "0xD", "description": "Logical" },
265			{ "value": "0xE", "description": "Other" },
266			{ "value": "0xF", "description": "All" }
267		]
268	} ]
269},
270{
271	"mnemonic": "Core::X86::Pmc::Core::PackedIntOpType",
272	"name": "PackedIntOpType",
273	"code": "0x00D",
274	"summary": "Packed INT Ops Retired",
275	"description": "Note: Shuffle op counts may count for instructions that are not necessarily thought of as including shuffles. For example, Horizontal Add, Dot Product, and certain MOV instructions may include or use only shuffle type ops. This event also counts FP data type packed and scalar MOV and shuffle.",
276	"unit_mode": "or-value",
277	"units": [ {
278		"name": "Int256OpType",
279		"bit-range": "7:4",
280		"rw": "read-write",
281		"values": [
282			{ "value": "0x0", "description": "None" },
283			{ "value": "0x1", "description": "Add" },
284			{ "value": "0x2", "description": "Sub" },
285			{ "value": "0x3", "description": "Mul" },
286			{ "value": "0x4", "description": "Mac" },
287			{ "value": "0x7", "description": "Cmp" },
288			{ "value": "0x9", "description": "Shift" },
289			{ "value": "0xA", "description": "Mov" },
290			{ "value": "0xB", "description": "Shuffle" },
291			{ "value": "0xC", "description": "Pack" },
292			{ "value": "0xD", "description": "Logical" },
293			{ "value": "0xE", "description": "Other" },
294			{ "value": "0xF", "description": "All" }
295		]
296	}, {
297		"name": "Int128OpType",
298		"bit-range": "3:0",
299		"rw": "read-write",
300		"values": [
301			{ "value": "0x0", "description": "None" },
302			{ "value": "0x1", "description": "Add" },
303			{ "value": "0x2", "description": "Sub" },
304			{ "value": "0x3", "description": "Mul" },
305			{ "value": "0x4", "description": "Mac" },
306			{ "value": "0x5", "description": "AES" },
307			{ "value": "0x6", "description": "SHA" },
308			{ "value": "0x7", "description": "Cmp" },
309			{ "value": "0x8", "description": "CLM" },
310			{ "value": "0x9", "description": "Shift" },
311			{ "value": "0xA", "description": "Mov" },
312			{ "value": "0xB", "description": "Shuffle" },
313			{ "value": "0xC", "description": "Pack" },
314			{ "value": "0xD", "description": "Logical" },
315			{ "value": "0xE", "description": "Other" },
316			{ "value": "0xF", "description": "All" }
317		]
318	} ]
319},
320{
321	"mnemonic": "Core::X86::Pmc::Core::FpDispFaults",
322	"name": "FpDispFaults",
323	"code": "0x00E",
324	"summary": "FP Dispatch Faults",
325	"description": "Floating-point Dispatch Faults.",
326	"units": [ {
327		"name": "YmmSpillFault",
328		"bit": 3,
329		"rw": "Read-write",
330		"description": "YMM Spill fault."
331	}, {
332		"name": "YmmFillFault",
333		"bit": 2,
334		"rw": "Read-write",
335		"description": "YMM Fill fault."
336	}, {
337		"name": "XmmFillFault",
338		"bit": 1,
339		"rw": "Read-write",
340		"description": "XMM Fill fault."
341	}, {
342		"name": "x87FillFault",
343		"bit": 0,
344		"rw": "Read-write",
345		"description": "x87 Fill fault."
346	} ]
347},
348{
349	"mnemonic": "Core::X86::Pmc::Core::LsBadStatus2",
350	"name": "LsBadStatus2",
351	"code": "0x024",
352	"summary": "Bad Status 2",
353	"units": [ {
354		"name": "StliOther",
355		"bit": 1,
356		"rw": "Read-write",
357		"description": "Store-to-load conflicts: A load was unable to complete due to a non-forwardable conflict with an older store. Most commonly, a load's address range partially but not completely overlaps with an uncompleted older store. Software can avoid this problem by using same-size and same-alignment loads and stores when accessing the same data. Vector/SIMD code is particularly susceptible to this problem; software should construct wide vector stores by manipulating vector elements in registers using shuffle/blend/swap instructions prior to storing to memory, instead of using narrow element-by-element stores."
358	} ]
359},
360{
361	"mnemonic": "Core::X86::Pmc::Core::LsLocks",
362	"name": "LsLocks",
363	"code": "0x025",
364	"summary": "Retired Lock Instructions",
365	"units": [ {
366		"name": "BusLock",
367		"bit": 0,
368		"rw": "Read-write",
369		"description": "Comparable to legacy bus lock."
370	} ]
371},
372{
373	"mnemonic": "Core::X86::Pmc::Core::LsRetClClush",
374	"name": "LsRetClClush",
375	"code": "0x026",
376	"summary": "Retired CLFLUSH Instructions",
377	"description": "The number of retired CLFLUSH instructions. This is a non-speculative event."
378},
379{
380	"mnemonic": "Core::X86::Pmc::Core::LsRetCpuid",
381	"name": "LsRetCpuid",
382	"code": "0x027",
383	"summary": "Retired CPUID Instructions",
384	"description": "The number of CPUID instructions retired."
385},
386{
387	"mnemonic": "Core::X86::Pmc::Core::LsDispatch",
388	"name": "LsDispatch",
389	"code": "0x029",
390	"summary": "LS Dispatch",
391	"description": "Counts the number of operations dispatched to the LS unit. Unit Masks events are ADDed.",
392	"unit_mode": "add",
393	"units": [ {
394		"name": "LdStDispatch",
395		"bit": 2,
396		"rw": "Read-write",
397		"description": "Load-op-Store Dispatch.  Dispatch of a single op that performs a load from and store to the same memory address."
398	}, {
399		"name": "StoreDispatch",
400		"bit": 1,
401		"rw": "Read-write",
402		"description": "Dispatch of a single op that performs a memory store."
403	}, {
404		"name": "LdDispatch",
405		"bit": 0,
406		"rw": "Read-write",
407		"description": "Dispatch of a single op that performs a memory load."
408	} ]
409},
410{
411	"mnemonic": "Core::X86::Pmc::Core::LsSmiRx",
412	"name": "LsSmiRx",
413	"code": "0x02B",
414	"summary": "SMIs Received",
415	"description": "Counts the number of SMIs received."
416},
417{
418	"mnemonic": "Core::X86::Pmc::Core::LsIntTaken",
419	"name": "LsIntTaken",
420	"code": "0x02C",
421	"summary": "Interrupts Taken",
422	"description": "Counts the number of interrupts taken.",
423	"units": [ {
424		"name": "IntTaken",
425		"bit": 0,
426		"rw": "Read-write",
427		"description": "Number of Interrupts taken. This event is also counted when UnitMask[7:0]=0."
428	} ]
429},
430{
431	"mnemonic": "Core::X86::Pmc::Core::LsSTLF",
432	"name": "LsSTLF",
433	"code": "0x035",
434	"summary": "Store to Load Forward",
435	"description": "Number of STLF hits."
436},
437{
438	"mnemonic": "Core::X86::Pmc::Core::LsStCommitCancel2",
439	"name": "LsStCommitCancel2",
440	"code": "0x037",
441	"summary": "Store Commit Cancels 2",
442	"units": [ {
443		"name": "StCommitCancelWcbFull",
444		"bit": 0,
445		"rw": "Read-write",
446		"description": "A non-cacheable store and the non-cacheable commit buffer is full."
447	} ]
448},
449{
450	"mnemonic": "Core::X86::Pmc::Core::LsMabAlloc",
451	"name": "LsMabAlloc",
452	"code": "0x041",
453	"summary": "LS MAB Allocates by Type",
454	"description": "Counts when a LS pipe allocates a MAB entry.",
455	"unit_mode": "value",
456	"units": [ {
457	"name": "LsMabAllocation",
458		"bit-range": "6:0",
459		"rw": "Read-write",
460		"values": [
461			{ "value": "0x3f", "description": "Load Store Allocations." },
462			{ "value": "0x40", "description": "Hardware Prefetecher Allocations." },
463			{ "value": "0x7f", "description": "All Allocations." }
464		]
465	} ]
466},
467{
468	"mnemonic": "Core::X86::Pmc::Core::LsDmndFillsFromSys",
469	"name": "LsDmndFillsFromSys",
470	"code": "0x043",
471	"summary": "Demand Data Cache Fills by Data Source",
472	"description": "Demand Data Cache Fills by Data Source.",
473	"units": [ {
474		"name": "AlternateMemories_NearFar",
475		"bit": 7,
476		"rw": "Read-write",
477		"description": "Requests that return from Extension Memory."
478	}, {
479		"name": "Dram_IO_Far",
480		"bit": 6,
481		"rw": "Read-write",
482		"description": "Requests that target another NUMA node and return from DRAM or MMIO from another NUMA node, either from the same or different socket."
483	}, {
484		"name": "FarCache_NearFar",
485		"bit": 4,
486		"rw": "Read-write",
487		"description": "Requests that return from another CCX cache in a different NUMA node."
488	}, {
489		"name": "Dram_IO_Near",
490		"bit": 3,
491		"rw": "Read-write",
492		"description": "Requests that target the same NUMA node and return from either DRAM or MMIO in the same NUMA node."
493	}, {
494		"name": "NearCache_NearFar",
495		"bit": 2,
496		"rw": "Read-write",
497		"description": "Requests that return from another CCX cache in the same NUMA node."
498	}, {
499		"name": "LocalCcx",
500		"bit": 1,
501		"rw": "Read-write",
502		"description": "Data returned from L3 or different L2 in the same CCX."
503	}, {
504		"name": "LocalL2",
505		"bit": 0,
506		"rw": "Read-write",
507		"description": "Data returned from the local L2."
508	} ]
509},
510{
511	"mnemonic": "Core::X86::Pmc::Core::LsAnyFillsFromSys",
512	"name": "LsAnyFillsFromSys",
513	"code": "0x044",
514	"summary": "Any Data Cache Fills by Data Source",
515	"description": "Any Data Cache Fills by Data Source.",
516	"units": [ {
517		"name": "AlternateMemories_NearFar",
518		"bit": 7,
519		"rw": "Read-write",
520		"description": "Requests that return from Extension Memory."
521	}, {
522		"name": "Dram_IO_Far",
523		"bit": 6,
524		"rw": "Read-write",
525		"description": "Requests that target another NUMA node and return from DRAM or MMIO from another NUMA node, either from the same or different socket."
526	}, {
527		"name": "FarCache_NearFar",
528		"bit": 4,
529		"rw": "Read-write",
530		"description": "Requests that return from another CCX cache in a different NUMA node."
531	}, {
532		"name": "Dram_IO_Near",
533		"bit": 3,
534		"rw": "Read-write",
535		"description": "Requests that target the same NUMA node and return from either DRAM or MMIO in the same NUMA node."
536	}, {
537		"name": "ExtCacheLocal",
538		"bit": 2,
539		"rw": "Read-write",
540		"description": "Requests that return from another CCX cache in the same NUMA node."
541	}, {
542		"name": "LocalCcx",
543		"bit": 1,
544		"rw": "Read-write",
545		"description": "Data returned from L3 or different L2 in the same CCX."
546	}, {
547		"name": "LocalL2",
548		"bit": 0,
549		"rw": "Read-write",
550		"description": "Data returned from the local L2."
551	} ]
552},
553{
554	"mnemonic": "Core::X86::Pmc::Core::LsL1DTlbMiss",
555	"name": "LsL1DTlbMiss",
556	"code": "0x045",
557	"summary": "L1 DTLB Misses",
558	"units": [ {
559		"name": "TlbReload1GL2Miss",
560		"bit": 7,
561		"rw": "Read-write",
562		"description": "DTLB reload to a 1-G page that also missed in the L2 TLB."
563	}, {
564		"name": "TlbReload2ML2Miss",
565		"bit": 6,
566		"rw": "Read-write",
567		"description": "DTLB reload to a 2-M page that also missed in the L2 TLB."
568	}, {
569		"name": "TlbReloadCoalescedPageMiss",
570		"bit": 5,
571		"rw": "Read-write",
572		"description": "DTLB reload to a coalesced page that also missed in the L2 TLB."
573	}, {
574		"name": "TlbReload4KL2Miss",
575		"bit": 4,
576		"rw": "Read-write",
577		"description": "DTLB reload to a 4-K page that missed the L2 TLB."
578	}, {
579		"name": "TlbReload1GL2Hit",
580		"bit": 3,
581		"rw": "Read-write",
582		"description": "DTLB reload to a 1-G page that hit in the L2 TLB."
583	}, {
584		"name": "TlbReload2ML2Hit",
585		"bit": 2,
586		"rw": "Read-write",
587		"description": "DTLB reload to a 2-M page that hit in the L2 TLB."
588	}, {
589		"name": "TlbReloadCoalescedPageHit",
590		"bit": 1,
591		"rw": "Read-write",
592		"description": "DTLB reload to a coalesced page that hit in the L2 TLB."
593	}, {
594		"name": "TlbReload4KL2Hit",
595		"bit": 0,
596		"rw": "Read-write",
597		"description": "DTLB reload to a 4-K page that hit in the L2 TLB."
598	} ]
599},
600{
601	"mnemonic": "Core::X86::Pmc::Core::LsMisalLoads",
602	"name": "LsMisalLoads",
603	"code": "0x047",
604	"summary": "Misaligned loads",
605	"units": [ {
606		"name": "MA4K",
607		"bit": 1,
608		"rw": "Read-write",
609		"description": "The number of 4-KB misaligned (i.e., page crossing) loads."
610	}, {
611		"name": "MA64",
612		"bit": 0,
613		"rw": "Read-write",
614		"description": "The number of 64-B misaligned (i.e., cacheline crossing) loads."
615	} ]
616},
617{
618	"mnemonic": "Core::X86::Pmc::Core::LsPrefInstrDisp",
619	"name": "LsPrefInstrDisp",
620	"code": "0x04B",
621	"summary": "Prefetch Instructions Dispatched",
622	"description": "Software Prefetch Instructions Dispatched (Speculative).",
623	"units": [ {
624		"name": "PREFETCHNTA",
625		"bit": 2,
626		"rw": "Read-write",
627		"description": "PrefetchNTA instruction. See docAPM3 PREFETCHlevel."
628	}, {
629		"name": "PREFETCHW",
630		"bit": 1,
631		"rw": "Read-write",
632		"description": "PrefetchW instruction. See docAPM3 PREFETCHW."
633	}, {
634		"name": "PREFETCH",
635		"bit": 0,
636		"rw": "Read-write",
637		"description": "PrefetchT0, T1 and T2 instructions. See docAPM3 PREFETCHlevel."
638	} ]
639},
640{
641	"mnemonic": "Core::X86::Pmc::Core::LsWcbCloseFlush",
642	"name": "LsWcbCloseFlush",
643	"code": "0x050",
644	"summary": "Write Combine Buffer Close Flush",
645	"description": "UnitMask events ADDed.  Multible WCB can report events at the same time.",
646	"unit_mode": "add",
647	"units": [ {
648		"name": "FullLine64B",
649		"bit": 0,
650		"rw": "Read-write",
651		"description": "All 64 bytes of the WCB entry have been written."
652	} ]
653},
654{
655	"mnemonic": "Core::X86::Pmc::Core::LsInefSwPref",
656	"name": "LsInefSwPref",
657	"code": "0x052",
658	"summary": "Ineffective Software Prefetches",
659	"description": "The number of software prefetches that did not fetch data outside of the processor core.",
660	"units": [ {
661		"name": "MabMchCnt",
662		"bit": 1,
663		"rw": "Read-write",
664		"description": "Software PREFETCH instruction saw a match on an already-allocated miss request buffer."
665	}, {
666		"name": "DataPipeSwPfDcHit",
667		"bit": 0,
668		"rw": "Read-write",
669		"description": "Software PREFETCH instruction saw a DC hit."
670	} ]
671},
672{
673	"mnemonic": "Core::X86::Pmc::Core::LsSwPfDcFills",
674	"name": "LsSwPfDcFills",
675	"code": "0x059",
676	"summary": "Software Prefetch Data Cache Fills",
677	"description": "Software Prefetch Data Cache Fills by Data Source.",
678	"units": [ {
679		"name": "AlternateMemories_NearFar",
680		"bit": 7,
681		"rw": "Read-write",
682		"description": "Requests that return from Extension Memory."
683	}, {
684		"name": "Dram_IO_Far",
685		"bit": 6,
686		"rw": "Read-write",
687		"description": "Requests that target another NUMA node and return from DRAM or MMIO from another NUMA node, either from the same or different socket."
688	}, {
689		"name": "FarCache_NearFar",
690		"bit": 4,
691		"rw": "Read-write",
692		"description": "Requests that return from another CCX cache in a different NUMA node."
693	}, {
694		"name": "Dram_IO_Near",
695		"bit": 3,
696		"rw": "Read-write",
697		"description": "Requests that target the same NUMA node and return from either DRAM or MMIO in the same NUMA node."
698	}, {
699		"name": "NearCache_NearFar",
700		"bit": 2,
701		"rw": "Read-write",
702		"description": "Requests that return from another CCX cache in the same NUMA node."
703	}, {
704		"name": "LocalCcx",
705		"bit": 1,
706		"rw": "Read-write",
707		"description": "Data returned from L3 or different L2 in the same CCX."
708	}, {
709		"name": "LocalL2",
710		"bit": 0,
711		"rw": "Read-write",
712		"description": "Data returned from the local L2."
713	} ]
714},
715{
716	"mnemonic": "Core::X86::Pmc::Core::LsHwPfDcFills",
717	"name": "LsHwPfDcFills",
718	"code": "0x05A",
719	"summary": "Hardware Prefetch Data Cache Fills",
720	"description": "Hardware Prefetch Data Cache Fills by Data Source.",
721	"units": [ {
722		"name": "AlternateMemories_NearFar",
723		"bit": 7,
724		"rw": "Read-write",
725		"description": "Requests that return from Extension Memory."
726	}, {
727		"name": "Dram_IO_Far",
728		"bit": 6,
729		"rw": "Read-write",
730		"description": "Requests that target another NUMA node and return from DRAM or MMIO from another NUMA node, either from the same or different socket."
731	}, {
732		"name": "FarCache_NearFar",
733		"bit": 4,
734		"rw": "Read-write",
735		"description": "Requests that return from another CCX cache in a different NUMA node."
736	}, {
737		"name": "Dram_IO_Near",
738		"bit": 3,
739		"rw": "Read-write",
740		"description": "Requests that target the same NUMA node and return from either DRAM or MMIO in the same NUMA node."
741	}, {
742		"name": "NearCache_NearFar",
743		"bit": 2,
744		"rw": "Read-write",
745		"description": "Requests that return from another CCX cache in the same NUMA node."
746	}, {
747		"name": "LocalCcx",
748		"bit": 1,
749		"rw": "Read-write",
750		"description": "Data returned from L3 or different L2 in the same CCX."
751	}, {
752		"name": "LocalL2",
753		"bit": 0,
754		"rw": "Read-write",
755		"description": "Data returned from the local L2."
756	} ]
757},
758{
759	"mnemonic": "Core::X86::Pmc::Core::LsAllocMabCount",
760	"name": "LsAllocMabCount",
761	"code": "0x05F",
762	"summary": "Count of Allocated Mabs",
763	"description": "This event counts the in-flight L1 data cache misses (allocated Miss Address Buffers) each cycle."
764},
765{
766	"mnemonic": "Core::X86::Pmc::Core::LsNotHaltedCyc",
767	"name": "LsNotHaltedCyc",
768	"code": "0x076",
769	"summary": "Cycles not in Halt"
770},
771{
772	"mnemonic": "Core::X86::Pmc::Core::LsTlbFlush",
773	"name": "LsTlbFlush",
774	"code": "0x078",
775	"summary": "All TLB Flushes",
776	"unit_mode": "value",
777	"units": [ {
778		"name": "All",
779		"bit-range": "7:0",
780		"rw": "read-write",
781		"values": [
782			{ "value": "0xFF", "description": "All TLB Flushes." }
783		]
784	} ]
785},
786{
787	"mnemonic": "Core::X86::Pmc::Core::LsNotHaltedP0Cyc",
788	"name": "LsNotHaltedP0Cyc",
789	"code": "0x120",
790	"summary": "P0 Freq Cycles not in Halt",
791	"units": [ {
792		"name": "P0FreqCyc",
793		"bit": 0,
794		"rw": "Read-write",
795		"description": "Counts at the P0 frequency (same as Core::X86::Msr::MPERF) when not in Halt."
796	} ]
797},
798{
799	"mnemonic": "Core::X86::Pmc::Core::IcCacheFillL2",
800	"name": "IcCacheFillL2",
801	"code": "0x082",
802	"summary": "Instruction Cache Refills from L2",
803	"description": "The number of 64-byte instruction cache lines fulfilled from the L2 cache."
804},
805{
806	"mnemonic": "Core::X86::Pmc::Core::IcCacheFillSys",
807	"name": "IcCacheFillSys",
808	"code": "0x083",
809	"summary": "Instruction Cache Refills from System",
810	"description": "The number of 64-byte instruction cache line fulfilled from system memory or another cache."
811},
812{
813	"mnemonic": "Core::X86::Pmc::Core::BpL1TlbMissL2TlbHit",
814	"name": "BpL1TlbMissL2TlbHit",
815	"code": "0x084",
816	"summary": "L1 ITLB Miss, L2 ITLB Hit",
817	"description": "The number of instruction fetches that miss in the L1 ITLB but hit in the L2 ITLB."
818},
819{
820	"mnemonic": "Core::X86::Pmc::Core::BpL1TlbMissL2TlbMiss",
821	"name": "BpL1TlbMissL2TlbMiss",
822	"code": "0x085",
823	"summary": "ITLB Reload from Page-Table walk",
824	"description": "The number of valid fills into the ITLB originating from the LS Page-Table Walker. Tablewalk requests are issued for L1-ITLB and L2-ITLB misses.",
825	"units": [ {
826		"name": "Coalesced4K",
827		"bit": 3,
828		"rw": "Read-write",
829		"description": "Walk for >4-K Coalesced page."
830	}, {
831		"name": "IF1G",
832		"bit": 2,
833		"rw": "Read-write",
834		"description": "Walk for 1-G page."
835	}, {
836		"name": "IF2M",
837		"bit": 1,
838		"rw": "Read-write",
839		"description": "Walk for 2-M page."
840	}, {
841		"name": "IF4K",
842		"bit": 0,
843		"rw": "Read-write",
844		"description": "Walk to 4-K page."
845	} ]
846},
847{
848	"mnemonic": "Core::X86::Pmc::Core::BpL2BTBCorrect",
849	"name": "BpL2BTBCorrect",
850	"code" : "0x08B",
851	"summary": "L2 Branch Prediction Overrides Existing Prediction (speculative)"
852},
853{
854	"mnemonic": "Core::X86::Pmc::Core::BpDynIndPred",
855	"name": "BpDynIndPred",
856	"code": "0x08E",
857	"summary": "Dynamic Indirect Predictions",
858	"description": "The number of times a branch used the indirect predictor to make a prediction."
859},
860{
861	"mnemonic": "Core::X86::Pmc::Core::BpDeReDirect",
862	"name": "BpDeReDirect",
863	"code": "0x091",
864	"summary": "Decode Redirects",
865	"description": "The number of times the instruction decoder overrides the predicted target."
866},
867{
868	"mnemonic": "Core::X86::Pmc::Core::BpL1TlbFetchHit",
869	"name": "BpL1TlbFetchHit",
870	"code": "0x094",
871	"summary": "L1 TLB Hits for Instruction Fetch",
872	"description": "The number of instruction fetches that hit in the L1 ITLB.",
873	"units": [ {
874		"name": "IF1G",
875		"bit": 2,
876		"rw": "Read-write",
877		"description": "L1 Instruction TLB hit (1-G page size)."
878	}, {
879		"name": "IF2M",
880		"bit": 1,
881		"rw": "Read-write",
882		"description": "L1 Instruction TLB hit (2-M page size)."
883	}, {
884		"name": "IF4K",
885		"bit": 0,
886		"rw": "Read-write",
887		"description": "L1 Instruction TLB hit (4-K or 16-K page size)."
888	} ]
889},
890{
891	"mnemonic": "Core::X86::Pmc::Core::ResyncsOrNcRedirects",
892	"name": "ResyncsOrNcRedirects",
893	"code": "0x096",
894	"summary": "Resyncs",
895	"description": "Counts the number of HW resyncs (pipeline restarts) or NC redirects. NC redirects occur when the front-end transitions to fetching from UC (un-cacheable) memory."
896},
897{
898	"mnemonic": "Core::X86::Pmc::Core::IcTagHitMiss",
899	"name": "IcTagHitMiss",
900	"code": "0x18E",
901	"summary": "IC Tag Hit/Miss Events",
902	"description": "Counts various IC tag related hit and miss events.",
903	"unit_mode": "value",
904	"units": [ {
905		"name": "IcAccessTypes",
906		"bit-range": "4:0",
907		"rw": "read-write",
908		"values": [
909			{ "value": "0x07", "description": "Instruction Cache Hit." },
910			{ "value": "0x18", "description": "Instruction Cache Miss." },
911			{ "value": "0x1F", "description": "All Instruction Cache Accesses." }
912		]
913	} ]
914},
915{
916	"mnemonic": "Core::X86::Pmc::Core::OpCacheHitMiss",
917	"name": "OpCacheHitMiss",
918	"code": "0x28F",
919	"summary": "Op Cache Hit/Miss",
920	"description": "Counts Op Cache micro-tag hit/miss events.",
921	"unit_mode": "value",
922	"units": [ {
923		"name": "OpCacheAccesses",
924		"bit-range": "2:0",
925		"rw": "read-write",
926		"values": [
927			{ "value": "0x3", "description": "Op Cache Hit." },
928			{ "value": "0x4", "description": "Op Cache Miss." },
929			{ "value": "0x7", "description": "All Op Cache accesses." }
930		] }
931	]
932},
933{
934	"mnemonic": "Core::X86::Pmc::Core::DeOpQueueEmpty",
935	"name": "DeOpQueueEmpty",
936	"code": "0x0A9",
937	"summary": "Op Queue Empty",
938	"description": "Cycles where the Op Queue is empty."
939},
940{
941	"mnemonic": "Core::X86::Pmc::Core::DeSrcOpDisp",
942	"name": "DeSrcOpDisp",
943	"code": "0x0AA",
944	"summary": "Source of Op Dispatched From Decoder",
945	"description": "Counts the number of ops dispatched from the decoder classified by op source.",
946	"units": [ {
947		"name": "LoopBuffer",
948		"bit": 2,
949		"rw": "Read-write",
950		"description": "Count of ops dispatched from Loop Buffer."
951	}, {
952		"name": "OpCache",
953		"bit": 1,
954		"rw": "Read-write",
955		"description": "Count of ops fetched from Op Cache and dispatched."
956	}, {
957		"name": "Decoder",
958		"bit": 0,
959		"rw": "Read-write",
960		"description": "Count of ops fetched from Instruction Cache and dispatched."
961	} ]
962},
963{
964	"mnemonic": "Core::X86::Pmc::Core::DeDisOpsFromDecoder",
965	"name": "DeDisOpsFromDecoder",
966	"code": "0x0AB",
967	"summary": "Types of Ops Dispatched From Decoder",
968	"description": "Counts the number of ops dispatched from the decoder classified by op type. The UnitMask value encodes which types of ops are counted.",
969	"unit_mode": "value",
970	"units": [ {
971		"name": "DispOpType",
972		"bit-range": "4:0",
973		"rw": "read-write",
974		"values": [
975			{ "value": "0x04", "description": "Any FP dispatch." },
976			{ "value": "0x08", "description": "Any Integer dispatch." }
977		]
978	} ]
979},
980{
981	"mnemonic": "Core::X86::Pmc::Core::DeDisDispatchTokenStalls1",
982	"name": "DeDisDispatchTokenStalls1",
983	"code": "0x0AE",
984	"summary": "Dispatch Resource Stall Cycles 1",
985	"description": "Cycles where a dispatch group is valid but does not get dispatched due to a Token Stall. UnitMask bits select the stall types included in the count.",
986	"units": [ {
987		"name": "FpFlushRecoveryStall",
988		"bit": 7,
989		"rw": "Read-write",
990		"description": "Counts FP Flush Recovery stall cycles."
991	}, {
992		"name": "FPSchRsrcStall",
993		"bit": 6,
994		"rw": "Read-write",
995		"description": "Counts FP Scheduler token stall cycles."
996	}, {
997		"name": "FpRegFileRsrcStall",
998		"bit": 5,
999		"rw": "Read-write",
1000		"description": "Counts FP Register File token stall cycles. This applies to all ops that have an FP or SIMD destination register."
1001	}, {
1002		"name": "TakenBrnchBufferRsrc",
1003		"bit": 4,
1004		"rw": "Read-write",
1005		"description": "Counts Taken Branch Buffer token stall cycles."
1006	}, {
1007		"name": "StoreQueueRsrcStall",
1008		"bit": 2,
1009		"rw": "Read-write",
1010		"description": "Store Queue resource stall. Counts Store Queue token stall cycles."
1011	}, {
1012		"name": "LoadQueueRsrcStall",
1013		"bit": 1,
1014		"rw": "Read-write",
1015		"description": "Load Queue resource stall. Counts Load Queue token stall cycles."
1016	}, {
1017		"name": "IntPhyRegFileRsrcStall",
1018		"bit": 0,
1019		"rw": "Read-write",
1020		"description": "Integer Physical Register File resource stall. Counts Integer PRF token stall cycles. This applies to all ops that have an integer destination register."
1021	} ]
1022},
1023{
1024	"mnemonic": "Core::X86::Pmc::Core::DeDisDispatchTokenStalls2",
1025	"name": "DeDisDispatchTokenStalls2",
1026	"code": "0x0AF",
1027	"summary": "Dynamic Tokens Dispatch Stall Cycles 2",
1028	"description": "Cycles where a dispatch group is valid but does not get dispatched due to a token stall. UnitMask bits select the stall types included in the count.",
1029	"units": [ {
1030		"name": "RetireTokenStall",
1031		"bit": 5,
1032		"rw": "Read-write",
1033		"description": "Counts Retire Queue token stall cycles."
1034	}, {
1035		"name": "IntSch3TokenStall",
1036		"bit": 3,
1037		"rw": "Read-write",
1038		"description": "Counts Integer Scheduler Queue 3 token stall cycles."
1039	}, {
1040		"name": "IntSch2TokenStall",
1041		"bit": 2,
1042		"rw": "Read-write",
1043		"description": "Counts Integer Scheduler Queue 2 token stall cycles."
1044	}, {
1045		"name": "IntSch1TokenStall",
1046		"bit": 1,
1047		"rw": "Read-write",
1048		"description": "Counts Integer Scheduler Queue 1 token stall cycles."
1049	}, {
1050		"name": "IntSch0TokenStall",
1051		"bit": 0,
1052		"rw": "Read-write",
1053		"description": "Counts Integer Scheduler Queue 0 token stall cycles."
1054	} ]
1055},
1056{
1057	"mnemonic": "Core::X86::Pmc::Core::DeNoDispatchPerSlot",
1058	"name": "DeNoDispatchPerSlot",
1059	"code": "0x1A0",
1060	"summary": "Dispatch Stalls Per Slot",
1061	"description": "Counts the number of dispatch slots (each cycle) that remained unused for reasons selected by StallReason.",
1062	"unit_mode": "value",
1063	"units": [ {
1064		"name": "StallReason",
1065		"bit-range": "7:0",
1066		"rw": "read-write",
1067		"values": [
1068			{ "value": "0x01", "description": "Counts dispatch slots left empty because the front-end did not supply ops." },
1069			{ "value": "0x1E", "description": "Counts ops unable to dispatch due to back-end stalls." },
1070			{ "value": "0x60", "description": "Counts ops unable to dispatch because the dispatch cycle was granted to the other SMT thread." }
1071		]
1072	} ]
1073},
1074{
1075	"mnemonic": "Core::X86::Pmc::Core::DeAdditionalResourceStalls",
1076	"name": "DeAdditionalResourceStalls",
1077	"code": "0x1A2",
1078	"summary": "Dispatch Additional Resource Stalls",
1079	"description": "This PMC event counts additional resource stalls that are not captured by Core::X86::Pmc::Core::DeDisDispatchTokenStalls1 or Core::X86::Pmc::Core::DeDisDispatchTokenStalls2.",
1080	"unit_mode": "value",
1081	"units": [ {
1082		"name": "Stall",
1083		"bit-range": "7:0",
1084		"rw": "read-write",
1085		"values": [
1086			{ "value": "0x30", "description": "Counts additional cycles dispatch is stalled due to the lack of dispatch resources" }
1087		]
1088	} ]
1089},
1090{
1091	"mnemonic": "Core::X86::Pmc::Core::ExRetInstr",
1092	"name": "ExRetInstr",
1093	"code": "0x0C0",
1094	"summary": "Retired Instructions",
1095	"description": "The number of instructions retired."
1096},
1097{
1098	"mnemonic": "Core::X86::Pmc::Core::ExRetOps",
1099	"name": "ExRetOps",
1100	"code": "0x0C1",
1101	"summary": "Retired Ops",
1102	"description": "The number of macro-ops retired."
1103},
1104{
1105	"mnemonic": "Core::X86::Pmc::Core::ExRetBrn",
1106	"name": "ExRetBrn",
1107	"code": "0x0C2",
1108	"summary": "Retired Branch Instructions",
1109	"description": "The number of branch instructions retired. This includes all types of architectural control flow changes, including exceptions and interrupts."
1110},
1111{
1112	"mnemonic": "Core::X86::Pmc::Core::ExRetBrnMisp",
1113	"name": "ExRetBrnMisp",
1114	"code": "0x0C3",
1115	"summary": "Retired Branch Instructions Mispredicted",
1116	"description": "The number of retired branch instructions, that were mispredicted."
1117},
1118{
1119	"mnemonic": "Core::X86::Pmc::Core::ExRetBrnTkn",
1120	"name": "ExRetBrnTkn",
1121	"code": "0x0C4",
1122	"summary": "Retired Taken Branch Instructions",
1123	"description": "The number of taken branches that were retired. This includes all types of architectural control flow changes, including exceptions and interrupts."
1124},
1125{
1126	"mnemonic": "Core::X86::Pmc::Core::ExRetBrnTknMisp",
1127	"name": "ExRetBrnTknMisp",
1128	"code": "0x0C5",
1129	"summary": "Retired Taken Branch Instructions Mispredicted",
1130	"description": "The number of retired taken branch instructions that were mispredicted."
1131},
1132{
1133	"mnemonic": "Core::X86::Pmc::Core::ExRetBrnFar",
1134	"name": "ExRetBrnFar",
1135	"code": "0x0C6",
1136	"summary": "Retired Far Control Transfers",
1137	"description": "The number of far control transfers retired including far call/jump/return, IRET, SYSCALL and SYSRET, plus exceptions and interrupts. Far control transfers are not subject to branch prediction."
1138},
1139{
1140	"mnemonic": "Core::X86::Pmc::Core::ExRetNearRet",
1141	"name": "ExRetNearRet",
1142	"code": "0x0C8",
1143	"summary": "Retired Near Returns",
1144	"description": "The number of near return instructions (RET or RET Iw) retired."
1145},
1146{
1147	"mnemonic": "Core::X86::Pmc::Core::ExRetNearRetMispred",
1148	"name": "ExRetNearRetMispred",
1149	"code": "0x0C9",
1150	"summary": "Retired Near Returns Mispredicted",
1151	"description": "The number of near returns retired that were not correctly predicted by the return address predictor. Each such mispredict incurs the same penalty as a mispredicted conditional branch instruction."
1152},
1153{
1154	"mnemonic": "Core::X86::Pmc::Core::ExRetBrnIndMisp",
1155	"name": "ExRetBrnIndMisp",
1156	"code": "0x0CA",
1157	"summary": "Retired Indirect Branch Instructions Mispredicted",
1158	"description": "The number of indirect branches retired that were not correctly predicted. Each such mispredict incurs the same penalty as a mispredicted conditional branch instruction. Note that only EX mispredicts are counted."
1159},
1160{
1161	"mnemonic": "Core::X86::Pmc::Core::ExRetMmxFpInstr",
1162	"name": "ExRetMmxFpInstr",
1163	"code": "0x0CB",
1164	"summary": "Retired MMX/FP Instructions",
1165	"description": "The number of MMX, SSE or x87 instructions retired. The UnitMask allows the selection of the individual classes of instructions as given in the table. Each increment represents one complete instruction. Since this event includes non- numeric instructions it is not suitable for measuring MFLOPs.",
1166	"units": [ {
1167		"name": "SseInstr",
1168		"bit": 2,
1169		"rw": "Read-write",
1170		"description": "SSE instructions (SSE, SSE2, SSE3, SSSE3, SSE4A, SSE41, SSE42, AVX)."
1171	}, {
1172		"name": "MmxInstr",
1173		"bit": 1,
1174		"rw": "Read-write",
1175		"description": "MMX instructions."
1176	}, {
1177		"name": "X87Instr",
1178		"bit": 0,
1179		"rw": "Read-write",
1180		"description": "x87 instructions. "
1181	} ]
1182},
1183{
1184	"mnemonic": "Core::X86::Pmc::Core::ExRetIndBrchInstr",
1185	"name": "ExRetIndBrchInstr",
1186	"code": "0x0CC",
1187	"summary": "Retired Indirect Branch Instructions",
1188	"description": "The number of indirect branches retired."
1189},
1190{
1191	"mnemonic": "Core::X86::Pmc::Core::ExRetCond",
1192	"name": "ExRetCond",
1193	"code": "0x0D1",
1194	"summary": "Retired Conditional Branch Instructions"
1195},
1196{
1197	"mnemonic": "Core::X86::Pmc::Core::ExDivBusy",
1198	"name": "ExDivBusy",
1199	"code": "0x0D3",
1200	"summary": "Div Cycles Busy count"
1201},
1202{
1203	"mnemonic": "Core::X86::Pmc::Core::ExDivCount",
1204	"name": "ExDivCount",
1205	"code": "0x0D4",
1206	"summary": "Div Op Count"
1207},
1208{
1209	"mnemonic": "Core::X86::Pmc::Core::ExNoRetire",
1210	"name": "ExNoRetire",
1211	"code": "0x0D6",
1212	"summary": "Cycles With No Retire",
1213	"description": "This event counts cycles when the hardware thread does not retire any ops for reasons selected by UnitMask[4:0].  UnitMask events [4:0] are mutually exclusive. If multiple reasons apply for a given cycle, the lowest numbered UnitMask event is counted.",
1214	"unit_mode": "or-value",
1215	"units": [ {
1216		"name": "CompletionFilter",
1217		"bit-range": "7:5",
1218		"rw": "read-write",
1219		"values": [
1220			{ "value": "0x0", "description": "Load and ALU completion is considered for UnitMask[1]:NotComplete events." },
1221			{ "value": "0x5", "description": "Only missing load completion is considered for UnitMask[1]:NotComplete events." }
1222		]
1223	}, {
1224		"name": "ThreadNotSelected",
1225		"bit": 4,
1226		"rw": "Read-write",
1227		"description": "The number cycles where ops could have retired (i.e. did not fall into UnitMask events [0]...[3]). but did not retire because thread arbitration did not select the thread for retire."
1228	}, {
1229		"name": "Other",
1230		"bit": 3,
1231		"rw": "Read-write",
1232		"description": "The number of cycles where ops could have retired (self and older ops are complete), but were stopped from retirement for other reasons: retire breaks, traps, faults, etc."
1233	}, {
1234		"name": "NotComplete",
1235		"bit": 1,
1236		"rw": "Read-write",
1237		"description": "The number of cycles where the oldest retire slot did not have its completion bits set."
1238	}, {
1239		"name": "Empty",
1240		"bit": 0,
1241		"rw": "Read-write",
1242		"description": "The number of cycles when there were no valid ops in the retire queue. This may be caused by front-end bottlenecks or pipeline redirects."
1243	} ]
1244},
1245{
1246	"mnemonic": "Core::X86::Pmc::Core::ExRetUcodeInstr",
1247	"name": "ExRetUcodeInstr",
1248	"code": "0x1C1",
1249	"summary": "Retired Microcoded Instructions",
1250	"description": "Retired Microcoded Instructions."
1251},
1252{
1253	"mnemonic": "Core::X86::Pmc::Core::ExRetUcodeOps",
1254	"name": "ExRetUcodeOps",
1255	"code": "0x1C2",
1256	"summary": "Retired Microcode Ops",
1257	"description": "The number of microcode ops that have retired."
1258},
1259{
1260	"mnemonic": "Core::X86::Pmc::Core::ExRetMsprdBrnchInstrDirMsmtch",
1261	"name": "ExRetMsprdBrnchInstrDirMsmtch",
1262	"code": "0x1C7",
1263	"summary": "Retired Mispredicted Branch Instructions due to Direction Mismatch",
1264	"description": "The number of retired conditional branch instructions that were not correctly predicted because of a branch direction mismatch."
1265},
1266{
1267	"mnemonic": "Core::X86::Pmc::Core::ExRetUncondBrnchInstrMispred",
1268	"name": "ExRetUncondBrnchInstrMispred",
1269	"code": "0x1C8",
1270	"summary": "Retired Unconditional Indirect Branch Instructions Mispredicted",
1271	"description": "The number of retired unconditional indirect branch instructions that were mispredicted."
1272},
1273{
1274	"mnemonic": "Core::X86::Pmc::Core::ExRetUncondBrnchInstr",
1275	"name": "ExRetUncondBrnchInstr",
1276	"code": "0x1C9",
1277	"summary": "Retired Unconditional Branch Instructions",
1278	"description": "The number of retired unconditional branch instructions."
1279},
1280{
1281	"mnemonic": "Core::X86::Pmc::Core::ExTaggedIbsOps",
1282	"name": "ExTaggedIbsOps",
1283	"code": "0x1CF",
1284	"summary": "Tagged IBS Ops",
1285	"description": "Counts Op IBS related events.",
1286	"units": [ {
1287		"name": "IbsCountRollover",
1288		"bit": 2,
1289		"rw": "Read-write",
1290		"description": "Number of times an op could not be tagged by IBS because of a previous tagged op that has not retired."
1291	}, {
1292		"name": "IbsTaggedOpsRet",
1293		"bit": 1,
1294		"rw": "Read-write",
1295		"description": "Number of Ops tagged by IBS that retired."
1296	}, {
1297		"name": "IbsTaggedOps",
1298		"bit": 0,
1299		"rw": "Read-write",
1300		"description": "Number of Ops tagged by IBS."
1301	} ]
1302},
1303{
1304	"mnemonic": "Core::X86::Pmc::Core::ExRetFusedInstr",
1305	"name": "ExRetFusedInstr",
1306	"code": "0x1D0",
1307	"summary": "Retired Fused Instructions",
1308	"description": "Counts retired fused instructions."
1309},
1310{
1311	"mnemonic": "Core::X86::Pmc::L2::L2RequestG1",
1312	"name": "L2RequestG1",
1313	"code": "0x060",
1314	"summary": "Requests to L2 Group1",
1315	"description": "All L2 Cache Requests (Breakdown 1 - Common)",
1316	"units": [ {
1317		"name": "RdBlkL",
1318		"bit": 7,
1319		"rw": "Read-write",
1320		"description": "Data Cache Reads (including hardware and software prefetch)."
1321	}, {
1322		"name": "RdBlkX",
1323		"bit": 6,
1324		"rw": "Read-write",
1325		"description": "Data Cache Stores."
1326	}, {
1327		"name": "LsRdBlkC_S",
1328		"bit": 5,
1329		"rw": "Read-write",
1330		"description": "Data Cache Shared Reads."
1331	}, {
1332		"name": "CacheableIcRead",
1333		"bit": 4,
1334		"rw": "Read-write",
1335		"description": "Instruction Cache Reads."
1336	}, {
1337		"name": "ChangeToX",
1338		"bit": 3,
1339		"rw": "Read-write",
1340		"description": "Data Cache State Change Requests. Request change to writable, check L2 for current state."
1341	}, {
1342		"name": "PrefetchL2Cmd",
1343		"bit": 2,
1344		"rw": "Read-write"
1345	}, {
1346		"name": "L2HwPf",
1347		"bit": 1,
1348		"rw": "Read-write",
1349		"description": "L2 Prefetcher. All prefetches accepted by L2 pipeline, hit or miss. Types of PF and L2 hit/miss broken out in a separate perfmon event"
1350	}, {
1351		"name": "Group2. Read-write",
1352		"bit": 0,
1353		"rw": "Read-write",
1354		"description": "MiscRequests. Various Noncacheable requests. Non-cached Data Reads, Non- cached Instruction Reads, Self-modifying code checks."
1355	} ]
1356},
1357{
1358	"mnemonic": "Core::X86::Pmc::L2::L2CacheReqStat",
1359	"name": "L2CacheReqStat",
1360	"code": "0x064",
1361	"summary": "Core to L2 Cacheable Request Access Status",
1362	"description": "L2 Cache Request Outcomes (not including L2 Prefetch).",
1363	"units": [ {
1364		"name": "LsRdBlkCS",
1365		"bit": 7,
1366		"rw": "Read-write",
1367		"description": "Data Cache Shared Read Hit in L2."
1368	}, {
1369		"name": "LsRdBlkLHitX",
1370		"bit": 6,
1371		"rw": "Read-write",
1372		"description": "Data Cache Read Hit in L2."
1373	}, {
1374		"name": "LsRdBlkLHitS",
1375		"bit": 5,
1376		"rw": "Read-write",
1377		"description": "Data Cache Read Hit Non-Modifiable Line in L2."
1378	}, {
1379		"name": "LsRdBlkX",
1380		"bit": 4,
1381		"rw": "Read-write",
1382		"description": "Data Cache Store or State Change Hit in L2."
1383	}, {
1384		"name": "LsRdBlkC",
1385		"bit": 3,
1386		"rw": "Read-write",
1387		"description": "Data Cache Req Miss in L2."
1388	}, {
1389		"name": "IcFillHitX",
1390		"bit": 2,
1391		"rw": "Read-write",
1392		"description": "Instruction Cache Hit Modifiable Line in L2."
1393	}, {
1394		"name": "IcFillHitS",
1395		"bit": 1,
1396		"rw": "Read-write",
1397		"description": "Instruction Cache Hit Non-Modifiable Line in L2."
1398	}, {
1399		"name": "IcFillMiss",
1400		"bit": 0,
1401		"rw": "Read-write",
1402		"description": "Instruction Cache Req Miss in L2."
1403	} ]
1404},
1405{
1406	"mnemonic": "Core::X86::Pmc::L2::L2PfHitL2",
1407	"name": "L2PfHitL2",
1408	"code": "0x070",
1409	"summary": "L2 Prefetch Hit in L2",
1410	"description": "Counts all L2 prefetches accepted by L2 pipeline which hit in the L2 cache.",
1411	"units": [ {
1412		"name": "L1Region",
1413		"bit": 7,
1414		"rw": "Read-write",
1415		"description": "L1Region"
1416	}, {
1417		"name": "L1Stride",
1418		"bit": 6,
1419		"rw": "Read-write",
1420		"description": "L1Stride"
1421	}, {
1422		"name": "L1Stream",
1423		"bit": 5,
1424		"rw": "Read-write",
1425		"description": "L1Stream"
1426	}, {
1427		"name": "L2Stride",
1428		"bit": 4,
1429		"rw": "Read-write",
1430		"description": "L2Stride"
1431	}, {
1432		"name": "L2Burst",
1433		"bit": 3,
1434		"rw": "Read-write",
1435		"description": "L2Burst"
1436	}, {
1437		"name": "L2Up_Down",
1438		"bit": 2,
1439		"rw": "Read-write",
1440		"description": "L2 Up/Down"
1441	}, {
1442		"name": "L2NextLine",
1443		"bit": 1,
1444		"rw": "Read-write",
1445		"description": "L2NextLine"
1446	}, {
1447		"name": "L2Stream",
1448		"bit": 0,
1449		"rw": "Read-write",
1450		"description": "L2Stream"
1451	} ]
1452},
1453{
1454	"mnemonic": "Core::X86::Pmc::L2::L2PfMissL2HitL2",
1455	"name": "L2PfMissL2HitL2",
1456	"code": "0x071",
1457	"summary": "L2 Prefetcher Hits in L3",
1458	"description": "Counts all L2 prefetches accepted by the L2 pipeline which miss the L2 cache and hit the L3.",
1459	"units": [ {
1460		"name": "L1Region",
1461		"bit": 7,
1462		"rw": "Read-write",
1463		"description": "L1Region"
1464	}, {
1465		"name": "L1Stride",
1466		"bit": 6,
1467		"rw": "Read-write",
1468		"description": "L1Stride"
1469	}, {
1470		"name": "L1Stream",
1471		"bit": 5,
1472		"rw": "Read-write",
1473		"description": "L1Stream"
1474	}, {
1475		"name": "L2Stride",
1476		"bit": 4,
1477		"rw": "Read-write",
1478		"description": "L2Stride"
1479	}, {
1480		"name": "L2Burst",
1481		"bit": 3,
1482		"rw": "Read-write",
1483		"description": "L2Burst"
1484	}, {
1485		"name": "L2Up_Down",
1486		"bit": 2,
1487		"rw": "Read-write",
1488		"description": "L2 Up/Down"
1489	}, {
1490		"name": "L2NextLine",
1491		"bit": 1,
1492		"rw": "Read-write",
1493		"description": "L2NextLine"
1494	}, {
1495		"name": "L2Stream",
1496		"bit": 0,
1497		"rw": "Read-write",
1498		"description": "L2Stream"
1499	} ]
1500},
1501{
1502	"mnemonic": "Core::X86::Pmc::L2::L2PfMissL2L3",
1503	"name": "L2PfMissL2L3",
1504	"code": "0x072",
1505	"summary": "L2 Prefetcher Misses in L3",
1506	"description": "Counts all L2 prefetches accepted by the L2 pipeline which miss the L2 and the L3 caches",
1507	"units": [ {
1508		"name": "L1Region",
1509		"bit": 7,
1510		"rw": "Read-write",
1511		"description": "L1Region"
1512	}, {
1513		"name": "L1Stride",
1514		"bit": 6,
1515		"rw": "Read-write",
1516		"description": "L1Stride"
1517	}, {
1518		"name": "L1Stream",
1519		"bit": 5,
1520		"rw": "Read-write",
1521		"description": "L1Stream"
1522	}, {
1523		"name": "L2Stride",
1524		"bit": 4,
1525		"rw": "Read-write",
1526		"description": "L2Stride"
1527	}, {
1528		"name": "L2Burst",
1529		"bit": 3,
1530		"rw": "Read-write",
1531		"description": "L2Burst"
1532	}, {
1533		"name": "L2Up_Down",
1534		"bit": 2,
1535		"rw": "Read-write",
1536		"description": "L2 Up/Down"
1537	}, {
1538		"name": "L2NextLine",
1539		"bit": 1,
1540		"rw": "Read-write",
1541		"description": "L2NextLine"
1542	}, {
1543		"name": "L2Stream",
1544		"bit": 0,
1545		"rw": "Read-write",
1546		"description": "L2Stream"
1547	} ]
1548} ]
1549