summaryrefslogtreecommitdiff
path: root/gcm.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2016-09-12 17:47:12 -0400
committerJeffrey Walton <noloader@gmail.com>2016-09-12 17:47:12 -0400
commit4f7fb2067df41dd8bccdb86251146ca35a6fa4a7 (patch)
tree2931b4d292efa656b6a90ffef36f82b29dd93bdc /gcm.cpp
parent3c9096a85d18a1c7f8509b5a381dd7881a484c18 (diff)
downloadcryptopp-git-4f7fb2067df41dd8bccdb86251146ca35a6fa4a7.tar.gz
Cleaned up use of assembler mnemonics
Diffstat (limited to 'gcm.cpp')
-rw-r--r--gcm.cpp21
1 files changed, 15 insertions, 6 deletions
diff --git a/gcm.cpp b/gcm.cpp
index 690f2002..edb11766 100644
--- a/gcm.cpp
+++ b/gcm.cpp
@@ -28,6 +28,15 @@
NAMESPACE_BEGIN(CryptoPP)
+// Different assemblers accept different mnemonic: 'movd eax, xmm0' vs 'movd rax, xmm0' vs 'mov eax, xmm0' vs 'mov rax, xmm0'
+#if (CRYPTOPP_LLVM_CLANG_VERSION >= 30600) || (CRYPTOPP_APPLE_CLANG_VERSION >= 70000) || defined(CRYPTOPP_CLANG_INTEGRATED_ASSEMBLER)
+# define USE_MOVD_EXX_REG 1
+#elif (defined(CRYPTOPP_LLVM_CLANG_VERSION) || defined(CRYPTOPP_APPLE_CLANG_VERSION)) && defined(CRYPTOPP_X64_ASM_AVAILABLE)
+# define USE_MOVD_EXX_OR_RXX_REG 1
+#else // GNU Assembler
+# define USE_MOV_EXX_OR_RXX_REG 1
+#endif
+
word16 GCM_Base::s_reductionTable[256];
volatile bool GCM_Base::s_reductionTableInitialized = false;
@@ -887,9 +896,9 @@ size_t GCM_Base::AuthenticateBlocks(const byte *data, size_t len)
AS2( pxor xmm5, xmm2 )
AS2( psrldq xmm0, 15 )
-#if (CRYPTOPP_LLVM_CLANG_VERSION >= 30600) || (CRYPTOPP_APPLE_CLANG_VERSION >= 70000) || defined(CRYPTOPP_CLANG_INTEGRATED_ASSEMBLER)
+#if USE_MOVD_EXX_REG
AS2( movd edi, xmm0 )
-#elif (defined(CRYPTOPP_LLVM_CLANG_VERSION) || defined(CRYPTOPP_APPLE_CLANG_VERSION)) && defined(CRYPTOPP_X64_ASM_AVAILABLE)
+#elif USE_MOVD_EXX_OR_RXX_REG
AS2( mov WORD_REG(di), xmm0 )
#else // GNU Assembler
AS2( movd WORD_REG(di), xmm0 )
@@ -902,9 +911,9 @@ size_t GCM_Base::AuthenticateBlocks(const byte *data, size_t len)
AS2( pxor xmm4, xmm5 )
AS2( psrldq xmm1, 15 )
-#if (CRYPTOPP_LLVM_CLANG_VERSION >= 30600) || (CRYPTOPP_APPLE_CLANG_VERSION >= 70000) || defined(CRYPTOPP_CLANG_INTEGRATED_ASSEMBLER)
+#if USE_MOVD_EXX_REG
AS2( movd edi, xmm1 )
-#elif (defined(CRYPTOPP_LLVM_CLANG_VERSION) || defined(CRYPTOPP_APPLE_CLANG_VERSION)) && defined(CRYPTOPP_X64_ASM_AVAILABLE)
+#elif USE_MOVD_EXX_OR_RXX_REG
AS2( mov WORD_REG(di), xmm1 )
#else
AS2( movd WORD_REG(di), xmm1 )
@@ -913,9 +922,9 @@ size_t GCM_Base::AuthenticateBlocks(const byte *data, size_t len)
AS2( shl eax, 8 )
AS2( psrldq xmm0, 15 )
-#if (CRYPTOPP_LLVM_CLANG_VERSION >= 30600) || (CRYPTOPP_APPLE_CLANG_VERSION >= 70000) || defined(CRYPTOPP_CLANG_INTEGRATED_ASSEMBLER)
+#if USE_MOVD_EXX_REG
AS2( movd edi, xmm0 )
-#elif (defined(CRYPTOPP_LLVM_CLANG_VERSION) || defined(CRYPTOPP_APPLE_CLANG_VERSION)) && defined(CRYPTOPP_X64_ASM_AVAILABLE)
+#elif USE_MOVD_EXX_OR_RXX_REG
AS2( mov WORD_REG(di), xmm0 )
#else
AS2( movd WORD_REG(di), xmm0 )