xref: /llvm-project/libc/benchmarks/LibcFunctionPrototypes.h (revision de21f346913cf777436ab0ac0fb707ac04eb3300)
1adc18ad6SGuillaume Chatelet #ifndef LLVM_LIBC_BENCHMARKS_LIBC_FUNCTION_PROTOTYPES_H
2adc18ad6SGuillaume Chatelet #define LLVM_LIBC_BENCHMARKS_LIBC_FUNCTION_PROTOTYPES_H
3adc18ad6SGuillaume Chatelet 
4adc18ad6SGuillaume Chatelet #include "llvm/ADT/StringRef.h"
5adc18ad6SGuillaume Chatelet 
6adc18ad6SGuillaume Chatelet namespace llvm {
7adc18ad6SGuillaume Chatelet namespace libc_benchmarks {
8adc18ad6SGuillaume Chatelet 
9adc18ad6SGuillaume Chatelet /// Memory function prototype and configuration.
10adc18ad6SGuillaume Chatelet using MemcpyFunction = void *(*)(void *__restrict, const void *__restrict,
11adc18ad6SGuillaume Chatelet                                  size_t);
12adc18ad6SGuillaume Chatelet struct MemcpyConfiguration {
13adc18ad6SGuillaume Chatelet   MemcpyFunction Function;
14adc18ad6SGuillaume Chatelet   llvm::StringRef Name;
15adc18ad6SGuillaume Chatelet };
16adc18ad6SGuillaume Chatelet 
17*de21f346SGuillaume Chatelet using MemmoveFunction = void *(*)(void *, const void *, size_t);
18*de21f346SGuillaume Chatelet struct MemmoveConfiguration {
19*de21f346SGuillaume Chatelet   MemmoveFunction Function;
20*de21f346SGuillaume Chatelet   llvm::StringRef Name;
21*de21f346SGuillaume Chatelet };
22*de21f346SGuillaume Chatelet 
23adc18ad6SGuillaume Chatelet using MemsetFunction = void *(*)(void *, int, size_t);
24adc18ad6SGuillaume Chatelet struct MemsetConfiguration {
25adc18ad6SGuillaume Chatelet   MemsetFunction Function;
26adc18ad6SGuillaume Chatelet   llvm::StringRef Name;
27adc18ad6SGuillaume Chatelet };
28adc18ad6SGuillaume Chatelet 
29adc18ad6SGuillaume Chatelet using BzeroFunction = void (*)(void *, size_t);
30adc18ad6SGuillaume Chatelet struct BzeroConfiguration {
31adc18ad6SGuillaume Chatelet   BzeroFunction Function;
32adc18ad6SGuillaume Chatelet   llvm::StringRef Name;
33adc18ad6SGuillaume Chatelet };
34adc18ad6SGuillaume Chatelet 
354a9bcb60SGuillaume Chatelet using MemcmpOrBcmpFunction = int (*)(const void *, const void *, size_t);
364a9bcb60SGuillaume Chatelet struct MemcmpOrBcmpConfiguration {
374a9bcb60SGuillaume Chatelet   MemcmpOrBcmpFunction Function;
38adc18ad6SGuillaume Chatelet   llvm::StringRef Name;
39adc18ad6SGuillaume Chatelet };
40adc18ad6SGuillaume Chatelet 
41adc18ad6SGuillaume Chatelet } // namespace libc_benchmarks
42adc18ad6SGuillaume Chatelet } // namespace llvm
43adc18ad6SGuillaume Chatelet 
44adc18ad6SGuillaume Chatelet #endif /* LLVM_LIBC_BENCHMARKS_LIBC_FUNCTION_PROTOTYPES_H */
45