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