summaryrefslogtreecommitdiff
path: root/gcm.cpp
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2018-11-17 00:41:49 -0500
committerJeffrey Walton <noloader@gmail.com>2018-11-17 00:41:49 -0500
commitbbc5c63d332e317ca7ceb7b71e59a517a16b71d8 (patch)
treef93d3c627340776b2119f4d4408005e73a814127 /gcm.cpp
parent0ac7b252213cac5a9be61f45319d90f9cf207150 (diff)
downloadcryptopp-git-bbc5c63d332e317ca7ceb7b71e59a517a16b71d8.tar.gz
Drop GCM to POWER7 on PowerPC
GCM can do some bulk XOR's using the SIMD unit. However, we still need loads and stores to be fast. Fast loads and stores of unaligned data requires the VSX unit
Diffstat (limited to 'gcm.cpp')
-rw-r--r--gcm.cpp22
1 files changed, 11 insertions, 11 deletions
diff --git a/gcm.cpp b/gcm.cpp
index 59236ac2..473477c4 100644
--- a/gcm.cpp
+++ b/gcm.cpp
@@ -75,8 +75,8 @@ extern void GCM_Xor16_SSE2(byte *a, const byte *b, const byte *c);
extern void GCM_Xor16_NEON(byte *a, const byte *b, const byte *c);
#endif
-#if CRYPTOPP_ALTIVEC_AVAILABLE
-extern void GCM_Xor16_ALTIVEC(byte *a, const byte *b, const byte *c);
+#if CRYPTOPP_POWER7_AVAILABLE
+extern void GCM_Xor16_POWER7(byte *a, const byte *b, const byte *c);
#endif
#if CRYPTOPP_CLMUL_AVAILABLE
@@ -213,11 +213,11 @@ void GCM_Base::SetKeyWithoutResync(const byte *userKey, size_t keylength, const
for (k=1; k<j; k++)
GCM_Xor16_NEON(mulTable+i*256*16+(j+k)*16, mulTable+i*256*16+j*16, mulTable+i*256*16+k*16);
else
-#elif CRYPTOPP_ALTIVEC_AVAILABLE
- if (HasAltivec())
+#elif CRYPTOPP_POWER7_AVAILABLE
+ if (HasPower7())
for (j=2; j<=0x80; j*=2)
for (k=1; k<j; k++)
- GCM_Xor16_ALTIVEC(mulTable+i*256*16+(j+k)*16, mulTable+i*256*16+j*16, mulTable+i*256*16+k*16);
+ GCM_Xor16_POWER7(mulTable+i*256*16+(j+k)*16, mulTable+i*256*16+j*16, mulTable+i*256*16+k*16);
else
#endif
for (j=2; j<=0x80; j*=2)
@@ -277,13 +277,13 @@ void GCM_Base::SetKeyWithoutResync(const byte *userKey, size_t keylength, const
GCM_Xor16_NEON(mulTable+1024+i*256+(j+k)*16, mulTable+1024+i*256+j*16, mulTable+1024+i*256+k*16);
}
else
-#elif CRYPTOPP_ALTIVEC_AVAILABLE
- if (HasAltivec())
+#elif CRYPTOPP_POWER7_AVAILABLE
+ if (HasPower7())
for (j=2; j<=8; j*=2)
for (k=1; k<j; k++)
{
- GCM_Xor16_ALTIVEC(mulTable+i*256+(j+k)*16, mulTable+i*256+j*16, mulTable+i*256+k*16);
- GCM_Xor16_ALTIVEC(mulTable+1024+i*256+(j+k)*16, mulTable+1024+i*256+j*16, mulTable+1024+i*256+k*16);
+ GCM_Xor16_POWER7(mulTable+i*256+(j+k)*16, mulTable+i*256+j*16, mulTable+i*256+k*16);
+ GCM_Xor16_POWER7(mulTable+1024+i*256+(j+k)*16, mulTable+1024+i*256+j*16, mulTable+1024+i*256+k*16);
}
else
#endif
@@ -369,8 +369,8 @@ unsigned int GCM_Base::OptimalDataAlignment() const
HasSSE2() ? 16 :
#elif CRYPTOPP_ARM_NEON_AVAILABLE
HasNEON() ? 4 :
-#elif CRYPTOPP_ALTIVEC_AVAILABLE
- HasAltivec() ? 16 :
+#elif CRYPTOPP_POWER7_AVAILABLE
+ HasPower7() ? 16 :
#endif
GetBlockCipher().OptimalDataAlignment();
}