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