]> git.ipfire.org Git - thirdparty/xz.git/commitdiff
liblzma: SHA-256: Optimize the Maj macro slightly.
authorLasse Collin <lasse.collin@tukaani.org>
Sun, 3 Aug 2014 18:32:25 +0000 (21:32 +0300)
committerLasse Collin <lasse.collin@tukaani.org>
Sun, 3 Aug 2014 18:32:25 +0000 (21:32 +0300)
The Maj macro is used where multiple things are added
together, so making Maj a sum of two expressions allows
some extra freedom for the compiler to schedule the
instructions.

I learned this trick from
<http://www.hackersdelight.org/corres.txt>.

src/liblzma/check/sha256.c

index e0e2f10bd406fe46ae4158bc1143d096726566e7..5eede5ce05bc7a3c5f7430828b3fd4feb3e1c7a5 100644 (file)
@@ -36,7 +36,7 @@ rotr_32(uint32_t num, unsigned amount)
                + s0(W[(i - 15) & 15]))
 
 #define Ch(x, y, z) (z ^ (x & (y ^ z)))
-#define Maj(x, y, z) ((x & y) | (z & (x | y)))
+#define Maj(x, y, z) ((x & (y ^ z)) + (y & z))
 
 #define a(i) T[(0 - i) & 7]
 #define b(i) T[(1 - i) & 7]