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