diff options
author | Jeffrey Walton <noloader@gmail.com> | 2018-11-17 00:41:49 -0500 |
---|---|---|
committer | Jeffrey Walton <noloader@gmail.com> | 2018-11-17 00:41:49 -0500 |
commit | bbc5c63d332e317ca7ceb7b71e59a517a16b71d8 (patch) | |
tree | f93d3c627340776b2119f4d4408005e73a814127 /gcm.cpp | |
parent | 0ac7b252213cac5a9be61f45319d90f9cf207150 (diff) | |
download | cryptopp-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.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
@@ -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();
}
|