Deleted Added
full compact
pmc_events.h (147191) pmc_events.h (177161)
1/*-
2 * Copyright (c) 2005 Joseph Koshy
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
1/*-
2 * Copyright (c) 2005 Joseph Koshy
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 *
26 * $FreeBSD: head/sys/dev/hwpmc/pmc_events.h 147191 2005-06-09 19:45:09Z jkoshy $
26 * $FreeBSD: head/sys/dev/hwpmc/pmc_events.h 177161 2008-03-14 06:16:18Z jkoshy $
27 */
28
29#ifndef _DEV_HWPMC_PMC_EVENTS_H_
30#define _DEV_HWPMC_PMC_EVENTS_H_
31
32/*
33 * PMC event codes.
34 *
35 * __PMC_EV(CLASS, SYMBOLIC-NAME, VALUE, READABLE-NAME)
36 *
37 */
38
39/*
40 * AMD K7 Events, from "The AMD Athlon(tm) Processor x86 Code
41 * Optimization Guide" [Doc#22007K, Feb 2002]
42 */
43
44#define __PMC_EV_K7() \
45__PMC_EV(K7, DC_ACCESSES, k7-dc-accesses) \
46__PMC_EV(K7, DC_MISSES, k7-dc-misses) \
47__PMC_EV(K7, DC_REFILLS_FROM_L2, k7-dc-refills-from-l2) \
48__PMC_EV(K7, DC_REFILLS_FROM_SYSTEM, k7-dc-refills-from-system) \
49__PMC_EV(K7, DC_WRITEBACKS, k7-dc-writebacks) \
50__PMC_EV(K7, L1_DTLB_MISS_AND_L2_DTLB_HITS, \
51 k7-l1-dtlb-miss-and-l2-dtlb-hits) \
52__PMC_EV(K7, L1_AND_L2_DTLB_MISSES, k7-l1-and-l2-dtlb-misses) \
53__PMC_EV(K7, MISALIGNED_REFERENCES, k7-misaligned-references) \
54__PMC_EV(K7, IC_FETCHES, k7-ic-fetches) \
55__PMC_EV(K7, IC_MISSES, k7-ic-misses) \
56__PMC_EV(K7, L1_ITLB_MISSES, k7-l1-itlb-misses) \
57__PMC_EV(K7, L1_L2_ITLB_MISSES, k7-l1-l2-itlb-misses) \
58__PMC_EV(K7, RETIRED_INSTRUCTIONS, k7-retired-instructions) \
59__PMC_EV(K7, RETIRED_OPS, k7-retired-ops) \
60__PMC_EV(K7, RETIRED_BRANCHES, k7-retired-branches) \
61__PMC_EV(K7, RETIRED_BRANCHES_MISPREDICTED, \
62 k7-retired-branches-mispredicted) \
63__PMC_EV(K7, RETIRED_TAKEN_BRANCHES, k7-retired-taken-branches) \
64__PMC_EV(K7, RETIRED_TAKEN_BRANCHES_MISPREDICTED, \
65 k7-retired-taken-branches-mispredicted) \
66__PMC_EV(K7, RETIRED_FAR_CONTROL_TRANSFERS, \
67 k7-retired-far-control-transfers) \
68__PMC_EV(K7, RETIRED_RESYNC_BRANCHES, k7-retired-resync-branches) \
69__PMC_EV(K7, INTERRUPTS_MASKED_CYCLES, k7-interrupts-masked-cycles) \
70__PMC_EV(K7, INTERRUPTS_MASKED_WHILE_PENDING_CYCLES, \
71 k7-interrupts-masked-while-pending-cycles) \
72__PMC_EV(K7, HARDWARE_INTERRUPTS, k7-hardware-interrupts)
73
74#define PMC_EV_K7_FIRST PMC_EV_K7_DC_ACCESSES
75#define PMC_EV_K7_LAST PMC_EV_K7_HARDWARE_INTERRUPTS
76
77/*
78 * Intel P4 Events, from "IA-32 Intel(r) Architecture Software
79 * Developer's Manual, Volume 3: System Programming Guide" [245472-012]
80 */
81
82#define __PMC_EV_P4() \
83__PMC_EV(P4, TC_DELIVER_MODE, p4-tc-deliver-mode) \
84__PMC_EV(P4, BPU_FETCH_REQUEST, p4-bpu-fetch-request) \
85__PMC_EV(P4, ITLB_REFERENCE, p4-itlb-reference) \
86__PMC_EV(P4, MEMORY_CANCEL, p4-memory-cancel) \
87__PMC_EV(P4, MEMORY_COMPLETE, p4-memory-complete) \
88__PMC_EV(P4, LOAD_PORT_REPLAY, p4-load-port-replay) \
89__PMC_EV(P4, STORE_PORT_REPLAY, p4-store-port-replay) \
90__PMC_EV(P4, MOB_LOAD_REPLAY, p4-mob-load-replay) \
91__PMC_EV(P4, PAGE_WALK_TYPE, p4-page-walk-type) \
92__PMC_EV(P4, BSQ_CACHE_REFERENCE, p4-bsq-cache-reference) \
93__PMC_EV(P4, IOQ_ALLOCATION, p4-ioq-allocation) \
94__PMC_EV(P4, IOQ_ACTIVE_ENTRIES, p4-ioq-active-entries) \
95__PMC_EV(P4, FSB_DATA_ACTIVITY, p4-fsb-data-activity) \
96__PMC_EV(P4, BSQ_ALLOCATION, p4-bsq-allocation) \
97__PMC_EV(P4, BSQ_ACTIVE_ENTRIES, p4-bsq-active-entries) \
98__PMC_EV(P4, SSE_INPUT_ASSIST, p4-sse-input-assist) \
99__PMC_EV(P4, PACKED_SP_UOP, p4-packed-sp-uop) \
100__PMC_EV(P4, PACKED_DP_UOP, p4-packed-dp-uop) \
101__PMC_EV(P4, SCALAR_SP_UOP, p4-scalar-sp-uop) \
102__PMC_EV(P4, SCALAR_DP_UOP, p4-scalar-dp-uop) \
103__PMC_EV(P4, 64BIT_MMX_UOP, p4-64bit-mmx-uop) \
104__PMC_EV(P4, 128BIT_MMX_UOP, p4-128bit-mmx-uop) \
105__PMC_EV(P4, X87_FP_UOP, p4-x87-fp-uop) \
106__PMC_EV(P4, X87_SIMD_MOVES_UOP, p4-x87-simd-moves-uop) \
107__PMC_EV(P4, GLOBAL_POWER_EVENTS, p4-global-power-events) \
108__PMC_EV(P4, TC_MS_XFER, p4-tc-ms-xfer) \
109__PMC_EV(P4, UOP_QUEUE_WRITES, p4-uop-queue-writes) \
110__PMC_EV(P4, RETIRED_MISPRED_BRANCH_TYPE, \
111 p4-retired-mispred-branch-type) \
112__PMC_EV(P4, RETIRED_BRANCH_TYPE, p4-retired-branch-type) \
113__PMC_EV(P4, RESOURCE_STALL, p4-resource-stall) \
114__PMC_EV(P4, WC_BUFFER, p4-wc-buffer) \
115__PMC_EV(P4, B2B_CYCLES, p4-b2b-cycles) \
116__PMC_EV(P4, BNR, p4-bnr) \
117__PMC_EV(P4, SNOOP, p4-snoop) \
118__PMC_EV(P4, RESPONSE, p4-response) \
119__PMC_EV(P4, FRONT_END_EVENT, p4-front-end-event) \
120__PMC_EV(P4, EXECUTION_EVENT, p4-execution-event) \
121__PMC_EV(P4, REPLAY_EVENT, p4-replay-event) \
122__PMC_EV(P4, INSTR_RETIRED, p4-instr-retired) \
123__PMC_EV(P4, UOPS_RETIRED, p4-uops-retired) \
124__PMC_EV(P4, UOP_TYPE, p4-uop-type) \
125__PMC_EV(P4, BRANCH_RETIRED, p4-branch-retired) \
126__PMC_EV(P4, MISPRED_BRANCH_RETIRED, p4-mispred-branch-retired) \
127__PMC_EV(P4, X87_ASSIST, p4-x87-assist) \
128__PMC_EV(P4, MACHINE_CLEAR, p4-machine-clear)
129
130#define PMC_EV_P4_FIRST PMC_EV_P4_TC_DELIVER_MODE
131#define PMC_EV_P4_LAST PMC_EV_P4_MACHINE_CLEAR
132
133/* Intel Pentium Pro, P-II, P-III and Pentium-M style events */
134
135#define __PMC_EV_P6() \
136__PMC_EV(P6, DATA_MEM_REFS, p6-data-mem-refs) \
137__PMC_EV(P6, DCU_LINES_IN, p6-dcu-lines-in) \
138__PMC_EV(P6, DCU_M_LINES_IN, p6-dcu-m-lines-in) \
139__PMC_EV(P6, DCU_M_LINES_OUT, p6-dcu-m-lines-out) \
140__PMC_EV(P6, DCU_MISS_OUTSTANDING, p6-dcu-miss-outstanding) \
141__PMC_EV(P6, IFU_FETCH, p6-ifu-fetch) \
142__PMC_EV(P6, IFU_FETCH_MISS, p6-ifu-fetch-miss) \
143__PMC_EV(P6, ITLB_MISS, p6-itlb-miss) \
144__PMC_EV(P6, IFU_MEM_STALL, p6-ifu-mem-stall) \
145__PMC_EV(P6, ILD_STALL, p6-ild-stall) \
146__PMC_EV(P6, L2_IFETCH, p6-l2-ifetch) \
147__PMC_EV(P6, L2_LD, p6-l2-ld) \
148__PMC_EV(P6, L2_ST, p6-l2-st) \
149__PMC_EV(P6, L2_LINES_IN, p6-l2-lines-in) \
150__PMC_EV(P6, L2_LINES_OUT, p6-l2-lines-out) \
151__PMC_EV(P6, L2_M_LINES_INM, p6-l2-m-lines-inm) \
152__PMC_EV(P6, L2_M_LINES_OUTM, p6-l2-m-lines-outm) \
153__PMC_EV(P6, L2_RQSTS, p6-l2-rqsts) \
154__PMC_EV(P6, L2_ADS, p6-l2-ads) \
155__PMC_EV(P6, L2_DBUS_BUSY, p6-l2-dbus-busy) \
156__PMC_EV(P6, L2_DBUS_BUSY_RD, p6-l2-dbus-busy-rd) \
157__PMC_EV(P6, BUS_DRDY_CLOCKS, p6-bus-drdy-clocks) \
158__PMC_EV(P6, BUS_LOCK_CLOCKS, p6-bus-lock-clocks) \
159__PMC_EV(P6, BUS_REQ_OUTSTANDING, p6-bus-req-outstanding) \
160__PMC_EV(P6, BUS_TRAN_BRD, p6-bus-tran-brd) \
161__PMC_EV(P6, BUS_TRAN_RFO, p6-bus-tran-rfo) \
162__PMC_EV(P6, BUS_TRANS_WB, p6-bus-trans-wb) \
163__PMC_EV(P6, BUS_TRAN_IFETCH, p6-bus-tran-ifetch) \
164__PMC_EV(P6, BUS_TRAN_INVAL, p6-bus-tran-inval) \
165__PMC_EV(P6, BUS_TRAN_PWR, p6-bus-tran-pwr) \
166__PMC_EV(P6, BUS_TRANS_P, p6-bus-trans-p) \
167__PMC_EV(P6, BUS_TRANS_IO, p6-bus-trans-io) \
168__PMC_EV(P6, BUS_TRAN_DEF, p6-bus-tran-def) \
169__PMC_EV(P6, BUS_TRAN_BURST, p6-bus-tran-burst) \
170__PMC_EV(P6, BUS_TRAN_ANY, p6-bus-tran-any) \
171__PMC_EV(P6, BUS_TRAN_MEM, p6-bus-tran-mem) \
172__PMC_EV(P6, BUS_DATA_RCV, p6-bus-data-rcv) \
173__PMC_EV(P6, BUS_BNR_DRV, p6-bus-bnr-drv) \
174__PMC_EV(P6, BUS_HIT_DRV, p6-bus-hit-drv) \
175__PMC_EV(P6, BUS_HITM_DRV, p6-bus-hitm-drv) \
176__PMC_EV(P6, BUS_SNOOP_STALL, p6-bus-snoop-stall) \
177__PMC_EV(P6, FLOPS, p6-flops) \
178__PMC_EV(P6, FP_COMPS_OPS_EXE, p6-fp-comps-ops-exe) \
179__PMC_EV(P6, FP_ASSIST, p6-fp-assist) \
180__PMC_EV(P6, MUL, p6-mul) \
181__PMC_EV(P6, DIV, p6-div) \
182__PMC_EV(P6, CYCLES_DIV_BUSY, p6-cycles-div-busy) \
183__PMC_EV(P6, LD_BLOCKS, p6-ld-blocks) \
184__PMC_EV(P6, SB_DRAINS, p6-sb-drains) \
185__PMC_EV(P6, MISALIGN_MEM_REF, p6-misalign-mem-ref) \
186__PMC_EV(P6, EMON_KNI_PREF_DISPATCHED, p6-emon-kni-pref-dispatched) \
187__PMC_EV(P6, EMON_KNI_PREF_MISS, p6-emon-kni-pref-miss) \
188__PMC_EV(P6, INST_RETIRED, p6-inst-retired) \
189__PMC_EV(P6, UOPS_RETIRED, p6-uops-retired) \
190__PMC_EV(P6, INST_DECODED, p6-inst-decoded) \
191__PMC_EV(P6, EMON_KNI_INST_RETIRED, p6-emon-kni-inst-retired) \
192__PMC_EV(P6, EMON_KNI_COMP_INST_RET, p6-emon-kni-comp-inst-ret) \
193__PMC_EV(P6, HW_INT_RX, p6-hw-int-rx) \
194__PMC_EV(P6, CYCLES_INT_MASKED, p6-cycles-int-masked) \
195__PMC_EV(P6, CYCLES_INT_PENDING_AND_MASKED, \
196 p6-cycles-in-pending-and-masked) \
197__PMC_EV(P6, BR_INST_RETIRED, p6-br-inst-retired) \
198__PMC_EV(P6, BR_MISS_PRED_RETIRED, p6-br-miss-pred-retired) \
199__PMC_EV(P6, BR_TAKEN_RETIRED, p6-br-taken-retired) \
200__PMC_EV(P6, BR_MISS_PRED_TAKEN_RET, p6-br-miss-pred-taken-ret) \
201__PMC_EV(P6, BR_INST_DECODED, p6-br-inst-decoded) \
202__PMC_EV(P6, BTB_MISSES, p6-btb-misses) \
203__PMC_EV(P6, BR_BOGUS, p6-br-bogus) \
204__PMC_EV(P6, BACLEARS, p6-baclears) \
205__PMC_EV(P6, RESOURCE_STALLS, p6-resource-stalls) \
206__PMC_EV(P6, PARTIAL_RAT_STALLS, p6-partial-rat-stalls) \
207__PMC_EV(P6, SEGMENT_REG_LOADS, p6-segment-reg-loads) \
208__PMC_EV(P6, CPU_CLK_UNHALTED, p6-cpu-clk-unhalted) \
209__PMC_EV(P6, MMX_INSTR_EXEC, p6-mmx-instr-exec) \
210__PMC_EV(P6, MMX_SAT_INSTR_EXEC, p6-mmx-sat-instr-exec) \
211__PMC_EV(P6, MMX_UOPS_EXEC, p6-mmx-uops-exec) \
212__PMC_EV(P6, MMX_INSTR_TYPE_EXEC, p6-mmx-instr-type-exec) \
213__PMC_EV(P6, FP_MMX_TRANS, p6-fp-mmx-trans) \
214__PMC_EV(P6, MMX_ASSIST, p6-mmx-assist) \
215__PMC_EV(P6, MMX_INSTR_RET, p6-mmx-instr-ret) \
216__PMC_EV(P6, SEG_RENAME_STALLS, p6-seg-rename-stalls) \
217__PMC_EV(P6, SEG_REG_RENAMES, p6-seg-reg-renames) \
218__PMC_EV(P6, RET_SEG_RENAMES, p6-ret-seg-renames) \
219__PMC_EV(P6, EMON_EST_TRANS, p6-emon-est-trans) \
220__PMC_EV(P6, EMON_THERMAL_TRIP, p6-emon-thermal-trip) \
221__PMC_EV(P6, BR_INST_EXEC, p6-br-inst-exec) \
222__PMC_EV(P6, BR_MISSP_EXEC, p6-br-missp-exec) \
223__PMC_EV(P6, BR_BAC_MISSP_EXEC, p6-br-bac-missp-exec) \
224__PMC_EV(P6, BR_CND_EXEC, p6-br-cnd-exec) \
225__PMC_EV(P6, BR_CND_MISSP_EXEC, p6-br-cnd-missp-exec) \
226__PMC_EV(P6, BR_IND_EXEC, p6-br-ind-exec) \
227__PMC_EV(P6, BR_IND_MISSP_EXEC, p6-br-ind-missp-exec) \
228__PMC_EV(P6, BR_RET_EXEC, p6-br-ret-exec) \
229__PMC_EV(P6, BR_RET_MISSP_EXEC, p6-br-ret-missp-exec) \
230__PMC_EV(P6, BR_RET_BAC_MISSP_EXEC, p6-br-ret-bac-missp-exec) \
231__PMC_EV(P6, BR_CALL_EXEC, p6-br-call-exec) \
232__PMC_EV(P6, BR_CALL_MISSP_EXEC, p6-br-call-missp-exec) \
233__PMC_EV(P6, BR_IND_CALL_EXEC, p6-br-ind-call-exec) \
234__PMC_EV(P6, EMON_SIMD_INSTR_RETIRED, p6-emon-simd-instr-retired) \
235__PMC_EV(P6, EMON_SYNCH_UOPS, p6-emon-synch-uops) \
236__PMC_EV(P6, EMON_ESP_UOPS, p6-emon-esp-uops) \
237__PMC_EV(P6, EMON_FUSED_UOPS_RET, p6-emon-fused-uops-ret) \
238__PMC_EV(P6, EMON_UNFUSION, p6-emon-unfusion) \
239__PMC_EV(P6, EMON_PREF_RQSTS_UP, p6-emon-pref-rqsts-up) \
240__PMC_EV(P6, EMON_PREF_RQSTS_DN, p6-emon-pref-rqsts-dn) \
241__PMC_EV(P6, EMON_SSE_SSE2_INST_RETIRED, \
242 p6-emon-sse-sse2-inst-retired) \
243__PMC_EV(P6, EMON_SSE_SSE2_COMP_INST_RETIRED, \
244 p6-emon-sse-sse2-comp-inst-retired)
245
246
247#define PMC_EV_P6_FIRST PMC_EV_P6_DATA_MEM_REFS
248#define PMC_EV_P6_LAST PMC_EV_P6_EMON_SSE_SSE2_COMP_INST_RETIRED
249
250/* AMD K8 PMCs */
251
252#define __PMC_EV_K8() \
253__PMC_EV(K8, FP_DISPATCHED_FPU_OPS, k8-fp-dispatched-fpu-ops) \
254__PMC_EV(K8, FP_CYCLES_WITH_NO_FPU_OPS_RETIRED, \
255 k8-fp-cycles-with-no-fpu-ops-retired) \
256__PMC_EV(K8, FP_DISPATCHED_FPU_FAST_FLAG_OPS, \
257 k8-fp-dispatched-fpu-fast-flag-ops) \
258__PMC_EV(K8, LS_SEGMENT_REGISTER_LOAD, k8-ls-segment-register-load) \
259__PMC_EV(K8, LS_MICROARCHITECTURAL_RESYNC_BY_SELF_MODIFYING_CODE, \
260 k8-ls-microarchitectural-resync-by-self-modifying-code) \
261__PMC_EV(K8, LS_MICROARCHITECTURAL_RESYNC_BY_SNOOP, \
262 k8-ls-microarchitectural-resync-by-snoop) \
263__PMC_EV(K8, LS_BUFFER2_FULL, k8-ls-buffer2-full) \
264__PMC_EV(K8, LS_LOCKED_OPERATION, k8-ls-locked-operation) \
265__PMC_EV(K8, LS_MICROARCHITECTURAL_LATE_CANCEL, \
266 k8-ls-microarchitectural-late-cancel) \
267__PMC_EV(K8, LS_RETIRED_CFLUSH_INSTRUCTIONS, \
268 k8-ls-retired-cflush-instructions) \
269__PMC_EV(K8, LS_RETIRED_CPUID_INSTRUCTIONS, \
270 k8-ls-retired-cpuid-instructions) \
271__PMC_EV(K8, DC_ACCESS, k8-dc-access) \
272__PMC_EV(K8, DC_MISS, k8-dc-miss) \
273__PMC_EV(K8, DC_REFILL_FROM_L2, k8-dc-refill-from-l2) \
274__PMC_EV(K8, DC_REFILL_FROM_SYSTEM, k8-dc-refill-from-system) \
275__PMC_EV(K8, DC_COPYBACK, k8-dc-copyback) \
276__PMC_EV(K8, DC_L1_DTLB_MISS_AND_L2_DTLB_HIT, \
277 k8-dc-l1-dtlb-miss-and-l2-dtlb-hit) \
278__PMC_EV(K8, DC_L1_DTLB_MISS_AND_L2_DTLB_MISS, \
279 k8-dc-l1-dtlb-miss-and-l2-dtlb-miss) \
280__PMC_EV(K8, DC_MISALIGNED_DATA_REFERENCE, \
281 k8-dc-misaligned-data-reference) \
282__PMC_EV(K8, DC_MICROARCHITECTURAL_LATE_CANCEL, \
283 k8-dc-microarchitectural-late-cancel-of-an-access) \
284__PMC_EV(K8, DC_MICROARCHITECTURAL_EARLY_CANCEL, \
285 k8-dc-microarchitectural-early-cancel-of-an-access) \
286__PMC_EV(K8, DC_ONE_BIT_ECC_ERROR, k8-dc-one-bit-ecc-error) \
287__PMC_EV(K8, DC_DISPATCHED_PREFETCH_INSTRUCTIONS, \
288 k8-dc-dispatched-prefetch-instructions) \
289__PMC_EV(K8, DC_DCACHE_ACCESSES_BY_LOCKS, \
290 k8-dc-dcache-accesses-by-locks) \
291__PMC_EV(K8, BU_CPU_CLK_UNHALTED, k8-bu-cpu-clk-unhalted) \
292__PMC_EV(K8, BU_INTERNAL_L2_REQUEST, k8-bu-internal-l2-request) \
293__PMC_EV(K8, BU_FILL_REQUEST_L2_MISS, k8-bu-fill-request-l2-miss) \
294__PMC_EV(K8, BU_FILL_INTO_L2, k8-bu-fill-into-l2) \
295__PMC_EV(K8, IC_FETCH, k8-ic-fetch) \
296__PMC_EV(K8, IC_MISS, k8-ic-miss) \
297__PMC_EV(K8, IC_REFILL_FROM_L2, k8-ic-refill-from-l2) \
298__PMC_EV(K8, IC_REFILL_FROM_SYSTEM, k8-ic-refill-from-system) \
299__PMC_EV(K8, IC_L1_ITLB_MISS_AND_L2_ITLB_HIT, \
300 k8-ic-l1-itlb-miss-and-l2-itlb-hit) \
301__PMC_EV(K8, IC_L1_ITLB_MISS_AND_L2_ITLB_MISS, \
302 k8-ic-l1-itlb-miss-and-l2-itlb-miss) \
303__PMC_EV(K8, IC_MICROARCHITECTURAL_RESYNC_BY_SNOOP, \
304 k8-ic-microarchitectural-resync-by-snoop) \
305__PMC_EV(K8, IC_INSTRUCTION_FETCH_STALL, \
306 k8-ic-instruction-fetch-stall) \
307__PMC_EV(K8, IC_RETURN_STACK_HIT, k8-ic-return-stack-hit) \
308__PMC_EV(K8, IC_RETURN_STACK_OVERFLOW, k8-ic-return-stack-overflow) \
309__PMC_EV(K8, FR_RETIRED_X86_INSTRUCTIONS, \
310 k8-fr-retired-x86-instructions) \
311__PMC_EV(K8, FR_RETIRED_UOPS, k8-fr-retired-uops) \
312__PMC_EV(K8, FR_RETIRED_BRANCHES, k8-fr-retired-branches) \
313__PMC_EV(K8, FR_RETIRED_BRANCHES_MISPREDICTED, \
314 k8-fr-retired-branches-mispredicted) \
315__PMC_EV(K8, FR_RETIRED_TAKEN_BRANCHES, \
316 k8-fr-retired-taken-branches) \
317__PMC_EV(K8, FR_RETIRED_TAKEN_BRANCHES_MISPREDICTED, \
318 k8-fr-retired-taken-branches-mispredicted) \
319__PMC_EV(K8, FR_RETIRED_FAR_CONTROL_TRANSFERS, \
320 k8-fr-retired-far-control-transfers) \
321__PMC_EV(K8, FR_RETIRED_RESYNCS, k8-fr-retired-resyncs) \
322__PMC_EV(K8, FR_RETIRED_NEAR_RETURNS, k8-fr-retired-near-returns) \
323__PMC_EV(K8, FR_RETIRED_NEAR_RETURNS_MISPREDICTED, \
324 k8-fr-retired-near-returns-mispredicted) \
325__PMC_EV(K8, \
326 FR_RETIRED_TAKEN_BRANCHES_MISPREDICTED_BY_ADDR_MISCOMPARE, \
327 k8-fr-retired-taken-branches-mispredicted-by-addr-miscompare) \
328__PMC_EV(K8, FR_RETIRED_FPU_INSTRUCTIONS, \
329 k8-fr-retired-fpu-instructions) \
330__PMC_EV(K8, FR_RETIRED_FASTPATH_DOUBLE_OP_INSTRUCTIONS, \
331 k8-fr-retired-fastpath-double-op-instructions) \
332__PMC_EV(K8, FR_INTERRUPTS_MASKED_CYCLES, \
333 k8-fr-interrupts-masked-cycles) \
334__PMC_EV(K8, FR_INTERRUPTS_MASKED_WHILE_PENDING_CYCLES, \
335 k8-fr-interrupts-masked-while-pending-cycles) \
336__PMC_EV(K8, FR_TAKEN_HARDWARE_INTERRUPTS, \
337 k8-fr-taken-hardware-interrupts) \
338__PMC_EV(K8, FR_DECODER_EMPTY, k8-fr-decoder-empty) \
339__PMC_EV(K8, FR_DISPATCH_STALLS, k8-fr-dispatch-stalls) \
340__PMC_EV(K8, FR_DISPATCH_STALL_FROM_BRANCH_ABORT_TO_RETIRE, \
341 k8-fr-dispatch-stall-from-branch-abort-to-retire) \
342__PMC_EV(K8, FR_DISPATCH_STALL_FOR_SERIALIZATION, \
343 k8-fr-dispatch-stall-for-serialization) \
344__PMC_EV(K8, FR_DISPATCH_STALL_FOR_SEGMENT_LOAD, \
345 k8-fr-dispatch-stall-for-segment-load) \
346__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_REORDER_BUFFER_IS_FULL, \
347 k8-fr-dispatch-stall-when-reorder-buffer-is-full) \
348__PMC_EV(K8, \
349 FR_DISPATCH_STALL_WHEN_RESERVATION_STATIONS_ARE_FULL, \
350 k8-fr-dispatch-stall-when-reservation-stations-are-full) \
351__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_FPU_IS_FULL, \
352 k8-fr-dispatch-stall-when-fpu-is-full) \
353__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_LS_IS_FULL, \
354 k8-fr-dispatch-stall-when-ls-is-full) \
355__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_WAITING_FOR_ALL_TO_BE_QUIET, \
356 k8-fr-dispatch-stall-when-waiting-for-all-to-be-quiet) \
357__PMC_EV(K8, \
358 FR_DISPATCH_STALL_WHEN_FAR_XFER_OR_RESYNC_BRANCH_PENDING, \
359 k8-fr-dispatch-stall-when-far-xfer-or-resync-branch-pending) \
360__PMC_EV(K8, FR_FPU_EXCEPTIONS, k8-fr-fpu-exceptions) \
361__PMC_EV(K8, FR_NUMBER_OF_BREAKPOINTS_FOR_DR0, \
362 k8-fr-number-of-breakpoints-for-dr0) \
363__PMC_EV(K8, FR_NUMBER_OF_BREAKPOINTS_FOR_DR1, \
364 k8-fr-number-of-breakpoints-for-dr1) \
365__PMC_EV(K8, FR_NUMBER_OF_BREAKPOINTS_FOR_DR2, \
366 k8-fr-number-of-breakpoints-for-dr2) \
367__PMC_EV(K8, FR_NUMBER_OF_BREAKPOINTS_FOR_DR3, \
368 k8-fr-number-of-breakpoints-for-dr3) \
369__PMC_EV(K8, NB_MEMORY_CONTROLLER_PAGE_ACCESS_EVENT, \
370 k8-nb-memory-controller-page-access-event) \
371__PMC_EV(K8, NB_MEMORY_CONTROLLER_PAGE_TABLE_OVERFLOW, \
372 k8-nb-memory-controller-page-table-overflow) \
373__PMC_EV(K8, NB_MEMORY_CONTROLLER_DRAM_COMMAND_SLOTS_MISSED, \
374 k8-nb-memory-controller-dram-slots-missed) \
375__PMC_EV(K8, NB_MEMORY_CONTROLLER_TURNAROUND, \
376 k8-nb-memory-controller-turnaround) \
377__PMC_EV(K8, NB_MEMORY_CONTROLLER_BYPASS_SATURATION, \
378 k8-nb-memory-controller-bypass-saturation) \
379__PMC_EV(K8, NB_SIZED_COMMANDS, k8-nb-sized-commands) \
380__PMC_EV(K8, NB_PROBE_RESULT, k8-nb-probe-result) \
381__PMC_EV(K8, NB_HT_BUS0_BANDWIDTH, k8-nb-ht-bus0-bandwidth) \
382__PMC_EV(K8, NB_HT_BUS1_BANDWIDTH, k8-nb-ht-bus1-bandwidth) \
383__PMC_EV(K8, NB_HT_BUS2_BANDWIDTH, k8-nb-ht-bus2-bandwidth)
384
385#define PMC_EV_K8_FIRST PMC_EV_K8_FP_DISPATCHED_FPU_OPS
386#define PMC_EV_K8_LAST PMC_EV_K8_NB_HT_BUS2_BANDWIDTH
387
388
27 */
28
29#ifndef _DEV_HWPMC_PMC_EVENTS_H_
30#define _DEV_HWPMC_PMC_EVENTS_H_
31
32/*
33 * PMC event codes.
34 *
35 * __PMC_EV(CLASS, SYMBOLIC-NAME, VALUE, READABLE-NAME)
36 *
37 */
38
39/*
40 * AMD K7 Events, from "The AMD Athlon(tm) Processor x86 Code
41 * Optimization Guide" [Doc#22007K, Feb 2002]
42 */
43
44#define __PMC_EV_K7() \
45__PMC_EV(K7, DC_ACCESSES, k7-dc-accesses) \
46__PMC_EV(K7, DC_MISSES, k7-dc-misses) \
47__PMC_EV(K7, DC_REFILLS_FROM_L2, k7-dc-refills-from-l2) \
48__PMC_EV(K7, DC_REFILLS_FROM_SYSTEM, k7-dc-refills-from-system) \
49__PMC_EV(K7, DC_WRITEBACKS, k7-dc-writebacks) \
50__PMC_EV(K7, L1_DTLB_MISS_AND_L2_DTLB_HITS, \
51 k7-l1-dtlb-miss-and-l2-dtlb-hits) \
52__PMC_EV(K7, L1_AND_L2_DTLB_MISSES, k7-l1-and-l2-dtlb-misses) \
53__PMC_EV(K7, MISALIGNED_REFERENCES, k7-misaligned-references) \
54__PMC_EV(K7, IC_FETCHES, k7-ic-fetches) \
55__PMC_EV(K7, IC_MISSES, k7-ic-misses) \
56__PMC_EV(K7, L1_ITLB_MISSES, k7-l1-itlb-misses) \
57__PMC_EV(K7, L1_L2_ITLB_MISSES, k7-l1-l2-itlb-misses) \
58__PMC_EV(K7, RETIRED_INSTRUCTIONS, k7-retired-instructions) \
59__PMC_EV(K7, RETIRED_OPS, k7-retired-ops) \
60__PMC_EV(K7, RETIRED_BRANCHES, k7-retired-branches) \
61__PMC_EV(K7, RETIRED_BRANCHES_MISPREDICTED, \
62 k7-retired-branches-mispredicted) \
63__PMC_EV(K7, RETIRED_TAKEN_BRANCHES, k7-retired-taken-branches) \
64__PMC_EV(K7, RETIRED_TAKEN_BRANCHES_MISPREDICTED, \
65 k7-retired-taken-branches-mispredicted) \
66__PMC_EV(K7, RETIRED_FAR_CONTROL_TRANSFERS, \
67 k7-retired-far-control-transfers) \
68__PMC_EV(K7, RETIRED_RESYNC_BRANCHES, k7-retired-resync-branches) \
69__PMC_EV(K7, INTERRUPTS_MASKED_CYCLES, k7-interrupts-masked-cycles) \
70__PMC_EV(K7, INTERRUPTS_MASKED_WHILE_PENDING_CYCLES, \
71 k7-interrupts-masked-while-pending-cycles) \
72__PMC_EV(K7, HARDWARE_INTERRUPTS, k7-hardware-interrupts)
73
74#define PMC_EV_K7_FIRST PMC_EV_K7_DC_ACCESSES
75#define PMC_EV_K7_LAST PMC_EV_K7_HARDWARE_INTERRUPTS
76
77/*
78 * Intel P4 Events, from "IA-32 Intel(r) Architecture Software
79 * Developer's Manual, Volume 3: System Programming Guide" [245472-012]
80 */
81
82#define __PMC_EV_P4() \
83__PMC_EV(P4, TC_DELIVER_MODE, p4-tc-deliver-mode) \
84__PMC_EV(P4, BPU_FETCH_REQUEST, p4-bpu-fetch-request) \
85__PMC_EV(P4, ITLB_REFERENCE, p4-itlb-reference) \
86__PMC_EV(P4, MEMORY_CANCEL, p4-memory-cancel) \
87__PMC_EV(P4, MEMORY_COMPLETE, p4-memory-complete) \
88__PMC_EV(P4, LOAD_PORT_REPLAY, p4-load-port-replay) \
89__PMC_EV(P4, STORE_PORT_REPLAY, p4-store-port-replay) \
90__PMC_EV(P4, MOB_LOAD_REPLAY, p4-mob-load-replay) \
91__PMC_EV(P4, PAGE_WALK_TYPE, p4-page-walk-type) \
92__PMC_EV(P4, BSQ_CACHE_REFERENCE, p4-bsq-cache-reference) \
93__PMC_EV(P4, IOQ_ALLOCATION, p4-ioq-allocation) \
94__PMC_EV(P4, IOQ_ACTIVE_ENTRIES, p4-ioq-active-entries) \
95__PMC_EV(P4, FSB_DATA_ACTIVITY, p4-fsb-data-activity) \
96__PMC_EV(P4, BSQ_ALLOCATION, p4-bsq-allocation) \
97__PMC_EV(P4, BSQ_ACTIVE_ENTRIES, p4-bsq-active-entries) \
98__PMC_EV(P4, SSE_INPUT_ASSIST, p4-sse-input-assist) \
99__PMC_EV(P4, PACKED_SP_UOP, p4-packed-sp-uop) \
100__PMC_EV(P4, PACKED_DP_UOP, p4-packed-dp-uop) \
101__PMC_EV(P4, SCALAR_SP_UOP, p4-scalar-sp-uop) \
102__PMC_EV(P4, SCALAR_DP_UOP, p4-scalar-dp-uop) \
103__PMC_EV(P4, 64BIT_MMX_UOP, p4-64bit-mmx-uop) \
104__PMC_EV(P4, 128BIT_MMX_UOP, p4-128bit-mmx-uop) \
105__PMC_EV(P4, X87_FP_UOP, p4-x87-fp-uop) \
106__PMC_EV(P4, X87_SIMD_MOVES_UOP, p4-x87-simd-moves-uop) \
107__PMC_EV(P4, GLOBAL_POWER_EVENTS, p4-global-power-events) \
108__PMC_EV(P4, TC_MS_XFER, p4-tc-ms-xfer) \
109__PMC_EV(P4, UOP_QUEUE_WRITES, p4-uop-queue-writes) \
110__PMC_EV(P4, RETIRED_MISPRED_BRANCH_TYPE, \
111 p4-retired-mispred-branch-type) \
112__PMC_EV(P4, RETIRED_BRANCH_TYPE, p4-retired-branch-type) \
113__PMC_EV(P4, RESOURCE_STALL, p4-resource-stall) \
114__PMC_EV(P4, WC_BUFFER, p4-wc-buffer) \
115__PMC_EV(P4, B2B_CYCLES, p4-b2b-cycles) \
116__PMC_EV(P4, BNR, p4-bnr) \
117__PMC_EV(P4, SNOOP, p4-snoop) \
118__PMC_EV(P4, RESPONSE, p4-response) \
119__PMC_EV(P4, FRONT_END_EVENT, p4-front-end-event) \
120__PMC_EV(P4, EXECUTION_EVENT, p4-execution-event) \
121__PMC_EV(P4, REPLAY_EVENT, p4-replay-event) \
122__PMC_EV(P4, INSTR_RETIRED, p4-instr-retired) \
123__PMC_EV(P4, UOPS_RETIRED, p4-uops-retired) \
124__PMC_EV(P4, UOP_TYPE, p4-uop-type) \
125__PMC_EV(P4, BRANCH_RETIRED, p4-branch-retired) \
126__PMC_EV(P4, MISPRED_BRANCH_RETIRED, p4-mispred-branch-retired) \
127__PMC_EV(P4, X87_ASSIST, p4-x87-assist) \
128__PMC_EV(P4, MACHINE_CLEAR, p4-machine-clear)
129
130#define PMC_EV_P4_FIRST PMC_EV_P4_TC_DELIVER_MODE
131#define PMC_EV_P4_LAST PMC_EV_P4_MACHINE_CLEAR
132
133/* Intel Pentium Pro, P-II, P-III and Pentium-M style events */
134
135#define __PMC_EV_P6() \
136__PMC_EV(P6, DATA_MEM_REFS, p6-data-mem-refs) \
137__PMC_EV(P6, DCU_LINES_IN, p6-dcu-lines-in) \
138__PMC_EV(P6, DCU_M_LINES_IN, p6-dcu-m-lines-in) \
139__PMC_EV(P6, DCU_M_LINES_OUT, p6-dcu-m-lines-out) \
140__PMC_EV(P6, DCU_MISS_OUTSTANDING, p6-dcu-miss-outstanding) \
141__PMC_EV(P6, IFU_FETCH, p6-ifu-fetch) \
142__PMC_EV(P6, IFU_FETCH_MISS, p6-ifu-fetch-miss) \
143__PMC_EV(P6, ITLB_MISS, p6-itlb-miss) \
144__PMC_EV(P6, IFU_MEM_STALL, p6-ifu-mem-stall) \
145__PMC_EV(P6, ILD_STALL, p6-ild-stall) \
146__PMC_EV(P6, L2_IFETCH, p6-l2-ifetch) \
147__PMC_EV(P6, L2_LD, p6-l2-ld) \
148__PMC_EV(P6, L2_ST, p6-l2-st) \
149__PMC_EV(P6, L2_LINES_IN, p6-l2-lines-in) \
150__PMC_EV(P6, L2_LINES_OUT, p6-l2-lines-out) \
151__PMC_EV(P6, L2_M_LINES_INM, p6-l2-m-lines-inm) \
152__PMC_EV(P6, L2_M_LINES_OUTM, p6-l2-m-lines-outm) \
153__PMC_EV(P6, L2_RQSTS, p6-l2-rqsts) \
154__PMC_EV(P6, L2_ADS, p6-l2-ads) \
155__PMC_EV(P6, L2_DBUS_BUSY, p6-l2-dbus-busy) \
156__PMC_EV(P6, L2_DBUS_BUSY_RD, p6-l2-dbus-busy-rd) \
157__PMC_EV(P6, BUS_DRDY_CLOCKS, p6-bus-drdy-clocks) \
158__PMC_EV(P6, BUS_LOCK_CLOCKS, p6-bus-lock-clocks) \
159__PMC_EV(P6, BUS_REQ_OUTSTANDING, p6-bus-req-outstanding) \
160__PMC_EV(P6, BUS_TRAN_BRD, p6-bus-tran-brd) \
161__PMC_EV(P6, BUS_TRAN_RFO, p6-bus-tran-rfo) \
162__PMC_EV(P6, BUS_TRANS_WB, p6-bus-trans-wb) \
163__PMC_EV(P6, BUS_TRAN_IFETCH, p6-bus-tran-ifetch) \
164__PMC_EV(P6, BUS_TRAN_INVAL, p6-bus-tran-inval) \
165__PMC_EV(P6, BUS_TRAN_PWR, p6-bus-tran-pwr) \
166__PMC_EV(P6, BUS_TRANS_P, p6-bus-trans-p) \
167__PMC_EV(P6, BUS_TRANS_IO, p6-bus-trans-io) \
168__PMC_EV(P6, BUS_TRAN_DEF, p6-bus-tran-def) \
169__PMC_EV(P6, BUS_TRAN_BURST, p6-bus-tran-burst) \
170__PMC_EV(P6, BUS_TRAN_ANY, p6-bus-tran-any) \
171__PMC_EV(P6, BUS_TRAN_MEM, p6-bus-tran-mem) \
172__PMC_EV(P6, BUS_DATA_RCV, p6-bus-data-rcv) \
173__PMC_EV(P6, BUS_BNR_DRV, p6-bus-bnr-drv) \
174__PMC_EV(P6, BUS_HIT_DRV, p6-bus-hit-drv) \
175__PMC_EV(P6, BUS_HITM_DRV, p6-bus-hitm-drv) \
176__PMC_EV(P6, BUS_SNOOP_STALL, p6-bus-snoop-stall) \
177__PMC_EV(P6, FLOPS, p6-flops) \
178__PMC_EV(P6, FP_COMPS_OPS_EXE, p6-fp-comps-ops-exe) \
179__PMC_EV(P6, FP_ASSIST, p6-fp-assist) \
180__PMC_EV(P6, MUL, p6-mul) \
181__PMC_EV(P6, DIV, p6-div) \
182__PMC_EV(P6, CYCLES_DIV_BUSY, p6-cycles-div-busy) \
183__PMC_EV(P6, LD_BLOCKS, p6-ld-blocks) \
184__PMC_EV(P6, SB_DRAINS, p6-sb-drains) \
185__PMC_EV(P6, MISALIGN_MEM_REF, p6-misalign-mem-ref) \
186__PMC_EV(P6, EMON_KNI_PREF_DISPATCHED, p6-emon-kni-pref-dispatched) \
187__PMC_EV(P6, EMON_KNI_PREF_MISS, p6-emon-kni-pref-miss) \
188__PMC_EV(P6, INST_RETIRED, p6-inst-retired) \
189__PMC_EV(P6, UOPS_RETIRED, p6-uops-retired) \
190__PMC_EV(P6, INST_DECODED, p6-inst-decoded) \
191__PMC_EV(P6, EMON_KNI_INST_RETIRED, p6-emon-kni-inst-retired) \
192__PMC_EV(P6, EMON_KNI_COMP_INST_RET, p6-emon-kni-comp-inst-ret) \
193__PMC_EV(P6, HW_INT_RX, p6-hw-int-rx) \
194__PMC_EV(P6, CYCLES_INT_MASKED, p6-cycles-int-masked) \
195__PMC_EV(P6, CYCLES_INT_PENDING_AND_MASKED, \
196 p6-cycles-in-pending-and-masked) \
197__PMC_EV(P6, BR_INST_RETIRED, p6-br-inst-retired) \
198__PMC_EV(P6, BR_MISS_PRED_RETIRED, p6-br-miss-pred-retired) \
199__PMC_EV(P6, BR_TAKEN_RETIRED, p6-br-taken-retired) \
200__PMC_EV(P6, BR_MISS_PRED_TAKEN_RET, p6-br-miss-pred-taken-ret) \
201__PMC_EV(P6, BR_INST_DECODED, p6-br-inst-decoded) \
202__PMC_EV(P6, BTB_MISSES, p6-btb-misses) \
203__PMC_EV(P6, BR_BOGUS, p6-br-bogus) \
204__PMC_EV(P6, BACLEARS, p6-baclears) \
205__PMC_EV(P6, RESOURCE_STALLS, p6-resource-stalls) \
206__PMC_EV(P6, PARTIAL_RAT_STALLS, p6-partial-rat-stalls) \
207__PMC_EV(P6, SEGMENT_REG_LOADS, p6-segment-reg-loads) \
208__PMC_EV(P6, CPU_CLK_UNHALTED, p6-cpu-clk-unhalted) \
209__PMC_EV(P6, MMX_INSTR_EXEC, p6-mmx-instr-exec) \
210__PMC_EV(P6, MMX_SAT_INSTR_EXEC, p6-mmx-sat-instr-exec) \
211__PMC_EV(P6, MMX_UOPS_EXEC, p6-mmx-uops-exec) \
212__PMC_EV(P6, MMX_INSTR_TYPE_EXEC, p6-mmx-instr-type-exec) \
213__PMC_EV(P6, FP_MMX_TRANS, p6-fp-mmx-trans) \
214__PMC_EV(P6, MMX_ASSIST, p6-mmx-assist) \
215__PMC_EV(P6, MMX_INSTR_RET, p6-mmx-instr-ret) \
216__PMC_EV(P6, SEG_RENAME_STALLS, p6-seg-rename-stalls) \
217__PMC_EV(P6, SEG_REG_RENAMES, p6-seg-reg-renames) \
218__PMC_EV(P6, RET_SEG_RENAMES, p6-ret-seg-renames) \
219__PMC_EV(P6, EMON_EST_TRANS, p6-emon-est-trans) \
220__PMC_EV(P6, EMON_THERMAL_TRIP, p6-emon-thermal-trip) \
221__PMC_EV(P6, BR_INST_EXEC, p6-br-inst-exec) \
222__PMC_EV(P6, BR_MISSP_EXEC, p6-br-missp-exec) \
223__PMC_EV(P6, BR_BAC_MISSP_EXEC, p6-br-bac-missp-exec) \
224__PMC_EV(P6, BR_CND_EXEC, p6-br-cnd-exec) \
225__PMC_EV(P6, BR_CND_MISSP_EXEC, p6-br-cnd-missp-exec) \
226__PMC_EV(P6, BR_IND_EXEC, p6-br-ind-exec) \
227__PMC_EV(P6, BR_IND_MISSP_EXEC, p6-br-ind-missp-exec) \
228__PMC_EV(P6, BR_RET_EXEC, p6-br-ret-exec) \
229__PMC_EV(P6, BR_RET_MISSP_EXEC, p6-br-ret-missp-exec) \
230__PMC_EV(P6, BR_RET_BAC_MISSP_EXEC, p6-br-ret-bac-missp-exec) \
231__PMC_EV(P6, BR_CALL_EXEC, p6-br-call-exec) \
232__PMC_EV(P6, BR_CALL_MISSP_EXEC, p6-br-call-missp-exec) \
233__PMC_EV(P6, BR_IND_CALL_EXEC, p6-br-ind-call-exec) \
234__PMC_EV(P6, EMON_SIMD_INSTR_RETIRED, p6-emon-simd-instr-retired) \
235__PMC_EV(P6, EMON_SYNCH_UOPS, p6-emon-synch-uops) \
236__PMC_EV(P6, EMON_ESP_UOPS, p6-emon-esp-uops) \
237__PMC_EV(P6, EMON_FUSED_UOPS_RET, p6-emon-fused-uops-ret) \
238__PMC_EV(P6, EMON_UNFUSION, p6-emon-unfusion) \
239__PMC_EV(P6, EMON_PREF_RQSTS_UP, p6-emon-pref-rqsts-up) \
240__PMC_EV(P6, EMON_PREF_RQSTS_DN, p6-emon-pref-rqsts-dn) \
241__PMC_EV(P6, EMON_SSE_SSE2_INST_RETIRED, \
242 p6-emon-sse-sse2-inst-retired) \
243__PMC_EV(P6, EMON_SSE_SSE2_COMP_INST_RETIRED, \
244 p6-emon-sse-sse2-comp-inst-retired)
245
246
247#define PMC_EV_P6_FIRST PMC_EV_P6_DATA_MEM_REFS
248#define PMC_EV_P6_LAST PMC_EV_P6_EMON_SSE_SSE2_COMP_INST_RETIRED
249
250/* AMD K8 PMCs */
251
252#define __PMC_EV_K8() \
253__PMC_EV(K8, FP_DISPATCHED_FPU_OPS, k8-fp-dispatched-fpu-ops) \
254__PMC_EV(K8, FP_CYCLES_WITH_NO_FPU_OPS_RETIRED, \
255 k8-fp-cycles-with-no-fpu-ops-retired) \
256__PMC_EV(K8, FP_DISPATCHED_FPU_FAST_FLAG_OPS, \
257 k8-fp-dispatched-fpu-fast-flag-ops) \
258__PMC_EV(K8, LS_SEGMENT_REGISTER_LOAD, k8-ls-segment-register-load) \
259__PMC_EV(K8, LS_MICROARCHITECTURAL_RESYNC_BY_SELF_MODIFYING_CODE, \
260 k8-ls-microarchitectural-resync-by-self-modifying-code) \
261__PMC_EV(K8, LS_MICROARCHITECTURAL_RESYNC_BY_SNOOP, \
262 k8-ls-microarchitectural-resync-by-snoop) \
263__PMC_EV(K8, LS_BUFFER2_FULL, k8-ls-buffer2-full) \
264__PMC_EV(K8, LS_LOCKED_OPERATION, k8-ls-locked-operation) \
265__PMC_EV(K8, LS_MICROARCHITECTURAL_LATE_CANCEL, \
266 k8-ls-microarchitectural-late-cancel) \
267__PMC_EV(K8, LS_RETIRED_CFLUSH_INSTRUCTIONS, \
268 k8-ls-retired-cflush-instructions) \
269__PMC_EV(K8, LS_RETIRED_CPUID_INSTRUCTIONS, \
270 k8-ls-retired-cpuid-instructions) \
271__PMC_EV(K8, DC_ACCESS, k8-dc-access) \
272__PMC_EV(K8, DC_MISS, k8-dc-miss) \
273__PMC_EV(K8, DC_REFILL_FROM_L2, k8-dc-refill-from-l2) \
274__PMC_EV(K8, DC_REFILL_FROM_SYSTEM, k8-dc-refill-from-system) \
275__PMC_EV(K8, DC_COPYBACK, k8-dc-copyback) \
276__PMC_EV(K8, DC_L1_DTLB_MISS_AND_L2_DTLB_HIT, \
277 k8-dc-l1-dtlb-miss-and-l2-dtlb-hit) \
278__PMC_EV(K8, DC_L1_DTLB_MISS_AND_L2_DTLB_MISS, \
279 k8-dc-l1-dtlb-miss-and-l2-dtlb-miss) \
280__PMC_EV(K8, DC_MISALIGNED_DATA_REFERENCE, \
281 k8-dc-misaligned-data-reference) \
282__PMC_EV(K8, DC_MICROARCHITECTURAL_LATE_CANCEL, \
283 k8-dc-microarchitectural-late-cancel-of-an-access) \
284__PMC_EV(K8, DC_MICROARCHITECTURAL_EARLY_CANCEL, \
285 k8-dc-microarchitectural-early-cancel-of-an-access) \
286__PMC_EV(K8, DC_ONE_BIT_ECC_ERROR, k8-dc-one-bit-ecc-error) \
287__PMC_EV(K8, DC_DISPATCHED_PREFETCH_INSTRUCTIONS, \
288 k8-dc-dispatched-prefetch-instructions) \
289__PMC_EV(K8, DC_DCACHE_ACCESSES_BY_LOCKS, \
290 k8-dc-dcache-accesses-by-locks) \
291__PMC_EV(K8, BU_CPU_CLK_UNHALTED, k8-bu-cpu-clk-unhalted) \
292__PMC_EV(K8, BU_INTERNAL_L2_REQUEST, k8-bu-internal-l2-request) \
293__PMC_EV(K8, BU_FILL_REQUEST_L2_MISS, k8-bu-fill-request-l2-miss) \
294__PMC_EV(K8, BU_FILL_INTO_L2, k8-bu-fill-into-l2) \
295__PMC_EV(K8, IC_FETCH, k8-ic-fetch) \
296__PMC_EV(K8, IC_MISS, k8-ic-miss) \
297__PMC_EV(K8, IC_REFILL_FROM_L2, k8-ic-refill-from-l2) \
298__PMC_EV(K8, IC_REFILL_FROM_SYSTEM, k8-ic-refill-from-system) \
299__PMC_EV(K8, IC_L1_ITLB_MISS_AND_L2_ITLB_HIT, \
300 k8-ic-l1-itlb-miss-and-l2-itlb-hit) \
301__PMC_EV(K8, IC_L1_ITLB_MISS_AND_L2_ITLB_MISS, \
302 k8-ic-l1-itlb-miss-and-l2-itlb-miss) \
303__PMC_EV(K8, IC_MICROARCHITECTURAL_RESYNC_BY_SNOOP, \
304 k8-ic-microarchitectural-resync-by-snoop) \
305__PMC_EV(K8, IC_INSTRUCTION_FETCH_STALL, \
306 k8-ic-instruction-fetch-stall) \
307__PMC_EV(K8, IC_RETURN_STACK_HIT, k8-ic-return-stack-hit) \
308__PMC_EV(K8, IC_RETURN_STACK_OVERFLOW, k8-ic-return-stack-overflow) \
309__PMC_EV(K8, FR_RETIRED_X86_INSTRUCTIONS, \
310 k8-fr-retired-x86-instructions) \
311__PMC_EV(K8, FR_RETIRED_UOPS, k8-fr-retired-uops) \
312__PMC_EV(K8, FR_RETIRED_BRANCHES, k8-fr-retired-branches) \
313__PMC_EV(K8, FR_RETIRED_BRANCHES_MISPREDICTED, \
314 k8-fr-retired-branches-mispredicted) \
315__PMC_EV(K8, FR_RETIRED_TAKEN_BRANCHES, \
316 k8-fr-retired-taken-branches) \
317__PMC_EV(K8, FR_RETIRED_TAKEN_BRANCHES_MISPREDICTED, \
318 k8-fr-retired-taken-branches-mispredicted) \
319__PMC_EV(K8, FR_RETIRED_FAR_CONTROL_TRANSFERS, \
320 k8-fr-retired-far-control-transfers) \
321__PMC_EV(K8, FR_RETIRED_RESYNCS, k8-fr-retired-resyncs) \
322__PMC_EV(K8, FR_RETIRED_NEAR_RETURNS, k8-fr-retired-near-returns) \
323__PMC_EV(K8, FR_RETIRED_NEAR_RETURNS_MISPREDICTED, \
324 k8-fr-retired-near-returns-mispredicted) \
325__PMC_EV(K8, \
326 FR_RETIRED_TAKEN_BRANCHES_MISPREDICTED_BY_ADDR_MISCOMPARE, \
327 k8-fr-retired-taken-branches-mispredicted-by-addr-miscompare) \
328__PMC_EV(K8, FR_RETIRED_FPU_INSTRUCTIONS, \
329 k8-fr-retired-fpu-instructions) \
330__PMC_EV(K8, FR_RETIRED_FASTPATH_DOUBLE_OP_INSTRUCTIONS, \
331 k8-fr-retired-fastpath-double-op-instructions) \
332__PMC_EV(K8, FR_INTERRUPTS_MASKED_CYCLES, \
333 k8-fr-interrupts-masked-cycles) \
334__PMC_EV(K8, FR_INTERRUPTS_MASKED_WHILE_PENDING_CYCLES, \
335 k8-fr-interrupts-masked-while-pending-cycles) \
336__PMC_EV(K8, FR_TAKEN_HARDWARE_INTERRUPTS, \
337 k8-fr-taken-hardware-interrupts) \
338__PMC_EV(K8, FR_DECODER_EMPTY, k8-fr-decoder-empty) \
339__PMC_EV(K8, FR_DISPATCH_STALLS, k8-fr-dispatch-stalls) \
340__PMC_EV(K8, FR_DISPATCH_STALL_FROM_BRANCH_ABORT_TO_RETIRE, \
341 k8-fr-dispatch-stall-from-branch-abort-to-retire) \
342__PMC_EV(K8, FR_DISPATCH_STALL_FOR_SERIALIZATION, \
343 k8-fr-dispatch-stall-for-serialization) \
344__PMC_EV(K8, FR_DISPATCH_STALL_FOR_SEGMENT_LOAD, \
345 k8-fr-dispatch-stall-for-segment-load) \
346__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_REORDER_BUFFER_IS_FULL, \
347 k8-fr-dispatch-stall-when-reorder-buffer-is-full) \
348__PMC_EV(K8, \
349 FR_DISPATCH_STALL_WHEN_RESERVATION_STATIONS_ARE_FULL, \
350 k8-fr-dispatch-stall-when-reservation-stations-are-full) \
351__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_FPU_IS_FULL, \
352 k8-fr-dispatch-stall-when-fpu-is-full) \
353__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_LS_IS_FULL, \
354 k8-fr-dispatch-stall-when-ls-is-full) \
355__PMC_EV(K8, FR_DISPATCH_STALL_WHEN_WAITING_FOR_ALL_TO_BE_QUIET, \
356 k8-fr-dispatch-stall-when-waiting-for-all-to-be-quiet) \
357__PMC_EV(K8, \
358 FR_DISPATCH_STALL_WHEN_FAR_XFER_OR_RESYNC_BRANCH_PENDING, \
359 k8-fr-dispatch-stall-when-far-xfer-or-resync-branch-pending) \
360__PMC_EV(K8, FR_FPU_EXCEPTIONS, k8-fr-fpu-exceptions) \
361__PMC_EV(K8, FR_NUMBER_OF_BREAKPOINTS_FOR_DR0, \
362 k8-fr-number-of-breakpoints-for-dr0) \
363__PMC_EV(K8, FR_NUMBER_OF_BREAKPOINTS_FOR_DR1, \
364 k8-fr-number-of-breakpoints-for-dr1) \
365__PMC_EV(K8, FR_NUMBER_OF_BREAKPOINTS_FOR_DR2, \
366 k8-fr-number-of-breakpoints-for-dr2) \
367__PMC_EV(K8, FR_NUMBER_OF_BREAKPOINTS_FOR_DR3, \
368 k8-fr-number-of-breakpoints-for-dr3) \
369__PMC_EV(K8, NB_MEMORY_CONTROLLER_PAGE_ACCESS_EVENT, \
370 k8-nb-memory-controller-page-access-event) \
371__PMC_EV(K8, NB_MEMORY_CONTROLLER_PAGE_TABLE_OVERFLOW, \
372 k8-nb-memory-controller-page-table-overflow) \
373__PMC_EV(K8, NB_MEMORY_CONTROLLER_DRAM_COMMAND_SLOTS_MISSED, \
374 k8-nb-memory-controller-dram-slots-missed) \
375__PMC_EV(K8, NB_MEMORY_CONTROLLER_TURNAROUND, \
376 k8-nb-memory-controller-turnaround) \
377__PMC_EV(K8, NB_MEMORY_CONTROLLER_BYPASS_SATURATION, \
378 k8-nb-memory-controller-bypass-saturation) \
379__PMC_EV(K8, NB_SIZED_COMMANDS, k8-nb-sized-commands) \
380__PMC_EV(K8, NB_PROBE_RESULT, k8-nb-probe-result) \
381__PMC_EV(K8, NB_HT_BUS0_BANDWIDTH, k8-nb-ht-bus0-bandwidth) \
382__PMC_EV(K8, NB_HT_BUS1_BANDWIDTH, k8-nb-ht-bus1-bandwidth) \
383__PMC_EV(K8, NB_HT_BUS2_BANDWIDTH, k8-nb-ht-bus2-bandwidth)
384
385#define PMC_EV_K8_FIRST PMC_EV_K8_FP_DISPATCHED_FPU_OPS
386#define PMC_EV_K8_LAST PMC_EV_K8_NB_HT_BUS2_BANDWIDTH
387
388
389/* Intel Pentium Events */
389/*
390 * Intel Pentium and Pentium MMX Events, from the "Intel 64 and IA-32
391 * Intel(R) Architectures Software Developer's Manual, Volume 3B:
392 * System Programming Guide, Part 2, August 2007".
393 */
390#define __PMC_EV_P5() \
391__PMC_EV(P5, DATA_READ, p5-data-read) \
392__PMC_EV(P5, DATA_WRITE, p5-data-write) \
393__PMC_EV(P5, DATA_TLB_MISS, p5-data-tlb-miss) \
394__PMC_EV(P5, DATA_READ_MISS, p5-data-read-miss) \
395__PMC_EV(P5, DATA_WRITE_MISS, p5-data-write-miss) \
396__PMC_EV(P5, WRITE_HIT_TO_M_OR_E_STATE_LINES, \
397 p5-write-hit-to-m-or-e-state-lines) \
398__PMC_EV(P5, DATA_CACHE_LINES_WRITTEN_BACK, \
394#define __PMC_EV_P5() \
395__PMC_EV(P5, DATA_READ, p5-data-read) \
396__PMC_EV(P5, DATA_WRITE, p5-data-write) \
397__PMC_EV(P5, DATA_TLB_MISS, p5-data-tlb-miss) \
398__PMC_EV(P5, DATA_READ_MISS, p5-data-read-miss) \
399__PMC_EV(P5, DATA_WRITE_MISS, p5-data-write-miss) \
400__PMC_EV(P5, WRITE_HIT_TO_M_OR_E_STATE_LINES, \
401 p5-write-hit-to-m-or-e-state-lines) \
402__PMC_EV(P5, DATA_CACHE_LINES_WRITTEN_BACK, \
399 p4-data-cache-lines-written-back) \
403 p5-data-cache-lines-written-back) \
400__PMC_EV(P5, EXTERNAL_SNOOPS, p5-external-snoops) \
401__PMC_EV(P5, EXTERNAL_DATA_CACHE_SNOOP_HITS, \
402 p5-external-data-cache-snoop-hits) \
403__PMC_EV(P5, MEMORY_ACCESSES_IN_BOTH_PIPES, \
404 p5-memory-accesses-in-both-pipes) \
405__PMC_EV(P5, BANK_CONFLICTS, p5-bank-conflicts) \
406__PMC_EV(P5, MISALIGNED_DATA_OR_IO_REFERENCES, \
407 p5-misaligned-data-or-io-references) \
408__PMC_EV(P5, CODE_READ, p5-code-read) \
409__PMC_EV(P5, CODE_TLB_MISS, p5-code-tlb-miss) \
410__PMC_EV(P5, CODE_CACHE_MISS, p5-code-cache-miss) \
411__PMC_EV(P5, ANY_SEGMENT_REGISTER_LOADED, \
412 p5-any-segment-register-loaded) \
413__PMC_EV(P5, BRANCHES, p5-branches) \
414__PMC_EV(P5, BTB_HITS, p5-btb-hits) \
415__PMC_EV(P5, TAKEN_BRANCH_OR_BTB_HIT, \
416 p5-taken-branch-or-btb-hit) \
417__PMC_EV(P5, PIPELINE_FLUSHES, p5-pipeline-flushes) \
418__PMC_EV(P5, INSTRUCTIONS_EXECUTED, p5-instructions-executed) \
419__PMC_EV(P5, INSTRUCTIONS_EXECUTED_V_PIPE, \
420 p5-instructions-executed-v-pipe) \
421__PMC_EV(P5, BUS_CYCLE_DURATION, p5-bus-cycle-duration) \
422__PMC_EV(P5, WRITE_BUFFER_FULL_STALL_DURATION, \
423 p5-write-buffer-full-stall-duration) \
424__PMC_EV(P5, WAITING_FOR_DATA_MEMORY_READ_STALL_DURATION, \
425 p5-waiting-for-data-memory-read-stall-duration) \
426__PMC_EV(P5, STALL_ON_WRITE_TO_AN_E_OR_M_STATE_LINE, \
427 p5-stall-on-write-to-an-e-or-m-state-line) \
428__PMC_EV(P5, LOCKED_BUS_CYCLE, p5-locked-bus-cycle) \
429__PMC_EV(P5, IO_READ_OR_WRITE_CYCLE, p5-io-read-or-write-cycle) \
430__PMC_EV(P5, NONCACHEABLE_MEMORY_READS, \
431 p5-noncacheable-memory-reads) \
432__PMC_EV(P5, PIPELINE_AGI_STALLS, p5-pipeline-agi-stalls) \
433__PMC_EV(P5, FLOPS, p5-flops) \
434__PMC_EV(P5, BREAKPOINT_MATCH_ON_DR0_REGISTER, \
435 p5-breakpoint-match-on-dr0-register) \
436__PMC_EV(P5, BREAKPOINT_MATCH_ON_DR1_REGISTER, \
437 p5-breakpoint-match-on-dr1-register) \
438__PMC_EV(P5, BREAKPOINT_MATCH_ON_DR2_REGISTER, \
439 p5-breakpoint-match-on-dr2-register) \
440__PMC_EV(P5, BREAKPOINT_MATCH_ON_DR3_REGISTER, \
441 p5-breakpoint-match-on-dr3-register) \
442__PMC_EV(P5, HARDWARE_INTERRUPTS, p5-hardware-interrupts) \
443__PMC_EV(P5, DATA_READ_OR_WRITE, p5-data-read-or-write) \
444__PMC_EV(P5, DATA_READ_MISS_OR_WRITE_MISS, \
445 p5-data-read-miss-or-write-miss) \
446__PMC_EV(P5, BUS_OWNERSHIP_LATENCY, p5-bus-ownership-latency) \
447__PMC_EV(P5, BUS_OWNERSHIP_TRANSFERS, p5-bus-ownership-transfers) \
448__PMC_EV(P5, MMX_INSTRUCTIONS_EXECUTED_U_PIPE, \
449 p5-mmx-instructions-executed-u-pipe) \
450__PMC_EV(P5, MMX_INSTRUCTIONS_EXECUTED_V_PIPE, \
451 p5-mmx-instructions-executed-v-pipe) \
452__PMC_EV(P5, CACHE_M_LINE_SHARING, p5-cache-m-line-sharing) \
453__PMC_EV(P5, CACHE_LINE_SHARING, p5-cache-line-sharing) \
454__PMC_EV(P5, EMMS_INSTRUCTIONS_EXECUTED, \
455 p5-emms-instructions-executed) \
456__PMC_EV(P5, TRANSITIONS_BETWEEN_MMX_AND_FP_INSTRUCTIONS, \
457 p5-transitions-between-mmx-and-fp-instructions) \
458__PMC_EV(P5, BUS_UTILIZATION_DUE_TO_PROCESSOR_ACTIVITY, \
459 p5-bus-utilization-due-to-processor-activity) \
460__PMC_EV(P5, WRITES_TO_NONCACHEABLE_MEMORY, \
461 p5-writes-to-noncacheable-memory) \
462__PMC_EV(P5, SATURATING_MMX_INSTRUCTIONS_EXECUTED, \
463 p5-saturating-mmx-instructions-executed) \
464__PMC_EV(P5, SATURATIONS_PERFORMED, p5-saturations-performed) \
465__PMC_EV(P5, NUMBER_OF_CYCLES_NOT_IN_HALT_STATE, \
466 p5-number-of-cycles-not-in-halt-state) \
467__PMC_EV(P5, DATA_CACHE_TLB_MISS_STALL_DURATION, \
468 p5-data-cache-tlb-miss-stall-duration) \
469__PMC_EV(P5, MMX_INSTRUCTION_DATA_READS, \
470 p5-mmx-instruction-data-reads) \
471__PMC_EV(P5, MMX_INSTRUCTION_DATA_READ_MISSES, \
472 p5-mmx-instruction-data-read-misses) \
473__PMC_EV(P5, FLOATING_POINT_STALLS_DURATION, \
474 p5-floating-point-stalls-duration) \
475__PMC_EV(P5, TAKEN_BRANCHES, p5-taken-branches) \
476__PMC_EV(P5, D1_STARVATION_AND_FIFO_IS_EMPTY, \
477 p5-d1-starvation-and-fifo-is-empty) \
478__PMC_EV(P5, D1_STARVATION_AND_ONLY_ONE_INSTRUCTION_IN_FIFO, \
479 p5-d1-starvation-and-only-instruction-in-fifo) \
480__PMC_EV(P5, MMX_INSTRUCTION_DATA_WRITES, \
481 p5-mmx-instruction-data-writes) \
482__PMC_EV(P5, MMX_INSTRUCTION_DATA_WRITE_MISSES, \
483 p5-mmx-instruction-data-write-misses) \
484__PMC_EV(P5, PIPELINE_FLUSHES_DUE_TO_WRONG_BRANCH_PREDICTIONS, \
485 p5-pipeline-flushes-due-to-wrong-branch-predictions) \
486__PMC_EV(P5, \
487 PIPELINE_FLUSHES_DUE_TO_WRONG_BRANCH_PREDICTIONS_RESOLVED_IN_WB_STAGE, \
488 p5-pipeline-flushes-due-to-wrong-branch-predictions-resolved-in-wb-stage) \
489__PMC_EV(P5, MISALIGNED_DATA_MEMORY_REFERENCE_ON_MMX_INSTRUCTIONS, \
490 p5-misaligned-data-memory-reference-on-mmx-instructions) \
491__PMC_EV(P5, PIPELINE_STALL_FOR_MMX_INSTRUCTION_DATA_MEMORY_READS, \
492 p5-pipeline-stall-for-mmx-instruction-data-memory-reads) \
493__PMC_EV(P5, MISPREDICTED_OR_UNPREDICTED_RETURNS, \
494 p5-mispredicted-or-unpredicted-returns) \
495__PMC_EV(P5, PREDICTED_RETURNS, p5-predicted-returns) \
496__PMC_EV(P5, MMX_MULTIPLY_UNIT_INTERLOCK, \
497 p5-mmx-multiply-unit-interlock) \
498__PMC_EV(P5, MOVD_MOVQ_STORE_STALL_DUE_TO_PREVIOUS_MMX_OPERATION, \
499 p5-movd-movq-store-stall-due-to-previous-mmx-operation) \
500__PMC_EV(P5, RETURNS, p5-returns) \
501__PMC_EV(P5, BTB_FALSE_ENTRIES, p5-btb-false-entries) \
502__PMC_EV(P5, BTB_MISS_PREDICTION_ON_NOT_TAKEN_BRANCH, \
503 p5-btb-miss-prediction-on-not-taken-branch) \
504__PMC_EV(P5, \
505 FULL_WRITE_BUFFER_STALL_DURATION_WHILE_EXECUTING_MMX_INSTRUCTIONS, \
506 p5-full-write-buffer-stall-duration-while-executing-mmx-instructions) \
507__PMC_EV(P5, STALL_ON_MMX_INSTRUCTION_WRITE_TO_E_OR_M_STATE_LINE, \
508 p5-stall-on-mmx-instruction-write-to-e-o-m-state-line)
509
510#define PMC_EV_P5_FIRST PMC_EV_P5_DATA_READ
511#define PMC_EV_P5_LAST \
512 PMC_EV_P5_STALL_ON_MMX_INSTRUCTION_WRITE_TO_E_OR_M_STATE_LINE
513
514/* timestamp counters. */
515#define __PMC_EV_TSC() \
516 __PMC_EV(TSC, TSC, tsc)
517
518/* All known PMC events */
519#define __PMC_EVENTS() \
520 __PMC_EV_TSC() \
521 __PMC_EV_K7() \
522 __PMC_EV_P6() \
523 __PMC_EV_P4() \
524 __PMC_EV_K8() \
525 __PMC_EV_P5() \
526
527#define PMC_EVENT_FIRST PMC_EV_TSC_TSC
528#define PMC_EVENT_LAST PMC_EV_P5_LAST
529
530#endif /* _DEV_HWPMC_PMC_EVENTS_H_ */
404__PMC_EV(P5, EXTERNAL_SNOOPS, p5-external-snoops) \
405__PMC_EV(P5, EXTERNAL_DATA_CACHE_SNOOP_HITS, \
406 p5-external-data-cache-snoop-hits) \
407__PMC_EV(P5, MEMORY_ACCESSES_IN_BOTH_PIPES, \
408 p5-memory-accesses-in-both-pipes) \
409__PMC_EV(P5, BANK_CONFLICTS, p5-bank-conflicts) \
410__PMC_EV(P5, MISALIGNED_DATA_OR_IO_REFERENCES, \
411 p5-misaligned-data-or-io-references) \
412__PMC_EV(P5, CODE_READ, p5-code-read) \
413__PMC_EV(P5, CODE_TLB_MISS, p5-code-tlb-miss) \
414__PMC_EV(P5, CODE_CACHE_MISS, p5-code-cache-miss) \
415__PMC_EV(P5, ANY_SEGMENT_REGISTER_LOADED, \
416 p5-any-segment-register-loaded) \
417__PMC_EV(P5, BRANCHES, p5-branches) \
418__PMC_EV(P5, BTB_HITS, p5-btb-hits) \
419__PMC_EV(P5, TAKEN_BRANCH_OR_BTB_HIT, \
420 p5-taken-branch-or-btb-hit) \
421__PMC_EV(P5, PIPELINE_FLUSHES, p5-pipeline-flushes) \
422__PMC_EV(P5, INSTRUCTIONS_EXECUTED, p5-instructions-executed) \
423__PMC_EV(P5, INSTRUCTIONS_EXECUTED_V_PIPE, \
424 p5-instructions-executed-v-pipe) \
425__PMC_EV(P5, BUS_CYCLE_DURATION, p5-bus-cycle-duration) \
426__PMC_EV(P5, WRITE_BUFFER_FULL_STALL_DURATION, \
427 p5-write-buffer-full-stall-duration) \
428__PMC_EV(P5, WAITING_FOR_DATA_MEMORY_READ_STALL_DURATION, \
429 p5-waiting-for-data-memory-read-stall-duration) \
430__PMC_EV(P5, STALL_ON_WRITE_TO_AN_E_OR_M_STATE_LINE, \
431 p5-stall-on-write-to-an-e-or-m-state-line) \
432__PMC_EV(P5, LOCKED_BUS_CYCLE, p5-locked-bus-cycle) \
433__PMC_EV(P5, IO_READ_OR_WRITE_CYCLE, p5-io-read-or-write-cycle) \
434__PMC_EV(P5, NONCACHEABLE_MEMORY_READS, \
435 p5-noncacheable-memory-reads) \
436__PMC_EV(P5, PIPELINE_AGI_STALLS, p5-pipeline-agi-stalls) \
437__PMC_EV(P5, FLOPS, p5-flops) \
438__PMC_EV(P5, BREAKPOINT_MATCH_ON_DR0_REGISTER, \
439 p5-breakpoint-match-on-dr0-register) \
440__PMC_EV(P5, BREAKPOINT_MATCH_ON_DR1_REGISTER, \
441 p5-breakpoint-match-on-dr1-register) \
442__PMC_EV(P5, BREAKPOINT_MATCH_ON_DR2_REGISTER, \
443 p5-breakpoint-match-on-dr2-register) \
444__PMC_EV(P5, BREAKPOINT_MATCH_ON_DR3_REGISTER, \
445 p5-breakpoint-match-on-dr3-register) \
446__PMC_EV(P5, HARDWARE_INTERRUPTS, p5-hardware-interrupts) \
447__PMC_EV(P5, DATA_READ_OR_WRITE, p5-data-read-or-write) \
448__PMC_EV(P5, DATA_READ_MISS_OR_WRITE_MISS, \
449 p5-data-read-miss-or-write-miss) \
450__PMC_EV(P5, BUS_OWNERSHIP_LATENCY, p5-bus-ownership-latency) \
451__PMC_EV(P5, BUS_OWNERSHIP_TRANSFERS, p5-bus-ownership-transfers) \
452__PMC_EV(P5, MMX_INSTRUCTIONS_EXECUTED_U_PIPE, \
453 p5-mmx-instructions-executed-u-pipe) \
454__PMC_EV(P5, MMX_INSTRUCTIONS_EXECUTED_V_PIPE, \
455 p5-mmx-instructions-executed-v-pipe) \
456__PMC_EV(P5, CACHE_M_LINE_SHARING, p5-cache-m-line-sharing) \
457__PMC_EV(P5, CACHE_LINE_SHARING, p5-cache-line-sharing) \
458__PMC_EV(P5, EMMS_INSTRUCTIONS_EXECUTED, \
459 p5-emms-instructions-executed) \
460__PMC_EV(P5, TRANSITIONS_BETWEEN_MMX_AND_FP_INSTRUCTIONS, \
461 p5-transitions-between-mmx-and-fp-instructions) \
462__PMC_EV(P5, BUS_UTILIZATION_DUE_TO_PROCESSOR_ACTIVITY, \
463 p5-bus-utilization-due-to-processor-activity) \
464__PMC_EV(P5, WRITES_TO_NONCACHEABLE_MEMORY, \
465 p5-writes-to-noncacheable-memory) \
466__PMC_EV(P5, SATURATING_MMX_INSTRUCTIONS_EXECUTED, \
467 p5-saturating-mmx-instructions-executed) \
468__PMC_EV(P5, SATURATIONS_PERFORMED, p5-saturations-performed) \
469__PMC_EV(P5, NUMBER_OF_CYCLES_NOT_IN_HALT_STATE, \
470 p5-number-of-cycles-not-in-halt-state) \
471__PMC_EV(P5, DATA_CACHE_TLB_MISS_STALL_DURATION, \
472 p5-data-cache-tlb-miss-stall-duration) \
473__PMC_EV(P5, MMX_INSTRUCTION_DATA_READS, \
474 p5-mmx-instruction-data-reads) \
475__PMC_EV(P5, MMX_INSTRUCTION_DATA_READ_MISSES, \
476 p5-mmx-instruction-data-read-misses) \
477__PMC_EV(P5, FLOATING_POINT_STALLS_DURATION, \
478 p5-floating-point-stalls-duration) \
479__PMC_EV(P5, TAKEN_BRANCHES, p5-taken-branches) \
480__PMC_EV(P5, D1_STARVATION_AND_FIFO_IS_EMPTY, \
481 p5-d1-starvation-and-fifo-is-empty) \
482__PMC_EV(P5, D1_STARVATION_AND_ONLY_ONE_INSTRUCTION_IN_FIFO, \
483 p5-d1-starvation-and-only-instruction-in-fifo) \
484__PMC_EV(P5, MMX_INSTRUCTION_DATA_WRITES, \
485 p5-mmx-instruction-data-writes) \
486__PMC_EV(P5, MMX_INSTRUCTION_DATA_WRITE_MISSES, \
487 p5-mmx-instruction-data-write-misses) \
488__PMC_EV(P5, PIPELINE_FLUSHES_DUE_TO_WRONG_BRANCH_PREDICTIONS, \
489 p5-pipeline-flushes-due-to-wrong-branch-predictions) \
490__PMC_EV(P5, \
491 PIPELINE_FLUSHES_DUE_TO_WRONG_BRANCH_PREDICTIONS_RESOLVED_IN_WB_STAGE, \
492 p5-pipeline-flushes-due-to-wrong-branch-predictions-resolved-in-wb-stage) \
493__PMC_EV(P5, MISALIGNED_DATA_MEMORY_REFERENCE_ON_MMX_INSTRUCTIONS, \
494 p5-misaligned-data-memory-reference-on-mmx-instructions) \
495__PMC_EV(P5, PIPELINE_STALL_FOR_MMX_INSTRUCTION_DATA_MEMORY_READS, \
496 p5-pipeline-stall-for-mmx-instruction-data-memory-reads) \
497__PMC_EV(P5, MISPREDICTED_OR_UNPREDICTED_RETURNS, \
498 p5-mispredicted-or-unpredicted-returns) \
499__PMC_EV(P5, PREDICTED_RETURNS, p5-predicted-returns) \
500__PMC_EV(P5, MMX_MULTIPLY_UNIT_INTERLOCK, \
501 p5-mmx-multiply-unit-interlock) \
502__PMC_EV(P5, MOVD_MOVQ_STORE_STALL_DUE_TO_PREVIOUS_MMX_OPERATION, \
503 p5-movd-movq-store-stall-due-to-previous-mmx-operation) \
504__PMC_EV(P5, RETURNS, p5-returns) \
505__PMC_EV(P5, BTB_FALSE_ENTRIES, p5-btb-false-entries) \
506__PMC_EV(P5, BTB_MISS_PREDICTION_ON_NOT_TAKEN_BRANCH, \
507 p5-btb-miss-prediction-on-not-taken-branch) \
508__PMC_EV(P5, \
509 FULL_WRITE_BUFFER_STALL_DURATION_WHILE_EXECUTING_MMX_INSTRUCTIONS, \
510 p5-full-write-buffer-stall-duration-while-executing-mmx-instructions) \
511__PMC_EV(P5, STALL_ON_MMX_INSTRUCTION_WRITE_TO_E_OR_M_STATE_LINE, \
512 p5-stall-on-mmx-instruction-write-to-e-o-m-state-line)
513
514#define PMC_EV_P5_FIRST PMC_EV_P5_DATA_READ
515#define PMC_EV_P5_LAST \
516 PMC_EV_P5_STALL_ON_MMX_INSTRUCTION_WRITE_TO_E_OR_M_STATE_LINE
517
518/* timestamp counters. */
519#define __PMC_EV_TSC() \
520 __PMC_EV(TSC, TSC, tsc)
521
522/* All known PMC events */
523#define __PMC_EVENTS() \
524 __PMC_EV_TSC() \
525 __PMC_EV_K7() \
526 __PMC_EV_P6() \
527 __PMC_EV_P4() \
528 __PMC_EV_K8() \
529 __PMC_EV_P5() \
530
531#define PMC_EVENT_FIRST PMC_EV_TSC_TSC
532#define PMC_EVENT_LAST PMC_EV_P5_LAST
533
534#endif /* _DEV_HWPMC_PMC_EVENTS_H_ */