#ifndef LLVM_LIBC_BENCHMARKS_LIBC_FUNCTION_PROTOTYPES_H
#define LLVM_LIBC_BENCHMARKS_LIBC_FUNCTION_PROTOTYPES_H

#include "llvm/ADT/StringRef.h"

namespace llvm {
namespace libc_benchmarks {

/// Memory function prototype and configuration.
using MemcpyFunction = void *(*)(void *__restrict, const void *__restrict,
                                 size_t);
struct MemcpyConfiguration {
  MemcpyFunction Function;
  llvm::StringRef Name;
};

using MemsetFunction = void *(*)(void *, int, size_t);
struct MemsetConfiguration {
  MemsetFunction Function;
  llvm::StringRef Name;
};

using BzeroFunction = void (*)(void *, size_t);
struct BzeroConfiguration {
  BzeroFunction Function;
  llvm::StringRef Name;
};

using MemcmpOrBcmpFunction = int (*)(const void *, const void *, size_t);
struct MemcmpOrBcmpConfiguration {
  MemcmpOrBcmpFunction Function;
  llvm::StringRef Name;
};

} // namespace libc_benchmarks
} // namespace llvm

#endif /* LLVM_LIBC_BENCHMARKS_LIBC_FUNCTION_PROTOTYPES_H */
