diff --git a/.github/workflows/real-time-cpp-benchmarks.yml b/.github/workflows/real-time-cpp-benchmarks.yml index 542d90d3a..91cddd380 100644 --- a/.github/workflows/real-time-cpp-benchmarks.yml +++ b/.github/workflows/real-time-cpp-benchmarks.yml @@ -108,6 +108,60 @@ jobs: echo ./target/build/test_app_benchmarks_avr.sh ${{ matrix.standard }} working-directory: ./ref_app/ + benchmark_builds-riscv: + runs-on: ubuntu-latest + defaults: + run: + shell: bash + strategy: + fail-fast: false + matrix: + standard: [ c++20 ] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: '0' + - name: update-tools + run: | + wget --no-check-certificate https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v14.2.0-3/xpack-riscv-none-elf-gcc-14.2.0-3-linux-x64.tar.gz + tar -xzf xpack-riscv-none-elf-gcc-14.2.0-3-linux-x64.tar.gz -C ${{ runner.workspace }} + working-directory: ./ + - name: benchmark_builds-riscv + run: | + PATH="${{ runner.workspace }}/xpack-riscv-none-elf-gcc-14.2.0-3/bin:$PATH" + ./target/build/test_app_benchmarks_riscv.sh ${{ matrix.standard }} + working-directory: ./ref_app/ + benchmark_builds-rl78: + runs-on: ubuntu-latest + defaults: + run: + shell: bash + strategy: + fail-fast: false + matrix: + standard: [ c++23 ] + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: '0' + - name: update-tools + run: | + wget --no-check-certificate https://github.com/ckormanyos/gcc-rl78-unknown-elf/releases/download/v15.1.0/gcc-15.1.0-rl78-unknown-elf.tar.gz + tar -xzf gcc-15.1.0-rl78-unknown-elf.tar.gz -C ${{ runner.workspace }} + - name: benchmark_builds-rl78 + run: | + echo + echo 'Add rl78-unknown-elf-g++ path' + echo + PATH="${{ runner.workspace }}/gcc-15.1.0-rl78-unknown-elf/bin:$PATH" + echo 'Query avr-g++ version' + echo + rl78-unknown-elf-g++ -v + echo + echo 'Build avr benchmarks' + echo + ./target/build/test_app_benchmarks_rl78.sh ${{ matrix.standard }} + working-directory: ./ref_app/ benchmark_builds-stm32f446: runs-on: ubuntu-latest defaults: @@ -144,29 +198,6 @@ jobs: - name: benchmark_builds-stm32f446 run: ./target/build/test_app_benchmarks_stm32f446.sh ${{ matrix.standard }} working-directory: ./ref_app/ - benchmark_builds-riscv: - runs-on: ubuntu-latest - defaults: - run: - shell: bash - strategy: - fail-fast: false - matrix: - standard: [ c++20 ] - steps: - - uses: actions/checkout@v4 - with: - fetch-depth: '0' - - name: update-tools - run: | - wget --no-check-certificate https://github.com/xpack-dev-tools/riscv-none-elf-gcc-xpack/releases/download/v14.2.0-3/xpack-riscv-none-elf-gcc-14.2.0-3-linux-x64.tar.gz - tar -xzf xpack-riscv-none-elf-gcc-14.2.0-3-linux-x64.tar.gz -C ${{ runner.workspace }} - working-directory: ./ - - name: benchmark_builds-riscv - run: | - PATH="${{ runner.workspace }}/xpack-riscv-none-elf-gcc-14.2.0-3/bin:$PATH" - ./target/build/test_app_benchmarks_riscv.sh ${{ matrix.standard }} - working-directory: ./ref_app/ benchmark_single-stm32f446: runs-on: ubuntu-latest defaults: diff --git a/ref_app/src/app/benchmark/app_benchmark_boost_crypt_hasher.cpp b/ref_app/src/app/benchmark/app_benchmark_boost_crypt_hasher.cpp index 1fa2abbfe..f423710b4 100644 --- a/ref_app/src/app/benchmark/app_benchmark_boost_crypt_hasher.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_boost_crypt_hasher.cpp @@ -98,6 +98,8 @@ extern "C" } } +auto main() -> int; + auto main() -> int { auto result_is_ok = true; diff --git a/ref_app/src/app/benchmark/app_benchmark_boost_math_cbrt_tgamma.cpp b/ref_app/src/app/benchmark/app_benchmark_boost_math_cbrt_tgamma.cpp index fd6b8e31b..e48e26845 100644 --- a/ref_app/src/app/benchmark/app_benchmark_boost_math_cbrt_tgamma.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_boost_math_cbrt_tgamma.cpp @@ -89,6 +89,8 @@ auto app::benchmark::run_boost_math_cbrt_tgamma() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_BOOST_MATH_CBRT_TGAMMA -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_boost_math_cbrt_tgamma.cpp -o ./ref_app/bin/app_benchmark_boost_math_cbrt_tgamma.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_boost_math_cyl_bessel_j.cpp b/ref_app/src/app/benchmark/app_benchmark_boost_math_cyl_bessel_j.cpp index eddcb325c..f8b6de828 100644 --- a/ref_app/src/app/benchmark/app_benchmark_boost_math_cyl_bessel_j.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_boost_math_cyl_bessel_j.cpp @@ -129,6 +129,8 @@ auto app::benchmark::run_boost_math_cbrt_cyl_bessel_j() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_BOOST_MATH_CYL_BESSEL_J -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_boost_math_cyl_bessel_j.cpp -o ./ref_app/bin/app_benchmark_boost_math_cyl_bessel_j.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_boost_multiprecision_cbrt.cpp b/ref_app/src/app/benchmark/app_benchmark_boost_multiprecision_cbrt.cpp index 853ac75d3..8f5e6ecb6 100644 --- a/ref_app/src/app/benchmark/app_benchmark_boost_multiprecision_cbrt.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_boost_multiprecision_cbrt.cpp @@ -90,6 +90,8 @@ auto app::benchmark::run_boost_multiprecision_cbrt() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_BOOST_MULTIPRECISION_CBRT -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_boost_math_cbrt_tgamma.cpp -o ./ref_app/bin/app_benchmark_boost_multiprecision_cbrt.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_cnl_scaled_integer.cpp b/ref_app/src/app/benchmark/app_benchmark_cnl_scaled_integer.cpp index 44f6b3b9e..46f444943 100644 --- a/ref_app/src/app/benchmark/app_benchmark_cnl_scaled_integer.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_cnl_scaled_integer.cpp @@ -135,6 +135,8 @@ extern "C" } } +auto main() -> int; + auto main() -> int { auto result_is_ok = true; diff --git a/ref_app/src/app/benchmark/app_benchmark_complex.cpp b/ref_app/src/app/benchmark/app_benchmark_complex.cpp index ef1342642..0a1c96431 100644 --- a/ref_app/src/app/benchmark/app_benchmark_complex.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_complex.cpp @@ -38,6 +38,8 @@ auto app::benchmark::run_complex() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_COMPLEX -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_complex.cpp -o ./ref_app/bin/app_benchmark_complex.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_crc.cpp b/ref_app/src/app/benchmark/app_benchmark_crc.cpp index 71d6c9e45..a8b3f1973 100644 --- a/ref_app/src/app/benchmark/app_benchmark_crc.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_crc.cpp @@ -67,6 +67,8 @@ extern "C" } } +auto main() -> int; + auto main() -> int { auto result_is_ok = true; diff --git a/ref_app/src/app/benchmark/app_benchmark_ecc_generic_ecc.cpp b/ref_app/src/app/benchmark/app_benchmark_ecc_generic_ecc.cpp index 3bade9b8f..2535efd8b 100644 --- a/ref_app/src/app/benchmark/app_benchmark_ecc_generic_ecc.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_ecc_generic_ecc.cpp @@ -212,6 +212,8 @@ auto my_hardware_random_device_generator() -> unsigned int } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_ECC_GENERIC_ECC -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_hash.cpp -o ./ref_app/bin/app_benchmark_hash.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_fast_math.cpp b/ref_app/src/app/benchmark/app_benchmark_fast_math.cpp index 529f7d55d..c92780701 100644 --- a/ref_app/src/app/benchmark/app_benchmark_fast_math.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_fast_math.cpp @@ -47,6 +47,8 @@ auto app::benchmark::run_fast_math() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_FAST_MATH -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_fast_math.cpp -o ./ref_app/bin/app_benchmark_fast_math.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_filter.cpp b/ref_app/src/app/benchmark/app_benchmark_filter.cpp index bbdd69ce4..41601844d 100644 --- a/ref_app/src/app/benchmark/app_benchmark_filter.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_filter.cpp @@ -52,6 +52,8 @@ auto app::benchmark::run_filter() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_FILTER -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_filter.cpp -o ./ref_app/bin/app_benchmark_filter.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_fixed_point.cpp b/ref_app/src/app/benchmark/app_benchmark_fixed_point.cpp index 8232e394b..a25c0ce41 100644 --- a/ref_app/src/app/benchmark/app_benchmark_fixed_point.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_fixed_point.cpp @@ -50,6 +50,8 @@ auto app::benchmark::run_fixed_point() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_FIXED_POINT -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_fixed_point.cpp -o ./ref_app/bin/app_benchmark_fixed_point.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_float.cpp b/ref_app/src/app/benchmark/app_benchmark_float.cpp index 8cd6718da..97fb43261 100644 --- a/ref_app/src/app/benchmark/app_benchmark_float.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_float.cpp @@ -118,6 +118,8 @@ bool app::benchmark::run_float() } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_FLOAT -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_float.cpp -o ./ref_app/bin/app_benchmark_float.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_hash.cpp b/ref_app/src/app/benchmark/app_benchmark_hash.cpp index 988ee5b4b..ba1ab4183 100644 --- a/ref_app/src/app/benchmark/app_benchmark_hash.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_hash.cpp @@ -54,6 +54,8 @@ auto app::benchmark::run_hash() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_HASH -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_hash.cpp -o ./ref_app/bin/app_benchmark_hash.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_hash_sha256.cpp b/ref_app/src/app/benchmark/app_benchmark_hash_sha256.cpp index 0f956078d..b573b0028 100644 --- a/ref_app/src/app/benchmark/app_benchmark_hash_sha256.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_hash_sha256.cpp @@ -55,6 +55,8 @@ auto app::benchmark::run_hash_sha256() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_HASH_SHA256 -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_hash.cpp -o ./ref_app/bin/app_benchmark_hash.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_non_std_decimal.cpp b/ref_app/src/app/benchmark/app_benchmark_non_std_decimal.cpp index 62e58d867..a210485d2 100644 --- a/ref_app/src/app/benchmark/app_benchmark_non_std_decimal.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_non_std_decimal.cpp @@ -261,6 +261,8 @@ arithmetic_float_type xarg = static_cast(1234) / 1000; arithmetic_float_type ctrl = static_cast(UINT64_C(343494186080075997)) / UINT64_C(100000000000000000); #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_NON_STD_DECIMAL -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_float.cpp -o ./ref_app/bin/app_benchmark_float.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_none.cpp b/ref_app/src/app/benchmark/app_benchmark_none.cpp index a9fb83d1c..9befed277 100644 --- a/ref_app/src/app/benchmark/app_benchmark_none.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_none.cpp @@ -17,6 +17,8 @@ auto app::benchmark::run_none() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_NONE -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_none.cpp -o ./ref_app/bin/app_benchmark_none.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_pi_agm.cpp b/ref_app/src/app/benchmark/app_benchmark_pi_agm.cpp index 3a1c14da6..4db744da1 100644 --- a/ref_app/src/app/benchmark/app_benchmark_pi_agm.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_pi_agm.cpp @@ -137,6 +137,8 @@ auto app::benchmark::run_pi_agm() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_PI_AGM -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_pi_agm.cpp -o ./ref_app/bin/app_benchmark_pi_agm.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_pi_spigot.cpp b/ref_app/src/app/benchmark/app_benchmark_pi_spigot.cpp index d5216cad4..ac1b10588 100644 --- a/ref_app/src/app/benchmark/app_benchmark_pi_spigot.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_pi_spigot.cpp @@ -76,6 +76,8 @@ auto app::benchmark::run_pi_spigot() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_PI_SPIGOT -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_pi_spigot.cpp -o ./ref_app/bin/app_benchmark_pi_spigot.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_pi_spigot_single.cpp b/ref_app/src/app/benchmark/app_benchmark_pi_spigot_single.cpp index 148acbb17..85ae46b2d 100644 --- a/ref_app/src/app/benchmark/app_benchmark_pi_spigot_single.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_pi_spigot_single.cpp @@ -67,6 +67,8 @@ auto app::benchmark::run_pi_spigot_single() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_PI_SPIGOT_SINGLE -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_pi_spigot_single.cpp -o ./ref_app/bin/app_benchmark_pi_spigot_single.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_soft_double_h2f1.cpp b/ref_app/src/app/benchmark/app_benchmark_soft_double_h2f1.cpp index 4de3b2216..693724736 100644 --- a/ref_app/src/app/benchmark/app_benchmark_soft_double_h2f1.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_soft_double_h2f1.cpp @@ -210,6 +210,8 @@ auto app::benchmark::run_soft_double_h2f1() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_CRC -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_crc.cpp -o ./ref_app/bin/app_benchmark_crc.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_trapezoid_integral.cpp b/ref_app/src/app/benchmark/app_benchmark_trapezoid_integral.cpp index 80977ccc0..028b704cd 100644 --- a/ref_app/src/app/benchmark/app_benchmark_trapezoid_integral.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_trapezoid_integral.cpp @@ -123,6 +123,8 @@ auto app::benchmark::run_trapezoid_integral() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { bool result_is_ok { true }; diff --git a/ref_app/src/app/benchmark/app_benchmark_wide_decimal.cpp b/ref_app/src/app/benchmark/app_benchmark_wide_decimal.cpp index 908d1578c..9b31a5a44 100644 --- a/ref_app/src/app/benchmark/app_benchmark_wide_decimal.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_wide_decimal.cpp @@ -68,6 +68,8 @@ auto app::benchmark::run_wide_decimal() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_WIDE_DECIMAL -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_wide_decimal.cpp -o ./ref_app/bin/app_benchmark_wide_decimal.exe diff --git a/ref_app/src/app/benchmark/app_benchmark_wide_integer.cpp b/ref_app/src/app/benchmark/app_benchmark_wide_integer.cpp index c8fa5f571..4d0cd446f 100644 --- a/ref_app/src/app/benchmark/app_benchmark_wide_integer.cpp +++ b/ref_app/src/app/benchmark/app_benchmark_wide_integer.cpp @@ -146,6 +146,8 @@ auto app::benchmark::run_wide_integer() -> bool } #if defined(APP_BENCHMARK_STANDALONE_MAIN) +auto main() -> int; + auto main() -> int { // g++ -Wall -O3 -march=native -I./ref_app/src/mcal/host -I./ref_app/src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_WIDE_INTEGER -DAPP_BENCHMARK_STANDALONE_MAIN ./ref_app/src/app/benchmark/app_benchmark_wide_integer.cpp -o ./ref_app/bin/app_benchmark_wide_integer.exe diff --git a/ref_app/target.vcxproj b/ref_app/target.vcxproj index d8558f7ae..de30ae019 100644 --- a/ref_app/target.vcxproj +++ b/ref_app/target.vcxproj @@ -923,6 +923,7 @@ + diff --git a/ref_app/target.vcxproj.filters b/ref_app/target.vcxproj.filters index 94e2ca635..5cb5be092 100644 --- a/ref_app/target.vcxproj.filters +++ b/ref_app/target.vcxproj.filters @@ -684,6 +684,9 @@ micros\xtensa_esp32_s3_riscv_cop\startup + + build + diff --git a/ref_app/target/build/test_app_benchmarks_rl78.sh b/ref_app/target/build/test_app_benchmarks_rl78.sh new file mode 100755 index 000000000..4e874cfc7 --- /dev/null +++ b/ref_app/target/build/test_app_benchmarks_rl78.sh @@ -0,0 +1,118 @@ +#!/usr/bin/env bash +# +# Copyright Christopher Kormanyos 2020 - 2025. +# Distributed under the Boost Software License, +# Version 1.0. (See accompanying file LICENSE_1_0.txt +# or copy at http://www.boost.org/LICENSE_1_0.txt) +# + +if [[ "$1" != "" ]]; then + STD="$1" +else + STD=c++14 +fi + +GCC=rl78-unknown-elf-g++ + +wflags="-Wextra -Wpedantic -Wmain -Wundef -Wconversion -Wsign-conversion -Wunused-parameter -Wuninitialized -Wmissing-declarations -Wshadow -Wunreachable-code -Wswitch-default -Wswitch-enum -Wcast-align -Wmissing-include-dirs -Winit-self -Wfloat-equal -Wdouble-promotion" + +mkdir -p bin + +rm -f ./bin/*.* + +echo run benchmarks with $GCC and language standard $STD +echo + +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_COMPLEX -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_complex.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_complex.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_complex.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_CRC -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_crc.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_crc.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_crc.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_FAST_MATH -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_fast_math.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_fast_math.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_fast_math.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_FILTER -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_filter.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_filter.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_filter.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_FIXED_POINT -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_fixed_point.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_fixed_point.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_fixed_point.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_FLOAT -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_float.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_float.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_float.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_HASH -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_hash.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_hash.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_hash.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_NONE -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_none.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_none.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_none.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_PI_AGM -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_pi_agm.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_pi_agm.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_pi_agm.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_PI_SPIGOT -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_pi_spigot.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_pi_spigot.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_pi_spigot.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_PI_SPIGOT_SINGLE -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_pi_spigot_single.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_pi_spigot_single.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_pi_spigot_single.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_SOFT_DOUBLE_H2F1 -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_soft_double_h2f1.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_soft_double_h2f1.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_soft_double_h2f1.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_WIDE_DECIMAL -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_wide_decimal.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_wide_decimal.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_wide_decimal.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_WIDE_INTEGER -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_wide_integer.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_wide_integer.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_wide_integer.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_TRAPEZOID_INTEGRAL -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_trapezoid_integral.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_trapezoid_integral.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_trapezoid_integral.elf +$GCC -std=$STD -Werror -Wall $wflags -Os -g -gdwarf-2 -fno-exceptions -ffunction-sections -fdata-sections -x c++ -fno-rtti -fno-use-cxa-atexit -fno-exceptions -fno-nonansi-builtins -fno-threadsafe-statics -fno-enforce-eh-specs -ftemplate-depth=32 -Wzero-as-null-pointer-constant -mcpu=g13 -mmul=g13 -fno-inline-functions -ffreestanding -I./src/util/STL -I./src/mcal/rl78 -I./src -DAPP_BENCHMARK_TYPE=APP_BENCHMARK_TYPE_HASH_SHA256 -DAPP_BENCHMARK_STANDALONE_MAIN ./src/app/benchmark/app_benchmark_hash_sha256.cpp ./src/mcal/mcal_gcc_cxx_completion.cpp -nostdlib -nostartfiles -Wl,--gc-sections -Wl,-Map,./bin/app_benchmark_hash_sha256.map -T ./target/micros/rl78/make/rl78.ld -o ./bin/app_benchmark_hash_sha256.elf + +echo check existences of ELF-files and map-files +echo + +ls -la ./bin/app_benchmark_complex.elf ./bin/app_benchmark_complex.map +result_ls_complex=$? + +ls -la ./bin/app_benchmark_crc.elf ./bin/app_benchmark_crc.map +result_ls_crc=$? + +ls -la ./bin/app_benchmark_fast_math.elf ./bin/app_benchmark_fast_math.map +result_ls_fast_math=$? + +ls -la ./bin/app_benchmark_filter.elf ./bin/app_benchmark_filter.map +result_ls_filter=$? + +ls -la ./bin/app_benchmark_fixed_point.elf ./bin/app_benchmark_fixed_point.map +result_ls_fixed_point=$? + +ls -la ./bin/app_benchmark_float.elf ./bin/app_benchmark_float.map +result_ls_float=$? + +ls -la ./bin/app_benchmark_hash.elf ./bin/app_benchmark_hash.map +result_ls_hash=$? + +ls -la ./bin/app_benchmark_none.elf ./bin/app_benchmark_none.map +result_ls_none=$? + +ls -la ./bin/app_benchmark_pi_agm.elf ./bin/app_benchmark_pi_agm.map +result_ls_pi_agm=$? + +ls -la ./bin/app_benchmark_pi_spigot.elf ./bin/app_benchmark_pi_spigot.map +result_ls_pi_spigot=$? + +ls -la ./bin/app_benchmark_pi_spigot_single.elf ./bin/app_benchmark_pi_spigot_single.map +result_ls_pi_spigot_single=$? + +ls -la ./bin/app_benchmark_soft_double_h2f1.elf ./bin/app_benchmark_soft_double_h2f1.map +result_ls_soft_double_h2f1=$? + +ls -la ./bin/app_benchmark_trapezoid_integral.elf ./bin/app_benchmark_trapezoid_integral.map +result_ls_trapezoid_integral=$? + +ls -la ./bin/app_benchmark_wide_decimal.elf ./bin/app_benchmark_wide_decimal.map +result_ls_wide_decimal=$? + +ls -la ./bin/app_benchmark_wide_integer.elf ./bin/app_benchmark_wide_integer.map +result_ls_wide_integer=$? + +ls -la ./bin/app_benchmark_hash_sha256.elf ./bin/app_benchmark_hash_sha256.map +result_ls_hash_sha256=$? + +echo "result_ls_complex : " "$result_ls_complex" +echo "result_ls_crc : " "$result_ls_crc" +echo "result_ls_fast_math : " "$result_ls_fast_math" +echo "result_ls_filter : " "$result_ls_filter" +echo "result_ls_fixed_point : " "$result_ls_fixed_point" +echo "result_ls_float : " "$result_ls_float" +echo "result_ls_hash : " "$result_ls_hash" +echo "result_ls_none : " "$result_ls_none" +echo "result_ls_pi_agm : " "$result_ls_pi_agm" +echo "result_ls_pi_spigot : " "$result_ls_pi_spigot" +echo "result_ls_pi_spigot_single : " "$result_ls_pi_spigot_single" +echo "result_ls_soft_double_h2f1 : " "$result_ls_soft_double_h2f1" +echo "result_ls_trapezoid_integral : " "$result_ls_trapezoid_integral" +echo "result_ls_wide_decimal : " "$result_ls_wide_decimal" +echo "result_ls_wide_integer : " "$result_ls_wide_integer" +echo "result_ls_hash_sha256 : " "$result_ls_hash_sha256" + +echo verify result_total +echo + +result_total=$((result_ls_complex+result_ls_crc+result_ls_fast_math+result_ls_filter+result_ls_fixed_point+result_ls_float+result_ls_hash+result_ls_none+result_ls_pi_agm+result_ls_pi_spigot+result_ls_pi_spigot_single+result_ls_soft_double_h2f1+result_ls_trapezoid_integral+result_ls_wide_decimal+result_ls_wide_integer+result_ls_hash_sha256)) + +echo "result_total : " "$result_total" + +exit $result_total diff --git a/ref_app/target/micros/rl78/make/rl78_flags.gmk b/ref_app/target/micros/rl78/make/rl78_flags.gmk index c33f86068..815b0227a 100644 --- a/ref_app/target/micros/rl78/make/rl78_flags.gmk +++ b/ref_app/target/micros/rl78/make/rl78_flags.gmk @@ -36,4 +36,5 @@ TGT_LDFLAGS = -nostartfiles \ -nostdlib \ -Wl,--gc-sections \ -Wl,-Map,$(APP).map \ + --specs=nosys.specs \ -T $(LINKER_DEFINITION_FILE)