Remove MD32_REG_T.
authorjsing <jsing@openbsd.org>
Thu, 10 Aug 2023 07:15:23 +0000 (07:15 +0000)
committerjsing <jsing@openbsd.org>
Thu, 10 Aug 2023 07:15:23 +0000 (07:15 +0000)
This is a hack that is only enabled on a handful of 64 bit platforms, as
a workaround for poor compiler optimisation. If you're running an archiac
compiler on an archiac architecture, then you can deal with slightly lower
performance.

ok tb@

lib/libcrypto/md32_common.h
lib/libcrypto/md4/md4.c
lib/libcrypto/md5/md5.c
lib/libcrypto/ripemd/ripemd.c
lib/libcrypto/sha/sha1.c
lib/libcrypto/sha/sha256.c

index ccd6db5..f61c49f 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: md32_common.h,v 1.25 2023/05/27 18:33:34 jsing Exp $ */
+/* $OpenBSD: md32_common.h,v 1.26 2023/08/10 07:15:23 jsing Exp $ */
 /* ====================================================================
  * Copyright (c) 1999-2007 The OpenSSL Project.  All rights reserved.
  *
@@ -307,35 +307,3 @@ int HASH_FINAL (unsigned char *md, HASH_CTX *c)
        return 1;
 }
 #endif
-
-#ifndef MD32_REG_T
-#if defined(__alpha) || defined(__sparcv9) || defined(__mips)
-#define MD32_REG_T long
-/*
- * This comment was originally written for MD5, which is why it
- * discusses A-D. But it basically applies to all 32-bit digests,
- * which is why it was moved to common header file.
- *
- * In case you wonder why A-D are declared as long and not
- * as MD5_LONG. Doing so results in slight performance
- * boost on LP64 architectures. The catch is we don't
- * really care if 32 MSBs of a 64-bit register get polluted
- * with eventual overflows as we *save* only 32 LSBs in
- * *either* case. Now declaring 'em long excuses the compiler
- * from keeping 32 MSBs zeroed resulting in 13% performance
- * improvement under SPARC Solaris7/64 and 5% under AlphaLinux.
- * Well, to be honest it should say that this *prevents*
- * performance degradation.
- *                             <appro@fy.chalmers.se>
- */
-#else
-/*
- * Above is not absolute and there are LP64 compilers that
- * generate better code if MD32_REG_T is defined int. The above
- * pre-processor condition reflects the circumstances under which
- * the conclusion was made and is subject to further extension.
- *                             <appro@fy.chalmers.se>
- */
-#define MD32_REG_T int
-#endif
-#endif
index a60196e..d05d5ac 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: md4.c,v 1.5 2023/07/28 11:04:41 jsing Exp $ */
+/* $OpenBSD: md4.c,v 1.6 2023/08/10 07:15:23 jsing Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -146,8 +146,8 @@ void
 md4_block_data_order(MD4_CTX *c, const void *data_, size_t num)
 {
        const unsigned char *data = data_;
-       unsigned MD32_REG_T A, B, C, D, l;
-       unsigned MD32_REG_T X0, X1, X2, X3, X4, X5, X6, X7,
+       unsigned int A, B, C, D, l;
+       unsigned int X0, X1, X2, X3, X4, X5, X6, X7,
            X8, X9, X10, X11, X12, X13, X14, X15;
 
        A = c->A;
index 0651678..ea8d179 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: md5.c,v 1.6 2023/07/28 11:06:28 jsing Exp $ */
+/* $OpenBSD: md5.c,v 1.7 2023/08/10 07:15:23 jsing Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -166,8 +166,8 @@ void
 md5_block_data_order(MD5_CTX *c, const void *data_, size_t num)
 {
        const unsigned char *data = data_;
-       unsigned MD32_REG_T A, B, C, D, l;
-       unsigned MD32_REG_T X0, X1, X2, X3, X4, X5, X6, X7,
+       unsigned int A, B, C, D, l;
+       unsigned int X0, X1, X2, X3, X4, X5, X6, X7,
            X8, X9, X10, X11, X12, X13, X14, X15;
 
        A = c->A;
index 4edf3de..5cf197c 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: ripemd.c,v 1.1 2023/07/28 11:08:01 jsing Exp $ */
+/* $OpenBSD: ripemd.c,v 1.2 2023/08/10 07:15:23 jsing Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -179,11 +179,11 @@ void
 ripemd160_block_data_order(RIPEMD160_CTX *ctx, const void *p, size_t num)
 {
        const unsigned char *data = p;
-       unsigned MD32_REG_T A, B,C, D, E;
-       unsigned MD32_REG_T a, b,c, d,e, l;
+       unsigned int A, B, C, D, E;
+       unsigned int a, b, c, d, e, l;
 #ifndef MD32_XARRAY
        /* See comment in crypto/sha/sha_locl.h for details. */
-       unsigned MD32_REG_T     XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
+       unsigned int XX0, XX1, XX2, XX3, XX4, XX5, XX6, XX7,
            XX8, XX9, XX10, XX11, XX12, XX13, XX14, XX15;
 # define X(i)  XX##i
 #else
index 6e35d79..4b48653 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sha1.c,v 1.11 2023/07/08 12:24:10 beck Exp $ */
+/* $OpenBSD: sha1.c,v 1.12 2023/08/10 07:15:23 jsing Exp $ */
 /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
@@ -141,8 +141,8 @@ static void
 sha1_block_data_order(SHA_CTX *c, const void *p, size_t num)
 {
        const unsigned char *data = p;
-       unsigned MD32_REG_T A, B, C, D, E, T, l;
-       unsigned MD32_REG_T X0, X1, X2, X3, X4, X5, X6, X7,
+       unsigned int A, B, C, D, E, T, l;
+       unsigned int X0, X1, X2, X3, X4, X5, X6, X7,
            X8, X9, X10, X11, X12, X13, X14, X15;
 
        A = c->h0;
index 0d0c423..231a5a0 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: sha256.c,v 1.27 2023/07/08 12:24:10 beck Exp $ */
+/* $OpenBSD: sha256.c,v 1.28 2023/08/10 07:15:23 jsing Exp $ */
 /* ====================================================================
  * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
  *
@@ -135,7 +135,7 @@ sha256_block_data_order(SHA256_CTX *ctx, const void *_in, size_t num)
 {
        const uint8_t *in = _in;
        const SHA_LONG *in32;
-       unsigned MD32_REG_T a, b, c, d, e, f, g, h, s0, s1, T1;
+       unsigned int a, b, c, d, e, f, g, h, s0, s1, T1;
        SHA_LONG X[16];
        int i;