summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-08-03 15:07:26 +0300
committerDmitry Stogov <dmitry@zend.com>2015-08-03 15:07:26 +0300
commit472a8414cc905813f676b48aedb9708f31c6a2dd (patch)
treebdfa61c794b62ea645532fe62944213876b28958
parentd28070870c10d4cbb222899a3e9ce25048a24f69 (diff)
parent68185bafbe2c7ab025703917d259c4c19ce456eb (diff)
downloadphp-git-472a8414cc905813f676b48aedb9708f31c6a2dd.tar.gz
Merge branch 'fast_memcpy' of github.com:bogdanandone/php-src
* 'fast_memcpy' of github.com:bogdanandone/php-src: opcache: Patch SSE based fast_memcpy() implementation
-rw-r--r--ext/opcache/zend_accelerator_util_funcs.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/ext/opcache/zend_accelerator_util_funcs.c b/ext/opcache/zend_accelerator_util_funcs.c
index e20f3d16f6..cfb03a00e4 100644
--- a/ext/opcache/zend_accelerator_util_funcs.c
+++ b/ext/opcache/zend_accelerator_util_funcs.c
@@ -658,16 +658,17 @@ static zend_always_inline void fast_memcpy(void *dest, const void *src, size_t s
do {
_mm_prefetch(dqsrc + 4, _MM_HINT_NTA);
+ _mm_prefetch(dqdest + 4, _MM_HINT_T0);
__m128i xmm0 = _mm_load_si128(dqsrc + 0);
__m128i xmm1 = _mm_load_si128(dqsrc + 1);
__m128i xmm2 = _mm_load_si128(dqsrc + 2);
__m128i xmm3 = _mm_load_si128(dqsrc + 3);
dqsrc += 4;
- _mm_stream_si128(dqdest + 0, xmm0);
- _mm_stream_si128(dqdest + 1, xmm1);
- _mm_stream_si128(dqdest + 2, xmm2);
- _mm_stream_si128(dqdest + 3, xmm3);
+ _mm_store_si128(dqdest + 0, xmm0);
+ _mm_store_si128(dqdest + 1, xmm1);
+ _mm_store_si128(dqdest + 2, xmm2);
+ _mm_store_si128(dqdest + 3, xmm3);
dqdest += 4;
} while (dqsrc != end);
}