7324473f89
This imports selected files from the src directory of this repository: https://sourceforge.net/p/ed448goldilocks/code/ci/v0.9.4/tree/ This is from the version tagged as "v0.9.4" with commit id 7527e9. This code was originally writting by Mike Hamburg and the import is done by kind permission of Rambus and Mike Hamburg under CLA. As this is under CLA the files are being relicensed under the OpenSSL licence. Subsequent commits will correct any licence notices in the individual files. These files should provide complete self-contained support for X448 and Ed448. They are imported "as is" from the source repository and this commit does not attempt to integrate them into the OpenSSL build system, or modify them in any way to fit OpenSSL style guidelines. That will be done by subsequent commits. Reviewed-by: Bernd Edlinger <bernd.edlinger@hotmail.de> (Merged from https://github.com/openssl/openssl/pull/5105)
22 lines
623 B
C
22 lines
623 B
C
/* Copyright (c) 2016 Cryptography Research, Inc.
|
|
* Released under the MIT License. See LICENSE.txt for license information.
|
|
*/
|
|
|
|
#ifndef __ARCH_ARCH_32_ARCH_INTRINSICS_H__
|
|
#define __ARCH_ARCH_32_ARCH_INTRINSICS_H__
|
|
|
|
#define ARCH_WORD_BITS 32
|
|
|
|
static __inline__ __attribute((always_inline,unused))
|
|
uint32_t word_is_zero(uint32_t a) {
|
|
/* let's hope the compiler isn't clever enough to optimize this. */
|
|
return (((uint64_t)a)-1)>>32;
|
|
}
|
|
|
|
static __inline__ __attribute((always_inline,unused))
|
|
uint64_t widemul(uint32_t a, uint32_t b) {
|
|
return ((uint64_t)a) * b;
|
|
}
|
|
|
|
#endif /* __ARCH_ARM_32_ARCH_INTRINSICS_H__ */
|
|
|