mirror of
https://github.com/autc04/Retro68.git
synced 2024-11-30 19:53:46 +00:00
106 lines
2.2 KiB
Bash
106 lines
2.2 KiB
Bash
|
#!/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
|