76 lines
2.0 KiB
Plaintext
76 lines
2.0 KiB
Plaintext
|
#!/bin/sh
|
||
|
|
||
|
# check_simd <srcdir> <builddir> <CXXFLAGS>
|
||
|
# Read config from $CHECK_SIMD_CONFIG file or $target_list
|
||
|
|
||
|
scriptdir="$(cd "${0%/*}" && pwd)"
|
||
|
srcdir="$1"
|
||
|
builddir="$2"
|
||
|
shift 2
|
||
|
testdir="$builddir/testsuite"
|
||
|
|
||
|
CXX="$("$builddir/scripts/testsuite_flags" --build-cxx)"
|
||
|
CXXFLAGS="$("$builddir/scripts/testsuite_flags" --cxxflags) $1 -Wno-psabi"
|
||
|
shift
|
||
|
INCLUDES="$("$builddir/scripts/testsuite_flags" --build-includes)"
|
||
|
|
||
|
target_triplet=$($CXX -dumpmachine)
|
||
|
|
||
|
define_target() {
|
||
|
name="$1"
|
||
|
flags="$2"
|
||
|
sim="$3"
|
||
|
eval "$name=\"flags=\\\"$flags\\\"
|
||
|
sim=\\\"$sim\\\"\""
|
||
|
}
|
||
|
|
||
|
if [ -f "$CHECK_SIMD_CONFIG" ]; then
|
||
|
. "$CHECK_SIMD_CONFIG"
|
||
|
elif [ -z "$CHECK_SIMD_CONFIG" ]; then
|
||
|
if [ -z "$target_list" ]; then
|
||
|
target_list="unix"
|
||
|
case "$target_triplet" in
|
||
|
x86_64-*) target_list="unix/-march=native" ;;
|
||
|
i?86-*) target_list="unix/-march=native" ;;
|
||
|
powerpc64le-*) target_list="unix/-mcpu=power8" ;;
|
||
|
aarch64-*) target_list="unix/-mcpu=cortex-a53" ;;
|
||
|
arm-*) target_list="unix/-mcpu=cortex-a7" ;;
|
||
|
esac
|
||
|
fi
|
||
|
else
|
||
|
echo "Error: File not found: \$CHECK_SIMD_CONFIG='$CHECK_SIMD_CONFIG'" 1>&2
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# define unix with no flags and no simulator:
|
||
|
define_target unix
|
||
|
|
||
|
list="$target_list"
|
||
|
|
||
|
# expand a{b,c} to a/b a/c
|
||
|
while [ "${list#*\{}" != "${list}" ]; do
|
||
|
list="$(echo "$list" | \
|
||
|
sed -e 's#\([^ ]\+\){\([^{},]*\),\([^{}]*\)}\(/[^ ]*\)\?#\1/\2\4 \1{\3}\4#g' \
|
||
|
-e 's#{\([^{},]*\)}#/\1#g' \
|
||
|
-e 's#/ # #g' -e 's#/$##')"
|
||
|
done
|
||
|
|
||
|
# per a/b/c block extract flags and simulator, then make check-simd
|
||
|
while [ ${#list} -gt 0 ]; do
|
||
|
a="${list%% *}"
|
||
|
if [ "$a" = "$list" ]; then
|
||
|
list=""
|
||
|
else
|
||
|
list="${list#${a} }"
|
||
|
fi
|
||
|
b="${a%%/*}"
|
||
|
eval "eval \"\$$b\""
|
||
|
flags="${flags}$(echo "${a#${b}}"|sed 's#/# #g')"
|
||
|
subdir="simd/$(echo "$flags" | sed 's#[= /-]##g')"
|
||
|
rm -f "${subdir}/Makefile"
|
||
|
$srcdir/testsuite/experimental/simd/generate_makefile.sh \
|
||
|
--destination="$testdir/$subdir" --sim="$sim" --testflags="$flags" \
|
||
|
$CXX $INCLUDES $CXXFLAGS -static-libgcc -static-libstdc++
|
||
|
echo "$subdir"
|
||
|
done
|