summaryrefslogtreecommitdiff
path: root/rijndael.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2018-08-18 04:44:53 -0400
committerGitHub <noreply@github.com>2018-08-18 04:44:53 -0400
commit4282f94712ee7b86c36fc656f377d2ce78532f0c (patch)
tree6057c2539f6c7b3fd9daa6a83d1a6de5e8018392 /rijndael.cpp
parent06cf2ede9e043b4c25eb3521cf67fcebb41b7629 (diff)
downloadcryptopp-git-4282f94712ee7b86c36fc656f377d2ce78532f0c.tar.gz
Disable X32 inline assembly (GH #686, PR #704)
Also use CRYPTOPP_DISABLE_XXX_ASM consistently. The pattern is needed for Clang which still can't compile Intel assembly language. Also see http://llvm.org/bugs/show_bug.cgi?id=24232.
Diffstat (limited to 'rijndael.cpp')
-rw-r--r--rijndael.cpp17
1 files changed, 6 insertions, 11 deletions
diff --git a/rijndael.cpp b/rijndael.cpp
index 284135ce..3a55f528 100644
--- a/rijndael.cpp
+++ b/rijndael.cpp
@@ -90,11 +90,6 @@ being unloaded from L1 cache, until that round is finished.
NAMESPACE_BEGIN(CryptoPP)
-// Clang 3.3 integrated assembler crash on Linux
-#if CRYPTOPP_BOOL_X32 || (defined(CRYPTOPP_LLVM_CLANG_VERSION) && (CRYPTOPP_LLVM_CLANG_VERSION < 30400))
-# define CRYPTOPP_DISABLE_RIJNDAEL_ASM
-#endif
-
// Hack for http://github.com/weidai11/cryptopp/issues/42 and http://github.com/weidai11/cryptopp/issues/132
#if (CRYPTOPP_SSE2_ASM_AVAILABLE || defined(CRYPTOPP_X64_MASM_AVAILABLE))
# define CRYPTOPP_ALLOW_RIJNDAEL_UNALIGNED_DATA_ACCESS 1
@@ -769,7 +764,7 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
{
CRYPTOPP_UNUSED(locals); CRYPTOPP_UNUSED(k);
-#if CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32
+#if CRYPTOPP_BOOL_X86
#define L_REG esp
#define L_INDEX(i) (L_REG+768+i)
@@ -869,7 +864,7 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
AS2( mov edi, [g_cacheLineSize])
#endif
-#if CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32
+#if CRYPTOPP_BOOL_X86
AS2( mov [ecx+16*12+16*4], esp) // save esp to L_SP
AS2( lea esp, [ecx-768])
#endif
@@ -929,7 +924,7 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
AS2( movd eax, xmm1)
AS2( mov al, BYTE PTR [WORD_REG(si)+15])
AS2( MOVD MM(2), eax)
-#if CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32
+#if CRYPTOPP_BOOL_X86
AS2( mov eax, 1)
AS2( movd mm3, eax)
#endif
@@ -1057,7 +1052,7 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
AS2( xor cl, ch)
AS2( and WORD_REG(cx), 255)
ASL(5)
-#if CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32
+#if CRYPTOPP_BOOL_X86
AS2( paddb MM(2), mm3)
#else
AS2( add MM(2), 1)
@@ -1158,7 +1153,7 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
AS2( movdqu xmm2, [WORD_REG(ax)])
AS2( pxor xmm2, xmm4)
-#if CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32
+#if CRYPTOPP_BOOL_X86
AS2( movdqa xmm0, [L_INCREMENTS])
AS2( paddd xmm0, [L_INBLOCKS])
AS2( movdqa [L_INBLOCKS], xmm0)
@@ -1206,7 +1201,7 @@ CRYPTOPP_NAKED void CRYPTOPP_FASTCALL Rijndael_Enc_AdvancedProcessBlocks(void *l
AS2( movaps [WORD_REG(ax)+4*16], xmm0)
AS2( movaps [WORD_REG(ax)+5*16], xmm0)
AS2( movaps [WORD_REG(ax)+6*16], xmm0)
-#if CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32
+#if CRYPTOPP_BOOL_X86
AS2( mov esp, [L_SP])
AS1( emms)
#endif