|  | //===-- 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 |