1/*
2   BLAKE2 reference source code package - optimized C implementations
3
4   Written in 2012 by Samuel Neves <sneves@dei.uc.pt>
5
6   To the extent possible under law, the author(s) have dedicated all copyright
7   and related and neighboring rights to this software to the public domain
8   worldwide. This software is distributed without any warranty.
9
10   You should have received a copy of the CC0 Public Domain Dedication along with
11   this software. If not, see <http://creativecommons.org/publicdomain/zero/1.0/>.
12*/
13#pragma once
14#ifndef __BLAKE2_CONFIG_H__
15#define __BLAKE2_CONFIG_H__
16
17#if defined(__SSE2__)
18#define HAVE_SSE2
19#endif
20
21#if defined(__SSSE3__)
22#define HAVE_SSSE3
23#endif
24
25#if defined(__SSE4_1__)
26#define HAVE_SSE4_1
27#endif
28
29#if defined(__AVX__)
30#define HAVE_AVX
31#endif
32
33#if defined(__XOP__)
34#define HAVE_XOP
35#endif
36
37
38#ifdef HAVE_AVX2
39#ifndef HAVE_AVX
40#define HAVE_AVX
41#endif
42#endif
43
44#ifdef HAVE_XOP
45#ifndef HAVE_AVX
46#define HAVE_AVX
47#endif
48#endif
49
50#ifdef HAVE_AVX
51#ifndef HAVE_SSE4_1
52#define HAVE_SSE4_1
53#endif
54#endif
55
56#ifdef HAVE_SSE4_1
57#ifndef HAVE_SSSE3
58#define HAVE_SSSE3
59#endif
60#endif
61
62#ifdef HAVE_SSSE3
63#define HAVE_SSE2
64#endif
65
66#if !defined(HAVE_SSE2)
67#error "This code requires at least SSE2."
68#endif
69
70#endif
71
72