75 lines
1.4 KiB
C
75 lines
1.4 KiB
C
|
/*
|
||
|
BLAKE2 reference source code package - optimized C implementations
|
||
|
|
||
|
Copyright 2012, Samuel Neves <sneves@dei.uc.pt>. You may use this under the
|
||
|
terms of the CC0, the OpenSSL Licence, or the Apache Public License 2.0, at
|
||
|
your option. The terms of these licenses can be found at:
|
||
|
|
||
|
- CC0 1.0 Universal : http://creativecommons.org/publicdomain/zero/1.0
|
||
|
- OpenSSL license : https://www.openssl.org/source/license.html
|
||
|
- Apache 2.0 : http://www.apache.org/licenses/LICENSE-2.0
|
||
|
|
||
|
More information about the BLAKE2 hash function can be found at
|
||
|
https://blake2.net.
|
||
|
*/
|
||
|
#pragma once
|
||
|
#ifndef __BLAKE2_CONFIG_H__
|
||
|
#define __BLAKE2_CONFIG_H__
|
||
|
|
||
|
/* These don't work everywhere */
|
||
|
#if defined(__SSE2__) || defined(__x86_64__) || defined(__amd64__)
|
||
|
#define HAVE_SSE2
|
||
|
#endif
|
||
|
|
||
|
#if defined(__SSSE3__)
|
||
|
#define HAVE_SSSE3
|
||
|
#endif
|
||
|
|
||
|
#if defined(__SSE4_1__)
|
||
|
#define HAVE_SSE41
|
||
|
#endif
|
||
|
|
||
|
#if defined(__AVX__)
|
||
|
#define HAVE_AVX
|
||
|
#endif
|
||
|
|
||
|
#if defined(__XOP__)
|
||
|
#define HAVE_XOP
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#ifdef HAVE_AVX2
|
||
|
#ifndef HAVE_AVX
|
||
|
#define HAVE_AVX
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#ifdef HAVE_XOP
|
||
|
#ifndef HAVE_AVX
|
||
|
#define HAVE_AVX
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#ifdef HAVE_AVX
|
||
|
#ifndef HAVE_SSE41
|
||
|
#define HAVE_SSE41
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#ifdef HAVE_SSE41
|
||
|
#ifndef HAVE_SSSE3
|
||
|
#define HAVE_SSSE3
|
||
|
#endif
|
||
|
#endif
|
||
|
|
||
|
#ifdef HAVE_SSSE3
|
||
|
#define HAVE_SSE2
|
||
|
#endif
|
||
|
|
||
|
#if !defined(HAVE_SSE2)
|
||
|
#error "This code requires at least SSE2."
|
||
|
#endif
|
||
|
|
||
|
#endif
|
||
|
|