blob: 9e0f0c4f64a6e2f84b285c56fea0af90865fa453 [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 Courbet41c8af32018-10-25 07:44:01 +000017def SandyBridgePfmCounters : ProcPfmCounters {
18 let CycleCounter = UnhaltedCoreCyclesPfmCounter;
19 let UopsCounter = UopsIssuedPfmCounter;
20 let IssueCounters = [
21 PfmIssueCounter<"SBPort0", "uops_dispatched_port:port_0">,
22 PfmIssueCounter<"SBPort1", "uops_dispatched_port:port_1">,
23 PfmIssueCounter<"SBPort23", "uops_dispatched_port:port_2 + uops_dispatched_port:port_3">,
24 PfmIssueCounter<"SBPort4", "uops_dispatched_port:port_4">,
25 PfmIssueCounter<"SBPort5", "uops_dispatched_port:port_5">
26 ];
Clement Courbetb4493792018-04-10 08:16:37 +000027}
Clement Courbet41c8af32018-10-25 07:44:01 +000028def : PfmCountersBinding<"sandybridge", SandyBridgePfmCounters>;
Clement Courbetb4493792018-04-10 08:16:37 +000029
Clement Courbet41c8af32018-10-25 07:44:01 +000030def HaswellPfmCounters : ProcPfmCounters {
31 let CycleCounter = UnhaltedCoreCyclesPfmCounter;
32 let UopsCounter = UopsIssuedPfmCounter;
33 let IssueCounters = [
34 PfmIssueCounter<"HWPort0", "uops_dispatched_port:port_0">,
35 PfmIssueCounter<"HWPort1", "uops_dispatched_port:port_1">,
36 PfmIssueCounter<"HWPort2", "uops_dispatched_port:port_2">,
37 PfmIssueCounter<"HWPort3", "uops_dispatched_port:port_3">,
38 PfmIssueCounter<"HWPort4", "uops_dispatched_port:port_4">,
39 PfmIssueCounter<"HWPort5", "uops_dispatched_port:port_5">,
40 PfmIssueCounter<"HWPort6", "uops_dispatched_port:port_6">,
41 PfmIssueCounter<"HWPort7", "uops_dispatched_port:port_7">
42 ];
Clement Courbetb4493792018-04-10 08:16:37 +000043}
Clement Courbet41c8af32018-10-25 07:44:01 +000044def : PfmCountersBinding<"haswell", HaswellPfmCounters>;
Clement Courbetb4493792018-04-10 08:16:37 +000045
Clement Courbet41c8af32018-10-25 07:44:01 +000046def BroadwellPfmCounters : ProcPfmCounters {
47 let CycleCounter = UnhaltedCoreCyclesPfmCounter;
48 let UopsCounter = UopsIssuedPfmCounter;
49 let IssueCounters = [
50 PfmIssueCounter<"BWPort0", "uops_executed_port:port_0">,
51 PfmIssueCounter<"BWPort1", "uops_executed_port:port_1">,
52 PfmIssueCounter<"BWPort2", "uops_executed_port:port_2">,
53 PfmIssueCounter<"BWPort3", "uops_executed_port:port_3">,
54 PfmIssueCounter<"BWPort4", "uops_executed_port:port_4">,
55 PfmIssueCounter<"BWPort5", "uops_executed_port:port_5">,
56 PfmIssueCounter<"BWPort6", "uops_executed_port:port_6">,
57 PfmIssueCounter<"BWPort7", "uops_executed_port:port_7">
58 ];
Clement Courbetb4493792018-04-10 08:16:37 +000059}
Clement Courbet41c8af32018-10-25 07:44:01 +000060def : PfmCountersBinding<"broadwell", BroadwellPfmCounters>;
Clement Courbetb4493792018-04-10 08:16:37 +000061
Clement Courbet41c8af32018-10-25 07:44:01 +000062def SkylakeClientPfmCounters : ProcPfmCounters {
63 let CycleCounter = UnhaltedCoreCyclesPfmCounter;
64 let UopsCounter = UopsIssuedPfmCounter;
65 let IssueCounters = [
66 PfmIssueCounter<"SKLPort0", "uops_dispatched_port:port_0">,
67 PfmIssueCounter<"SKLPort1", "uops_dispatched_port:port_1">,
68 PfmIssueCounter<"SKLPort2", "uops_dispatched_port:port_2">,
69 PfmIssueCounter<"SKLPort3", "uops_dispatched_port:port_3">,
70 PfmIssueCounter<"SKLPort4", "uops_dispatched_port:port_4">,
71 PfmIssueCounter<"SKLPort5", "uops_dispatched_port:port_5">,
72 PfmIssueCounter<"SKLPort6", "uops_dispatched_port:port_6">,
73 PfmIssueCounter<"SKLPort7", "uops_dispatched_port:port_7">
74 ];
Clement Courbetb4493792018-04-10 08:16:37 +000075}
Clement Courbet41c8af32018-10-25 07:44:01 +000076def : PfmCountersBinding<"skylake", SkylakeClientPfmCounters>;
Simon Pilgrima90c2112018-05-24 14:54:32 +000077
Clement Courbet41c8af32018-10-25 07:44:01 +000078def SkylakeServerPfmCounters : ProcPfmCounters {
79 let CycleCounter = UnhaltedCoreCyclesPfmCounter;
80 let UopsCounter = UopsIssuedPfmCounter;
81 let IssueCounters = [
82 PfmIssueCounter<"SKXPort0", "uops_dispatched_port:port_0">,
83 PfmIssueCounter<"SKXPort1", "uops_dispatched_port:port_1">,
84 PfmIssueCounter<"SKXPort2", "uops_dispatched_port:port_2">,
85 PfmIssueCounter<"SKXPort3", "uops_dispatched_port:port_3">,
86 PfmIssueCounter<"SKXPort4", "uops_dispatched_port:port_4">,
87 PfmIssueCounter<"SKXPort5", "uops_dispatched_port:port_5">,
88 PfmIssueCounter<"SKXPort6", "uops_dispatched_port:port_6">,
89 PfmIssueCounter<"SKXPort7", "uops_dispatched_port:port_7">
90 ];
Simon Pilgrima90c2112018-05-24 14:54:32 +000091}
Clement Courbet41c8af32018-10-25 07:44:01 +000092def : PfmCountersBinding<"skylake-avx512", SkylakeServerPfmCounters>;
93
94def BtVer2PfmCounters : ProcPfmCounters {
95 let CycleCounter = PfmCounter<"cpu_clk_unhalted">;
96 let UopsCounter = PfmCounter<"retired_uops">;
97 let IssueCounters = [
98 PfmIssueCounter<"JFPU0", "dispatched_fpu:pipe0">,
99 PfmIssueCounter<"JFPU1", "dispatched_fpu:pipe1">
100 ];
101}
102def : PfmCountersBinding<"btver2", BtVer2PfmCounters>;