Home | History | Annotate | Line # | Download | only in libgcc
gen-fixed.sh revision 1.1.1.1
      1  1.1  mrg #!/bin/sh
      2  1.1  mrg 
      3  1.1  mrg # Worker script for libgcc/Makefile.in
      4  1.1  mrg # Generate lists of fixed-point labels, funcs, modes, from, to.
      5  1.1  mrg # Usage:
      6  1.1  mrg #    gen-fixed.sh arith labels
      7  1.1  mrg #    gen-fixed.sh arith funcs
      8  1.1  mrg #    gen-fixed.sh arith modes
      9  1.1  mrg #    gen-fixed.sh conv labels
     10  1.1  mrg #    gen-fixed.sh conv funcs
     11  1.1  mrg #    gen-fixed.sh conv from
     12  1.1  mrg #    gen-fixed.sh conv to
     13  1.1  mrg 
     14  1.1  mrg fixed_sfract_modes="QQ HQ SQ DQ TQ HA SA DA TA"
     15  1.1  mrg fixed_ufract_modes="UQQ UHQ USQ UDQ UTQ UHA USA UDA UTA"
     16  1.1  mrg fixed_fract_modes="$fixed_sfract_modes $fixed_ufract_modes"
     17  1.1  mrg 
     18  1.1  mrg fixed_signed_modes="QI HI SI DI TI SF DF"
     19  1.1  mrg fixed_unsigned_modes="UQI UHI USI UDI UTI"
     20  1.1  mrg 
     21  1.1  mrg fixed_func_names="_add _sub _neg _mul _mulhelper _divhelper _ashl _ashlhelper _cmp _saturate1 _saturate2"
     22  1.1  mrg fixed_sfunc_names="_ssadd _sssub _ssneg _ssmul _ssdiv _div _ssashl _ashr"
     23  1.1  mrg fixed_ufunc_names="_usadd _ussub _usneg _usmul _usdiv _udiv _usashl _lshr"
     24  1.1  mrg 
     25  1.1  mrg # emit the function information
     26  1.1  mrg # $1 = output type selector
     27  1.1  mrg # $2 = base function name
     28  1.1  mrg # $3 = from mode
     29  1.1  mrg # $4 = to mode
     30  1.1  mrg emit ()
     31  1.1  mrg {
     32  1.1  mrg     if [ "$3" != "$4" ]; then
     33  1.1  mrg 	case "$1" in
     34  1.1  mrg 	  labels)
     35  1.1  mrg             echo $2 ;;
     36  1.1  mrg 	  from | modes)
     37  1.1  mrg 	    echo $3 ;;
     38  1.1  mrg 	  to)
     39  1.1  mrg 	    echo $4 ;;
     40  1.1  mrg 	  funcs)
     41  1.1  mrg 	    echo $2$3$4 ;;
     42  1.1  mrg 	esac
     43  1.1  mrg     fi
     44  1.1  mrg }
     45  1.1  mrg 
     46  1.1  mrg case "$1" in
     47  1.1  mrg   arith)
     48  1.1  mrg     for n in $fixed_func_names; do
     49  1.1  mrg 	for m in $fixed_fract_modes; do
     50  1.1  mrg 	    emit $2 $n $m
     51  1.1  mrg 	done
     52  1.1  mrg     done
     53  1.1  mrg 
     54  1.1  mrg     for n in $fixed_sfunc_names; do
     55  1.1  mrg 	for m in $fixed_sfract_modes; do
     56  1.1  mrg 	    emit $2 $n $m
     57  1.1  mrg 	done
     58  1.1  mrg     done
     59  1.1  mrg 
     60  1.1  mrg     for n in $fixed_ufunc_names; do
     61  1.1  mrg 	for m in $fixed_ufract_modes; do
     62  1.1  mrg 	    emit $2 $n $m
     63  1.1  mrg 	done
     64  1.1  mrg     done
     65  1.1  mrg     ;;
     66  1.1  mrg 
     67  1.1  mrg   conv)
     68  1.1  mrg     for f in $fixed_fract_modes; do
     69  1.1  mrg 	for t in $fixed_fract_modes $fixed_signed_modes; do
     70  1.1  mrg 	    emit $2 _fract $f $t
     71  1.1  mrg 	done
     72  1.1  mrg     done
     73  1.1  mrg 
     74  1.1  mrg     for f in $fixed_signed_modes; do
     75  1.1  mrg 	for t in $fixed_fract_modes; do
     76  1.1  mrg 	    emit $2 _fract $f $t
     77  1.1  mrg 	done
     78  1.1  mrg     done
     79  1.1  mrg 
     80  1.1  mrg     for f in $fixed_fract_modes $fixed_signed_modes; do
     81  1.1  mrg 	for t in $fixed_fract_modes; do
     82  1.1  mrg 	    emit $2 _satfract $f $t
     83  1.1  mrg 	done
     84  1.1  mrg     done
     85  1.1  mrg 
     86  1.1  mrg     for f in $fixed_fract_modes; do
     87  1.1  mrg 	for t in $fixed_unsigned_modes; do
     88  1.1  mrg 	    emit $2 _fractuns $f $t
     89  1.1  mrg 	done
     90  1.1  mrg     done
     91  1.1  mrg 
     92  1.1  mrg     for f in $fixed_unsigned_modes; do
     93  1.1  mrg 	for t in $fixed_fract_modes; do
     94  1.1  mrg 	    emit $2 _fractuns $f $t
     95  1.1  mrg 	done
     96  1.1  mrg     done
     97  1.1  mrg 
     98  1.1  mrg     for f in $fixed_unsigned_modes; do
     99  1.1  mrg 	for t in $fixed_fract_modes; do
    100  1.1  mrg 	    emit $2 _satfractuns $f $t
    101  1.1  mrg 	done
    102  1.1  mrg     done
    103  1.1  mrg     ;;
    104  1.1  mrg 
    105  1.1  mrg esac
    106