diff options
author | Dmitry Stogov <dmitry@zend.com> | 2015-08-03 15:07:26 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2015-08-03 15:07:26 +0300 |
commit | 472a8414cc905813f676b48aedb9708f31c6a2dd (patch) | |
tree | bdfa61c794b62ea645532fe62944213876b28958 | |
parent | d28070870c10d4cbb222899a3e9ce25048a24f69 (diff) | |
parent | 68185bafbe2c7ab025703917d259c4c19ce456eb (diff) | |
download | php-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.c | 9 |
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); } |