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