diff options
author | Ben Cheng <bccheng@google.com> | 2014-03-25 22:37:19 -0700 |
---|---|---|
committer | Ben Cheng <bccheng@google.com> | 2014-03-25 22:37:19 -0700 |
commit | 1bc5aee63eb72b341f506ad058502cd0361f0d10 (patch) | |
tree | c607e8252f3405424ff15bc2d00aa38dadbb2518 /gcc-4.9/libgcc/gen-fixed.sh | |
parent | 283a0bf58fcf333c58a2a92c3ebbc41fb9eb1fdb (diff) | |
download | toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.gz toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.tar.bz2 toolchain_gcc-1bc5aee63eb72b341f506ad058502cd0361f0d10.zip |
Initial checkin of GCC 4.9.0 from trunk (r208799).
Change-Id: I48a3c08bb98542aa215912a75f03c0890e497dba
Diffstat (limited to 'gcc-4.9/libgcc/gen-fixed.sh')
-rw-r--r-- | gcc-4.9/libgcc/gen-fixed.sh | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/gcc-4.9/libgcc/gen-fixed.sh b/gcc-4.9/libgcc/gen-fixed.sh new file mode 100644 index 000000000..774996110 --- /dev/null +++ b/gcc-4.9/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 |