X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=shared%2Fmemcpy_interleaved.cpp;h=4aba3c936a00effd9fb68ae99042db85375b4d24;hb=f7752bad9a473d26ff1fa7c83ac82dca098b63bb;hp=8b70d4cb4d30566da0fdcd67f5cd9a3a9c01a260;hpb=66c4fc7370e321fa5725e56685e5c5bb84bd6990;p=nageru diff --git a/shared/memcpy_interleaved.cpp b/shared/memcpy_interleaved.cpp index 8b70d4c..4aba3c9 100644 --- a/shared/memcpy_interleaved.cpp +++ b/shared/memcpy_interleaved.cpp @@ -26,12 +26,22 @@ void memcpy_interleaved_slow(uint8_t *dest1, uint8_t *dest2, const uint8_t *src, #if HAS_MULTIVERSIONING +__attribute__((target("default"))) +size_t memcpy_interleaved_fastpath_core(uint8_t *dest1, uint8_t *dest2, const uint8_t *src, const uint8_t *limit); + __attribute__((target("sse2"))) size_t memcpy_interleaved_fastpath_core(uint8_t *dest1, uint8_t *dest2, const uint8_t *src, const uint8_t *limit); __attribute__((target("avx2"))) size_t memcpy_interleaved_fastpath_core(uint8_t *dest1, uint8_t *dest2, const uint8_t *src, const uint8_t *limit); +__attribute__((target("default"))) +size_t memcpy_interleaved_fastpath_core(uint8_t *dest1, uint8_t *dest2, const uint8_t *src, const uint8_t *limit) +{ + // No fast path possible unless we have SSE2 or higher. + return 0; +} + __attribute__((target("sse2"))) size_t memcpy_interleaved_fastpath_core(uint8_t *dest1, uint8_t *dest2, const uint8_t *src, const uint8_t *limit) { @@ -100,7 +110,6 @@ size_t memcpy_interleaved_fastpath_core(uint8_t *dest1, uint8_t *dest2, const ui } // Returns the number of bytes consumed. -__attribute__((target("sse2", "avx2"))) size_t memcpy_interleaved_fastpath(uint8_t *dest1, uint8_t *dest2, const uint8_t *src, size_t n) { const uint8_t *limit = src + n;