brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · ac8b519 Raw
54 lines · c
1//===-- MemorySizeDistributions ---------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// Memory functions operate on buffers of certain sizes. This file provides10// probability distributions observed at runtime for a set of applications.11// These distributions are used to benchmark and compare memory functions12// implementations.13//14//===----------------------------------------------------------------------===//15 16#ifndef LLVM_LIBC_BENCHMARKS_MEMORYSIZEDISTRIBUTIONS_H17#define LLVM_LIBC_BENCHMARKS_MEMORYSIZEDISTRIBUTIONS_H18 19#include <llvm/ADT/ArrayRef.h>20#include <llvm/ADT/StringRef.h>21 22namespace llvm {23namespace libc_benchmarks {24 25/// A simple POD exposing caracteristics of a memory function size26/// distributions. The underlying data is immutable.27struct MemorySizeDistribution {28  StringRef Name;                 // The name of the distribution.29  ArrayRef<double> Probabilities; // Size indexed array of probabilities.30};31 32/// Returns a list of memmove size distributions.33ArrayRef<MemorySizeDistribution> getMemmoveSizeDistributions();34 35/// Returns a list of memcpy size distributions.36ArrayRef<MemorySizeDistribution> getMemcpySizeDistributions();37 38/// Returns a list of memset size distributions.39ArrayRef<MemorySizeDistribution> getMemsetSizeDistributions();40 41/// Returns a list of memcmp size distributions.42ArrayRef<MemorySizeDistribution> getMemcmpSizeDistributions();43 44/// Returns the first MemorySizeDistribution from Distributions with the45/// specified Name.46MemorySizeDistribution47getDistributionOrDie(ArrayRef<MemorySizeDistribution> Distributions,48                     StringRef Name);49 50} // namespace libc_benchmarks51} // namespace llvm52 53#endif // LLVM_LIBC_BENCHMARKS_MEMORYSIZEDISTRIBUTIONS_H54