'gcc/config/nvptx/gen-multilib-matches.sh': Support '--selftest'
..., and invoke that before actual use. gcc/ * config/nvptx/gen-multilib-matches.sh: Support '--selftest'. * config/nvptx/t-nvptx (t-nvptx-gen-multilib-matches:): Invoke it. * config/nvptx/gen-multilib-matches-tests: New.
This commit is contained in:
parent
61da068638
commit
ccd6ec2317
3 changed files with 159 additions and 2 deletions
77
gcc/config/nvptx/gen-multilib-matches-tests
Normal file
77
gcc/config/nvptx/gen-multilib-matches-tests
Normal file
|
@ -0,0 +1,77 @@
|
|||
# Test cases for 'gen-multilib-matches.sh'.
|
||||
|
||||
# Blank lines and lines beginning with '#' are ignored.
|
||||
|
||||
# 'BEGIN [name]': clear state, begin test [name].
|
||||
# 'SSMS 30 35 53': set 'sms' to '30 35 53'. Default: per 'nvptx-sm.def'.
|
||||
# 'SMOID sm_30': set 'multilib_options_isa_default' to 'sm_30'. Default: unset.
|
||||
# 'SMOIL sm_35 sm_30': set 'multilib_options_isa_list' to 'sm_35 sm_30'. Default: unset.
|
||||
# 'AEMM .=misa?sm_30': append '.=misa?sm_30' to expected "multilib matches". Default: unset.
|
||||
# 'CMMC': compute "multilib matches" per the current settings, and compare to the expected.
|
||||
|
||||
|
||||
BEGIN '--with-arch=sm_30'
|
||||
SMOID sm_30
|
||||
SMOIL sm_30
|
||||
AEMM .=misa?sm_30
|
||||
AEMM .=misa?sm_35
|
||||
AEMM .=misa?sm_53
|
||||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
CMMC
|
||||
|
||||
|
||||
BEGIN '--with-arch=sm_35'
|
||||
SMOID sm_35
|
||||
SMOIL sm_35 sm_30
|
||||
AEMM .=misa?sm_35
|
||||
AEMM .=misa?sm_53
|
||||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
CMMC
|
||||
|
||||
|
||||
BEGIN '--with-arch=sm_53'
|
||||
SMOID sm_53
|
||||
SMOIL sm_53 sm_30
|
||||
AEMM misa?sm_30=misa?sm_35
|
||||
AEMM .=misa?sm_53
|
||||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
CMMC
|
||||
|
||||
|
||||
BEGIN '--with-arch=sm_70'
|
||||
SMOID sm_70
|
||||
SMOIL sm_70 sm_30
|
||||
AEMM misa?sm_30=misa?sm_35
|
||||
AEMM misa?sm_30=misa?sm_53
|
||||
AEMM .=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
CMMC
|
||||
|
||||
|
||||
BEGIN '--with-arch=sm_75'
|
||||
SMOID sm_75
|
||||
SMOIL sm_75 sm_30
|
||||
AEMM misa?sm_30=misa?sm_35
|
||||
AEMM misa?sm_30=misa?sm_53
|
||||
AEMM misa?sm_30=misa?sm_70
|
||||
AEMM .=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
CMMC
|
||||
|
||||
|
||||
BEGIN '--with-arch=sm_80'
|
||||
SMOID sm_80
|
||||
SMOIL sm_80 sm_30
|
||||
AEMM misa?sm_30=misa?sm_35
|
||||
AEMM misa?sm_30=misa?sm_53
|
||||
AEMM misa?sm_30=misa?sm_70
|
||||
AEMM misa?sm_30=misa?sm_75
|
||||
AEMM .=misa?sm_80
|
||||
CMMC
|
|
@ -27,6 +27,7 @@ nvptx_dir=$(dirname "$0")
|
|||
|
||||
|
||||
nvptx_sm_def="$nvptx_dir/nvptx-sm.def"
|
||||
gen_multilib_matches_tests="$nvptx_dir/gen-multilib-matches-tests"
|
||||
|
||||
sms=$(grep ^NVPTX_SM $nvptx_sm_def | sed 's/.*(//;s/,.*//')
|
||||
|
||||
|
@ -88,5 +89,82 @@ print_multilib_matches() {
|
|||
echo "$multilib_matches"
|
||||
}
|
||||
|
||||
multilib_matches=$(print_multilib_matches "$sms" "$@")
|
||||
echo "multilib_matches := $multilib_matches"
|
||||
|
||||
selftest() {
|
||||
[ $# = 0 ]
|
||||
|
||||
local sms_default
|
||||
sms_default=$sms
|
||||
|
||||
local name
|
||||
unset name
|
||||
local sms
|
||||
unset sms
|
||||
local multilib_options_isa_default
|
||||
unset multilib_options_isa_default
|
||||
local multilib_options_isa_list
|
||||
unset multilib_options_isa_list
|
||||
local multilib_matches_expected
|
||||
unset multilib_matches_expected
|
||||
|
||||
local line
|
||||
line=0
|
||||
local f1 f2
|
||||
unset f1 f2
|
||||
while read -r f1 f2; do
|
||||
line=$((line + 1))
|
||||
case "$f1 $f2" in
|
||||
' ' | '#'* )
|
||||
:
|
||||
;;
|
||||
'BEGIN '* )
|
||||
name=$f2
|
||||
sms=$sms_default
|
||||
unset multilib_options_isa_default
|
||||
unset multilib_options_isa_list
|
||||
unset multilib_matches_expected
|
||||
;;
|
||||
'SSMS '* )
|
||||
sms=$f2
|
||||
;;
|
||||
'SMOID '* )
|
||||
multilib_options_isa_default=$f2
|
||||
;;
|
||||
'SMOIL '* )
|
||||
multilib_options_isa_list=$f2
|
||||
;;
|
||||
'AEMM '* )
|
||||
multilib_matches_expected="$multilib_matches_expected $f2"
|
||||
;;
|
||||
'CMMC ' )
|
||||
local multilib_matches
|
||||
multilib_matches=$(print_multilib_matches "${sms?}" "${multilib_options_isa_default?}" "${multilib_options_isa_list?}")
|
||||
if [ "$multilib_matches" = "$multilib_matches_expected" ]; then
|
||||
echo >&2 "$0": selftest PASS "${name?}" at "$gen_multilib_matches_tests:$line"
|
||||
else
|
||||
echo >&2 "$0": selftest FAIL "${name?}" at "$gen_multilib_matches_tests:$line"
|
||||
echo >&2 expected:"$multilib_matches_expected"
|
||||
echo >&2 actual:"$multilib_matches"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
* )
|
||||
echo >&2 "$0": selftest ERROR at "$gen_multilib_matches_tests:$line"
|
||||
echo >&2 invalid directive: "$f1 $f2"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done < "$gen_multilib_matches_tests"
|
||||
}
|
||||
|
||||
|
||||
case "${1?}" in
|
||||
--selftest )
|
||||
shift
|
||||
selftest "$@"
|
||||
:;;
|
||||
* )
|
||||
multilib_matches=$(print_multilib_matches "$sms" "$@")
|
||||
echo "multilib_matches := $multilib_matches"
|
||||
;;
|
||||
esac
|
||||
|
|
|
@ -48,6 +48,8 @@ t-nvptx-gen-multilib-matches: $(srcdir)/config/nvptx/gen-multilib-matches.sh \
|
|||
$(srcdir)/config/nvptx/t-nvptx \
|
||||
Makefile \
|
||||
$(srcdir)/config/nvptx/nvptx-sm.def
|
||||
$(SHELL) $< \
|
||||
--selftest
|
||||
$(SHELL) $< \
|
||||
$(multilib_options_isa_default) \
|
||||
'$(multilib_options_isa_list)' \
|
||||
|
|
Loading…
Add table
Reference in a new issue