summaryrefslogtreecommitdiff
path: root/misc.h
diff options
context:
space:
mode:
authorweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2007-09-25 06:22:24 +0000
committerweidai <weidai@57ff6487-cd31-0410-9ec3-f628ee90f5f0>2007-09-25 06:22:24 +0000
commit71a14f0fc23712e5f742f4022959dcd43d95d9a6 (patch)
tree0013b2e64693946aff49ef7963d0e71126ef41d6 /misc.h
parent2457d75233d09ad58d97203739fdb994b0457b06 (diff)
downloadcryptopp-71a14f0fc23712e5f742f4022959dcd43d95d9a6.tar.gz
don't use _rotl64 with ICC
git-svn-id: svn://svn.code.sf.net/p/cryptopp/code/trunk/c5@408 57ff6487-cd31-0410-9ec3-f628ee90f5f0
Diffstat (limited to 'misc.h')
-rw-r--r--misc.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/misc.h b/misc.h
index 089308c..132db7c 100644
--- a/misc.h
+++ b/misc.h
@@ -485,7 +485,10 @@ template<> inline word32 rotrMod<word32>(word32 x, unsigned int y)
return _lrotr(x, y);
}
-#if _MSC_VER >= 1300
+#endif // #ifdef _MSC_VER
+
+#if _MSC_VER >= 1300 && !defined(__INTEL_COMPILER)
+// Intel C++ Compiler 10.0 calls a function instead of using the rotate instruction when using these instructions
template<> inline word64 rotlFixed<word64>(word64 x, unsigned int y)
{
@@ -524,6 +527,7 @@ template<> inline word64 rotrMod<word64>(word64 x, unsigned int y)
#endif // #if _MSC_VER >= 1310
#if _MSC_VER >= 1400 && !defined(__INTEL_COMPILER)
+// Intel C++ Compiler 10.0 gives undefined externals with these
template<> inline word16 rotlFixed<word16>(word16 x, unsigned int y)
{
@@ -595,8 +599,6 @@ template<> inline byte rotrMod<byte>(byte x, unsigned int y)
#endif // #if _MSC_VER >= 1400
-#endif // #ifdef _MSC_VER
-
#if (defined(__MWERKS__) && TARGET_CPU_PPC)
template<> inline word32 rotlFixed<word32>(word32 x, unsigned int y)