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