Change memcpy ifunc to return memmove for x86

It is cleaner to do this with ifunc. This is a partial revert of:
https://android-review.googlesource.com/c/platform/bionic/+/693863

Test: run bionic unit test
Change-Id: I5fb5745fc98807805aedb94b683e959e2a76a25d
diff --git a/libc/arch-x86/dynamic_function_dispatch.cpp b/libc/arch-x86/dynamic_function_dispatch.cpp
index a925190..6624385 100644
--- a/libc/arch-x86/dynamic_function_dispatch.cpp
+++ b/libc/arch-x86/dynamic_function_dispatch.cpp
@@ -93,13 +93,6 @@
     RETURN_FUNC(__memset_chk_func, __memset_chk_generic);
 }
 
-typedef void* memcpy_func(void*, const void*, size_t);
-DEFINE_IFUNC_FOR(memcpy) {
-    __builtin_cpu_init();
-    if (cpu_is(ATOM)) RETURN_FUNC(memcpy_func, memcpy_atom);
-    RETURN_FUNC(memcpy_func, memcpy_generic);
-}
-
 typedef void* memmove_func(void* __dst, const void* __src, size_t __n);
 DEFINE_IFUNC_FOR(memmove) {
     __builtin_cpu_init();
@@ -107,6 +100,11 @@
     RETURN_FUNC(memmove_func, memmove_generic);
 }
 
+typedef void* memcpy_func(void*, const void*, size_t);
+DEFINE_IFUNC_FOR(memcpy) {
+    return memmove_resolver();
+}
+
 typedef char* strcpy_func(char* __dst, const char* __src);
 DEFINE_IFUNC_FOR(strcpy) {
     __builtin_cpu_init();