From eafeb8db66dae7619ff3cb039706b990d718cba7 Mon Sep 17 00:00:00 2001 From: Matt Turner Date: Mon, 11 Apr 2016 11:59:59 -0700 Subject: [PATCH] i965/tiled_memcpy: Unroll bytes==64 case. Reviewed-by: Roland Scheidegger --- 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 04a348ace18..b61a842b9cc 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; -- 2.30.2