diff options
| author | Ben Cheng <bccheng@google.com> | 2012-10-01 10:30:31 -0700 |
|---|---|---|
| committer | Ben Cheng <bccheng@google.com> | 2012-10-01 10:30:31 -0700 |
| commit | 82bcbebce43f0227f506d75a5b764b6847041bae (patch) | |
| tree | fe9f8597b48a430c4daeb5123e3e8eb28e6f9da9 /gcc-4.7/libgcc/gen-fixed.sh | |
| parent | 3c052de3bb16ac53b6b6ed659ec7557eb84c7590 (diff) | |
| download | toolchain_gcc-82bcbebce43f0227f506d75a5b764b6847041bae.tar.gz toolchain_gcc-82bcbebce43f0227f506d75a5b764b6847041bae.tar.bz2 toolchain_gcc-82bcbebce43f0227f506d75a5b764b6847041bae.zip | |
Initial check-in of gcc 4.7.2.
Change-Id: I4a2f5a921c21741a0e18bda986d77e5f1bef0365
Diffstat (limited to 'gcc-4.7/libgcc/gen-fixed.sh')
| -rw-r--r-- | gcc-4.7/libgcc/gen-fixed.sh | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/gcc-4.7/libgcc/gen-fixed.sh b/gcc-4.7/libgcc/gen-fixed.sh new file mode 100644 index 000000000..774996110 --- /dev/null +++ b/gcc-4.7/libgcc/gen-fixed.sh @@ -0,0 +1,105 @@ +#!/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 |
