Unverified Commit 05e6bef9 authored by Christophe Favergeon's avatar Christophe Favergeon Committed by GitHub
Browse files

Github action for CMSIS-DSP testing (#183)

Add github action for running CMSIS-DSP tests on each commit or PR to the main branch
parent 3ebc686f
Loading
Loading
Loading
Loading
+86 −0
Original line number Diff line number Diff line
name: Compile and Run
on:
  workflow_dispatch:
  pull_request:
    branches: [main]
  push:
    branches: [main]

permissions: 
  actions: read
  security-events: write

jobs:
   CI_test_run: 
    runs-on: ubuntu-latest    

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup Python 3.10
        uses: actions/setup-python@v5
        with:
          python-version: '3.10'    

      - name: Install system packages
        run: |
          sudo add-apt-repository ppa:deadsnakes/ppa
          sudo apt-get install libpython3.9 libtinfo5

      - name: Activate vcpkg
        uses: ARM-software/cmsis-actions/vcpkg@v1

      - name: Activate Arm tool license
        uses: ARM-software/cmsis-actions/armlm@v1
  
      - name: Prepare framework
        run: |
          cd Testing
          echo "Create missing folders"
          mkdir FullBenchmark
          mkdir Output
          mkdir GeneratedInclude
          mkdir GeneratedSource
          mkdir GeneratedIncludeBench
          mkdir GeneratedSourceBench

          echo "Install missing python packages"
          pip install -r requirements.txt

          echo "Preprocess test description"
          python preprocess.py -f desc.txt -o Output.pickle
          python preprocess.py  -f desc_f16.txt -o Output_f16.pickle

          echo "Generate missing CPP headers"
          python processTests.py -gen . -p Patterns -d Parameters -f Output.pickle -e
          python processTests.py -gen . -p Patterns -d Parameters -f Output_f16.pickle -e

          cd cmsis_build

          echo "Load missing pack"
          csolution list packs -s  test_ac6.csolution.yml -m > required_packs.txt
          
          cat required_packs.txt
          cpackget add -f required_packs.txt

      - name: Execute
        run: |
          cd Testing/cmsis_build
          echo "Running tests"

          python runall.py -avh $AVH_FVP_PLUGINS/../bin

      - name: Upload test report
        uses: actions/upload-artifact@v4
        with:
          name: test-report
          path: Testing/cmsis_build/summary.html

      
      - name: Check error
        run: |
          cd Testing/cmsis_build
          
          echo "Checking output..."
          test "$(grep "Error" summary.html | wc -l)" -eq 0
+54 −57
Original line number Diff line number Diff line
@@ -12,9 +12,11 @@ parser.add_argument('-d', action='store_true', help="Debug log")
parser.add_argument('-n', action='store_true', help="No force rebuild")
parser.add_argument('-r', action='store_true', help="Raw results only")
parser.add_argument('-c', action='store_true', help="Display cycles (so passing test are displayed)")
parser.add_argument('-l', action='store_true', help="Local run (not github action)")

args = parser.parse_args()


DEBUG=False 
if args.d:
    DEBUG=True
@@ -112,9 +114,19 @@ configFiles={
}

# Windows executable
# (At some point this script will also support
# unix)
avhExe={
avhUnixExe={
    "CS310":"FVP_Corstone_SSE-310_Ethos-U65",
    "CS300":"FVP_Corstone_SSE-300_Ethos-U55",
    "M55":"FVP_MPS2_Cortex-M55",
    "M33_DSP_FP":"FVP_MPS2_Cortex-M33",
    "M7DP":"FVP_MPS2_Cortex-M7",
    "M4FP":"FVP_MPS2_Cortex-M4",
    "M3":"FVP_MPS2_Cortex-M3",
    "M23":"FVP_MPS2_Cortex-M23",
    "M0plus":"FVP_MPS2_Cortex-M0plus",
}

avhWindowsExe={
    "CS310":"VHT_Corstone_SSE-310.exe",
    "CS300":"VHT_Corstone_SSE-300_Ethos-U55.exe",
    "M55":"VHT_MPS2_Cortex-M55.exe",
@@ -138,7 +150,20 @@ def runAVH(build,core):
    if os.path.exists(elf):
        app = elf
    config = os.path.join("configs",configFiles[core])
    avh = os.path.join(AVHROOT,avhExe[core])
    
    if AVHROOT:
       avhAttempt = os.path.join(AVHROOT,avhWindowsExe[core])
       if os.path.exists(avhAttempt):
          avh = avhAttempt
   
       avhAttempt = os.path.join(AVHROOT,avhUnixExe[core])
       if os.path.exists(avhAttempt):
          avh = avhAttempt
    else:
       avh = avhUnixExe[core]


    
    res=run(avh,"-f",config,app)
    return(res)
   
@@ -160,50 +185,14 @@ for t in tests:
# Test suite and output pickle needed to decode the result
#print(allSuites)

#allSuites=[
#("MFCCQ15","../Output.pickle"),
#("MFCCQ31","../Output.pickle"),
#("SupportTestsF16","../Output_f16.pickle"),
#]

#allSuites=[("ComplexTestsF32","../Output.pickle"),
#("DistanceTestsF32","../Output.pickle"),
#("UnaryTestsF32","../Output.pickle"),
#("QuaternionTestsF32","../Output.pickle"),
#("StatsTestsF32","../Output.pickle")
#]

#allSuites=[
#("TransformCF64","../Output.pickle"),
#("TransformCF32","../Output.pickle"),
#("TransformCQ31","../Output.pickle"),
#("TransformCQ15","../Output.pickle"),
#
#("TransformRF64","../Output.pickle"),
#("TransformRF32","../Output.pickle"),
#("TransformRQ31","../Output.pickle"),
#("TransformRQ15","../Output.pickle"),
#
#("MFCCF32","../Output.pickle"),
#("MFCCQ31","../Output.pickle"),
#("MFCCQ15","../Output.pickle"),
#
#("MFCCF16","../Output_f16.pickle"),
#("TransformCF16","../Output_f16.pickle"),
#("TransformRF16","../Output_f16.pickle")
#("DECIMF64","../Output.pickle"),
#("UnaryTestsF32","../Output.pickle"),
#("UnaryTestsF16","../Output_f16.pickle"),
#]

#allSuites=[("StatsTestsQ7","../Output.pickle")]

allSuites=[
("UnaryTestsF64","../Output.pickle"),
("UnaryTestsF32","../Output.pickle"),
("UnaryTestsF16","../Output_f16.pickle"),
#("MISCQ15","../Output.pickle"),
#("MISCQ7","../Output.pickle"),
#("FIRF16","../Output_f16.pickle")
]

# Solution and build file for all
# the tests
# It is a pair : csolution target type and AVH identification
@@ -213,7 +202,7 @@ solutions={
    'test_ac6.csolution.yml':[
    #  ("VHT-Corstone-310","CS310"),
      ("VHT-Corstone-300","CS300"),
      # ("VHT-Corstone-300-NOMVE","CS300"),
      ("VHT-Corstone-300-NOMVE","CS300"),
      ("VHT_M33","M33_DSP_FP"),
      ("VHT_M7","M7DP"),
      ("VHT_M7_UNROLLED","M7DP"),
@@ -222,24 +211,31 @@ solutions={
    #  #("VHT_M23","M23"),
      ("VHT_M0P","M0plus")
    ],
    'test_gcc.csolution.yml':[
      #("VHT-Corstone-310","CS310"),
    #'test_gcc.csolution.yml':[
    #  ("VHT-Corstone-300","CS300"),
      #("VHT_M55","M55"),
      ##("VHT_M33","M33_DSP_FP"),
      ("VHT_M7","M7DP"),
      ("VHT_M7_UNROLLED","M7DP"),
      ("VHT_M4","M4FP"),
    #  ("VHT_M7","M7DP"),
    #  ("VHT_M7_UNROLLED","M7DP"),
    #  ("VHT_M4","M4FP"),
      ##("VHT_M3","M3"),
      ##("VHT_M23","M23"),
      ("VHT_M0P","M0plus")
    ]
    #  ("VHT_M0P","M0plus")
    #]
}

# Override previous solutions for more restricted testing.
#solutions={
#    'test_ac6.csolution.yml':[
#      #("VHT-Corstone-300","CS300"),
#      ("VHT_M7_UNROLLED","M7DP"),
#      ("VHT-Corstone-300","CS300"),
#      #("VHT_M7_UNROLLED","M7DP"),
#    ]
#}
#
#solutions={
#    'test_gcc.csolution.yml':[
#      ("VHT-Corstone-300","CS300"),
#      #("VHT_M7_UNROLLED","M7DP"),
#    ]
#}

@@ -336,6 +332,7 @@ with open("summary.html","w") as f:
                           print(res.msg,file=f)
    print(HTMLFOOTER,file=f)

if args.l:
   if ERROR_OCCURED:
       sys.exit("Error occurred")
   else:
+4 −176
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<cprj schemaVersion="2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CPRJ.xsd">
  <created timestamp="2024-06-11T16:41:16" tool="csolution 2.4.0"/>
  <created timestamp="2024-06-17T15:52:27" tool="csolution 2.4.0"/>

  <info isLayer="false">
    <description>Automatically generated project</description>
  </info>

  <packages>
    <package name="CMSIS" vendor="ARM" version="5.9.0:5.9.0"/>
    <package name="DMA350" vendor="ARM" version="1.0.0:1.0.0"/>
    <package name="V2M_MPS3_SSE_310_BSP" vendor="ARM" version="1.1.0:1.1.0"/>
  </packages>
  <packages/>

  <compilers>
    <compiler name="GCC" version="13.2.1:13.2.1"/>
  </compilers>

  <target Ddsp="DSP" Dfpu="DP_FPU" Dmve="FP_MVE" Dname="SSE-310-MPS3" Dtz="TZ" Dvendor="ARM:82">
  <target>
    <output elf="test.elf" intdir="tmp/test/VHT-Corstone-310/Release" name="test" outdir="out/test/VHT-Corstone-310/Release" rtedir="RTE" type="exe"/>
    <options debug="off"/>
    <asflags add="-masm=auto" compiler="GCC"/>
    <cflags add="-ffunction-sections -mfp16-format=ieee -fdata-sections -std=c11 -Ofast -ffast-math -flax-vector-conversions" compiler="GCC"/>
    <cxxflags add="-ffunction-sections -mfp16-format=ieee -fdata-sections -std=c++11 -Ofast -ffast-math -flax-vector-conversions -Wno-unused-parameter" compiler="GCC"/>
    <ldflags add="--specs=nano.specs --specs=rdimon.specs --entry=Reset_Handler -Wl,--gc-sections" compiler="GCC" file="RTE/Device/SSE-310-MPS3/gcc_linker_script.ld.src" regions="RTE/Device/SSE-310-MPS3/regions_SSE-310-MPS3.h"/>
    <ldflags add="--specs=nano.specs --specs=rdimon.specs --entry=Reset_Handler -Wl,--gc-sections" compiler="GCC"/>
    <defines>EMBEDDED;NORMALFVP;CORTEXM</defines>
    <includes>../../Include;../../PrivateInclude;../FrameworkInclude;../GeneratedInclude;../Include/Tests</includes>
  </target>

  <components>
    <component Cclass="CMSIS" Cgroup="CORE" Cvendor="ARM" Cversion="5.6.0"/>
    <component Cclass="Device" Cgroup="Definition" Cvendor="ARM" Cversion="1.1.0" rtedir="RTE">
      <file attr="config" category="header" name="Board/Platform/platform_base_address.h" version="1.0.0"/>
    </component>
    <component Cclass="Native Driver" Cgroup="DMA350 Remap" Csub="Custom" Cvendor="ARM" Cversion="1.0.0"/>
    <component Cclass="Native Driver" Cgroup="DMA350" Cvendor="ARM" Cversion="1.1.0"/>
    <component Cclass="Native Driver" Cgroup="SysCounter" Cvendor="ARM" Cversion="1.0.0"/>
    <component Cclass="Native Driver" Cgroup="SysTimer" Cvendor="ARM" Cversion="1.0.0"/>
    <component Cclass="Native Driver" Cgroup="Timeout" Cvendor="ARM" Cversion="1.0.0"/>
  </components>

  <files>
    <group name="App">
      <file category="sourceCpp" name="../main.cpp"/>
      <file category="sourceC" name="../patterndata.c"/>
      <file category="sourceCpp" name="../testmain.cpp"/>
    </group>
    <group name="TestFramework">
      <file category="sourceCpp" name="../FrameworkSource/ArrayMemory.cpp"/>
      <file category="sourceCpp" name="../FrameworkSource/Calibrate.cpp"/>
      <file category="sourceCpp" name="../FrameworkSource/Error.cpp"/>
      <file category="sourceCpp" name="../FrameworkSource/FPGA.cpp"/>
      <file category="sourceCpp" name="../FrameworkSource/Generators.cpp"/>
      <file category="sourceCpp" name="../FrameworkSource/IORunner.cpp"/>
      <file category="sourceCpp" name="../FrameworkSource/Pattern.cpp"/>
      <file category="sourceCpp" name="../FrameworkSource/PatternMgr.cpp"/>
      <file category="sourceCpp" name="../FrameworkSource/Test.cpp"/>
      <file category="sourceCpp" name="../FrameworkSource/Timing.cpp"/>
    </group>
    <group name="GeneratedConfig">
      <file category="sourceCpp" name="../GeneratedSource/TestDesc.cpp"/>
    </group>
    <group name="Tests">
      <file category="sourceCpp" name="../Source/Tests/BasicTestsF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BasicTestsF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BasicTestsF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BasicTestsQ7.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BasicTestsQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BasicTestsQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BayesF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BayesF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BinaryTestsF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BinaryTestsF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BinaryTestsF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BinaryTestsQ7.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BinaryTestsQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BinaryTestsQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BIQUADF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BIQUADF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BIQUADF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BIQUADQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/BIQUADQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ComplexTestsF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ComplexTestsF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ComplexTestsF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ComplexTestsQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ComplexTestsQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DECIMF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DECIMQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DECIMQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DistanceTestsF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DistanceTestsF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DistanceTestsF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DistanceTestsU32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ExampleCategoryF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ExampleCategoryQ7.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ExampleCategoryQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ExampleCategoryQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/FastMathF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/FastMathF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/FastMathF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/FastMathQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/FastMathQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/FastMathQ63.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/FIRF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/FIRF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/FIRF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/FIRQ7.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/FIRQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/FIRQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/InterpolationTestsF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/InterpolationTestsF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/InterpolationTestsQ7.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/InterpolationTestsQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/InterpolationTestsQ31.cpp"/>
      <file category="sourceC" name="../Source/Tests/mfccdata.c"/>
      <file category="sourceC" name="../Source/Tests/mfccdata_f16.c"/>
      <file category="sourceCpp" name="../Source/Tests/MFCCF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/MFCCF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/MFCCQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/MFCCQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/MISCF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/MISCF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/MISCF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/MISCQ7.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/MISCQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/MISCQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/QuaternionTestsF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/StatsTestsF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/StatsTestsF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/StatsTestsF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/StatsTestsQ7.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/StatsTestsQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/StatsTestsQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/SupportBarTestsF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/SupportBarTestsF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/SupportTestsF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/SupportTestsF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/SupportTestsF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/SupportTestsQ7.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/SupportTestsQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/SupportTestsQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/SVMF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/SVMF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/TransformCF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/TransformCF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/TransformCF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/TransformCQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/TransformCQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/TransformRF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/TransformRF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/TransformRF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/TransformRQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/TransformRQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/UnaryTestsF16.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/UnaryTestsF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/UnaryTestsF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/UnaryTestsQ7.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/UnaryTestsQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/UnaryTestsQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/WindowTestsF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/WindowTestsF64.cpp"/>
    </group>
    <group name="CMSIS-DSP">
      <defines>ARM_MATH_ROUNDING</defines>
      <file category="sourceC" name="../../Source/BasicMathFunctions/BasicMathFunctions.c"/>
      <file category="sourceC" name="../../Source/BasicMathFunctions/BasicMathFunctionsF16.c"/>
      <file category="sourceC" name="../../Source/DistanceFunctions/DistanceFunctions.c"/>
      <file category="sourceC" name="../../Source/DistanceFunctions/DistanceFunctionsF16.c"/>
      <file category="sourceC" name="../../Source/MatrixFunctions/MatrixFunctions.c"/>
      <file category="sourceC" name="../../Source/MatrixFunctions/MatrixFunctionsF16.c"/>
      <file category="sourceC" name="../../Source/BayesFunctions/BayesFunctions.c"/>
      <file category="sourceC" name="../../Source/BayesFunctions/BayesFunctionsF16.c"/>
      <file category="sourceC" name="../../Source/FastMathFunctions/FastMathFunctions.c"/>
      <file category="sourceC" name="../../Source/FastMathFunctions/FastMathFunctionsF16.c"/>
      <file category="sourceC" name="../../Source/QuaternionMathFunctions/QuaternionMathFunctions.c"/>
      <file category="sourceC" name="../../Source/StatisticsFunctions/StatisticsFunctions.c"/>
      <file category="sourceC" name="../../Source/StatisticsFunctions/StatisticsFunctionsF16.c"/>
      <file category="sourceC" name="../../Source/CommonTables/CommonTables.c"/>
      <file category="sourceC" name="../../Source/CommonTables/CommonTablesF16.c"/>
      <file category="sourceC" name="../../Source/FilteringFunctions/FilteringFunctions.c"/>
      <file category="sourceC" name="../../Source/FilteringFunctions/FilteringFunctionsF16.c"/>
      <file category="sourceC" name="../../Source/SupportFunctions/SupportFunctions.c"/>
      <file category="sourceC" name="../../Source/SupportFunctions/SupportFunctionsF16.c"/>
      <file category="sourceC" name="../../Source/ComplexMathFunctions/ComplexMathFunctions.c"/>
      <file category="sourceC" name="../../Source/ComplexMathFunctions/ComplexMathFunctionsF16.c"/>
      <file category="sourceC" name="../../Source/SVMFunctions/SVMFunctions.c"/>
      <file category="sourceC" name="../../Source/SVMFunctions/SVMFunctionsF16.c"/>
      <file category="sourceC" name="../../Source/InterpolationFunctions/InterpolationFunctions.c"/>
      <file category="sourceC" name="../../Source/InterpolationFunctions/InterpolationFunctionsF16.c"/>
      <file category="sourceC" name="../../Source/TransformFunctions/TransformFunctions.c"/>
      <file category="sourceC" name="../../Source/TransformFunctions/TransformFunctionsF16.c"/>
      <file category="sourceC" name="../../Source/ControllerFunctions/ControllerFunctions.c"/>
      <file category="sourceC" name="../../Source/WindowFunctions/WindowFunctions.c"/>
    </group>
  </files>
</cprj>
+2 −1
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<cprj schemaVersion="2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CPRJ.xsd">
  <created timestamp="2024-06-11T16:41:16" tool="csolution 2.4.0"/>
  <created timestamp="2024-06-17T15:52:27" tool="csolution 2.4.0"/>

  <info isLayer="false">
    <description>Automatically generated project</description>
@@ -80,6 +80,7 @@
      <file category="sourceCpp" name="../Source/Tests/ComplexTestsF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ComplexTestsQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ComplexTestsQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DECIMF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DECIMF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DECIMQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DECIMQ31.cpp"/>
+2 −1
Original line number Diff line number Diff line
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<cprj schemaVersion="2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="CPRJ.xsd">
  <created timestamp="2024-06-11T16:41:16" tool="csolution 2.4.0"/>
  <created timestamp="2024-06-17T15:52:27" tool="csolution 2.4.0"/>

  <info isLayer="false">
    <description>Automatically generated project</description>
@@ -80,6 +80,7 @@
      <file category="sourceCpp" name="../Source/Tests/ComplexTestsF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ComplexTestsQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/ComplexTestsQ31.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DECIMF64.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DECIMF32.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DECIMQ15.cpp"/>
      <file category="sourceCpp" name="../Source/Tests/DECIMQ31.cpp"/>
Loading