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);
8*de21f346SGuillaume Chatelet extern void *memmove(void *, const void *, size_t);
9adc18ad6SGuillaume Chatelet extern void *memset(void *, int, size_t);
10adc18ad6SGuillaume Chatelet extern void bzero(void *, size_t);
11adc18ad6SGuillaume Chatelet extern int memcmp(const void *, const void *, size_t);
12adc18ad6SGuillaume Chatelet extern int bcmp(const void *, const void *, size_t);
13adc18ad6SGuillaume Chatelet
14adc18ad6SGuillaume Chatelet } // namespace __llvm_libc
15adc18ad6SGuillaume Chatelet
16adc18ad6SGuillaume Chatelet // List of implementations to test.
17adc18ad6SGuillaume Chatelet
18adc18ad6SGuillaume Chatelet using llvm::libc_benchmarks::BzeroConfiguration;
194a9bcb60SGuillaume Chatelet using llvm::libc_benchmarks::MemcmpOrBcmpConfiguration;
20adc18ad6SGuillaume Chatelet using llvm::libc_benchmarks::MemcpyConfiguration;
21*de21f346SGuillaume Chatelet using llvm::libc_benchmarks::MemmoveConfiguration;
22adc18ad6SGuillaume Chatelet using llvm::libc_benchmarks::MemsetConfiguration;
23adc18ad6SGuillaume Chatelet
getMemcpyConfigurations()24adc18ad6SGuillaume Chatelet llvm::ArrayRef<MemcpyConfiguration> getMemcpyConfigurations() {
25adc18ad6SGuillaume Chatelet static constexpr MemcpyConfiguration kMemcpyConfigurations[] = {
26adc18ad6SGuillaume Chatelet {__llvm_libc::memcpy, "__llvm_libc::memcpy"}};
27adc18ad6SGuillaume Chatelet return llvm::makeArrayRef(kMemcpyConfigurations);
28adc18ad6SGuillaume Chatelet }
getMemmoveConfigurations()29*de21f346SGuillaume Chatelet llvm::ArrayRef<MemmoveConfiguration> getMemmoveConfigurations() {
30*de21f346SGuillaume Chatelet static constexpr MemmoveConfiguration kMemmoveConfigurations[] = {
31*de21f346SGuillaume Chatelet {__llvm_libc::memmove, "__llvm_libc::memmove"}};
32*de21f346SGuillaume Chatelet return llvm::makeArrayRef(kMemmoveConfigurations);
33*de21f346SGuillaume Chatelet }
getMemcmpConfigurations()344a9bcb60SGuillaume Chatelet llvm::ArrayRef<MemcmpOrBcmpConfiguration> getMemcmpConfigurations() {
354a9bcb60SGuillaume Chatelet static constexpr MemcmpOrBcmpConfiguration kMemcmpConfiguration[] = {
36adc18ad6SGuillaume Chatelet {__llvm_libc::memcmp, "__llvm_libc::memcmp"}};
374a9bcb60SGuillaume Chatelet return llvm::makeArrayRef(kMemcmpConfiguration);
38adc18ad6SGuillaume Chatelet }
getBcmpConfigurations()394a9bcb60SGuillaume Chatelet llvm::ArrayRef<MemcmpOrBcmpConfiguration> getBcmpConfigurations() {
404a9bcb60SGuillaume Chatelet static constexpr MemcmpOrBcmpConfiguration kBcmpConfigurations[] = {
41adc18ad6SGuillaume Chatelet {__llvm_libc::bcmp, "__llvm_libc::bcmp"}};
42adc18ad6SGuillaume Chatelet return llvm::makeArrayRef(kBcmpConfigurations);
43adc18ad6SGuillaume Chatelet }
getMemsetConfigurations()44adc18ad6SGuillaume Chatelet llvm::ArrayRef<MemsetConfiguration> getMemsetConfigurations() {
45adc18ad6SGuillaume Chatelet static constexpr MemsetConfiguration kMemsetConfigurations[] = {
46adc18ad6SGuillaume Chatelet {__llvm_libc::memset, "__llvm_libc::memset"}};
47adc18ad6SGuillaume Chatelet return llvm::makeArrayRef(kMemsetConfigurations);
48adc18ad6SGuillaume Chatelet }
getBzeroConfigurations()49adc18ad6SGuillaume Chatelet llvm::ArrayRef<BzeroConfiguration> getBzeroConfigurations() {
50adc18ad6SGuillaume Chatelet static constexpr BzeroConfiguration kBzeroConfigurations[] = {
51adc18ad6SGuillaume Chatelet {__llvm_libc::bzero, "__llvm_libc::bzero"}};
52adc18ad6SGuillaume Chatelet return llvm::makeArrayRef(kBzeroConfigurations);
53adc18ad6SGuillaume Chatelet }
54