2018-04-10 16:16:37 +08:00
|
|
|
//===-- X86PfmCounters.td - X86 Hardware Counters ----------*- tablegen -*-===//
|
|
|
|
//
|
|
|
|
// The LLVM Compiler Infrastructure
|
|
|
|
//
|
|
|
|
// This file is distributed under the University of Illinois Open Source
|
|
|
|
// License. See LICENSE.TXT for details.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
//
|
|
|
|
// This describes the available hardware counters for various subtargets.
|
|
|
|
//
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
2018-10-25 15:44:01 +08:00
|
|
|
def UnhaltedCoreCyclesPfmCounter : PfmCounter<"unhalted_core_cycles">;
|
|
|
|
def UopsIssuedPfmCounter : PfmCounter<"uops_issued:any">;
|
|
|
|
|
2018-11-09 21:15:32 +08:00
|
|
|
// No default counters on X86.
|
|
|
|
def DefaultPfmCounters : ProcPfmCounters {}
|
|
|
|
def : PfmCountersDefaultBinding<DefaultPfmCounters>;
|
|
|
|
|
2018-12-08 01:48:40 +08:00
|
|
|
// Intel X86 Counters.
|
|
|
|
def PentiumPfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = PfmCounter<"cpu_clk_unhalted">;
|
|
|
|
let UopsCounter = PfmCounter<"uops_retired">;
|
|
|
|
}
|
|
|
|
def : PfmCountersBinding<"pentiumpro", PentiumPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"pentium2", PentiumPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"pentium3", PentiumPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"pentium3m", PentiumPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"pentium-m", PentiumPfmCounters>;
|
|
|
|
|
|
|
|
def CorePfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = UnhaltedCoreCyclesPfmCounter;
|
|
|
|
let UopsCounter = PfmCounter<"uops_retired:any">;
|
|
|
|
}
|
|
|
|
def : PfmCountersBinding<"yonah", CorePfmCounters>;
|
|
|
|
def : PfmCountersBinding<"prescott", CorePfmCounters>;
|
|
|
|
def : PfmCountersBinding<"core2", CorePfmCounters>;
|
|
|
|
def : PfmCountersBinding<"penryn", CorePfmCounters>;
|
|
|
|
def : PfmCountersBinding<"nehalem", CorePfmCounters>;
|
|
|
|
def : PfmCountersBinding<"corei7", CorePfmCounters>;
|
|
|
|
def : PfmCountersBinding<"westmere", CorePfmCounters>;
|
|
|
|
|
|
|
|
def AtomPfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = UnhaltedCoreCyclesPfmCounter;
|
|
|
|
let UopsCounter = PfmCounter<"uops_retired:any">;
|
|
|
|
}
|
|
|
|
def : PfmCountersBinding<"bonnell", AtomPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"atom", AtomPfmCounters>;
|
|
|
|
|
|
|
|
def SLMPfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = UnhaltedCoreCyclesPfmCounter;
|
|
|
|
let UopsCounter = PfmCounter<"uops_retired:any">;
|
|
|
|
}
|
|
|
|
def : PfmCountersBinding<"silvermont", SLMPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"goldmont", SLMPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"goldmont-plus", SLMPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"tremont", SLMPfmCounters>;
|
2018-12-09 21:45:15 +08:00
|
|
|
|
|
|
|
def KnightPfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = UnhaltedCoreCyclesPfmCounter;
|
|
|
|
let UopsCounter = PfmCounter<"uops_retired:all">;
|
|
|
|
}
|
|
|
|
def : PfmCountersBinding<"knl", KnightPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"knm", KnightPfmCounters>;
|
2018-12-08 01:48:40 +08:00
|
|
|
|
2018-10-25 15:44:01 +08:00
|
|
|
def SandyBridgePfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = UnhaltedCoreCyclesPfmCounter;
|
|
|
|
let UopsCounter = UopsIssuedPfmCounter;
|
|
|
|
let IssueCounters = [
|
|
|
|
PfmIssueCounter<"SBPort0", "uops_dispatched_port:port_0">,
|
|
|
|
PfmIssueCounter<"SBPort1", "uops_dispatched_port:port_1">,
|
|
|
|
PfmIssueCounter<"SBPort23", "uops_dispatched_port:port_2 + uops_dispatched_port:port_3">,
|
|
|
|
PfmIssueCounter<"SBPort4", "uops_dispatched_port:port_4">,
|
|
|
|
PfmIssueCounter<"SBPort5", "uops_dispatched_port:port_5">
|
|
|
|
];
|
2018-04-10 16:16:37 +08:00
|
|
|
}
|
2018-10-25 15:44:01 +08:00
|
|
|
def : PfmCountersBinding<"sandybridge", SandyBridgePfmCounters>;
|
2018-12-07 17:27:35 +08:00
|
|
|
def : PfmCountersBinding<"ivybridge", SandyBridgePfmCounters>;
|
2018-04-10 16:16:37 +08:00
|
|
|
|
2018-10-25 15:44:01 +08:00
|
|
|
def HaswellPfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = UnhaltedCoreCyclesPfmCounter;
|
|
|
|
let UopsCounter = UopsIssuedPfmCounter;
|
|
|
|
let IssueCounters = [
|
|
|
|
PfmIssueCounter<"HWPort0", "uops_dispatched_port:port_0">,
|
|
|
|
PfmIssueCounter<"HWPort1", "uops_dispatched_port:port_1">,
|
|
|
|
PfmIssueCounter<"HWPort2", "uops_dispatched_port:port_2">,
|
|
|
|
PfmIssueCounter<"HWPort3", "uops_dispatched_port:port_3">,
|
|
|
|
PfmIssueCounter<"HWPort4", "uops_dispatched_port:port_4">,
|
|
|
|
PfmIssueCounter<"HWPort5", "uops_dispatched_port:port_5">,
|
|
|
|
PfmIssueCounter<"HWPort6", "uops_dispatched_port:port_6">,
|
|
|
|
PfmIssueCounter<"HWPort7", "uops_dispatched_port:port_7">
|
|
|
|
];
|
2018-04-10 16:16:37 +08:00
|
|
|
}
|
2018-10-25 15:44:01 +08:00
|
|
|
def : PfmCountersBinding<"haswell", HaswellPfmCounters>;
|
2018-04-10 16:16:37 +08:00
|
|
|
|
2018-10-25 15:44:01 +08:00
|
|
|
def BroadwellPfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = UnhaltedCoreCyclesPfmCounter;
|
|
|
|
let UopsCounter = UopsIssuedPfmCounter;
|
|
|
|
let IssueCounters = [
|
|
|
|
PfmIssueCounter<"BWPort0", "uops_executed_port:port_0">,
|
|
|
|
PfmIssueCounter<"BWPort1", "uops_executed_port:port_1">,
|
|
|
|
PfmIssueCounter<"BWPort2", "uops_executed_port:port_2">,
|
|
|
|
PfmIssueCounter<"BWPort3", "uops_executed_port:port_3">,
|
|
|
|
PfmIssueCounter<"BWPort4", "uops_executed_port:port_4">,
|
|
|
|
PfmIssueCounter<"BWPort5", "uops_executed_port:port_5">,
|
|
|
|
PfmIssueCounter<"BWPort6", "uops_executed_port:port_6">,
|
|
|
|
PfmIssueCounter<"BWPort7", "uops_executed_port:port_7">
|
|
|
|
];
|
2018-04-10 16:16:37 +08:00
|
|
|
}
|
2018-10-25 15:44:01 +08:00
|
|
|
def : PfmCountersBinding<"broadwell", BroadwellPfmCounters>;
|
2018-04-10 16:16:37 +08:00
|
|
|
|
2018-10-25 15:44:01 +08:00
|
|
|
def SkylakeClientPfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = UnhaltedCoreCyclesPfmCounter;
|
|
|
|
let UopsCounter = UopsIssuedPfmCounter;
|
|
|
|
let IssueCounters = [
|
|
|
|
PfmIssueCounter<"SKLPort0", "uops_dispatched_port:port_0">,
|
|
|
|
PfmIssueCounter<"SKLPort1", "uops_dispatched_port:port_1">,
|
|
|
|
PfmIssueCounter<"SKLPort2", "uops_dispatched_port:port_2">,
|
|
|
|
PfmIssueCounter<"SKLPort3", "uops_dispatched_port:port_3">,
|
|
|
|
PfmIssueCounter<"SKLPort4", "uops_dispatched_port:port_4">,
|
|
|
|
PfmIssueCounter<"SKLPort5", "uops_dispatched_port:port_5">,
|
|
|
|
PfmIssueCounter<"SKLPort6", "uops_dispatched_port:port_6">,
|
|
|
|
PfmIssueCounter<"SKLPort7", "uops_dispatched_port:port_7">
|
|
|
|
];
|
2018-04-10 16:16:37 +08:00
|
|
|
}
|
2018-10-25 15:44:01 +08:00
|
|
|
def : PfmCountersBinding<"skylake", SkylakeClientPfmCounters>;
|
2018-04-10 16:16:37 +08:00
|
|
|
|
2018-10-25 15:44:01 +08:00
|
|
|
def SkylakeServerPfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = UnhaltedCoreCyclesPfmCounter;
|
|
|
|
let UopsCounter = UopsIssuedPfmCounter;
|
|
|
|
let IssueCounters = [
|
|
|
|
PfmIssueCounter<"SKXPort0", "uops_dispatched_port:port_0">,
|
|
|
|
PfmIssueCounter<"SKXPort1", "uops_dispatched_port:port_1">,
|
|
|
|
PfmIssueCounter<"SKXPort2", "uops_dispatched_port:port_2">,
|
|
|
|
PfmIssueCounter<"SKXPort3", "uops_dispatched_port:port_3">,
|
|
|
|
PfmIssueCounter<"SKXPort4", "uops_dispatched_port:port_4">,
|
|
|
|
PfmIssueCounter<"SKXPort5", "uops_dispatched_port:port_5">,
|
|
|
|
PfmIssueCounter<"SKXPort6", "uops_dispatched_port:port_6">,
|
|
|
|
PfmIssueCounter<"SKXPort7", "uops_dispatched_port:port_7">
|
|
|
|
];
|
2018-04-10 16:16:37 +08:00
|
|
|
}
|
2018-10-25 15:44:01 +08:00
|
|
|
def : PfmCountersBinding<"skylake-avx512", SkylakeServerPfmCounters>;
|
2018-12-08 01:48:40 +08:00
|
|
|
def : PfmCountersBinding<"cascadelake", SkylakeServerPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"cannonlake", SkylakeServerPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"icelake-client", SkylakeServerPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"icelake-server", SkylakeServerPfmCounters>;
|
|
|
|
|
|
|
|
// AMD X86 Counters.
|
|
|
|
// Set basic counters for AMD cpus that we know libpfm4 supports.
|
|
|
|
def DefaultAMDPfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = PfmCounter<"cpu_clk_unhalted">;
|
|
|
|
let UopsCounter = PfmCounter<"retired_uops">;
|
|
|
|
}
|
|
|
|
def : PfmCountersBinding<"athlon", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"athlon-tbird", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"athlon-4", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"athlon-xp", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"athlon-mp", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"k8", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"opteron", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"athlon64", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"athlon-fx", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"k8-sse3", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"opteron-sse3", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"athlon64-sse3", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"amdfam10", DefaultAMDPfmCounters>;
|
|
|
|
def : PfmCountersBinding<"barcelona", DefaultAMDPfmCounters>;
|
2018-05-24 22:54:32 +08:00
|
|
|
|
AMD BdVer2 (Piledriver) Initial Scheduler model
Summary:
# Overview
This is somewhat partial.
* Latencies are good {F7371125}
* All of these remaining inconsistencies //appear// to be noise/noisy/flaky.
* NumMicroOps are somewhat good {F7371158}
* Most of the remaining inconsistencies are from `Ld` / `Ld_ReadAfterLd` classes
* Actual unit occupation (pipes, `ResourceCycles`) are undiscovered lands, i did not really look there.
They are basically verbatum copy from `btver2`
* Many `InstRW`. And there are still inconsistencies left...
To be noted:
I think this is the first new schedule profile produced with the new next-gen tools like llvm-exegesis!
# Benchmark
I realize that isn't what was suggested, but i'll start with some "internal" public real-world benchmark i understand - [[ https://github.com/darktable-org/rawspeed | RawSpeed raw image decoding library ]].
Diff (the exact clang from trunk without/with this patch):
```
Comparing /home/lebedevri/rawspeed/build-old/src/utilities/rsbench/rsbench to /home/lebedevri/rawspeed/build-new/src/utilities/rsbench/rsbench
Benchmark Time CPU Time Old Time New CPU Old CPU New
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Canon/EOS 5D Mark II/09.canon.sraw1.cr2/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Canon/EOS 5D Mark II/09.canon.sraw1.cr2/threads:8/real_time_mean -0.0607 -0.0604 234 219 233 219
Canon/EOS 5D Mark II/09.canon.sraw1.cr2/threads:8/real_time_median -0.0630 -0.0626 233 219 233 219
Canon/EOS 5D Mark II/09.canon.sraw1.cr2/threads:8/real_time_stddev +0.2581 +0.2587 1 2 1 2
Canon/EOS 5D Mark II/10.canon.sraw2.cr2/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Canon/EOS 5D Mark II/10.canon.sraw2.cr2/threads:8/real_time_mean -0.0770 -0.0767 144 133 144 133
Canon/EOS 5D Mark II/10.canon.sraw2.cr2/threads:8/real_time_median -0.0767 -0.0763 144 133 144 133
Canon/EOS 5D Mark II/10.canon.sraw2.cr2/threads:8/real_time_stddev -0.4170 -0.4156 1 0 1 0
Canon/EOS 5DS/2K4A9927.CR2/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Canon/EOS 5DS/2K4A9927.CR2/threads:8/real_time_mean -0.0271 -0.0270 463 450 463 450
Canon/EOS 5DS/2K4A9927.CR2/threads:8/real_time_median -0.0093 -0.0093 453 449 453 449
Canon/EOS 5DS/2K4A9927.CR2/threads:8/real_time_stddev -0.7280 -0.7280 13 4 13 4
Canon/EOS 5DS/2K4A9928.CR2/threads:8/real_time_pvalue 0.0004 0.0004 U Test, Repetitions: 25 vs 25
Canon/EOS 5DS/2K4A9928.CR2/threads:8/real_time_mean -0.0065 -0.0065 569 565 569 565
Canon/EOS 5DS/2K4A9928.CR2/threads:8/real_time_median -0.0077 -0.0077 569 564 569 564
Canon/EOS 5DS/2K4A9928.CR2/threads:8/real_time_stddev +1.0077 +1.0068 2 5 2 5
Canon/EOS 5DS/2K4A9929.CR2/threads:8/real_time_pvalue 0.0220 0.0199 U Test, Repetitions: 25 vs 25
Canon/EOS 5DS/2K4A9929.CR2/threads:8/real_time_mean +0.0006 +0.0007 312 312 312 312
Canon/EOS 5DS/2K4A9929.CR2/threads:8/real_time_median +0.0031 +0.0032 311 312 311 312
Canon/EOS 5DS/2K4A9929.CR2/threads:8/real_time_stddev -0.7069 -0.7072 4 1 4 1
Canon/EOS 10D/CRW_7673.CRW/threads:8/real_time_pvalue 0.0004 0.0004 U Test, Repetitions: 25 vs 25
Canon/EOS 10D/CRW_7673.CRW/threads:8/real_time_mean -0.0015 -0.0015 141 141 141 141
Canon/EOS 10D/CRW_7673.CRW/threads:8/real_time_median -0.0010 -0.0011 141 141 141 141
Canon/EOS 10D/CRW_7673.CRW/threads:8/real_time_stddev -0.1486 -0.1456 0 0 0 0
Canon/EOS 40D/_MG_0154.CR2/threads:8/real_time_pvalue 0.6139 0.8766 U Test, Repetitions: 25 vs 25
Canon/EOS 40D/_MG_0154.CR2/threads:8/real_time_mean -0.0008 -0.0005 60 60 60 60
Canon/EOS 40D/_MG_0154.CR2/threads:8/real_time_median -0.0006 -0.0002 60 60 60 60
Canon/EOS 40D/_MG_0154.CR2/threads:8/real_time_stddev -0.1467 -0.1390 0 0 0 0
Canon/EOS 77D/IMG_4049.CR2/threads:8/real_time_pvalue 0.0137 0.0137 U Test, Repetitions: 25 vs 25
Canon/EOS 77D/IMG_4049.CR2/threads:8/real_time_mean +0.0002 +0.0002 275 275 275 275
Canon/EOS 77D/IMG_4049.CR2/threads:8/real_time_median -0.0015 -0.0014 275 275 275 275
Canon/EOS 77D/IMG_4049.CR2/threads:8/real_time_stddev +3.3687 +3.3587 0 2 0 2
Canon/PowerShot G1/crw_1693.crw/threads:8/real_time_pvalue 0.4041 0.3933 U Test, Repetitions: 25 vs 25
Canon/PowerShot G1/crw_1693.crw/threads:8/real_time_mean +0.0004 +0.0004 67 67 67 67
Canon/PowerShot G1/crw_1693.crw/threads:8/real_time_median -0.0000 -0.0000 67 67 67 67
Canon/PowerShot G1/crw_1693.crw/threads:8/real_time_stddev +0.1947 +0.1995 0 0 0 0
Fujifilm/GFX 50S/20170525_0037TEST.RAF/threads:8/real_time_pvalue 0.0074 0.0001 U Test, Repetitions: 25 vs 25
Fujifilm/GFX 50S/20170525_0037TEST.RAF/threads:8/real_time_mean -0.0092 +0.0074 547 542 25 25
Fujifilm/GFX 50S/20170525_0037TEST.RAF/threads:8/real_time_median -0.0054 +0.0115 544 541 25 25
Fujifilm/GFX 50S/20170525_0037TEST.RAF/threads:8/real_time_stddev -0.4086 -0.3486 8 5 0 0
Fujifilm/X-Pro2/_DSF3051.RAF/threads:8/real_time_pvalue 0.3320 0.0000 U Test, Repetitions: 25 vs 25
Fujifilm/X-Pro2/_DSF3051.RAF/threads:8/real_time_mean +0.0015 +0.0204 218 218 12 12
Fujifilm/X-Pro2/_DSF3051.RAF/threads:8/real_time_median +0.0001 +0.0203 218 218 12 12
Fujifilm/X-Pro2/_DSF3051.RAF/threads:8/real_time_stddev +0.2259 +0.2023 1 1 0 0
GoPro/HERO6 Black/GOPR9172.GPR/threads:8/real_time_pvalue 0.0000 0.0001 U Test, Repetitions: 25 vs 25
GoPro/HERO6 Black/GOPR9172.GPR/threads:8/real_time_mean -0.0209 -0.0179 96 94 90 88
GoPro/HERO6 Black/GOPR9172.GPR/threads:8/real_time_median -0.0182 -0.0155 95 93 90 88
GoPro/HERO6 Black/GOPR9172.GPR/threads:8/real_time_stddev -0.6164 -0.2703 2 1 2 1
Kodak/DCS Pro 14nx/D7465857.DCR/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Kodak/DCS Pro 14nx/D7465857.DCR/threads:8/real_time_mean -0.0098 -0.0098 176 175 176 175
Kodak/DCS Pro 14nx/D7465857.DCR/threads:8/real_time_median -0.0126 -0.0126 176 174 176 174
Kodak/DCS Pro 14nx/D7465857.DCR/threads:8/real_time_stddev +6.9789 +6.9157 0 2 0 2
Nikon/D850/Nikon-D850-14bit-lossless-compressed.NEF/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Nikon/D850/Nikon-D850-14bit-lossless-compressed.NEF/threads:8/real_time_mean -0.0237 -0.0238 474 463 474 463
Nikon/D850/Nikon-D850-14bit-lossless-compressed.NEF/threads:8/real_time_median -0.0267 -0.0267 473 461 473 461
Nikon/D850/Nikon-D850-14bit-lossless-compressed.NEF/threads:8/real_time_stddev +0.7179 +0.7178 3 5 3 5
Olympus/E-M1MarkII/Olympus_EM1mk2__HIRES_50MP.ORF/threads:8/real_time_pvalue 0.6837 0.6554 U Test, Repetitions: 25 vs 25
Olympus/E-M1MarkII/Olympus_EM1mk2__HIRES_50MP.ORF/threads:8/real_time_mean -0.0014 -0.0013 1375 1373 1375 1373
Olympus/E-M1MarkII/Olympus_EM1mk2__HIRES_50MP.ORF/threads:8/real_time_median +0.0018 +0.0019 1371 1374 1371 1374
Olympus/E-M1MarkII/Olympus_EM1mk2__HIRES_50MP.ORF/threads:8/real_time_stddev -0.7457 -0.7382 11 3 10 3
Panasonic/DC-G9/P1000476.RW2/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Panasonic/DC-G9/P1000476.RW2/threads:8/real_time_mean -0.0080 -0.0289 22 22 10 10
Panasonic/DC-G9/P1000476.RW2/threads:8/real_time_median -0.0070 -0.0287 22 22 10 10
Panasonic/DC-G9/P1000476.RW2/threads:8/real_time_stddev +1.0977 +0.6614 0 0 0 0
Panasonic/DC-GH5/_T012014.RW2/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Panasonic/DC-GH5/_T012014.RW2/threads:8/real_time_mean +0.0132 +0.0967 35 36 10 11
Panasonic/DC-GH5/_T012014.RW2/threads:8/real_time_median +0.0132 +0.0956 35 36 10 11
Panasonic/DC-GH5/_T012014.RW2/threads:8/real_time_stddev -0.0407 -0.1695 0 0 0 0
Panasonic/DC-GH5S/P1022085.RW2/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Panasonic/DC-GH5S/P1022085.RW2/threads:8/real_time_mean +0.0331 +0.1307 13 13 6 6
Panasonic/DC-GH5S/P1022085.RW2/threads:8/real_time_median +0.0430 +0.1373 12 13 6 6
Panasonic/DC-GH5S/P1022085.RW2/threads:8/real_time_stddev -0.9006 -0.8847 1 0 0 0
Pentax/645Z/IMGP2837.PEF/threads:8/real_time_pvalue 0.0016 0.0010 U Test, Repetitions: 25 vs 25
Pentax/645Z/IMGP2837.PEF/threads:8/real_time_mean -0.0023 -0.0024 395 394 395 394
Pentax/645Z/IMGP2837.PEF/threads:8/real_time_median -0.0029 -0.0030 395 394 395 393
Pentax/645Z/IMGP2837.PEF/threads:8/real_time_stddev -0.0275 -0.0375 1 1 1 1
Phase One/P65/CF027310.IIQ/threads:8/real_time_pvalue 0.0232 0.0000 U Test, Repetitions: 25 vs 25
Phase One/P65/CF027310.IIQ/threads:8/real_time_mean -0.0047 +0.0039 114 113 28 28
Phase One/P65/CF027310.IIQ/threads:8/real_time_median -0.0050 +0.0037 114 113 28 28
Phase One/P65/CF027310.IIQ/threads:8/real_time_stddev -0.0599 -0.2683 1 1 0 0
Samsung/NX1/2016-07-23-142101_sam_9364.srw/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Samsung/NX1/2016-07-23-142101_sam_9364.srw/threads:8/real_time_mean +0.0206 +0.0207 405 414 405 414
Samsung/NX1/2016-07-23-142101_sam_9364.srw/threads:8/real_time_median +0.0204 +0.0205 405 414 405 414
Samsung/NX1/2016-07-23-142101_sam_9364.srw/threads:8/real_time_stddev +0.2155 +0.2212 1 1 1 1
Samsung/NX30/2015-03-07-163604_sam_7204.srw/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Samsung/NX30/2015-03-07-163604_sam_7204.srw/threads:8/real_time_mean -0.0109 -0.0108 147 145 147 145
Samsung/NX30/2015-03-07-163604_sam_7204.srw/threads:8/real_time_median -0.0104 -0.0103 147 145 147 145
Samsung/NX30/2015-03-07-163604_sam_7204.srw/threads:8/real_time_stddev -0.4919 -0.4800 0 0 0 0
Samsung/NX3000/_3184416.SRW/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Samsung/NX3000/_3184416.SRW/threads:8/real_time_mean -0.0149 -0.0147 220 217 220 217
Samsung/NX3000/_3184416.SRW/threads:8/real_time_median -0.0173 -0.0169 221 217 220 217
Samsung/NX3000/_3184416.SRW/threads:8/real_time_stddev +1.0337 +1.0341 1 3 1 3
Sony/DSLR-A350/DSC05472.ARW/threads:8/real_time_pvalue 0.0001 0.0001 U Test, Repetitions: 25 vs 25
Sony/DSLR-A350/DSC05472.ARW/threads:8/real_time_mean -0.0019 -0.0019 194 193 194 193
Sony/DSLR-A350/DSC05472.ARW/threads:8/real_time_median -0.0021 -0.0021 194 193 194 193
Sony/DSLR-A350/DSC05472.ARW/threads:8/real_time_stddev -0.4441 -0.4282 0 0 0 0
Sony/ILCE-7RM2/14-bit-compressed.ARW/threads:8/real_time_pvalue 0.0000 0.4263 U Test, Repetitions: 25 vs 25
Sony/ILCE-7RM2/14-bit-compressed.ARW/threads:8/real_time_mean +0.0258 -0.0006 81 83 19 19
Sony/ILCE-7RM2/14-bit-compressed.ARW/threads:8/real_time_median +0.0235 -0.0011 81 82 19 19
Sony/ILCE-7RM2/14-bit-compressed.ARW/threads:8/real_time_stddev +0.1634 +0.1070 1 1 0 0
```
{F7443905}
If we look at the `_mean`s, the time column, the biggest win is `-7.7%` (`Canon/EOS 5D Mark II/10.canon.sraw2.cr2`),
and the biggest loose is `+3.3%` (`Panasonic/DC-GH5S/P1022085.RW2`);
Overall: mean `-0.7436%`, median `-0.23%`, `cbrt(sum(time^3))` = `-8.73%`
Looks good so far i'd say.
llvm-exegesis details:
{F7371117} {F7371125}
{F7371128} {F7371144} {F7371158}
Reviewers: craig.topper, RKSimon, andreadb, courbet, avt77, spatel, GGanesh
Reviewed By: andreadb
Subscribers: javed.absar, gbedwell, jfb, llvm-commits
Differential Revision: https://reviews.llvm.org/D52779
llvm-svn: 345463
2018-10-28 04:46:30 +08:00
|
|
|
def BdVer2PfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = PfmCounter<"cpu_clk_unhalted">;
|
|
|
|
let UopsCounter = PfmCounter<"retired_uops">;
|
|
|
|
let IssueCounters = [
|
|
|
|
PfmIssueCounter<"PdFPU0", "dispatched_fpu_ops:ops_pipe0 + dispatched_fpu_ops:ops_dual_pipe0">,
|
|
|
|
PfmIssueCounter<"PdFPU1", "dispatched_fpu_ops:ops_pipe1 + dispatched_fpu_ops:ops_dual_pipe1">,
|
|
|
|
PfmIssueCounter<"PdFPU2", "dispatched_fpu_ops:ops_pipe2 + dispatched_fpu_ops:ops_dual_pipe2">,
|
|
|
|
PfmIssueCounter<"PdFPU3", "dispatched_fpu_ops:ops_pipe3 + dispatched_fpu_ops:ops_dual_pipe3">
|
|
|
|
];
|
|
|
|
}
|
2018-12-08 01:48:40 +08:00
|
|
|
def : PfmCountersBinding<"bdver1", BdVer2PfmCounters>;
|
AMD BdVer2 (Piledriver) Initial Scheduler model
Summary:
# Overview
This is somewhat partial.
* Latencies are good {F7371125}
* All of these remaining inconsistencies //appear// to be noise/noisy/flaky.
* NumMicroOps are somewhat good {F7371158}
* Most of the remaining inconsistencies are from `Ld` / `Ld_ReadAfterLd` classes
* Actual unit occupation (pipes, `ResourceCycles`) are undiscovered lands, i did not really look there.
They are basically verbatum copy from `btver2`
* Many `InstRW`. And there are still inconsistencies left...
To be noted:
I think this is the first new schedule profile produced with the new next-gen tools like llvm-exegesis!
# Benchmark
I realize that isn't what was suggested, but i'll start with some "internal" public real-world benchmark i understand - [[ https://github.com/darktable-org/rawspeed | RawSpeed raw image decoding library ]].
Diff (the exact clang from trunk without/with this patch):
```
Comparing /home/lebedevri/rawspeed/build-old/src/utilities/rsbench/rsbench to /home/lebedevri/rawspeed/build-new/src/utilities/rsbench/rsbench
Benchmark Time CPU Time Old Time New CPU Old CPU New
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Canon/EOS 5D Mark II/09.canon.sraw1.cr2/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Canon/EOS 5D Mark II/09.canon.sraw1.cr2/threads:8/real_time_mean -0.0607 -0.0604 234 219 233 219
Canon/EOS 5D Mark II/09.canon.sraw1.cr2/threads:8/real_time_median -0.0630 -0.0626 233 219 233 219
Canon/EOS 5D Mark II/09.canon.sraw1.cr2/threads:8/real_time_stddev +0.2581 +0.2587 1 2 1 2
Canon/EOS 5D Mark II/10.canon.sraw2.cr2/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Canon/EOS 5D Mark II/10.canon.sraw2.cr2/threads:8/real_time_mean -0.0770 -0.0767 144 133 144 133
Canon/EOS 5D Mark II/10.canon.sraw2.cr2/threads:8/real_time_median -0.0767 -0.0763 144 133 144 133
Canon/EOS 5D Mark II/10.canon.sraw2.cr2/threads:8/real_time_stddev -0.4170 -0.4156 1 0 1 0
Canon/EOS 5DS/2K4A9927.CR2/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Canon/EOS 5DS/2K4A9927.CR2/threads:8/real_time_mean -0.0271 -0.0270 463 450 463 450
Canon/EOS 5DS/2K4A9927.CR2/threads:8/real_time_median -0.0093 -0.0093 453 449 453 449
Canon/EOS 5DS/2K4A9927.CR2/threads:8/real_time_stddev -0.7280 -0.7280 13 4 13 4
Canon/EOS 5DS/2K4A9928.CR2/threads:8/real_time_pvalue 0.0004 0.0004 U Test, Repetitions: 25 vs 25
Canon/EOS 5DS/2K4A9928.CR2/threads:8/real_time_mean -0.0065 -0.0065 569 565 569 565
Canon/EOS 5DS/2K4A9928.CR2/threads:8/real_time_median -0.0077 -0.0077 569 564 569 564
Canon/EOS 5DS/2K4A9928.CR2/threads:8/real_time_stddev +1.0077 +1.0068 2 5 2 5
Canon/EOS 5DS/2K4A9929.CR2/threads:8/real_time_pvalue 0.0220 0.0199 U Test, Repetitions: 25 vs 25
Canon/EOS 5DS/2K4A9929.CR2/threads:8/real_time_mean +0.0006 +0.0007 312 312 312 312
Canon/EOS 5DS/2K4A9929.CR2/threads:8/real_time_median +0.0031 +0.0032 311 312 311 312
Canon/EOS 5DS/2K4A9929.CR2/threads:8/real_time_stddev -0.7069 -0.7072 4 1 4 1
Canon/EOS 10D/CRW_7673.CRW/threads:8/real_time_pvalue 0.0004 0.0004 U Test, Repetitions: 25 vs 25
Canon/EOS 10D/CRW_7673.CRW/threads:8/real_time_mean -0.0015 -0.0015 141 141 141 141
Canon/EOS 10D/CRW_7673.CRW/threads:8/real_time_median -0.0010 -0.0011 141 141 141 141
Canon/EOS 10D/CRW_7673.CRW/threads:8/real_time_stddev -0.1486 -0.1456 0 0 0 0
Canon/EOS 40D/_MG_0154.CR2/threads:8/real_time_pvalue 0.6139 0.8766 U Test, Repetitions: 25 vs 25
Canon/EOS 40D/_MG_0154.CR2/threads:8/real_time_mean -0.0008 -0.0005 60 60 60 60
Canon/EOS 40D/_MG_0154.CR2/threads:8/real_time_median -0.0006 -0.0002 60 60 60 60
Canon/EOS 40D/_MG_0154.CR2/threads:8/real_time_stddev -0.1467 -0.1390 0 0 0 0
Canon/EOS 77D/IMG_4049.CR2/threads:8/real_time_pvalue 0.0137 0.0137 U Test, Repetitions: 25 vs 25
Canon/EOS 77D/IMG_4049.CR2/threads:8/real_time_mean +0.0002 +0.0002 275 275 275 275
Canon/EOS 77D/IMG_4049.CR2/threads:8/real_time_median -0.0015 -0.0014 275 275 275 275
Canon/EOS 77D/IMG_4049.CR2/threads:8/real_time_stddev +3.3687 +3.3587 0 2 0 2
Canon/PowerShot G1/crw_1693.crw/threads:8/real_time_pvalue 0.4041 0.3933 U Test, Repetitions: 25 vs 25
Canon/PowerShot G1/crw_1693.crw/threads:8/real_time_mean +0.0004 +0.0004 67 67 67 67
Canon/PowerShot G1/crw_1693.crw/threads:8/real_time_median -0.0000 -0.0000 67 67 67 67
Canon/PowerShot G1/crw_1693.crw/threads:8/real_time_stddev +0.1947 +0.1995 0 0 0 0
Fujifilm/GFX 50S/20170525_0037TEST.RAF/threads:8/real_time_pvalue 0.0074 0.0001 U Test, Repetitions: 25 vs 25
Fujifilm/GFX 50S/20170525_0037TEST.RAF/threads:8/real_time_mean -0.0092 +0.0074 547 542 25 25
Fujifilm/GFX 50S/20170525_0037TEST.RAF/threads:8/real_time_median -0.0054 +0.0115 544 541 25 25
Fujifilm/GFX 50S/20170525_0037TEST.RAF/threads:8/real_time_stddev -0.4086 -0.3486 8 5 0 0
Fujifilm/X-Pro2/_DSF3051.RAF/threads:8/real_time_pvalue 0.3320 0.0000 U Test, Repetitions: 25 vs 25
Fujifilm/X-Pro2/_DSF3051.RAF/threads:8/real_time_mean +0.0015 +0.0204 218 218 12 12
Fujifilm/X-Pro2/_DSF3051.RAF/threads:8/real_time_median +0.0001 +0.0203 218 218 12 12
Fujifilm/X-Pro2/_DSF3051.RAF/threads:8/real_time_stddev +0.2259 +0.2023 1 1 0 0
GoPro/HERO6 Black/GOPR9172.GPR/threads:8/real_time_pvalue 0.0000 0.0001 U Test, Repetitions: 25 vs 25
GoPro/HERO6 Black/GOPR9172.GPR/threads:8/real_time_mean -0.0209 -0.0179 96 94 90 88
GoPro/HERO6 Black/GOPR9172.GPR/threads:8/real_time_median -0.0182 -0.0155 95 93 90 88
GoPro/HERO6 Black/GOPR9172.GPR/threads:8/real_time_stddev -0.6164 -0.2703 2 1 2 1
Kodak/DCS Pro 14nx/D7465857.DCR/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Kodak/DCS Pro 14nx/D7465857.DCR/threads:8/real_time_mean -0.0098 -0.0098 176 175 176 175
Kodak/DCS Pro 14nx/D7465857.DCR/threads:8/real_time_median -0.0126 -0.0126 176 174 176 174
Kodak/DCS Pro 14nx/D7465857.DCR/threads:8/real_time_stddev +6.9789 +6.9157 0 2 0 2
Nikon/D850/Nikon-D850-14bit-lossless-compressed.NEF/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Nikon/D850/Nikon-D850-14bit-lossless-compressed.NEF/threads:8/real_time_mean -0.0237 -0.0238 474 463 474 463
Nikon/D850/Nikon-D850-14bit-lossless-compressed.NEF/threads:8/real_time_median -0.0267 -0.0267 473 461 473 461
Nikon/D850/Nikon-D850-14bit-lossless-compressed.NEF/threads:8/real_time_stddev +0.7179 +0.7178 3 5 3 5
Olympus/E-M1MarkII/Olympus_EM1mk2__HIRES_50MP.ORF/threads:8/real_time_pvalue 0.6837 0.6554 U Test, Repetitions: 25 vs 25
Olympus/E-M1MarkII/Olympus_EM1mk2__HIRES_50MP.ORF/threads:8/real_time_mean -0.0014 -0.0013 1375 1373 1375 1373
Olympus/E-M1MarkII/Olympus_EM1mk2__HIRES_50MP.ORF/threads:8/real_time_median +0.0018 +0.0019 1371 1374 1371 1374
Olympus/E-M1MarkII/Olympus_EM1mk2__HIRES_50MP.ORF/threads:8/real_time_stddev -0.7457 -0.7382 11 3 10 3
Panasonic/DC-G9/P1000476.RW2/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Panasonic/DC-G9/P1000476.RW2/threads:8/real_time_mean -0.0080 -0.0289 22 22 10 10
Panasonic/DC-G9/P1000476.RW2/threads:8/real_time_median -0.0070 -0.0287 22 22 10 10
Panasonic/DC-G9/P1000476.RW2/threads:8/real_time_stddev +1.0977 +0.6614 0 0 0 0
Panasonic/DC-GH5/_T012014.RW2/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Panasonic/DC-GH5/_T012014.RW2/threads:8/real_time_mean +0.0132 +0.0967 35 36 10 11
Panasonic/DC-GH5/_T012014.RW2/threads:8/real_time_median +0.0132 +0.0956 35 36 10 11
Panasonic/DC-GH5/_T012014.RW2/threads:8/real_time_stddev -0.0407 -0.1695 0 0 0 0
Panasonic/DC-GH5S/P1022085.RW2/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Panasonic/DC-GH5S/P1022085.RW2/threads:8/real_time_mean +0.0331 +0.1307 13 13 6 6
Panasonic/DC-GH5S/P1022085.RW2/threads:8/real_time_median +0.0430 +0.1373 12 13 6 6
Panasonic/DC-GH5S/P1022085.RW2/threads:8/real_time_stddev -0.9006 -0.8847 1 0 0 0
Pentax/645Z/IMGP2837.PEF/threads:8/real_time_pvalue 0.0016 0.0010 U Test, Repetitions: 25 vs 25
Pentax/645Z/IMGP2837.PEF/threads:8/real_time_mean -0.0023 -0.0024 395 394 395 394
Pentax/645Z/IMGP2837.PEF/threads:8/real_time_median -0.0029 -0.0030 395 394 395 393
Pentax/645Z/IMGP2837.PEF/threads:8/real_time_stddev -0.0275 -0.0375 1 1 1 1
Phase One/P65/CF027310.IIQ/threads:8/real_time_pvalue 0.0232 0.0000 U Test, Repetitions: 25 vs 25
Phase One/P65/CF027310.IIQ/threads:8/real_time_mean -0.0047 +0.0039 114 113 28 28
Phase One/P65/CF027310.IIQ/threads:8/real_time_median -0.0050 +0.0037 114 113 28 28
Phase One/P65/CF027310.IIQ/threads:8/real_time_stddev -0.0599 -0.2683 1 1 0 0
Samsung/NX1/2016-07-23-142101_sam_9364.srw/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Samsung/NX1/2016-07-23-142101_sam_9364.srw/threads:8/real_time_mean +0.0206 +0.0207 405 414 405 414
Samsung/NX1/2016-07-23-142101_sam_9364.srw/threads:8/real_time_median +0.0204 +0.0205 405 414 405 414
Samsung/NX1/2016-07-23-142101_sam_9364.srw/threads:8/real_time_stddev +0.2155 +0.2212 1 1 1 1
Samsung/NX30/2015-03-07-163604_sam_7204.srw/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Samsung/NX30/2015-03-07-163604_sam_7204.srw/threads:8/real_time_mean -0.0109 -0.0108 147 145 147 145
Samsung/NX30/2015-03-07-163604_sam_7204.srw/threads:8/real_time_median -0.0104 -0.0103 147 145 147 145
Samsung/NX30/2015-03-07-163604_sam_7204.srw/threads:8/real_time_stddev -0.4919 -0.4800 0 0 0 0
Samsung/NX3000/_3184416.SRW/threads:8/real_time_pvalue 0.0000 0.0000 U Test, Repetitions: 25 vs 25
Samsung/NX3000/_3184416.SRW/threads:8/real_time_mean -0.0149 -0.0147 220 217 220 217
Samsung/NX3000/_3184416.SRW/threads:8/real_time_median -0.0173 -0.0169 221 217 220 217
Samsung/NX3000/_3184416.SRW/threads:8/real_time_stddev +1.0337 +1.0341 1 3 1 3
Sony/DSLR-A350/DSC05472.ARW/threads:8/real_time_pvalue 0.0001 0.0001 U Test, Repetitions: 25 vs 25
Sony/DSLR-A350/DSC05472.ARW/threads:8/real_time_mean -0.0019 -0.0019 194 193 194 193
Sony/DSLR-A350/DSC05472.ARW/threads:8/real_time_median -0.0021 -0.0021 194 193 194 193
Sony/DSLR-A350/DSC05472.ARW/threads:8/real_time_stddev -0.4441 -0.4282 0 0 0 0
Sony/ILCE-7RM2/14-bit-compressed.ARW/threads:8/real_time_pvalue 0.0000 0.4263 U Test, Repetitions: 25 vs 25
Sony/ILCE-7RM2/14-bit-compressed.ARW/threads:8/real_time_mean +0.0258 -0.0006 81 83 19 19
Sony/ILCE-7RM2/14-bit-compressed.ARW/threads:8/real_time_median +0.0235 -0.0011 81 82 19 19
Sony/ILCE-7RM2/14-bit-compressed.ARW/threads:8/real_time_stddev +0.1634 +0.1070 1 1 0 0
```
{F7443905}
If we look at the `_mean`s, the time column, the biggest win is `-7.7%` (`Canon/EOS 5D Mark II/10.canon.sraw2.cr2`),
and the biggest loose is `+3.3%` (`Panasonic/DC-GH5S/P1022085.RW2`);
Overall: mean `-0.7436%`, median `-0.23%`, `cbrt(sum(time^3))` = `-8.73%`
Looks good so far i'd say.
llvm-exegesis details:
{F7371117} {F7371125}
{F7371128} {F7371144} {F7371158}
Reviewers: craig.topper, RKSimon, andreadb, courbet, avt77, spatel, GGanesh
Reviewed By: andreadb
Subscribers: javed.absar, gbedwell, jfb, llvm-commits
Differential Revision: https://reviews.llvm.org/D52779
llvm-svn: 345463
2018-10-28 04:46:30 +08:00
|
|
|
def : PfmCountersBinding<"bdver2", BdVer2PfmCounters>;
|
|
|
|
|
2018-12-09 21:45:15 +08:00
|
|
|
def BdVer3PfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = PfmCounter<"cpu_clk_unhalted">;
|
|
|
|
let UopsCounter = PfmCounter<"retired_uops">;
|
|
|
|
let IssueCounters = [
|
|
|
|
PfmIssueCounter<"SrFPU0", "dispatched_fpu_ops:ops_pipe0 + dispatched_fpu_ops:ops_dual_pipe0">,
|
|
|
|
PfmIssueCounter<"SrFPU1", "dispatched_fpu_ops:ops_pipe1 + dispatched_fpu_ops:ops_dual_pipe1">,
|
|
|
|
PfmIssueCounter<"SrFPU2", "dispatched_fpu_ops:ops_pipe2 + dispatched_fpu_ops:ops_dual_pipe2">
|
|
|
|
];
|
|
|
|
}
|
|
|
|
def : PfmCountersBinding<"bdver3", BdVer3PfmCounters>;
|
|
|
|
def : PfmCountersBinding<"bdver4", BdVer3PfmCounters>;
|
|
|
|
|
|
|
|
def BtVer1PfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = PfmCounter<"cpu_clk_unhalted">;
|
|
|
|
let UopsCounter = PfmCounter<"retired_uops">;
|
|
|
|
let IssueCounters = [
|
|
|
|
PfmIssueCounter<"BtFPU0", "dispatched_fpu:pipe0">,
|
|
|
|
PfmIssueCounter<"BtFPU1", "dispatched_fpu:pipe1">
|
|
|
|
];
|
|
|
|
}
|
|
|
|
def : PfmCountersBinding<"btver1", BtVer1PfmCounters>;
|
|
|
|
|
2018-10-25 15:44:01 +08:00
|
|
|
def BtVer2PfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = PfmCounter<"cpu_clk_unhalted">;
|
|
|
|
let UopsCounter = PfmCounter<"retired_uops">;
|
|
|
|
let IssueCounters = [
|
|
|
|
PfmIssueCounter<"JFPU0", "dispatched_fpu:pipe0">,
|
|
|
|
PfmIssueCounter<"JFPU1", "dispatched_fpu:pipe1">
|
|
|
|
];
|
2018-05-24 22:54:32 +08:00
|
|
|
}
|
2018-10-25 15:44:01 +08:00
|
|
|
def : PfmCountersBinding<"btver2", BtVer2PfmCounters>;
|
2018-12-08 01:48:40 +08:00
|
|
|
|
|
|
|
def ZnVer1PfmCounters : ProcPfmCounters {
|
|
|
|
let CycleCounter = PfmCounter<"cycles_not_in_halt">;
|
|
|
|
let UopsCounter = PfmCounter<"retired_uops">;
|
|
|
|
let IssueCounters = [
|
|
|
|
PfmIssueCounter<"ZnFPU0", "fpu_pipe_assignment:total0">,
|
|
|
|
PfmIssueCounter<"ZnFPU1", "fpu_pipe_assignment:total1">,
|
|
|
|
PfmIssueCounter<"ZnFPU2", "fpu_pipe_assignment:total2">,
|
|
|
|
PfmIssueCounter<"ZnFPU3", "fpu_pipe_assignment:total3">,
|
|
|
|
PfmIssueCounter<"ZnDivider", "div_op_count">
|
|
|
|
];
|
|
|
|
}
|
|
|
|
def : PfmCountersBinding<"znver1", ZnVer1PfmCounters>;
|