42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			C++
		
	
	
	
//===-- 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
 |