| #!/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 |