Mesa (master): i965/tiled_memcpy: Unroll bytes==64 case.
Matt Turner
mattst88 at kemper.freedesktop.org
Tue Apr 12 21:36:02 UTC 2016
Module: Mesa
Branch: master
Commit: eafeb8db66dae7619ff3cb039706b990d718cba7
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=eafeb8db66dae7619ff3cb039706b990d718cba7
Author: Matt Turner <mattst88 at gmail.com>
Date: Mon Apr 11 11:59:59 2016 -0700
i965/tiled_memcpy: Unroll bytes==64 case.
Reviewed-by: Roland Scheidegger <sroland at vmware.com>
---
src/mesa/drivers/dri/i965/intel_tiled_memcpy.c | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
index 04a348a..b61a842 100644
--- a/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
+++ b/src/mesa/drivers/dri/i965/intel_tiled_memcpy.c
@@ -149,6 +149,14 @@ rgba8_copy_aligned_dst(void *dst, const void *src, size_t bytes)
assert(bytes == 0 || !(((uintptr_t)dst) & 0xf));
#if defined(__SSSE3__) || defined(__SSE2__)
+ if (bytes == 64) {
+ rgba8_copy_16_aligned_dst(dst + 0, src + 0);
+ rgba8_copy_16_aligned_dst(dst + 16, src + 16);
+ rgba8_copy_16_aligned_dst(dst + 32, src + 32);
+ rgba8_copy_16_aligned_dst(dst + 48, src + 48);
+ return dst;
+ }
+
while (bytes >= 16) {
rgba8_copy_16_aligned_dst(dst, src);
src += 16;
@@ -171,6 +179,14 @@ rgba8_copy_aligned_src(void *dst, const void *src, size_t bytes)
assert(bytes == 0 || !(((uintptr_t)src) & 0xf));
#if defined(__SSSE3__) || defined(__SSE2__)
+ if (bytes == 64) {
+ rgba8_copy_16_aligned_dst(dst + 0, src + 0);
+ rgba8_copy_16_aligned_dst(dst + 16, src + 16);
+ rgba8_copy_16_aligned_dst(dst + 32, src + 32);
+ rgba8_copy_16_aligned_dst(dst + 48, src + 48);
+ return dst;
+ }
+
while (bytes >= 16) {
rgba8_copy_16_aligned_src(dst, src);
src += 16;
More information about the mesa-commit
mailing list