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