| //===-- MemorySizeDistributions ---------------------------------*- C++ -*-===// | |
| // | |
| // 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 | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // Memory functions operate on buffers of certain sizes. This file provides | |
| // probability distributions observed at runtime for a set of applications. | |
| // These distributions are used to benchmark and compare memory functions | |
| // implementations. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef LLVM_LIBC_BENCHMARKS_MEMORYSIZEDISTRIBUTIONS_H | |
| #define LLVM_LIBC_BENCHMARKS_MEMORYSIZEDISTRIBUTIONS_H | |
| #include <llvm/ADT/ArrayRef.h> | |
| #include <llvm/ADT/StringRef.h> | |
| namespace llvm { | |
| namespace libc_benchmarks { | |
| /// A simple POD exposing caracteristics of a memory function size | |
| /// distributions. The underlying data is immutable. | |
| struct MemorySizeDistribution { | |
| StringRef name; // The name of the distribution. | |
| ArrayRef<double> probabilities; // Size indexed array of probabilities. | |
| }; | |
| /// Returns a list of memmove size distributions. | |
| ArrayRef<MemorySizeDistribution> getMemmoveSizeDistributions(); | |
| /// Returns a list of memcpy size distributions. | |
| ArrayRef<MemorySizeDistribution> getMemcpySizeDistributions(); | |
| /// Returns a list of memset size distributions. | |
| ArrayRef<MemorySizeDistribution> getMemsetSizeDistributions(); | |
| /// Returns a list of memcmp size distributions. | |
| ArrayRef<MemorySizeDistribution> getMemcmpSizeDistributions(); | |
| /// Returns the first MemorySizeDistribution from Distributions with the | |
| /// specified Name. | |
| MemorySizeDistribution | |
| getDistributionOrDie(ArrayRef<MemorySizeDistribution> Distributions, | |
| StringRef Name); | |
| } // namespace libc_benchmarks | |
| } // namespace llvm | |
| #endif // LLVM_LIBC_BENCHMARKS_MEMORYSIZEDISTRIBUTIONS_H |