fix compile on GCC 4.4 and greater
parent
0403d122e1
commit
a3f2091bcd
4
Doxyfile
4
Doxyfile
|
|
@ -369,13 +369,13 @@ QUIET = NO
|
||||||
# generated by doxygen. Possible values are YES and NO. If left blank
|
# generated by doxygen. Possible values are YES and NO. If left blank
|
||||||
# NO is used.
|
# NO is used.
|
||||||
|
|
||||||
WARNINGS = No
|
WARNINGS = NO
|
||||||
|
|
||||||
# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
|
# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
|
||||||
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
|
# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
|
||||||
# automatically be disabled.
|
# automatically be disabled.
|
||||||
|
|
||||||
WARN_IF_UNDOCUMENTED = No
|
WARN_IF_UNDOCUMENTED = NO
|
||||||
|
|
||||||
# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
|
# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
|
||||||
# potential errors in the documentation, such as not documenting some
|
# potential errors in the documentation, such as not documenting some
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ ifneq ($(GCC42_OR_LATER),0)
|
||||||
ifeq ($(UNAME),Darwin)
|
ifeq ($(UNAME),Darwin)
|
||||||
CXXFLAGS += -arch x86_64 -arch i386
|
CXXFLAGS += -arch x86_64 -arch i386
|
||||||
else
|
else
|
||||||
CXXFLAGS += -march=native -mtune=native
|
CXXFLAGS += -march=native
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
||||||
80
cpu.h
80
cpu.h
|
|
@ -12,10 +12,88 @@
|
||||||
|
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
#ifdef CRYPTOPP_MSVC6PP_OR_LATER
|
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE
|
||||||
#include <emmintrin.h>
|
#include <emmintrin.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE
|
||||||
|
#if !defined(__GNUC__) || defined(__SSSE3__)
|
||||||
|
#include <tmmintrin.h>
|
||||||
|
#else
|
||||||
|
__inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||||
|
_mm_shuffle_epi8 (__m128i a, __m128i b)
|
||||||
|
{
|
||||||
|
asm ("pshufb %1, %0" : "+x"(a) : "xm"(b));
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if !defined(__GNUC__) || defined(__SSE4_1__)
|
||||||
|
#include <smmintrin.h>
|
||||||
|
#else
|
||||||
|
__inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||||
|
_mm_extract_epi32 (__m128i a, const int i)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
asm ("pextrd %2, %1, %0" : "=rm"(r) : "x"(a), "i"(i));
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
__inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||||
|
_mm_insert_epi32 (__m128i a, int b, const int i)
|
||||||
|
{
|
||||||
|
asm ("pinsrd %2, %1, %0" : "+x"(a) : "rm"(b), "i"(i));
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#if !defined(__GNUC__) || (defined(__AES__) && defined(__PCLMUL__))
|
||||||
|
#include <wmmintrin.h>
|
||||||
|
#else
|
||||||
|
__inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||||
|
_mm_clmulepi64_si128 (__m128i a, __m128i b, const int i)
|
||||||
|
{
|
||||||
|
asm ("pclmulqdq %2, %1, %0" : "+x"(a) : "xm"(b), "i"(i));
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
__inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||||
|
_mm_aeskeygenassist_si128 (__m128i a, const int i)
|
||||||
|
{
|
||||||
|
__m128i r;
|
||||||
|
asm ("aeskeygenassist %2, %1, %0" : "=x"(r) : "xm"(a), "i"(i));
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
__inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||||
|
_mm_aesimc_si128 (__m128i a)
|
||||||
|
{
|
||||||
|
__m128i r;
|
||||||
|
asm ("aesimc %1, %0" : "=x"(r) : "xm"(a));
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
__inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||||
|
_mm_aesenc_si128 (__m128i a, __m128i b)
|
||||||
|
{
|
||||||
|
asm ("aesenc %1, %0" : "+x"(a) : "xm"(b));
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
__inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||||
|
_mm_aesenclast_si128 (__m128i a, __m128i b)
|
||||||
|
{
|
||||||
|
asm ("aesenclast %1, %0" : "+x"(a) : "xm"(b));
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
__inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||||
|
_mm_aesdec_si128 (__m128i a, __m128i b)
|
||||||
|
{
|
||||||
|
asm ("aesdec %1, %0" : "+x"(a) : "xm"(b));
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
__inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
|
||||||
|
_mm_aesdeclast_si128 (__m128i a, __m128i b)
|
||||||
|
{
|
||||||
|
asm ("aesdeclast %1, %0" : "+x"(a) : "xm"(b));
|
||||||
|
return a;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
#if CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X64
|
#if CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X64
|
||||||
|
|
|
||||||
15
gcm.cpp
15
gcm.cpp
|
|
@ -10,15 +10,6 @@
|
||||||
#include "gcm.h"
|
#include "gcm.h"
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
|
|
||||||
#if CRYPTOPP_BOOL_SSE2_INTRINSICS_AVAILABLE
|
|
||||||
#include <emmintrin.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE
|
|
||||||
#include <tmmintrin.h>
|
|
||||||
#include <wmmintrin.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
word16 GCM_Base::s_reductionTable[256];
|
word16 GCM_Base::s_reductionTable[256];
|
||||||
|
|
@ -88,9 +79,9 @@ inline static void Xor16(byte *a, const byte *b, const byte *c)
|
||||||
|
|
||||||
#if CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE
|
#if CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE
|
||||||
static CRYPTOPP_ALIGN_DATA(16) const word64 s_clmulConstants64[] = {
|
static CRYPTOPP_ALIGN_DATA(16) const word64 s_clmulConstants64[] = {
|
||||||
0xe100000000000000, 0xc200000000000000,
|
W64LIT(0xe100000000000000), W64LIT(0xc200000000000000),
|
||||||
0x08090a0b0c0d0e0f, 0x0001020304050607,
|
W64LIT(0x08090a0b0c0d0e0f), W64LIT(0x0001020304050607),
|
||||||
0x0001020304050607, 0x08090a0b0c0d0e0f};
|
W64LIT(0x0001020304050607), W64LIT(0x08090a0b0c0d0e0f)};
|
||||||
static const __m128i *s_clmulConstants = (const __m128i *)s_clmulConstants64;
|
static const __m128i *s_clmulConstants = (const __m128i *)s_clmulConstants64;
|
||||||
static const unsigned int s_clmulTableSizeInBlocks = 8;
|
static const unsigned int s_clmulTableSizeInBlocks = 8;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -73,11 +73,6 @@ being unloaded from L1 cache, until that round is finished.
|
||||||
#include "misc.h"
|
#include "misc.h"
|
||||||
#include "cpu.h"
|
#include "cpu.h"
|
||||||
|
|
||||||
#if CRYPTOPP_BOOL_AESNI_INTRINSICS_AVAILABLE
|
|
||||||
#include <smmintrin.h>
|
|
||||||
#include <wmmintrin.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NAMESPACE_BEGIN(CryptoPP)
|
NAMESPACE_BEGIN(CryptoPP)
|
||||||
|
|
||||||
#ifdef CRYPTOPP_ALLOW_UNALIGNED_DATA_ACCESS
|
#ifdef CRYPTOPP_ALLOW_UNALIGNED_DATA_ACCESS
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue