From 1f8023e18a6dc7b950826810b392fdd46bcb0d45 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Wed, 4 May 2016 14:33:27 +0200 Subject: Optimise zand, zor, and zxor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- src/internals.h | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/internals.h') diff --git a/src/internals.h b/src/internals.h index 841346f..f1a2f78 100644 --- a/src/internals.h +++ b/src/internals.h @@ -343,3 +343,31 @@ zfree_temp(z_t a) } /* } */ + +#define ZMEM_OP(a, b, c, n, OP) \ + do { \ + zahl_char_t *a__ = (a); \ + const zahl_char_t *b__ = (b); \ + const zahl_char_t *c__ = (c); \ + size_t i__, n__ = (n); \ + if (n__ <= 4) { \ + if (n__ >= 1) \ + a__[0] = b__[0] OP c__[0]; \ + if (n__ >= 2) \ + a__[1] = b__[1] OP c__[1]; \ + if (n__ >= 3) \ + a__[2] = b__[2] OP c__[2]; \ + if (n__ >= 4) \ + a__[3] = b__[3] OP c__[3]; \ + } else { \ + for (i__ = 0; (i__ += 4) < n__;) { \ + a__[i__ - 1] = b__[i__ - 1] OP c__[i__ - 1]; \ + a__[i__ - 2] = b__[i__ - 2] OP c__[i__ - 2]; \ + a__[i__ - 3] = b__[i__ - 3] OP c__[i__ - 3]; \ + a__[i__ - 4] = b__[i__ - 4] OP c__[i__ - 4]; \ + } \ + if (i__ > n__) \ + for (i__ -= 4; i__ < n__; i__++) \ + a__[i__] = b__[i__] OP c__[i__]; \ + } \ + } while (0) -- cgit v1.2.3-70-g09d2