123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- #!/bin/sh
- # Worker script for libgcc/Makefile.in
- # Generate lists of fixed-point labels, funcs, modes, from, to.
- # Usage:
- # gen-fixed.sh arith labels
- # gen-fixed.sh arith funcs
- # gen-fixed.sh arith modes
- # gen-fixed.sh conv labels
- # gen-fixed.sh conv funcs
- # gen-fixed.sh conv from
- # gen-fixed.sh conv to
- fixed_sfract_modes="QQ HQ SQ DQ TQ HA SA DA TA"
- fixed_ufract_modes="UQQ UHQ USQ UDQ UTQ UHA USA UDA UTA"
- fixed_fract_modes="$fixed_sfract_modes $fixed_ufract_modes"
- fixed_signed_modes="QI HI SI DI TI SF DF"
- fixed_unsigned_modes="UQI UHI USI UDI UTI"
- fixed_func_names="_add _sub _neg _mul _mulhelper _divhelper _ashl _ashlhelper _cmp _saturate1 _saturate2"
- fixed_sfunc_names="_ssadd _sssub _ssneg _ssmul _ssdiv _div _ssashl _ashr"
- fixed_ufunc_names="_usadd _ussub _usneg _usmul _usdiv _udiv _usashl _lshr"
- # emit the function information
- # $1 = output type selector
- # $2 = base function name
- # $3 = from mode
- # $4 = to mode
- emit ()
- {
- if [ "$3" != "$4" ]; then
- case "$1" in
- labels)
- echo $2 ;;
- from | modes)
- echo $3 ;;
- to)
- echo $4 ;;
- funcs)
- echo $2$3$4 ;;
- esac
- fi
- }
- case "$1" in
- arith)
- for n in $fixed_func_names; do
- for m in $fixed_fract_modes; do
- emit $2 $n $m
- done
- done
- for n in $fixed_sfunc_names; do
- for m in $fixed_sfract_modes; do
- emit $2 $n $m
- done
- done
- for n in $fixed_ufunc_names; do
- for m in $fixed_ufract_modes; do
- emit $2 $n $m
- done
- done
- ;;
- conv)
- for f in $fixed_fract_modes; do
- for t in $fixed_fract_modes $fixed_signed_modes; do
- emit $2 _fract $f $t
- done
- done
- for f in $fixed_signed_modes; do
- for t in $fixed_fract_modes; do
- emit $2 _fract $f $t
- done
- done
- for f in $fixed_fract_modes $fixed_signed_modes; do
- for t in $fixed_fract_modes; do
- emit $2 _satfract $f $t
- done
- done
- for f in $fixed_fract_modes; do
- for t in $fixed_unsigned_modes; do
- emit $2 _fractuns $f $t
- done
- done
- for f in $fixed_unsigned_modes; do
- for t in $fixed_fract_modes; do
- emit $2 _fractuns $f $t
- done
- done
- for f in $fixed_unsigned_modes; do
- for t in $fixed_fract_modes; do
- emit $2 _satfractuns $f $t
- done
- done
- ;;
- esac
|