From c51856dd204a2dad278a2dd897428bc6f405f137 Mon Sep 17 00:00:00 2001 From: Jeffrey Walton Date: Sun, 11 Mar 2018 19:25:42 -0400 Subject: [PATCH] Add Power8 code generation tests to cryptest.sh --- TestScripts/cryptest.sh | 51 +++++++++++++++++++++++++++++++++++++++++ cryptest.sh | 51 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) diff --git a/TestScripts/cryptest.sh b/TestScripts/cryptest.sh index 3732880e..c59cef86 100755 --- a/TestScripts/cryptest.sh +++ b/TestScripts/cryptest.sh @@ -1815,6 +1815,57 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_PPC32" -ne "0" || "$IS_PPC64" -ne "0")) ] echo "Verified vcipher, vcipherlast,vncipher, vncipherlast machine instructions" | tee -a "$TEST_RESULTS" fi fi + + ############################################ + # Power8 SHA + + PPC_SHA=0 + if [[ ("$PPC_SHA" -eq "0") ]]; then + "$CXX" -DCRYPTOPP_ADHOC_MAIN -mcpu=power8 adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1 + if [[ "$?" -eq "0" ]]; then + PPC_SHA=1 + PPC_SHA_FLAGS="-mcpu=power8" + fi + fi + if [[ ("$PPC_SHA" -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_SHA=1 + PPC_SHA_FLAGS="-qarch=pwr8 -qaltivec" + fi + fi + + if [[ ("$PPC_SHA" -ne "0") ]]; then + echo + echo "************************************" | tee -a "$TEST_RESULTS" + echo "Testing: Power8 SHA generation" | tee -a "$TEST_RESULTS" + echo + + TEST_LIST+=("Power8 SHA generation") + + OBJFILE=sha-simd.o; rm -f "$OBJFILE" 2>/dev/null + CXX="$CXX" CXXFLAGS="$RELEASE_CXXFLAGS $PPC_SHA_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 -c vshasigmaw) + if [[ ("$COUNT" -eq "0") ]]; then + FAILED=1 + echo "ERROR: failed to generate vshasigmaw instruction" | tee -a "$TEST_RESULTS" + fi + + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c vshasigmad) + if [[ ("$COUNT" -eq "0") ]]; then + FAILED=1 + echo "ERROR: failed to generate vshasigmad instruction" | tee -a "$TEST_RESULTS" + fi + + if [[ ("$FAILED" -eq "0") ]]; then + echo "Verified vshasigmaw and vshasigmad machine instructions" | tee -a "$TEST_RESULTS" + fi + fi fi ############################################ diff --git a/cryptest.sh b/cryptest.sh index 3732880e..c59cef86 100755 --- a/cryptest.sh +++ b/cryptest.sh @@ -1815,6 +1815,57 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_PPC32" -ne "0" || "$IS_PPC64" -ne "0")) ] echo "Verified vcipher, vcipherlast,vncipher, vncipherlast machine instructions" | tee -a "$TEST_RESULTS" fi fi + + ############################################ + # Power8 SHA + + PPC_SHA=0 + if [[ ("$PPC_SHA" -eq "0") ]]; then + "$CXX" -DCRYPTOPP_ADHOC_MAIN -mcpu=power8 adhoc.cpp -o "$TMPDIR/adhoc.exe" > /dev/null 2>&1 + if [[ "$?" -eq "0" ]]; then + PPC_SHA=1 + PPC_SHA_FLAGS="-mcpu=power8" + fi + fi + if [[ ("$PPC_SHA" -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_SHA=1 + PPC_SHA_FLAGS="-qarch=pwr8 -qaltivec" + fi + fi + + if [[ ("$PPC_SHA" -ne "0") ]]; then + echo + echo "************************************" | tee -a "$TEST_RESULTS" + echo "Testing: Power8 SHA generation" | tee -a "$TEST_RESULTS" + echo + + TEST_LIST+=("Power8 SHA generation") + + OBJFILE=sha-simd.o; rm -f "$OBJFILE" 2>/dev/null + CXX="$CXX" CXXFLAGS="$RELEASE_CXXFLAGS $PPC_SHA_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 -c vshasigmaw) + if [[ ("$COUNT" -eq "0") ]]; then + FAILED=1 + echo "ERROR: failed to generate vshasigmaw instruction" | tee -a "$TEST_RESULTS" + fi + + COUNT=$(echo -n "$DISASS_TEXT" | "$GREP" -i -c vshasigmad) + if [[ ("$COUNT" -eq "0") ]]; then + FAILED=1 + echo "ERROR: failed to generate vshasigmad instruction" | tee -a "$TEST_RESULTS" + fi + + if [[ ("$FAILED" -eq "0") ]]; then + echo "Verified vshasigmaw and vshasigmad machine instructions" | tee -a "$TEST_RESULTS" + fi + fi fi ############################################