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