blob: d0cf742d9b2b14ce595f359b6e75142a4bbed0cb [file] [log] [blame]
Clement Courbetb4493792018-04-10 08:16:37 +00001//===-- X86PfmCounters.td - X86 Hardware Counters ----------*- tablegen -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9//
10// This describes the available hardware counters for various subtargets.
11//
12//===----------------------------------------------------------------------===//
13
Clement Courbet41c8af32018-10-25 07:44:01 +000014def UnhaltedCoreCyclesPfmCounter : PfmCounter<"unhalted_core_cycles">;
15def UopsIssuedPfmCounter : PfmCounter<"uops_issued:any">;
Clement Courbetb4493792018-04-10 08:16:37 +000016
Clement Courbeteee2e062018-11-09 13:15:32 +000017// No default counters on X86.
18def DefaultPfmCounters : ProcPfmCounters {}
19def : PfmCountersDefaultBinding<DefaultPfmCounters>;
20
Clement Courbet41c8af32018-10-25 07:44:01 +000021def SandyBridgePfmCounters : ProcPfmCounters {
22 let CycleCounter = UnhaltedCoreCyclesPfmCounter;
23 let UopsCounter = UopsIssuedPfmCounter;
24 let IssueCounters = [
25 PfmIssueCounter<"SBPort0", "uops_dispatched_port:port_0">,
26 PfmIssueCounter<"SBPort1", "uops_dispatched_port:port_1">,
27 PfmIssueCounter<"SBPort23", "uops_dispatched_port:port_2 + uops_dispatched_port:port_3">,
28 PfmIssueCounter<"SBPort4", "uops_dispatched_port:port_4">,
29 PfmIssueCounter<"SBPort5", "uops_dispatched_port:port_5">
30 ];
Clement Courbetb4493792018-04-10 08:16:37 +000031}
Clement Courbet41c8af32018-10-25 07:44:01 +000032def : PfmCountersBinding<"sandybridge", SandyBridgePfmCounters>;
Clement Courbetb4493792018-04-10 08:16:37 +000033
Clement Courbet41c8af32018-10-25 07:44:01 +000034def HaswellPfmCounters : ProcPfmCounters {
35 let CycleCounter = UnhaltedCoreCyclesPfmCounter;
36 let UopsCounter = UopsIssuedPfmCounter;
37 let IssueCounters = [
38 PfmIssueCounter<"HWPort0", "uops_dispatched_port:port_0">,
39 PfmIssueCounter<"HWPort1", "uops_dispatched_port:port_1">,
40 PfmIssueCounter<"HWPort2", "uops_dispatched_port:port_2">,
41 PfmIssueCounter<"HWPort3", "uops_dispatched_port:port_3">,
42 PfmIssueCounter<"HWPort4", "uops_dispatched_port:port_4">,
43 PfmIssueCounter<"HWPort5", "uops_dispatched_port:port_5">,
44 PfmIssueCounter<"HWPort6", "uops_dispatched_port:port_6">,
45 PfmIssueCounter<"HWPort7", "uops_dispatched_port:port_7">
46 ];
Clement Courbetb4493792018-04-10 08:16:37 +000047}
Clement Courbet41c8af32018-10-25 07:44:01 +000048def : PfmCountersBinding<"haswell", HaswellPfmCounters>;
Clement Courbetb4493792018-04-10 08:16:37 +000049
Clement Courbet41c8af32018-10-25 07:44:01 +000050def BroadwellPfmCounters : ProcPfmCounters {
51 let CycleCounter = UnhaltedCoreCyclesPfmCounter;
52 let UopsCounter = UopsIssuedPfmCounter;
53 let IssueCounters = [
54 PfmIssueCounter<"BWPort0", "uops_executed_port:port_0">,
55 PfmIssueCounter<"BWPort1", "uops_executed_port:port_1">,
56 PfmIssueCounter<"BWPort2", "uops_executed_port:port_2">,
57 PfmIssueCounter<"BWPort3", "uops_executed_port:port_3">,
58 PfmIssueCounter<"BWPort4", "uops_executed_port:port_4">,
59 PfmIssueCounter<"BWPort5", "uops_executed_port:port_5">,
60 PfmIssueCounter<"BWPort6", "uops_executed_port:port_6">,
61 PfmIssueCounter<"BWPort7", "uops_executed_port:port_7">
62 ];
Clement Courbetb4493792018-04-10 08:16:37 +000063}
Clement Courbet41c8af32018-10-25 07:44:01 +000064def : PfmCountersBinding<"broadwell", BroadwellPfmCounters>;
Clement Courbetb4493792018-04-10 08:16:37 +000065
Clement Courbet41c8af32018-10-25 07:44:01 +000066def SkylakeClientPfmCounters : ProcPfmCounters {
67 let CycleCounter = UnhaltedCoreCyclesPfmCounter;
68 let UopsCounter = UopsIssuedPfmCounter;
69 let IssueCounters = [
70 PfmIssueCounter<"SKLPort0", "uops_dispatched_port:port_0">,
71 PfmIssueCounter<"SKLPort1", "uops_dispatched_port:port_1">,
72 PfmIssueCounter<"SKLPort2", "uops_dispatched_port:port_2">,
73 PfmIssueCounter<"SKLPort3", "uops_dispatched_port:port_3">,
74 PfmIssueCounter<"SKLPort4", "uops_dispatched_port:port_4">,
75 PfmIssueCounter<"SKLPort5", "uops_dispatched_port:port_5">,
76 PfmIssueCounter<"SKLPort6", "uops_dispatched_port:port_6">,
77 PfmIssueCounter<"SKLPort7", "uops_dispatched_port:port_7">
78 ];
Clement Courbetb4493792018-04-10 08:16:37 +000079}
Clement Courbet41c8af32018-10-25 07:44:01 +000080def : PfmCountersBinding<"skylake", SkylakeClientPfmCounters>;
Simon Pilgrima90c2112018-05-24 14:54:32 +000081
Clement Courbet41c8af32018-10-25 07:44:01 +000082def SkylakeServerPfmCounters : ProcPfmCounters {
83 let CycleCounter = UnhaltedCoreCyclesPfmCounter;
84 let UopsCounter = UopsIssuedPfmCounter;
85 let IssueCounters = [
86 PfmIssueCounter<"SKXPort0", "uops_dispatched_port:port_0">,
87 PfmIssueCounter<"SKXPort1", "uops_dispatched_port:port_1">,
88 PfmIssueCounter<"SKXPort2", "uops_dispatched_port:port_2">,
89 PfmIssueCounter<"SKXPort3", "uops_dispatched_port:port_3">,
90 PfmIssueCounter<"SKXPort4", "uops_dispatched_port:port_4">,
91 PfmIssueCounter<"SKXPort5", "uops_dispatched_port:port_5">,
92 PfmIssueCounter<"SKXPort6", "uops_dispatched_port:port_6">,
93 PfmIssueCounter<"SKXPort7", "uops_dispatched_port:port_7">
94 ];
Simon Pilgrima90c2112018-05-24 14:54:32 +000095}
Clement Courbet41c8af32018-10-25 07:44:01 +000096def : PfmCountersBinding<"skylake-avx512", SkylakeServerPfmCounters>;
97
Roman Lebedeva5baf862018-10-27 20:46:30 +000098def BdVer2PfmCounters : ProcPfmCounters {
99 let CycleCounter = PfmCounter<"cpu_clk_unhalted">;
100 let UopsCounter = PfmCounter<"retired_uops">;
101 let IssueCounters = [
102 PfmIssueCounter<"PdFPU0", "dispatched_fpu_ops:ops_pipe0 + dispatched_fpu_ops:ops_dual_pipe0">,
103 PfmIssueCounter<"PdFPU1", "dispatched_fpu_ops:ops_pipe1 + dispatched_fpu_ops:ops_dual_pipe1">,
104 PfmIssueCounter<"PdFPU2", "dispatched_fpu_ops:ops_pipe2 + dispatched_fpu_ops:ops_dual_pipe2">,
105 PfmIssueCounter<"PdFPU3", "dispatched_fpu_ops:ops_pipe3 + dispatched_fpu_ops:ops_dual_pipe3">
106 ];
107}
108def : PfmCountersBinding<"bdver2", BdVer2PfmCounters>;
109
Clement Courbet41c8af32018-10-25 07:44:01 +0000110def BtVer2PfmCounters : ProcPfmCounters {
111 let CycleCounter = PfmCounter<"cpu_clk_unhalted">;
112 let UopsCounter = PfmCounter<"retired_uops">;
113 let IssueCounters = [
114 PfmIssueCounter<"JFPU0", "dispatched_fpu:pipe0">,
115 PfmIssueCounter<"JFPU1", "dispatched_fpu:pipe1">
116 ];
117}
118def : PfmCountersBinding<"btver2", BtVer2PfmCounters>;