Updated test scripts for ARM NEON

pull/425/head
Jeffrey Walton 2017-05-17 10:59:22 -04:00
parent a59e32be73
commit 5b81b5c66c
No known key found for this signature in database
GPG Key ID: B36AB348921B1838
2 changed files with 42 additions and 34 deletions

View File

@ -1461,46 +1461,50 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]
echo "Testing: ARM NEON code generation" | tee -a "$TEST_RESULTS"
echo
OBJFILE=blake2.o; rm -f "$OBJFILE" 2>/dev/null
OBJFILE=aria.o; rm -f "$OBJFILE" 2>/dev/null
CXX="$CXX" CXXFLAGS="$RELEASE_CXXFLAGS ${PLATFORM_CXXFLAGS[@]}" "$MAKE" "${MAKEARGS[@]}" $OBJFILE 2>&1 | tee -a "$TEST_RESULTS"
COUNT=0
FAILED=0
DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null)
# BLAKE2_NEON_Compress32: 30 each vld1q_u8 and vld1q_u64
# BLAKE2_NEON_Compress64: 22 each vld1q_u8 and vld1q_u64
COUNT1=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'ldr.*q|vld.*128')
COUNT2=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'ldp.*q')
COUNT=$(($COUNT1 + $(($COUNT2 + $COUNT2))))
if [[ ("$COUNT" -lt "25") ]]; then
# ARIA::UncheckedKeySet: 8 vld1q.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vld')
if [[ ("$COUNT" -lt "8") ]]; then
FAILED=1
echo "ERROR: failed to generate expected vector load instructions" | tee -a "$TEST_RESULTS"
fi
# BLAKE2_NEON_Compress{32|64}: 6 each vst1q_u32 and vst1q_u64
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'str.*q|vstr')
if [[ ("$COUNT" -lt "6") ]]; then
# ARIA::UncheckedKeySet: 24 vstr1q.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vst')
if [[ ("$COUNT" -lt "24") ]]; then
FAILED=1
echo "ERROR: failed to generate expected vector store instructions" | tee -a "$TEST_RESULTS"
fi
# BLAKE2_NEON_Compress{32|64}: 409 each vaddq_u32 and vaddq_u64
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'add.*v|vadd')
if [[ ("$COUNT" -lt "400") ]]; then
# ARIA::UncheckedKeySet: 17 vshl.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vshl')
if [[ ("$COUNT" -lt "17") ]]; then
FAILED=1
echo "ERROR: failed to generate expected vector add instructions" | tee -a "$TEST_RESULTS"
echo "ERROR: failed to generate expected vector shift left instructions" | tee -a "$TEST_RESULTS"
fi
# BLAKE2_NEON_Compress{32|64}: 559 each veorq_u32 and veorq_u64
# ARIA::UncheckedKeySet: 17 vshr.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vshl')
if [[ ("$COUNT" -lt "17") ]]; then
FAILED=1
echo "ERROR: failed to generate expected vector shift right instructions" | tee -a "$TEST_RESULTS"
fi
# ARIA::UncheckedKeySet: 34 veor
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'eor.*v|veor')
if [[ ("$COUNT" -lt "550") ]]; then
if [[ ("$COUNT" -lt "34") ]]; then
FAILED=1
echo "ERROR: failed to generate expected vector xor instructions" | tee -a "$TEST_RESULTS"
fi
if [[ ("$FAILED" -eq "0") ]]; then
echo "Verified vector load, store, add, xor machine instructions" | tee -a "$TEST_RESULTS"
echo "Verified vector load, store, shfit left, shift right, xor machine instructions" | tee -a "$TEST_RESULTS"
fi
fi

View File

@ -1461,46 +1461,50 @@ if [[ ("$HAVE_DISASS" -ne "0" && ("$IS_ARM32" -ne "0" || "$IS_ARM64" -ne "0")) ]
echo "Testing: ARM NEON code generation" | tee -a "$TEST_RESULTS"
echo
OBJFILE=blake2.o; rm -f "$OBJFILE" 2>/dev/null
OBJFILE=aria.o; rm -f "$OBJFILE" 2>/dev/null
CXX="$CXX" CXXFLAGS="$RELEASE_CXXFLAGS ${PLATFORM_CXXFLAGS[@]}" "$MAKE" "${MAKEARGS[@]}" $OBJFILE 2>&1 | tee -a "$TEST_RESULTS"
COUNT=0
FAILED=0
DISASS_TEXT=$("$DISASS" "${DISASSARGS[@]}" "$OBJFILE" 2>/dev/null)
# BLAKE2_NEON_Compress32: 30 each vld1q_u8 and vld1q_u64
# BLAKE2_NEON_Compress64: 22 each vld1q_u8 and vld1q_u64
COUNT1=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'ldr.*q|vld.*128')
COUNT2=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'ldp.*q')
COUNT=$(($COUNT1 + $(($COUNT2 + $COUNT2))))
if [[ ("$COUNT" -lt "25") ]]; then
# ARIA::UncheckedKeySet: 8 vld1q.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vld')
if [[ ("$COUNT" -lt "8") ]]; then
FAILED=1
echo "ERROR: failed to generate expected vector load instructions" | tee -a "$TEST_RESULTS"
fi
# BLAKE2_NEON_Compress{32|64}: 6 each vst1q_u32 and vst1q_u64
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'str.*q|vstr')
if [[ ("$COUNT" -lt "6") ]]; then
# ARIA::UncheckedKeySet: 24 vstr1q.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vst')
if [[ ("$COUNT" -lt "24") ]]; then
FAILED=1
echo "ERROR: failed to generate expected vector store instructions" | tee -a "$TEST_RESULTS"
fi
# BLAKE2_NEON_Compress{32|64}: 409 each vaddq_u32 and vaddq_u64
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'add.*v|vadd')
if [[ ("$COUNT" -lt "400") ]]; then
# ARIA::UncheckedKeySet: 17 vshl.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vshl')
if [[ ("$COUNT" -lt "17") ]]; then
FAILED=1
echo "ERROR: failed to generate expected vector add instructions" | tee -a "$TEST_RESULTS"
echo "ERROR: failed to generate expected vector shift left instructions" | tee -a "$TEST_RESULTS"
fi
# BLAKE2_NEON_Compress{32|64}: 559 each veorq_u32 and veorq_u64
# ARIA::UncheckedKeySet: 17 vshr.32
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'vshl')
if [[ ("$COUNT" -lt "17") ]]; then
FAILED=1
echo "ERROR: failed to generate expected vector shift right instructions" | tee -a "$TEST_RESULTS"
fi
# ARIA::UncheckedKeySet: 34 veor
COUNT=$(echo -n "$DISASS_TEXT" | "$EGREP" -i -c 'eor.*v|veor')
if [[ ("$COUNT" -lt "550") ]]; then
if [[ ("$COUNT" -lt "34") ]]; then
FAILED=1
echo "ERROR: failed to generate expected vector xor instructions" | tee -a "$TEST_RESULTS"
fi
if [[ ("$FAILED" -eq "0") ]]; then
echo "Verified vector load, store, add, xor machine instructions" | tee -a "$TEST_RESULTS"
echo "Verified vector load, store, shfit left, shift right, xor machine instructions" | tee -a "$TEST_RESULTS"
fi
fi