| //===-- Benchmark function -----------------------------------------------===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #include "LibcBenchmark.h" |
| #include "llvm/ADT/StringRef.h" |
| #include "llvm/Support/Host.h" |
| |
| namespace llvm { |
| namespace libc_benchmarks { |
| |
| void checkRequirements() { |
| const auto &CpuInfo = benchmark::CPUInfo::Get(); |
| if (CpuInfo.scaling_enabled) |
| report_fatal_error( |
| "CPU scaling is enabled, the benchmark real time measurements may be " |
| "noisy and will incur extra overhead."); |
| } |
| |
| HostState HostState::get() { |
| const auto &CpuInfo = benchmark::CPUInfo::Get(); |
| HostState H; |
| H.CpuFrequency = CpuInfo.cycles_per_second; |
| H.CpuName = llvm::sys::getHostCPUName().str(); |
| for (const auto &BenchmarkCacheInfo : CpuInfo.caches) { |
| CacheInfo CI; |
| CI.Type = BenchmarkCacheInfo.type; |
| CI.Level = BenchmarkCacheInfo.level; |
| CI.Size = BenchmarkCacheInfo.size; |
| CI.NumSharing = BenchmarkCacheInfo.num_sharing; |
| H.Caches.push_back(std::move(CI)); |
| } |
| return H; |
| } |
| |
| } // namespace libc_benchmarks |
| } // namespace llvm |