1adc18ad6SGuillaume Chatelet #include "LibcFunctionPrototypes.h" 2adc18ad6SGuillaume Chatelet #include "llvm/ADT/ArrayRef.h" 3adc18ad6SGuillaume Chatelet #include <cstddef> 4adc18ad6SGuillaume Chatelet 5adc18ad6SGuillaume Chatelet namespace __llvm_libc { 6adc18ad6SGuillaume Chatelet 7adc18ad6SGuillaume Chatelet extern void *memcpy(void *__restrict, const void *__restrict, size_t); 8adc18ad6SGuillaume Chatelet extern void *memset(void *, int, size_t); 9adc18ad6SGuillaume Chatelet extern void bzero(void *, size_t); 10adc18ad6SGuillaume Chatelet extern int memcmp(const void *, const void *, size_t); 11adc18ad6SGuillaume Chatelet extern int bcmp(const void *, const void *, size_t); 12adc18ad6SGuillaume Chatelet 13adc18ad6SGuillaume Chatelet } // namespace __llvm_libc 14adc18ad6SGuillaume Chatelet 15adc18ad6SGuillaume Chatelet // List of implementations to test. 16adc18ad6SGuillaume Chatelet 17adc18ad6SGuillaume Chatelet using llvm::libc_benchmarks::BzeroConfiguration; 18*4a9bcb60SGuillaume Chatelet using llvm::libc_benchmarks::MemcmpOrBcmpConfiguration; 19adc18ad6SGuillaume Chatelet using llvm::libc_benchmarks::MemcpyConfiguration; 20adc18ad6SGuillaume Chatelet using llvm::libc_benchmarks::MemsetConfiguration; 21adc18ad6SGuillaume Chatelet 22adc18ad6SGuillaume Chatelet llvm::ArrayRef<MemcpyConfiguration> getMemcpyConfigurations() { 23adc18ad6SGuillaume Chatelet static constexpr MemcpyConfiguration kMemcpyConfigurations[] = { 24adc18ad6SGuillaume Chatelet {__llvm_libc::memcpy, "__llvm_libc::memcpy"}}; 25adc18ad6SGuillaume Chatelet return llvm::makeArrayRef(kMemcpyConfigurations); 26adc18ad6SGuillaume Chatelet } 27*4a9bcb60SGuillaume Chatelet llvm::ArrayRef<MemcmpOrBcmpConfiguration> getMemcmpConfigurations() { 28*4a9bcb60SGuillaume Chatelet static constexpr MemcmpOrBcmpConfiguration kMemcmpConfiguration[] = { 29adc18ad6SGuillaume Chatelet {__llvm_libc::memcmp, "__llvm_libc::memcmp"}}; 30*4a9bcb60SGuillaume Chatelet return llvm::makeArrayRef(kMemcmpConfiguration); 31adc18ad6SGuillaume Chatelet } 32*4a9bcb60SGuillaume Chatelet llvm::ArrayRef<MemcmpOrBcmpConfiguration> getBcmpConfigurations() { 33*4a9bcb60SGuillaume Chatelet static constexpr MemcmpOrBcmpConfiguration kBcmpConfigurations[] = { 34adc18ad6SGuillaume Chatelet {__llvm_libc::bcmp, "__llvm_libc::bcmp"}}; 35adc18ad6SGuillaume Chatelet return llvm::makeArrayRef(kBcmpConfigurations); 36adc18ad6SGuillaume Chatelet } 37adc18ad6SGuillaume Chatelet llvm::ArrayRef<MemsetConfiguration> getMemsetConfigurations() { 38adc18ad6SGuillaume Chatelet static constexpr MemsetConfiguration kMemsetConfigurations[] = { 39adc18ad6SGuillaume Chatelet {__llvm_libc::memset, "__llvm_libc::memset"}}; 40adc18ad6SGuillaume Chatelet return llvm::makeArrayRef(kMemsetConfigurations); 41adc18ad6SGuillaume Chatelet } 42adc18ad6SGuillaume Chatelet llvm::ArrayRef<BzeroConfiguration> getBzeroConfigurations() { 43adc18ad6SGuillaume Chatelet static constexpr BzeroConfiguration kBzeroConfigurations[] = { 44adc18ad6SGuillaume Chatelet {__llvm_libc::bzero, "__llvm_libc::bzero"}}; 45adc18ad6SGuillaume Chatelet return llvm::makeArrayRef(kBzeroConfigurations); 46adc18ad6SGuillaume Chatelet } 47