1*b1e83836Smrg#!/bin/sh 2*b1e83836Smrg 3*b1e83836Smrg# check_simd <srcdir> <builddir> <CXXFLAGS> 4*b1e83836Smrg# Read config from $CHECK_SIMD_CONFIG file or $target_list 5*b1e83836Smrg 6*b1e83836Smrgscriptdir="$(cd "${0%/*}" && pwd)" 7*b1e83836Smrgsrcdir="$1" 8*b1e83836Smrgbuilddir="$2" 9*b1e83836Smrgshift 2 10*b1e83836Smrgtestdir="$builddir/testsuite" 11*b1e83836Smrg 12*b1e83836SmrgCXX="$("$builddir/scripts/testsuite_flags" --build-cxx)" 13*b1e83836SmrgCXXFLAGS="$("$builddir/scripts/testsuite_flags" --cxxflags) $1 -Wno-psabi" 14*b1e83836Smrgshift 15*b1e83836SmrgINCLUDES="$("$builddir/scripts/testsuite_flags" --build-includes)" 16*b1e83836Smrg 17*b1e83836Smrgtarget_triplet=$($CXX -dumpmachine) 18*b1e83836Smrg 19*b1e83836Smrgdefine_target() { 20*b1e83836Smrg name="$1" 21*b1e83836Smrg flags="$2" 22*b1e83836Smrg sim="$3" 23*b1e83836Smrg eval "$name=\"flags=\\\"$flags\\\" 24*b1e83836Smrgsim=\\\"$sim\\\"\"" 25*b1e83836Smrg} 26*b1e83836Smrg 27*b1e83836Smrgif [ -f "$CHECK_SIMD_CONFIG" ]; then 28*b1e83836Smrg . "$CHECK_SIMD_CONFIG" 29*b1e83836Smrgelif [ -z "$CHECK_SIMD_CONFIG" ]; then 30*b1e83836Smrg if [ -z "$target_list" ]; then 31*b1e83836Smrg target_list="unix" 32*b1e83836Smrg case "$target_triplet" in 33*b1e83836Smrg x86_64-*) target_list="unix/-march=native" ;; 34*b1e83836Smrg i?86-*) target_list="unix/-march=native" ;; 35*b1e83836Smrg powerpc64le-*) target_list="unix/-mcpu=power8" ;; 36*b1e83836Smrg aarch64-*) target_list="unix/-mcpu=cortex-a53" ;; 37*b1e83836Smrg arm-*) target_list="unix/-mcpu=cortex-a7" ;; 38*b1e83836Smrg esac 39*b1e83836Smrg fi 40*b1e83836Smrgelse 41*b1e83836Smrg echo "Error: File not found: \$CHECK_SIMD_CONFIG='$CHECK_SIMD_CONFIG'" 1>&2 42*b1e83836Smrg exit 1 43*b1e83836Smrgfi 44*b1e83836Smrg 45*b1e83836Smrg# define unix with no flags and no simulator: 46*b1e83836Smrgdefine_target unix 47*b1e83836Smrg 48*b1e83836Smrglist="$target_list" 49*b1e83836Smrg 50*b1e83836Smrg# expand a{b,c} to a/b a/c 51*b1e83836Smrgwhile [ "${list#*\{}" != "${list}" ]; do 52*b1e83836Smrg list="$(echo "$list" | \ 53*b1e83836Smrg sed -e 's#\([^ ]\+\){\([^{},]*\),\([^{}]*\)}\(/[^ ]*\)\?#\1/\2\4 \1{\3}\4#g' \ 54*b1e83836Smrg -e 's#{\([^{},]*\)}#/\1#g' \ 55*b1e83836Smrg -e 's#/ # #g' -e 's#/$##')" 56*b1e83836Smrgdone 57*b1e83836Smrg 58*b1e83836Smrg# per a/b/c block extract flags and simulator, then make check-simd 59*b1e83836Smrgwhile [ ${#list} -gt 0 ]; do 60*b1e83836Smrg a="${list%% *}" 61*b1e83836Smrg if [ "$a" = "$list" ]; then 62*b1e83836Smrg list="" 63*b1e83836Smrg else 64*b1e83836Smrg list="${list#${a} }" 65*b1e83836Smrg fi 66*b1e83836Smrg b="${a%%/*}" 67*b1e83836Smrg eval "eval \"\$$b\"" 68*b1e83836Smrg flags="${flags}$(echo "${a#${b}}"|sed 's#/# #g')" 69*b1e83836Smrg subdir="simd/$(echo "$flags" | sed 's#[= /-]##g')" 70*b1e83836Smrg rm -f "${subdir}/Makefile" 71*b1e83836Smrg $srcdir/testsuite/experimental/simd/generate_makefile.sh \ 72*b1e83836Smrg --destination="$testdir/$subdir" --sim="$sim" --testflags="$flags" \ 73*b1e83836Smrg $CXX $INCLUDES $CXXFLAGS -static-libgcc -static-libstdc++ 74*b1e83836Smrg echo "$subdir" 75*b1e83836Smrgdone 76