compare_codesz.sh 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. #!/bin/env bash
  2. GENROOT=${GENROOT:-cmpgenelfs}
  3. CMODEL=${CMODEL:-medany}
  4. LOCAL_BENCH_FLAGS=${BFLAGS:-"-Os -Wno-implicit"}
  5. function compare_pulp() {
  6. PREFIX=${PREFIX-/Local/home/zhaofujin/pulp/pulp/pulp_gcc10/bin/riscv32-unknown-elf-}
  7. GENELFDIR=${GENROOT}/pulp
  8. mkdir -p ${GENELFDIR}
  9. appname=$(basename $(pwd))
  10. echo "Benchmark flags is $LOCAL_BENCH_FLAGS, Code Model is $CMODEL"
  11. echo "Toolchain is pulp, located in $PREFIX"
  12. for arch in rv32imc rv32imc_xpulpv3 rv32imc_xnucleiv1 rv32imac rv32imac_xnucleiv1
  13. do
  14. export BENCH_FLAGS=${LOCAL_BENCH_FLAGS}
  15. make COMPILE_PREFIX=${PREFIX} RISCV_ARCH=${arch} RISCV_ABI=ilp32 RISCV_CMODEL=${CMODEL} RISCV_TUNE= SILENT=1 clean all dasm 2>&1 | grep 'elf$\|Conf'
  16. [ -f ${appname}.elf ] && cp -f ${appname}.elf ${GENELFDIR}/${appname}_${arch}.elf
  17. [ -f ${appname}.elf ] && cp -f ${appname}.dasm ${GENELFDIR}/${appname}_${arch}.dasm
  18. [ -f ${appname}.elf ] && cp -f ${appname}.map ${GENELFDIR}/${appname}_${arch}.map
  19. make SILENT=1 clean > /dev/null 2>&1
  20. unset BENCH_FLAGS RISCV_CMODEL
  21. done
  22. unset PREFIX
  23. }
  24. function compare_plctzc() {
  25. PREFIX=${PREFIX-/Local/home/zhaofujin/pulp/gcc-zc/build/plct_gcczc3/bin/riscv32-unknown-elf-}
  26. GENELFDIR=${GENROOT}/plctzc
  27. mkdir -p ${GENELFDIR}
  28. appname=$(basename $(pwd))
  29. echo "Benchmark flags is $LOCAL_BENCH_FLAGS, Code Model is $CMODEL"
  30. echo "Toolchain is plct zc, located in $PREFIX"
  31. for arch in rv32imac rv32ima_zca_zcb_zcf_zcmp_zcmt rv32imaf_zca_zcb_zcf_zcmp_zcmt rv32imafd_zca_zcb_zcf_zcmp_zcmt
  32. do
  33. export BENCH_FLAGS=${LOCAL_BENCH_FLAGS}
  34. if [[ "$arch" =~ .*"imafd_".* ]] ; then
  35. ABI_OPTS="RISCV_ABI=ilp32d"
  36. elif [[ "$arch" =~ .*"imaf_".* ]] ; then
  37. ABI_OPTS="RISCV_ABI=ilp32f"
  38. else
  39. ABI_OPTS="RISCV_ABI=ilp32"
  40. fi
  41. make COMPILE_PREFIX=${PREFIX} RISCV_ARCH=${arch} ${ABI_OPTS} RISCV_CMODEL=${CMODEL} APP_COMMON_FLAGS="-misa-spec=2.2" RISCV_TUNE= SILENT=1 clean all dasm 2>&1 | grep 'elf$\|Conf'
  42. [ -f ${appname}.elf ] && cp -f ${appname}.elf ${GENELFDIR}/${appname}_${arch}.elf
  43. [ -f ${appname}.elf ] && cp -f ${appname}.dasm ${GENELFDIR}/${appname}_${arch}.dasm
  44. [ -f ${appname}.elf ] && cp -f ${appname}.map ${GENELFDIR}/${appname}_${arch}.map
  45. make SILENT=1 clean > /dev/null 2>&1
  46. unset BENCH_FLAGS RISCV_CMODEL ABI_OPTS
  47. done
  48. unset PREFIX
  49. }
  50. function compare_toolchain {
  51. TOOLCHAIN=${1:-terapines}
  52. GENELFDIR=${GENROOT}/${TOOLCHAIN}
  53. mkdir -p ${GENELFDIR}
  54. appname=$(basename $(pwd))
  55. echo "Toolchain is using $TOOLCHAIN"
  56. echo "Benchmark flags is $LOCAL_BENCH_FLAGS, Code Model is $CMODEL"
  57. for core in n300 n300f n300fd
  58. do
  59. export BENCH_FLAGS=${LOCAL_BENCH_FLAGS}
  60. export RISCV_CMODEL=${CMODEL}
  61. make CORE=${core} TOOLCHAIN=${TOOLCHAIN} SILENT=1 clean all dasm 2>&1 | grep 'elf$\|Conf'
  62. make CORE=${core} TOOLCHAIN=${TOOLCHAIN} SILENT=1 showflags 2>&1 | grep 'CFLAGS'
  63. [ -f ${appname}.elf ] && cp -f ${appname}.elf ${GENELFDIR}/${appname}_${core}.elf
  64. [ -f ${appname}.elf ] && cp -f ${appname}.dasm ${GENELFDIR}/${appname}_${core}.dasm
  65. [ -f ${appname}.elf ] && cp -f ${appname}.map ${GENELFDIR}/${appname}_${core}.map
  66. make CORE=${core} TOOLCHAIN=${TOOLCHAIN} SILENT=1 clean > /dev/null 2>&1
  67. unset BENCH_FLAGS RISCV_CMODEL
  68. done
  69. }
  70. mkdir -p ${GENROOT}
  71. compare_pulp | tee ${GENROOT}/build.log
  72. compare_plctzc | tee -a ${GENROOT}/build.log
  73. compare_toolchain terapines | tee -a ${GENROOT}/build.log
  74. compare_toolchain nuclei_gnu | tee -a ${GENROOT}/build.log