gen-fixed.sh 2.2 KB

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