summaryrefslogtreecommitdiff
path: root/TestScripts
diff options
context:
space:
mode:
authorJeffrey Walton <noloader@gmail.com>2017-09-09 14:56:47 -0400
committerJeffrey Walton <noloader@gmail.com>2017-09-09 14:56:47 -0400
commit2118ce8fea9ab0f2e02893584ce05c9db7b50883 (patch)
tree54e2726c3956850b6c81ea258492f15f8ab55b0e /TestScripts
parent3771bc13051b55e084bc08d97594f4a741784318 (diff)
downloadcryptopp-git-2118ce8fea9ab0f2e02893584ce05c9db7b50883.tar.gz
Add Power8 support to cryptest.sh
Diffstat (limited to 'TestScripts')
-rwxr-xr-xTestScripts/cryptest.sh81
1 files changed, 76 insertions, 5 deletions
diff --git a/TestScripts/cryptest.sh b/TestScripts/cryptest.sh
index d73e0a8f..b620420e 100755
--- a/TestScripts/cryptest.sh
+++ b/TestScripts/cryptest.sh
@@ -112,7 +112,8 @@ IS_UBUNTU=$(lsb_release -a 2>&1 | "$GREP" -i -c ubuntu)
THIS_MACHINE=$(uname -m 2>&1)
IS_X86=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(i386|i486|i686|i686)")
IS_X64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(amd64|x86_64)")
-IS_PPC=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(Power|PPC)")
+IS_PPC32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$GREP" -i -c -E "(Power|PPC)")
+IS_PPC64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(Power64|PPC64)")
IS_ARM32=$(echo -n "$THIS_MACHINE" | "$GREP" -v "64" | "$GREP" -i -c -E "(arm|aarch32)")
IS_ARM64=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c -E "(arm64|aarch64)")
IS_S390=$(echo -n "$THIS_MACHINE" | "$GREP" -i -c "s390")
@@ -203,6 +204,7 @@ fi
SUN_COMPILER=$("$CXX" -V 2>&1 | "$GREP" -i -c -E "CC: (Sun|Studio)")
GCC_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -v "clang" | "$GREP" -i -c -E "(gcc|g\+\+)")
+XLC_COMPILER=$("$CXX" -qversion 2>&1 | "$GREP" -i -c "IBM XL")
INTEL_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "\(icc\)")
MACPORTS_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "MacPorts")
CLANG_COMPILER=$("$CXX" --version 2>&1 | "$GREP" -i -c "clang")
@@ -550,7 +552,7 @@ fi
rm -f "$TMPDIR/adhoc.exe" > /dev/null 2>&1
if [[ (-z "$HAVE_PPC_MULTIARCH") ]]; then
HAVE_PPC_MULTIARCH=0
- if [[ ("$IS_DARWIN" -ne "0") && ("$IS_PPC" -ne "0") ]]; then
+ if [[ ("$IS_DARWIN" -ne "0") && ("$IS_PPC32" -ne "0" || "$IS_PPC64" -ne "0") ]]; then
"$CXX" -DCRYPTOPP_ADHOC_MAIN -arch ppc -arch ppc64 adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1
if [[ "$?" -eq "0" ]]; then
HAVE_PPC_MULTIARCH=1
@@ -712,8 +714,10 @@ elif [[ "$IS_AIX" -ne "0" ]]; then
echo "IS_AIX: $IS_AIX" | tee -a "$TEST_RESULTS"
fi
-if [[ "$IS_PPC" -ne "0" ]]; then
- echo "IS_PPC: $IS_PPC" | tee -a "$TEST_RESULTS"
+if [[ "$IS_PPC64" -ne "0" ]]; then
+ echo "IS_PPC64: $IS_PPC64" | tee -a "$TEST_RESULTS"
+elif [[ "$IS_PPC32" -ne "0" ]]; then
+ echo "IS_PPC32: $IS_PPC32" | tee -a "$TEST_RESULTS"
fi
if [[ "$IS_ARM64" -ne "0" ]]; then
echo "IS_ARM64: $IS_ARM64" | tee -a "$TEST_RESULTS"
@@ -1486,8 +1490,9 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]
echo "Verified pmull and pmull2 machine instructions" | tee -a "$TEST_RESULTS"
fi
fi
+
############################################
- # ARM SHA code generation
+ # ARM AES code generation
"$CXX" -DCRYPTOPP_ADHOC_MAIN -march=armv8-a+crypto adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1
if [[ "$?" -eq "0" ]]; then
@@ -1624,6 +1629,72 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]
fi
############################################
+# Power8 code generation tests
+if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_PPC32" -ne "0" || "$IS_PPC64" -ne "0")) ]]; then
+
+ ############################################
+ # Power8 AES
+
+ PPC_AES=0
+ if [[ ("$PPC_AES" -eq "0") ]]; then
+ "$CXX" -DCRYPTOPP_ADHOC_MAIN -mcpu=power8 adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1
+ if [[ "$?" -eq "0" ]]; then
+ PPC_AES=1
+ PPC_AES_FLAGS="-mcpu=power8"
+ fi
+ fi
+ if [[ ("$PPC_AES" -eq "0") ]]; then
+ "$CXX" -DCRYPTOPP_ADHOC_MAIN -qarch=pwr8 -qaltivec adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1
+ if [[ "$?" -eq "0" ]]; then
+ PPC_AES=1
+ PPC_AES_FLAGS="-qarch=pwr8 -qaltivec"
+ fi
+ fi
+
+ if [[ ("$PPC_AES" -ne "0") ]]; then
+ echo
+ echo "************************************" | tee -a "$TEST_RESULTS"
+ echo "Testing: Power8 AES generation" | tee -a "$TEST_RESULTS"
+ echo
+
+ OBJFILE=rijndael-simd.o; rm -f "$OBJFILE" 2>/dev/null
+ CXX="$CXX" CXXFLAGS="$RELEASE_CXXFLAGS $PPC_AES_FLAGS" "$MAKE" "${MAKEARGS[@]}" $OBJFILE 2>&1 | tee -a "$TEST_RESULTS"
+
+ COUNT=0
+ FAILED=0
+ DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null)
+
+ COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -v vcipherlast | "$GREP" -i -c vcipher)
+ if [[ ("$COUNT" -eq "0") ]]; then
+ FAILED=1
+ echo "ERROR: failed to generate vcipher instruction" | tee -a "$TEST_RESULTS"
+ fi
+
+ COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c vcipherlast)
+ if [[ ("$COUNT" -eq "0") ]]; then
+ FAILED=1
+ echo "ERROR: failed to generate vcipherlast instruction" | tee -a "$TEST_RESULTS"
+ fi
+
+ COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -v vncipherlast | "$GREP" -i -c vncipher)
+ if [[ ("$COUNT" -eq "0") ]]; then
+ FAILED=1
+ echo "ERROR: failed to generate vncipher instruction" | tee -a "$TEST_RESULTS"
+ fi
+
+ COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c vncipherlast)
+ if [[ ("$COUNT" -eq "0") ]]; then
+ FAILED=1
+ echo "ERROR: failed to generate vncipherlast instruction" | tee -a "$TEST_RESULTS"
+ fi
+
+ if [[ ("$FAILED" -eq "0") ]]; then
+ echo "Verified vcipher, vcipherlast,vncipher, vncipherlast machine instructions" | tee -a "$TEST_RESULTS"
+ fi
+ fi
+fi
+
+############################################
# Default CXXFLAGS
if true; then
############################################